Execute large orders as time-weighted slices to reduce market impact.
Use this skill for:
Time-Weighted Average Price (TWAP) splits a large order into N equal slices executed at regular intervals. The goal is to achieve an average price close to the time-weighted market average, reducing the impact a single large order would have on the book.
kraken paper init --balance 50000 -o json 2>/dev/null
# Simulate 5 slices of 0.01 BTC each, 60s apart
kraken paper buy BTCUSD 0.01 -o json 2>/dev/null
# wait 60s
kraken paper buy BTCUSD 0.01 -o json 2>/dev/null
# wait 60s
kraken paper buy BTCUSD 0.01 -o json 2>/dev/null
# repeat...
kraken paper history -o json 2>/dev/null
kraken paper status -o json 2>/dev/null
The agent runs this loop externally (the CLI does not have a built-in scheduler):
TOTAL_VOLUME=0.05
SLICES=5
SLICE_VOL=$(echo "scale=8; $TOTAL_VOLUME / $SLICES" | bc)
INTERVAL=60
for i in $(seq 1 $SLICES); do
kraken order buy BTCUSD $SLICE_VOL --type market -o json 2>/dev/null
[ $i -lt $SLICES ] && sleep $INTERVAL
done
Use limit orders at the current best bid/ask for potentially better fills:
PRICE=$(kraken ticker BTCUSD -o json 2>/dev/null | jq -r '.[].a[0]')
kraken order buy BTCUSD $SLICE_VOL --type limit --price $PRICE -o json 2>/dev/null
Check fill status before the next slice. Cancel unfilled orders and adjust:
kraken open-orders -o json 2>/dev/null
After all slices, compute the volume-weighted average price from trade history:
kraken trades-history --consolidate-taker -o json 2>/dev/null
Sum (price * volume) for each fill, divide by total volume filled.
The CLI does not pre-throttle requests. If a slice submission hits a rate limit, the error includes a suggestion field with tier-specific limits and a docs_url pointing to Kraken's documentation. On rate_limit error, pause the loop, read the suggestion, and adjust the interval before resuming. A 60-second interval between slices is well within budget for all tiers. For shorter intervals, consult the kraken-rate-limits skill for per-tier counter costs and decay rates.