name: kraken-rebalancing version: 1.0.0 description: "Portfolio rebalancing to maintain target allocations across assets." metadata: openclaw: category: "finance" requires: bins: ["kraken"]
kraken-rebalancing
Use this skill for:
- checking current portfolio allocation vs target weights
- calculating rebalance trades
- executing rebalance orders with minimum trade thresholds
- scheduling periodic rebalance checks
Define Target Allocation
Example target: 50% BTC, 30% ETH, 20% SOL (by USD value).
The agent maintains these weights and compares against current holdings.
Read Current Portfolio
- Get balances:
kraken balance -o json 2>/dev/null - Get current prices for all held assets:
kraken ticker BTCUSD ETHUSD SOLUSD -o json 2>/dev/null - Calculate USD value of each holding and total portfolio value.
- Compute current weights: asset_value / total_value for each.
Calculate Rebalance Trades
For each asset:
- Target value = total_portfolio * target_weight
- Current value = holdings * current_price
- Delta = target_value - current_value
- If delta > threshold: buy (delta / price) units
- If delta < -threshold: sell (|delta| / price) units
Set a minimum trade threshold (e.g., $50) to avoid placing tiny orders that waste fees.
Paper Rebalance Test
kraken paper init --balance 10000 -o json 2>/dev/null
# Initial buys to establish positions
kraken paper buy BTCUSD 0.05 -o json 2>/dev/null
kraken paper buy ETHUSD 1.0 -o json 2>/dev/null
kraken paper buy SOLUSD 10 -o json 2>/dev/null
kraken paper status -o json 2>/dev/null
# After price drift, rebalance
# Sell overweight asset, buy underweight asset
kraken paper sell BTCUSD 0.005 -o json 2>/dev/null
kraken paper buy SOLUSD 2 -o json 2>/dev/null
kraken paper status -o json 2>/dev/null
Live Rebalance Execution
- Calculate all required trades.
- Present the rebalance plan to the user:
- Current allocation vs target
- Proposed trades with estimated fees
- Validate each order:
kraken order sell BTCUSD 0.005 --type market --validate -o json 2>/dev/null kraken order buy SOLUSD 2 --type market --validate -o json 2>/dev/null - Execute sells first (to free capital), then buys (requires human approval):
kraken order sell BTCUSD 0.005 --type market -o json 2>/dev/null kraken order buy SOLUSD 2 --type market -o json 2>/dev/null - Verify final state:
kraken balance -o json 2>/dev/null
Drift Detection
Periodically compare current weights to targets. Trigger rebalance when any asset drifts beyond a threshold (e.g., 5% absolute drift):
# Agent checks balance and prices on a schedule
# If |current_weight - target_weight| > 0.05 for any asset → rebalance
Rebalance with Limit Orders
For lower fees, use limit orders instead of market:
PRICE=$(kraken ticker SOLUSD -o json 2>/dev/null | jq -r '.[].a[0]')
kraken order buy SOLUSD 2 --type limit --price $PRICE -o json 2>/dev/null
Check fills before declaring rebalance complete:
kraken open-orders -o json 2>/dev/null
Hard Rules
- Never execute rebalance trades without explicit human approval.
- Always present the full rebalance plan (sells and buys) before execution.
- Execute sells before buys to ensure sufficient quote currency.
- Respect minimum order sizes for each pair (check pair info with
kraken pairs). - Apply a minimum trade threshold to skip negligible adjustments.