Live on Arbitrum One

Bitcoin exposure
without the chaos

An on-chain vol-protected index that dynamically scales BTC allocation based on realized volatility. Capture the upside, dampen the drawdowns.

1.62
Sharpe Ratio (10yr)
29.7%
Ann. Return
-36%
Max Drawdown
vs -84%
BTC Buy & Hold DD
Scroll to explore
Battle-tested performance
Backtested on hourly data from March 2016 to March 2026. The strategy survived every major crypto crash — COVID, Luna, FTX — with drawdowns under 36%.
Annual Return
+29.7%
Buy & Hold: +67.1%
Annualized Vol
18.4%
Buy & Hold: 70.3%
Sharpe Ratio
1.62
Buy & Hold: 0.95
Max Drawdown
-35.9%
Buy & Hold: -83.9%
Calmar Ratio
0.83
Buy & Hold: 0.80
Net Return (at $10M)
+31.2%
After slippage, fees, TWAP execution
How it works
The index uses an EWMA volatility estimator to dynamically allocate between BTC and USDC. When volatility is high, reduce exposure. When it's calm, go full BTC.
1

Measure volatility

Every hour, the oracle reads the BTC price from Pyth Network and updates the EWMA variance estimate with decay factor λ=0.94. This gives a reactive, real-time view of market risk.

2

Compute target weight

The BTC allocation is inversely proportional to realized vol, targeting 20% annualized. When vol is 60%, weight drops to 33%. When vol is 15%, weight goes to 100%.

3

Rebalance weekly

Each epoch (7 days), the vault rebalances its WBTC/USDC holdings to match the target weight. Trades execute via Uniswap V3 with 1% max slippage protection.

// EWMA variance (recursive)
var_t = 0.94 · var_{t-1} + 0.06 · r_t²

// Annualized volatility
vol_t = sqrt(var_t) · sqrt(8760)

// BTC allocation weight
w_t = min(1, 20% / vol_t)

// Index level
I_t = I_{t-1} · (1 + w_t · r_t)
Vault dashboard
Real-time data from the Arbitrum blockchain. Refreshes every 30 seconds.
Total Vault Assets
--
Share Price
--
USDC per vpBTC20
BTC Target Weight
--
--
BTC Price
--
via Pyth Network
Current Epoch
--
--
Pending Activity
--
Holdings
WBTC -- USDC --
How to invest
Deposit USDC. Receive vpBTC20 shares. The vault handles everything — rebalancing, vol monitoring, trade execution.

Connect your wallet

CLI instructions (advanced)
1

Get USDC on Arbitrum

Send native USDC (not USDC.e) to your wallet on Arbitrum One. Withdraw from Coinbase, Binance, or bridge from Ethereum. Minimum: $1,000.

2

Approve & deposit

Approve the vault to spend your USDC, then deposit. Shares are minted instantly. The vault swaps part of your USDC to WBTC to match the target BTC allocation.

cast send 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 \ "approve(address,uint256)" \ 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ <AMOUNT> --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY> cast send 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ "deposit(uint256,uint256,bytes[])" \ <AMOUNT> 0 "[]" --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY>

100 USDC = 100000000 (6 decimals). Second param is minWbtcOut (0 = default 0.5% slippage). Third param is Pyth update data (empty = use cached price).

3

Done — you're invested

vpBTC20 shares are in your wallet immediately. The vault automatically rebalances BTC/USDC weekly based on volatility.

4

Redeem In Kind (instant)

Withdraw your pro-rata share of USDC + WBTC immediately. No epoch wait, no swap, no slippage. You sell the WBTC yourself.

cast send 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ "redeemInKind(uint256)" \ <SHARES> --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY>

SHARES is in 18 decimals. 1 share = 1000000000000000000.

5

Request USDC redemption (epoch-based)

Queue a redemption to receive pure USDC at the next weekly settlement. You can cancel within the first 48 hours.

# Request redemption cast send 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ "requestRedeem(uint256)" \ <SHARES> --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY> # Cancel (within first 48h only) cast send 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ "cancelRedeem()" --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY>
6

Claim USDC after settlement

After the keeper settles the epoch (~7 days), claim your USDC. A 0.3% exit fee applies (stays in the vault).

cast send 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b \ "claimRedeem()" --rpc-url https://arb1.arbitrum.io/rpc --private-key <KEY>
How it works
Deposit
Instant
Deposit USDC and receive vpBTC20 shares in the same transaction. The vault swaps to match the BTC target weight. The Uniswap 0.3% pool fee is the only cost.
Redeem
Epoch-based (7 days)
Request a USDC redemption anytime. Cancel within the first 48 hours. Settled weekly when the keeper processes the epoch. Or use Redeem In Kind for instant withdrawal.
Settlement
Automated weekly
On-chain keeper settles the epoch: accrues streaming fees, computes share price, reserves USDC for redeemers, and rebalances WBTC/USDC to the vol-adjusted target weight.
Claim
After settlement
Claim USDC from settled redemptions. Unclaimed after 90 days returns to the vault. Deposits never need claiming — shares are already in your wallet.
Risks
This is experimental software. Understand the risks before investing.
High
Market risk

BTC can lose significant value. The vol-protection targets 20% annualized volatility and reduced max drawdown from -84% to -36% in backtests, but past performance does not guarantee future results. You can lose money.

Medium
MEV / sandwich risk

Weekly settlement swaps are mitigated by: (1) random execution time within a 24h window, (2) automatic chunking for trades above $100k, (3) Flashbots Protect private mempool. Residual risk: ~0.1-0.3% per epoch on large rebalances.

Medium
WBTC depeg risk

The vault uses BTC/USD price feed (Pyth), not WBTC/USD. If WBTC depegs from BTC (custodian failure), the vault's accounting becomes insolvent. Users can exit instantly via Instant Exit (redeemInKind) to receive raw WBTC and sell it themselves.

Medium
Keeper risk

If the keeper stops, the oracle goes stale and the vault cannot settle or rebalance. The owner can call emergencySettle (3-day cooldown). If both keeper and owner fail for 30 days, anyone can trigger emergency mode and users withdraw pro-rata USDC + WBTC instantly.

Medium
Liquidity risk

Large settlement swaps may face slippage on Uniswap V3. At $10M AUM, estimated slippage is ~15 bps per trade with 2h TWAP execution. Users can avoid this entirely by using Instant Exit (redeemInKind) which involves no swap.

Low
Epoch lock-up

Epoch-based withdrawals take up to 7 days. However, Instant Exit is always available — redeemInKind returns USDC + WBTC immediately with no wait, no swap, no slippage. Cancellation is available within the first 48 hours of each epoch.

Low
Centralization

The owner can: pause the vault, call emergency settle (3-day cooldown), change keeper address. The owner cannot: change fees, change slippage limits, move user funds, upgrade the contract. All critical parameters are immutable constants. Users can always exit via redeemInKind regardless of owner actions.

Contracts
All contracts are verified on Arbiscan. Source code is fully readable on-chain.
BtcVP20Vault 0xD43090A082738Cb10Bf6C38366fBbA19D413C65b
VolProtectedIndex (Oracle) 0x41Da4f8fD663309BCC78068861d4B71dF58d116B
RotationStrategy 0x17666ACe890fc73C5042C16655d1e0b51f925D89
Network Arbitrum One (Chain ID: 42161)
Token vpBTC20 (ERC-20)
Denomination USDC (native)
Strategy Parameters
Target Volatility20% annualized
EWMA Lambda (λ)0.94
Oracle UpdateHourly
RebalanceWeekly (epoch settlement)
Min Drift10%
Streaming Fee0.5% / year
Min Deposit$1,000 USDC
Entry/Exit Fee0.3% (= Uniswap pool fee, stays in vault)
Slippage Guard1% max per swap
Code is Law
The complete vault source code is below. Copy it, paste it into ChatGPT / Claude / any LLM, and ask it to audit. The same code is deployed and verified on Arbiscan. What you read here is what runs on-chain. No proxy, no upgrades, no admin override on the core logic.

            
Independent LLM Audit Scorecard
The contract source code was submitted to Google Gemini 2.5 Pro and Anthropic Claude Opus for independent review. 10 questions were asked across security, math, edge cases, and architecture. Scores re-assessed post-deployment (March 2026).
9/10
INSTANT EXIT SAFETY
10/10
DEAD ORACLE SAFETY
8/10
FAIRNESS
7/10
MEV PROTECTION
was 4/10 pre-fix
7.5/10
PRODUCTION READINESS
was 8/10 pre-reassessment
Key Findings
PASSredeemInKind is immune to flash loans and price manipulation. Pure proportional math, no oracle, no swap. Cannot extract more than your fair share.
PASSNo double-spend between withdrawal paths. Shares are escrowed on requestRedeem, preventing simultaneous redeemInKind exploitation.
PASSDead oracle safety is gold standard. Pro-rata dual-token withdrawal with no swap eliminates all flash loan liquidation risk.
PASSGriefing via redeemInKind is ineffective. Proportional withdrawal preserves vault ratio; attacker only burns their own gas.
PASSDonation attack neutralized. Virtual offset + $1,000 min deposit makes inflation attack unprofitable.
PASSOwner cannot steal funds. All critical parameters are immutable constants burned into bytecode.
PASSEntry/exit fees protect existing holders. 0.3% fee (matching Uniswap pool fee) on deposits and epoch redemptions. Fee stays in vault — new investors pay their own rebalancing costs. Instant Exit (redeemInKind) is free.
MITIGATEDMEV sandwich risk reduced. Settlement uses random execution time (24h window) + Flashbots Protect private mempool + automatic chunking for large trades. Residual risk: ~0.1-0.3% per epoch.
KNOWN RISKView functions revert when Pyth stale. totalAssets() and sharePrice() depend on Pyth price freshness (10 min). Between updates, on-chain queries revert. Does not affect deposits or settlements (users provide fresh data). Dashboard uses client-side pricing as workaround.
KNOWN RISKWBTC depeg scenario. Vault uses BTC/USD price feed, not WBTC/USD. If WBTC depegs, accounting becomes insolvent. Users can exit instantly via redeemInKind to receive raw WBTC and sell it themselves.
Audit It Yourself
Don't trust us — verify. Copy the source code above and paste it into any LLM (ChatGPT, Claude, Gemini, Grok) with the question below. Compare the answer to our published findings.
Here is the full source code of a BTC vol-protected vault deployed on Arbitrum. Deposits are instant: USDC is split to match the fund's BTC target weight via a Uniswap V3 swap, and shares are minted immediately based on post-swap value (capped at input amount). Redemptions are epoch-based (7-day cycles). The vault has three withdrawal paths: (1) epoch-based requestRedeem + claimRedeem that converts to USDC after settlement, (2) instant redeemInKind that returns pro-rata USDC + WBTC with no swap, and (3) emergencyWithdraw after 30-day oracle failure. The vault charges 0.5% annual streaming fee, has a 3-day emergency settle cooldown, uses Pyth oracle for BTC pricing, swaps on Uniswap V3 with 0.5% default deposit slippage and 1% keeper slippage, has a $500k deposit cap, 90-day redemption expiry, ReentrancyGuard on deposit/claimRedeem/redeemInKind, and a permissionless VaultKeeper contract with non-reverting ETH tips. Please audit for: (a) any way to steal funds or extract more than your fair share, (b) interaction risks between instant deposits and epoch-based redemptions, (c) flash loan attack vectors, (d) whether the owner can rug users, (e) MEV/sandwich risks on the inline deposit swap, and (f) rate its overall production readiness from 1-10 with the single biggest risk.