How Voltera works.
Everything below describes what the code actually does. Where something is not built yet, it says so.
What you are trading
On most markets you are betting on direction. On Voltera you are not. You buy volatility if you expect an asset to move more than it has been, and sell it if you expect things to stay calm. Whether the price ends up or down doesn't affect the position.
Each market is an index of how much a real asset has actually been moving. VBTC tracks Bitcoin, VNVDA tracks Nvidia, VSPX tracks the S&P 500. Nine in total, all quoted in the same unit, so you can compare gold against Solana directly and trade one against the other.
Reading the number
An index of 34 means: at the pace of the last 30 sessions, the underlying would travel about 34% over a year. That is hard to have a feel for, so divide by the square root of the number of sessions in a year:
Bitcoin at 34 moves roughly one and a half to two percent on an ordinary day. The S&P at 15 moves under one percent. Same unit, wildly different assets.
Crypto uses 365 sessions because it trades every day; equities and metals use 252. Using 252 for Bitcoin would understate it by about 17%.
| Index | Daily move | Reads as |
|---|---|---|
| 10 | 0.5% | Dormant. Something is being suppressed. |
| 20 | 1.0% | Calm for crypto, elevated for an index. |
| 40 | 2.1% | Normal for a major coin. |
| 70 | 3.7% | Something is happening. |
| 120 | 6.3% | Crisis. |
The board colours each market against its own long-run level rather than a fixed scale, because 20 is sleepy for Solana and a crisis for the S&P.
How the index is built
The obvious way to measure volatility is the standard deviation of closing returns. It is also the least informative. It ignores everything that happened between the closes, and it scores a market that gapped down eight percent overnight and then sat still as a quiet day.
Voltera uses the Yang-Zhang estimator, which splits each session into three parts and weights them:
It is the only common estimator that handles overnight gaps, drift and the full intraday range at once. A steady grind higher is direction rather than volatility, and the two should not read the same.
The index recomputes from daily OHLC bars pulled from public market data. The session currently in progress is included as a live estimate and settles when the bar closes; the board marks those markets as session open.
The other estimators
The terminal shows three more alongside the index. They are not decoration: disagreement between them tells you something.
| Estimator | Uses | Blind to |
|---|---|---|
| Close-to-close | Closing prices | Everything intraday. Noisiest of the four. |
| Parkinson | High and low | Overnight gaps. Understates a market that jumps between sessions. |
| Rogers-Satchell | Full range, drift-free | Overnight gaps, but unbiased when the asset is trending. |
| EWMA (0.94) | Recent returns, decayed | Nothing, but it leads. When EWMA runs far above the 30-day index, the move is happening now. |
The term structure is the other read. When 7-day realized runs above 90-day, the curve is in backwardation and something recent has broken the calm. The board shows all three windows on every market.
The perpetual
A position is sized in USDG notional and settles on the ratio of exit to entry. Nothing in the contract knows the oracle value is a volatility rather than a price.
| Parameter | Value | Why |
|---|---|---|
| Collateral | USDG | Same token Robinhood Chain settles other markets in. |
| Leverage | Up to 5x | A vol index can double in a week and halve in the next. Ten times on a mean-reverting series liquidates both sides inside a month. |
| Taker fee | 8 bps a side | Charged on notional at open and again at close, paid to the pool. |
| Maintenance margin | 10% of size | Where liquidation begins. |
| Minimum size | 10 USDG | Below that, gas costs more than the trade. |
The open fee is taken the moment the position opens, so the collateral the contract stores is already net of it. Post 1,000 on a 3,000 notional and the position holds 997.60.
Funding
The crowded side pays the quiet side, every second, proportional to how lopsided the book is.
A balanced book pays nothing. A fully one-sided book sits at the clamp. A position on the light side is credited, not merely charged less.
In testing, a short that was 4:1 outnumbered collected 67 USDG over seven days on a 1,000 notional. That credit pushed its liquidation level from 66 out to 79. The carry is real and it changes your risk.
Liquidation
A position is liquidatable once equity falls to the maintenance margin, assessed without the close fee, exactly as the contract does it.
The terminal draws that level on the chart before you open. Anyone can call
liquidate() and earns 1% of size, capped at whatever collateral is
left. What remains after that goes to the pool.
A short's liquidation level can be above any plausible index, in which case the terminal says none rather than inventing a number. Accrued funding moves the level over time, in both directions.
The counterparty pool
Every perp needs a counterparty. On Voltera that is a single pooled book which takes the opposite side of every open position and collects the taker fees and the funding imbalance.
Depositors receive shares. sharePrice() starts at 1.0 and moves with
the pool's results: it rises when traders lose and fees accumulate, and falls when
traders win. Total open interest is capped at 80% of pool size, and liquidity
cannot be withdrawn below what open positions currently depend on.
The oracle
A keeper posts all nine index levels on chain. Anyone can also submit a keeper-signed level inside their own transaction, so a trade does not depend on the keeper having run recently.
Levels older than six hours are refused. If the keeper dies, trades stop working rather than settling against a stale index. That is deliberate: an exchange that keeps trading on yesterday's number is worse than one that is briefly closed.
A market the upstream data source omits is skipped entirely, never carried forward or interpolated.
Contracts
Addresses below are read from the same file the terminal uses, so this page cannot drift out of date.
The engine that prices the order ticket in your browser and the contract that settles the trade are held to each other by a parity test: 64 scenarios run through both, with a worst disagreement of 2.3e-13 USDG. If they ever diverge, the test fails before the site ships.
What this is not
- This is realized volatility, not implied. It is measured from bars that already printed. It is not a forecast and not a VIX equivalent, which is derived from option prices. Realized vol lags, and that lag is a tradable property rather than a defect to hide.
- The chart history is backfilled. Every point is what the index would have read on that date, computed now from real historical bars. It is not a record of the index being published live at the time, because the product did not exist then.
- The pool is small. Mainnet is live, but total open interest is capped at 80% of pool size, and the pool is around a hundred USDG. That is a handful of minimum-size positions. It is a real deployment, not a book anyone can trade size on. On any chain without a deployment the terminal falls back to a local demo book and says so in the ticket.
- The contracts are unaudited. They have a test suite and a parity check against the front end, which is not the same thing as an audit.
- The pool can lose. It is the counterparty to every trade. A one-sided book that is right takes it from the pool, and whoever supplied that liquidity wears the loss.