How DCA via TWAP Works
A TWAP order splits your total sell amount intoN equal parts, each executed at a fixed interval:
TWAP orders are programmatic orders created via the
ComposableCoW framework. They require a Safe wallet and the Watch Tower to monitor and submit each part.Strategy Design
Before creating the order, decide on your DCA parameters:Recommended Configurations
Using the CoW Swap UI
The simplest way to create a DCA strategy is through the CoW Swap interface:1
Connect your Safe wallet
TWAP orders require a Safe wallet. Connect via swap.cow.fi.
2
Select TWAP order type
Click the order type selector and choose TWAP.
3
Configure the order
- Select your sell token (e.g., USDC) and buy token (e.g., WETH)
- Enter the total amount to sell
- Set the number of parts and time interval
- Review the per-part amount and total duration
4
Set price protection
Optionally set a minimum price to avoid buying at extreme levels. This applies to each individual part.
5
Submit the order
Review and sign the transaction from your Safe. The Watch Tower will automatically submit each part at the scheduled time.
Using the TypeScript SDK
Using the Python SDK
The Python SDK has first-class TWAP support through theTwap class:
Scheduling a Future DCA
To start the DCA at a specific time (e.g., next Monday):Cancelling a DCA
Price Protection
Thebuy_amount parameter serves as price protection — it sets the minimum total amount of buy tokens you’ll receive across all parts. Each individual part gets a proportional minimum:
Monitoring
Track your DCA execution through:- CoW Explorer — search for your Safe address to see each part as it fills
- OrderBook API — query
GET /api/v1/account/{address}/ordersfor order status - Python SDK polling — use
twap.poll()to check the current part status (see TWAP Orders)
Prerequisites
1
Safe wallet
TWAP orders require a Safe with the ComposableCoW
ExtensibleFallbackHandler configured. See the ComposableCoW setup guide.2
Token approval
Approve the CoW Protocol Vault Relayer to spend your sell token from the Safe.
3
Sufficient balance
Ensure the Safe holds the full sell amount before the TWAP starts.
Next Steps
- TWAP Orders (Python SDK) — detailed Python SDK reference
- TWAP tutorial (UI) — step-by-step CoW Swap walkthrough
- ComposableCoW Troubleshooting — setup issues and debugging
- Debugging Programmatic Orders — when parts don’t execute