Inspiration
Volatility is the lifeblood of crypto trading. While traditional equities move 1-2% on an average day, Bitcoin can swing 5-10% in hours. That asymmetry changes everything: risk sizing, entry and exit timing, hedging decisions, and portfolio construction all depend on having a reliable read on how much volatility the market is pricing in.
The standard tool for this is an implied volatility index. In equities, that is the VIX. In crypto, Deribit's DVOL plays the equivalent role: it aggregates option prices from institutional traders and distills them into a single number representing the market's 30-day volatility expectation. Traders use it as a fear gauge, a risk signal, and an input into nearly every serious derivative strategy.
But DVOL only captures one crowd: the professional options market. Crypto is also home to millions of retail participants expressing financially-staked, forward-looking views on prediction markets. Thousands of traders on Polymarket bet real money on questions like "Will Bitcoin touch $90,000 in March?" These are not opinion polls. They are genuine probability estimates from a crowd that is structurally different from the Deribit order book in almost every way.
Nobody had extracted a volatility signal from them before. We asked: what if you could compute an implied volatility index from Polymarket's prediction markets and put it side by side with DVOL? More signals mean better decisions: overreliance on any single metric can be misleading, and two readings from structurally different crowds give traders a richer picture. The gap between them is original information that did not previously exist in a form anyone could look at.
What it does
Pivolt computes PVOL, a Bitcoin implied volatility index derived entirely from Polymarket monthly touch markets, and displays it alongside Deribit's DVOL index. The dashboard shows:
- The Gap (PVOL minus DVOL) as a candlestick time series across 8 contract months (Jul 2025 to Feb 2026)
- PVOL vs. DVOL as two continuous lines on a shared scale, showing where the two crowds agreed and where they diverged
- PVOL History across all monthly contracts with a 9-period EMA overlay
A positive gap means the prediction market crowd is pricing more volatility than institutional options desks. A negative gap means the crowd is more sanguine. Neither is obviously right; the gap is the signal. A methodology page explains the full math and pipeline for anyone who wants to go deeper.
How we built it
Polymarket monthly BTC markets are mathematically identical to one-touch barrier options. The reflection principle gives the touch probability under a zero-drift log-Brownian model:
$$P_{\text{touch}}(H) = 2 \cdot \Phi\left(\frac{-\left|\ln(H/S)\right|}{\sigma\sqrt{T}}\right)$$
Setting this equal to the observed market probability (P) and solving for (\sigma) (the implied volatility):
$$\sigma = \frac{\left|\ln(H/S)\right|}{\sqrt{T} \cdot \left|\Phi^{-1}(P/2)\right|}$$
Where (H) is the strike price, (S) is spot, (T) is time to expiry in years, (P) is the YES token midquote, and (\Phi^{-1}) is the inverse standard normal CDF.
We apply this formula to every valid rung in the Polymarket ladder, then aggregate using touch-band weights: each rung is weighted by (w_i = P_i - P_{i+1}), so rungs where the crowd has concentrated conviction dominate the index:
$$\text{PVOL} = \frac{\sum w_i \cdot \sigma_i}{\sum w_i}$$
The pipeline: a Python/FastAPI backend fetches YES token prices from Polymarket's CLOB API and DVOL from Deribit's statistics endpoint across 8 monthly BTC contracts. The frontend is React + Vite with lightweight-charts (TradingView) for all charting. Historical data is bundled directly into the frontend so no runtime backend is needed for the demo.
Challenges we ran into
Near-expiry instability. As (T -> 0), small pricing errors in outer rung markets get amplified in the √T denominator. PVOL becomes unreliable in the final week of each contract. DVOL handles this with two-contract-month blending (VIX-style); we flag it honestly and document it as future work.
Non-monotone ladders. Polymarket occasionally prices a farther strike higher than a closer one due to thin liquidity and stale quotes. The IV inversion is undefined at these points. We drop offending rungs and surface a data quality flag rather than silently interpolating.
Sparse strike grid. Roughly 10 rungs at \$5k spacing is coarse. Fitting a richer model would be underidentified with so few data points. The zero-drift closed-form approximation was the right choice precisely because it extracts maximum information from each rung independently, with no parameters to estimate.
Accomplishments that we're proud of
PVOL is, to our knowledge, the first implied volatility index ever extracted from Polymarket prediction markets. The formula is clean, the inversion is closed-form, and the result is directly comparable to a published institutional benchmark. Displaying 8 months of PVOL vs. DVOL history makes the divergence between the two crowds visible for the first time. We are also proud of the methodology page, which lays out the full derivation and pipeline honestly, including all limitations.
What we learned
Prediction market prices are richer than they look. A YES share price is not just a probability; it is the solution to an options pricing equation. Once you recognize prediction markets as barrier options, a whole toolkit from quantitative finance becomes applicable to crowd-sourced data that was previously treated as just a poll. We also learned that near-expiry behavior is the hardest practical problem in any short-dated volatility index, and that the VIX's two-contract blending solution is more elegant than it first appears.
What's next for Pivolt
- Constant-maturity blending. Blend adjacent contract months using time-weighted interpolation (VIX-style) to produce a rolling 30-day PVOL, eliminating the sawtooth artifact at month boundaries and the near-expiry reliability drop.
- Backtesting the gap signal. Test whether the PVOL/DVOL spread predicts subsequent realized volatility or BTC return direction. This is the core hypothesis of the product and requires 6+ months of history to test meaningfully.
- Live feed. Move from daily historical data to a minute-level polling loop using Polymarket's CLOB API, producing a PVOL reading that updates continuously alongside DVOL.
- Isotonic regression repair. Replace the drop-and-flag policy for non-monotone rungs with an L2 projection onto the monotone cone, preserving more of the ladder and producing a smoother smile.
Log in or sign up for Devpost to join the conversation.