DCA & TWAP
03 / 04

Spread 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

  • 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

  • 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.