Documentation

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.

The short version. Long vol gains when the underlying starts moving hard in either direction. Short vol gains when it goes quiet. Most weeks are quiet, which is why selling volatility is a carry trade and why the funding mechanism below matters so much.

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:

34.19 / sqrt(365) = 1.79% typical daily move

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%.

IndexDaily moveReads as
100.5%Dormant. Something is being suppressed.
201.0%Calm for crypto, elevated for an index.
402.1%Normal for a major coin.
703.7%Something is happening.
1206.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:

sigma² = sigma²overnight + k · sigma²open→close + (1 - k) · sigma²rogers-satchell k = 0.34 / (1.34 + (n+1)/(n-1)) // over n sessions overnight = var( ln(Oᵢ / Cᵢ₋₁) ) open→close = var( ln(Cᵢ / Oᵢ) ) rogers-satch = mean( ln(H/C)·ln(H/O) + ln(L/C)·ln(L/O) ) // annualize on the market's own calendar index = sqrt(sigma² · calendar) · 100

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.

Why it matters, concretely. On 10 October 2025 Bitcoin closed down 7% but swung 17% inside the day, from 122,510 to 104,582. Closing prices alone put the index at 39. Yang-Zhang put it at 45. The six-point difference is the violence that actually happened.

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.

EstimatorUsesBlind to
Close-to-closeClosing pricesEverything intraday. Noisiest of the four.
ParkinsonHigh and lowOvernight gaps. Understates a market that jumps between sessions.
Rogers-SatchellFull range, drift-freeOvernight gaps, but unbiased when the asset is trending.
EWMA (0.94)Recent returns, decayedNothing, 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.

pnl = size · (exit − entry) / entry // negated for a short equity = collateral + pnl − funding − closeFee
ParameterValueWhy
CollateralUSDGSame token Robinhood Chain settles other markets in.
LeverageUp to 5xA 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 fee8 bps a sideCharged on notional at open and again at close, paid to the pool.
Maintenance margin10% of sizeWhere liquidation begins.
Minimum size10 USDGBelow 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.

skew = (longOI − shortOI) / (longOI + shortOI) // −1 to 1 rate = 0.08%/hour · skew // signed, clamped

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.

This is a deliberate departure. The contract Voltera is adapted from charges a borrow fee that both sides always pay. That would tax exactly the short-vol flow this book needs to stay balanced, since selling a mean-reverting index is the natural carry trade. Funding instead pushes traders toward the empty side, which is what keeps the perp near the index.

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.

liq = entry · (1 + s · (size·mmr − collateral + funding) / size) // s = +1 long, −1 short

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.

There is no Voltera token. Anything claiming to be one is not connected to this project.

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.