> For the complete documentation index, see [llms.txt](https://docs.bullpen.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bullpen.fi/trading/order-types/reduce-only.md).

# Reduce Only

Optional flag available on all order types. When enabled, the order can only reduce your position — it won't open a new position or flip you from long to short (or vice versa).

Optional flag available on all order types. When enabled, the order can only reduce your position. It won't open a new position or flip you from long to short (or vice versa).

### Use When

Placing exit orders (TP/SL, scale-out) where you don't want to accidentally open a new position or flip sides.

### How It Works

#### Normal Order Behavior

Without reduce-only:

* If you have 10 BTC long and sell 15 BTC → closes long, opens 5 BTC short
* If you have 0 BTC and buy 10 BTC → opens 10 BTC long

#### With Reduce-Only Enabled

* If you have 10 BTC long and sell 15 BTC reduce-only → closes 10 BTC long, cancels the extra 5 BTC
* If you have 0 BTC and try to buy 10 BTC reduce-only → order is rejected (nothing to reduce)

### Key Properties

* **Maximum reduction**: Can only reduce up to current position size
* **Prevents flipping**: Won't flip you from long to short or short to long
* **Prevents new positions**: Won't open a position if you're currently flat
* **Auto-cancels excess**: Any size beyond current position is automatically canceled

### Common Use Cases

#### Take Profit Orders

Set a reduce-only sell limit above your long entry:

* Long 100 SOL @ $180
* Reduce-only sell limit 100 SOL @ $200
* If filled, closes long completely
* Won't accidentally open a short position

#### Stop Loss Orders

Set a reduce-only stop market below your long entry:

* Long 50 ETH @ $3,400
* Reduce-only stop market 50 ETH @ $3,300
* If triggered, closes long completely
* Won't flip to short if price continues falling

#### Scaling Out

Multiple reduce-only sells at different levels:

* Long 100 BTC @ $95,000
* Reduce-only sell 25 BTC @ $98,000
* Reduce-only sell 25 BTC @ $100,000
* Reduce-only sell 25 BTC @ $102,000
* Reduce-only sell 25 BTC @ $105,000
* Each fills independently, gradually closing the long

#### TWAP/Scale Order Exits

When closing large positions:

* Use reduce-only TWAP to exit over time
* Use reduce-only scale orders to exit across a range
* Ensures you're only closing, not opening new exposure

### Why Use Reduce-Only?

#### Risk Management

* Prevents accidental over-trading
* Ensures exits don't become new entries
* Simplifies position management

#### Clean Exits

* No messy position flips
* Clear separation: entry orders vs exit orders
* Easier to track P\&L

#### Automation Safety

* Safe to leave reduce-only orders active
* Won't create unwanted positions if triggered after you've already closed manually
* Prevents double-entry bugs

### Important Notes

* **Position tracking**: Reduce-only orders track your current position size
* **Multiple orders**: You can have multiple reduce-only orders totaling more than your position (first-filled wins)
* **Cross-margin**: In cross-margin mode, reduce-only applies to net position across the asset
* **Per-asset**: Reduce-only is per-asset (BTC reduce-only doesn't affect ETH position)

### Examples

#### Example 1: Standard Exit

**Position**: Long 10 ETH @ $3,400 **Order**: Reduce-only sell 10 ETH @ $3,500 **Result**: If filled, closes entire long. Won't open short.

#### Example 2: Over-Sized Exit Order

**Position**: Long 10 ETH @ $3,400 **Order**: Reduce-only sell 15 ETH @ $3,500 **Result**: If filled, sells 10 ETH (closes long), cancels remaining 5 ETH.

#### Example 3: No Position

**Position**: 0 ETH (flat) **Order**: Reduce-only sell 10 ETH @ $3,500 **Result**: Order rejected or canceled (nothing to reduce).

#### Example 4: Multiple Exits

**Position**: Long 100 BTC @ $95,000 **Orders**:

* Reduce-only TP @ $100,000 (100 BTC)
* Reduce-only SL @ $93,000 (100 BTC)

**Result**: First to hit closes the position. The other auto-cancels (one-cancels-other behavior).

### Best Practices

✅ **Always use reduce-only for**:

* Take profit orders
* Stop loss orders
* Any exit-only strategy

✅ **Consider reduce-only for**:

* Scaling out of positions
* Automated exit strategies
* TWAP exits

❌ **Don't use reduce-only for**:

* Entry orders
* Building positions
* DCA strategies (these are opening/adding, not reducing)

### Reduce-Only + Other Order Types

| Order Type  | Common Use with Reduce-Only     |
| ----------- | ------------------------------- |
| Market      | Emergency exit of position      |
| Limit       | Take profit at specific price   |
| Stop Market | Stop loss trigger               |
| Stop Limit  | Controlled stop loss            |
| TP/SL       | Standard profit/loss management |
| TWAP        | Exit large position gradually   |
| Scale       | Exit across price range         |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.bullpen.fi/trading/order-types/reduce-only.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
