---
title: Order Strategies - Clear Street Trading API Documentation and Guides
description: Choose how your orders are worked in the market — smart order routing, TWAP, VWAP, or direct market access.
---

Every order you submit through the Trading API is worked in the market by an execution strategy. By default, Clear Street routes your order through our smart order router (SOR), which seeks best execution across venues. For larger orders where market impact matters, you can instead choose an algorithmic strategy that works the order over time or take direct control of venue selection.

## Choosing a Strategy

Below are the current order strategies that Clear Street supports, along with how they execute and when it’s best to use them.

| **Strategy** | **How it executes**                                                                           | **Best fit**                                                   |
| ------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| `SOR`        | Routes immediately to the best available venue(s)                                             | Speed and price priority for typical order sizes               |
| `TWAP`       | Slices the order evenly over the execution window, regardless of volume                       | Smooth, predictable, time-based pacing                         |
| `VWAP`       | Follows the market’s actual volume pattern and trades more when volume is high, less when low | Tracking the session’s volume-weighted average price benchmark |
| `DMA`        | Routes the order straight to the venue you name                                               | Control, speed, and direct interaction with a specific market  |

### Smart Order Router (SOR)

SOR is the default. An order submitted without a `strategy` object uses SOR, and is equivalent to submitting:

```
[
  {
    "symbol": "AAPL",
    "instrument_type": "COMMON_STOCK",
    "order_type": "MARKET",
    "side": "BUY",
    "quantity": "100",
    "time_in_force": "DAY",
    "strategy": { "type": "SOR" }
  }
]
```

SOR takes no parameters and is supported on every order type and time in force, including extended hours and OTC common-stock orders. Submitting `start_at` or `end_at` with SOR returns a 400.

### TWAP (Time-Weighted Average Price)

A TWAP order breaks a large order into smaller pieces and sends them into the market evenly over a set period of time, with the goal of getting an average execution price over that time window.

**Benefits**

- Reduces market impact compared with sending one large order at once.
- Useful when you want steady execution over time.
- Helpful in less predictable volume conditions where you still want consistent pacing.

**Best fit**

- When the priority is **smooth, time-based execution**

**Order Request**

Along with the normal order details you will need to pass a strategy object as shown below. Both `start_at` and `end_at` are optional fields, see the Execution Window [section](#the-execution-window) for more details.

```
[
  {
    "symbol": "AAPL",
    "instrument_type": "COMMON_STOCK",
    "order_type": "MARKET",
    "side": "SELL",
    "quantity": "50000",
    "time_in_force": "DAY",
    "strategy": {
      "type": "TWAP",
      "start_at": "2026-10-05T14:00:00Z",
      "end_at": "2026-10-05T18:00:00Z"
    }
  }
]
```

### VWAP (Volume-Weighted Average Price)

A VWAP order also splits a large order into smaller pieces, but instead of spreading them evenly by time, it tries to follow the market’s actual trading volume pattern, executing more when market volume is higher and less when volume is lower.

**Benefits**

- Reduces market impact compared with sending one large order at once.
- Often reduces signaling risk because the order follows normal market volume patterns.
- Common benchmark for institutional trading performance.

**Best fit**

- When the priority is **tracking the market’s average execution level for the day or session**

**Order Request**

Similar to TWAP along with the normal order detail you will need to pass a strategy object as shown below. Both `start_at` and `end_at` are optional fields, see the Execution Window [section](#the-execution-window) for more details.

```
[
  {
    "symbol": "AAPL",
    "instrument_type": "COMMON_STOCK",
    "order_type": "LIMIT",
    "limit_price": "190.00",
    "side": "BUY",
    "quantity": "50000",
    "time_in_force": "DAY",
    "strategy": {
      "type": "VWAP",
      "start_at": "2026-10-05T13:30:00Z",
      "end_at": "2026-10-05T20:00:00Z"
    }
  }
]
```

### DMA (Direct Market Access)

A DMA order bypasses the smart order router and routes straight to the venue you name. Useful for sophisticated traders building custom execution workflows who want control over exactly where the order rests.

**Benefits**

- Full control over order placement and routing.
- Faster and more direct access to market venues.

**Best fit**

- When the priority is **control, speed, and direct interaction with the market**

**Order Request**

For DMA orders a `destination` must be specified. The list of possible values is provided below.

```
[
  {
    "symbol": "AAPL",
    "instrument_type": "COMMON_STOCK",
    "order_type": "LIMIT",
    "limit_price": "190.00",
    "side": "BUY",
    "quantity": "100",
    "time_in_force": "DAY",
    "strategy": {
      "type": "DMA",
      "destination": "ARCX"
    }
  }
]
```

**List of supported Destinations**

| MIC    | Venue                            |
| ------ | -------------------------------- |
| `XNYS` | New York Stock Exchange          |
| `XNAS` | Nasdaq - All Markets             |
| `XASE` | NYSE American                    |
| `ARCX` | NYSE Arca                        |
| `XCHI` | NYSE Texas                       |
| `XCIS` | NYSE National                    |
| `XBOS` | Nasdaq Texas                     |
| `XPHL` | Nasdaq PHLX                      |
| `BATS` | Cboe BZX U.S. Equities Exchange  |
| `BATY` | Cboe BYX U.S. Equities Exchange  |
| `EDGA` | Cboe EDGA U.S. Equities Exchange |
| `EDGX` | Cboe EDGX U.S. Equities Exchange |
| `EPRL` | MIAX Pearl Equities              |
| `IEXG` | Investors Exchange               |
| `LTSE` | Long-Term Stock Exchange         |
| `MEMX` | MEMX Equities                    |
| `24EQ` | 24X National Exchange            |
| `TXSE` | Texas Stock Exchange             |

## Strategy Requirements

|                     | SOR       | TWAP / VWAP       | DMA           |
| ------------------- | --------- | ----------------- | ------------- |
| Order types         | All       | `MARKET`, `LIMIT` | `LIMIT`       |
| Time in force       | All       | `DAY`             | `DAY`         |
| OTC common stock    | Supported | Not supported     | Not supported |
| `extended_hours`    | Supported | Not supported     | Not supported |
| `start_at`/`end_at` | —         | Optional          | —             |
| `destination`       | —         | —                 | Required      |

An order that violates any of these is rejected, and a request-level violation rejects the entire batch — no orders in the request are placed.

## The Execution Window

VWAP and TWAP work the order over an execution window defined by two optional RFC 3339 UTC timestamps:

| **Field**  | **Type**         | **Required** | **Description**                                                                  |
| ---------- | ---------------- | ------------ | -------------------------------------------------------------------------------- |
| `start_at` | timestamp string | No           | When to begin working the order. Defaults to the time the order is received.     |
| `end_at`   | timestamp string | No           | When to finish working the order. Defaults to the close of regular market hours. |

The window must satisfy the following, or the request returns a 400:

- `end_at` must be after `start_at` or omitted.
- `start_at` must not be in the past (a grace period of 30 seconds is allowed for clock skew).
- `end_at` must not be in the past.
- `end_at` must not be after the close of regular market hours (4:00 PM ET, or the early close on shortened trading days).

Execution occurs during regular trading hours (9:30 AM – 4:00 PM ET). A VWAP or TWAP order submitted before the market opens is queued and begins working when the session starts.

## Strategy in Order Responses

Each order reports its strategy in [order responses](/guides/trading/#order-response/index.md):

```
{
  "strategy": {
    "type": "VWAP",
    "start_at": "2026-10-05T13:30:00Z",
    "end_at": "2026-10-05T20:00:00Z"
  }
}
```

A few notes on response behavior:

- Orders submitted without a `strategy` report `{"type": "SOR"}`.
- `start_at` and `end_at` are echoed only when you supplied them; defaults are not filled in.
- DMA orders report their destination: `{"type": "DMA", "destination": "XNYS"}`.
- Orders placed before strategies were introduced report no `strategy` field.

## Replacing and Canceling

A [Replace Order](/api/resources/v1/subresources/orders/methods/replace_order/index.md) request cannot change an order’s strategy, a `strategy` key in a `PATCH` body is ignored, and the order keeps the strategy it was submitted with. To switch strategies, cancel the order and submit a new one.

[`Cancel`](/api/resources/v1/subresources/orders/methods/cancel_open_order/index.md) works the same for every strategy: canceling a working VWAP or TWAP order stops further execution; any quantity already executed remains filled.

## FIX API

Execution strategies are also available over FIX using tag 847 (`TargetStrategy`) and related custom tags. See the FIX API [guide](/guides/fix-api/#execution-strategies/index.md) for message-level details.
