Portfolio rebalance
previewMulti-asset target weights with band-based rebalancing.
Sim. APY
9.20%
Cadence
~2h
Max drawdown
2.40%
Thesis
Diversified Solana portfolios drift quickly. Banded rebalancing under cryptographic policy removes operator discretion without losing the option to widen bands during volatility.
How it executes
Holds a user-defined weighting across SOL, USDC, JTO, JUP, WBTC. Rebalances when any asset drifts outside its band. Each rebalance is a sequence of bounded intents with shared deadline.
Allowed protocols
Jupiter v6
Swap router
JUP6Lk…Pyth Hermes
Mark prices
—
Every entry is enforced by the on-chain CPI allowlist (Policy.allowed_programs[16]). Even a perfectly-signed intent cannot CPI into a program not on this list.
Default policy
These bounds become wallet.policy on-chain. The enclave will refuse to sign anything outside them.
Capital allocation
1k – 2M USDC
Max trade size
10k USDC
Max slippage
15 bps
Stop loss
150 bps
Cooldown
10m
Executions / hour
≤ 6
Allowed tokens
SOL · USDC · JTO · JUP · WBTC
Enclave signer
enclave (devnet)
Live execution
Press Run agent to open the delegation vault, approve a bounded amount, and start the continuous quote / fill / rebalance cycle. The pipeline runs every ~8s — each cycle broadcasts a fresh devnet tx signature you can open in Explorer. Press Stop agent at any time; the enclave only signs what your policy allows. After stopping, press Simulate replay attack on the last signed leg to watch the verifier refuse a re-broadcast with IntentNonceMismatch · 6018.
Delegated
—
Real devnet SOL from your wallet.
Session balance
—
Session key spends ~0.000005 SOL per cycle.
Portfolio value
14 USDC
0 rebalances
Largest drift
—
band ±2%
Price input is live from Pyth Hermes mainnet — the mid above drives every cycle's quote, fill, and rebalance decision. P&L is still simulated until the enclave wires real Phoenix / Jupiter execution on mainnet. What is real today: the 0.100 SOL you delegate to the session key, every cycle's on-chain memo signed by that key, and the withdrawal back to your wallet when you press Stop.
Execution feed
0 events