Execute large orders as time-weighted slices to reduce market impact.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add jiayaoqijia/cryptoskill --skill kraken-official-twap-execution --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Kraken Official Twap Execution?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jiayaoqijia-kraken-official-twap-execution)More formats (shields.io, HTML) on the badges page.
---
name: kraken-twap-execution
version: 1.0.0
description: "Execute large orders as time-weighted slices to reduce market impact."
metadata:
openclaw:
category: "finance"
requires:
bins: ["kraken"]
skills: ["kraken-spot-execution"]
---
# kraken-twap-execution
Use this skill for:
- breaking a large order into smaller time-spaced slices
- reducing market impact and slippage on size
- executing over minutes, hours, or days
- tracking average fill price across slices
## Core Concept
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.
## Parameters
- **Total volume**: the full amount to buy or sell
- **Slices**: number of child orders (e.g., 10)
- **Interval**: time between slices (e.g., 60s, 300s)
- **Slice volume**: total volume / slices
## Paper TWAP Test
```bash
kraken workspace create sandbox --capital 50000 --mode paper -o json 2>/dev/null
export KRAKEN_WORKSPACE=sandbox
# 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 workspace status -o json 2>/dev/null
```
## Live TWAP Loop
The agent runs this loop externally (the CLI does not have a built-in scheduler):
```bash
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
```
## Limit-Order TWAP Variant
Use limit orders at the current best bid/ask for potentially better fills:
```bash
PRICE=$(kraken ticker BTCUSD -o json 2>/dev/null | jq -r '.[].ask_price')
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:
```bash
kraken open-orders -o json 2>/dev/null
```
## Tracking Average Fill
After all slices, compute the volume-weighted average price from trade history:
```bash
kraken trades-history --consolidate-taker -o json 2>/dev/null
```
Sum (price * volume) for each fill, divide by total volume filled.
## Rate Limit Awareness
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.
## Hard Rules
- Each live slice requires human approval unless operating at autonomy level 4+.
- Track cumulative fill volume and stop if total exceeds target (handle partial fills).
- On error, pause the loop rather than skipping the slice; resume after recovery.
- Log every slice for post-execution analysis.
- If you hit a mismatch between what you are trying to do and the CLI's interface or responses — including a mismatch between this skill and the installed CLI version's contract — feel free to submit feedback with `kraken feedback`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!