DCA & TWAP
03 / 04Spread it out: DCA and TWAP
Two ways to stop one trade from being one price — DCA buys on a schedule until a cap, TWAP slices one total across fixed intervals.
Which is which
| dca | twap | |
|---|---|---|
| Mental model | Recurring buy | One large order, sliced |
| You set | Amount per buy, interval, max buys | Total amount, interval, slice count |
| Ends when | Max buys reached (or cancelled) | All slices filled (or cancelled) |
| Typical use | Accumulate over weeks | Get a position in without moving the curve |
- Mental model
- dca
- Recurring buy
- twap
- One large order, sliced
- You set
- dca
- Amount per buy, interval, max buys
- twap
- Total amount, interval, slice count
- Ends when
- dca
- Max buys reached (or cancelled)
- twap
- All slices filled (or cancelled)
- Typical use
- dca
- Accumulate over weeks
- twap
- Get a position in without moving the curve
Parameters and bounds
| Param | Type | Bound |
|---|---|---|
| dcaAmountPerBuy | dca | Positive — quote asset per buy |
| dcaIntervalSecs | dca | 60s – 30 days |
| dcaMaxBuys | dca | 1–365 |
| twapTotalAmount | twap | Positive — total to deploy |
| twapIntervalSecs | twap | 60s – 30 days |
| twapSlices | twap | 2–100 |
| slippage / expiresAt | both | 0–50% / ISO date — same as limit orders |
- dcaAmountPerBuy
- Type
- dca
- Bound
- Positive — quote asset per buy
- dcaIntervalSecs
- Type
- dca
- Bound
- 60s – 30 days
- dcaMaxBuys
- Type
- dca
- Bound
- 1–365
- twapTotalAmount
- Type
- twap
- Bound
- Positive — total to deploy
- twapIntervalSecs
- Type
- twap
- Bound
- 60s – 30 days
- twapSlices
- Type
- twap
- Bound
- 2–100
- slippage / expiresAt
- Type
- both
- Bound
- 0–50% / ISO date — same as limit orders
vectr agent "DCA 0.02 ETH into 0x… every 6 hours, max 20 buys"
vectr agent "TWAP 0.5 ETH of 0x… over 2 hours in 8 slices"How they execute
Scheduled orders run from your own custodial wallet — the backend's executor signs each fill as the account owner, not through a shared oracle. Each slice is an ordinary curve (or pool) buy at the current price, subject to your slippage bound.
Cancel any time with DELETE /orders/:id or by asking the agent — unfilled slices simply stop.
Scheduling is not a strategy
DCA removes timing risk from each individual fill — it does not change what you're buying. A token that goes to zero takes a DCA schedule with it.