Variance Risk Premium vs Volatility Risk Premium: What's the Difference (and Which One Are You Trading)? | FlashAlpha

Variance Risk Premium vs Volatility Risk Premium: What's the Difference (and Which One Are You Trading)?

Variance risk premium and volatility risk premium describe the same gap between option-implied and realized expectations, but in different units. Practitioners usually mean the vol-points version (sigma_IV minus sigma_RV). Academic papers and variance swap pricing usually mean the variance version (sigma_IV squared minus sigma_RV squared). Both are sign-consistent. This article walks through the formulas, the numerical relationship, where each version shows up, and which one the FlashAlpha VRP API returns.

T
Tomasz Dobrowolski Quant Engineer
May 10, 2026
26 min read
VRP VarianceRiskPremium VolatilityRiskPremium VarianceSwap Options

TL;DR: One Idea, Two Units, Three Conventions

The "right" answer depends on which paper you are reading and which desk you are talking to. The table below covers the three definitions you will actually encounter in the wild.

TermFormulaUnitsWhere you see itNumerical relationship
VRP (vol units)\(\sigma_{\text{IV}} - \sigma_{\text{RV}}\)Annualized vol points (e.g. +6.0%)Practitioner blogs, retail platforms, FlashAlpha VRP API, broker risk reportsThe default at trading desks. Easy to size off.
VRP (variance units)\(\sigma_{\text{IV}}^{2} - \sigma_{\text{RV}}^{2}\)Annualized variance (vol squared)Carr-Wu (2009), Bollerslev/Tauchen/Zhou, BIS papers, dispersion desksEquals (sigma_IV - sigma_RV)(sigma_IV + sigma_RV). Same sign as vol VRP.
Variance swap rateModel-free integral over the option stripVariance pointsCboe variance swap rate, OTC variance swaps, the VIX constructionUsed as the "fair" implied variance leg in the variance VRP.

The TL;DR for traders: when a practitioner says "VRP is rich" they almost always mean the vol-units version. When an academic says "the variance risk premium is roughly 17 basis points per year" they mean the variance-units version. Different scale, same underlying signal.

The Two Formulas, Side by Side

Both formulas describe the spread between what the options market is pricing and what the underlying actually delivers. The only difference is whether you square the inputs before subtracting.

Volatility Risk Premium (vol units) $$ \text{VRP}_{\text{vol}} = \sigma_{\text{IV}} - \sigma_{\text{RV}} $$
Variance Risk Premium (variance units) $$ \text{VRP}_{\text{var}} = \sigma_{\text{IV}}^{2} - \sigma_{\text{RV}}^{2} $$

Where:

  • \(\sigma_{\text{IV}}\) is the option-implied annualized volatility, typically the 30-day at-the-money IV interpolated from the volatility surface. For variance swap pricing this is replaced by the model-free variance swap rate.
  • \(\sigma_{\text{RV}}\) is the realized annualized volatility of the underlying over a backward-looking window matched to the IV horizon (5, 10, 20, or 30 trading days are all common).

Both inputs must be annualized on the same trading-day basis (252 days). The full mechanics of choosing the right IV strike and RV estimator are covered in the canonical VRP formula article; this page focuses on the disambiguation rather than the inputs.

The Numerical Relationship

Vol VRP and variance VRP move together but with very different magnitudes. The algebraic identity that connects them is a difference of squares:

Identity linking variance VRP to vol VRP $$ \text{VRP}_{\text{var}} = \sigma_{\text{IV}}^{2} - \sigma_{\text{RV}}^{2} = (\sigma_{\text{IV}} - \sigma_{\text{RV}})(\sigma_{\text{IV}} + \sigma_{\text{RV}}) = \text{VRP}_{\text{vol}} \cdot (\sigma_{\text{IV}} + \sigma_{\text{RV}}) $$

So variance VRP is just vol VRP scaled by the sum of the two volatilities. Three consequences fall out of this:

  • Sign is preserved. The factor \((\sigma_{\text{IV}} + \sigma_{\text{RV}})\) is always positive, so vol VRP and variance VRP always share the same sign. If one says "rich premium" the other says "rich premium".
  • Magnitudes diverge in vol spikes. When IV and RV are both elevated, the multiplier grows, so variance VRP swings more aggressively than vol VRP. A 4 vol-point spread at 12 IV is a smaller variance number than a 4 vol-point spread at 30 IV.
  • The two series are not rank-equivalent. Days where vol VRP is at the 90th percentile are not necessarily days where variance VRP is at the 90th percentile, because the multiplier reshuffles them. Mixing units in one z-score pipeline destroys the percentiles.

Worked Example

Take 30-day ATM IV of 18% and 30-day realized vol of 12%. Compute both versions:

$$ \text{VRP}_{\text{vol}} = 0.18 - 0.12 = 0.06 = +6 \text{ vol points} $$
$$ \text{VRP}_{\text{var}} = 0.18^{2} - 0.12^{2} = 0.0324 - 0.0144 = 0.0180 = +0.0180 \text{ variance points} $$

Verify the identity: \((\sigma_{\text{IV}} + \sigma_{\text{RV}}) = 0.30\), and \(0.06 \times 0.30 = 0.0180\). The two numbers describe the same gap, both are positive, but they live on different scales. A variance VRP of 0.018 looks tiny next to a vol VRP of 6%, yet they encode identical information.

Now repeat the exercise at higher vol. Take IV of 35% and RV of 29%. Vol VRP is still +6 points. But variance VRP is \(0.35^{2} - 0.29^{2} = 0.1225 - 0.0841 = 0.0384\). The same 6 vol-point spread now produces a variance VRP that is more than twice as large, because the multiplier \((\sigma_{\text{IV}} + \sigma_{\text{RV}}) = 0.64\) is more than twice the size. This is why vol-spike days dominate any variance-VRP percentile distribution.

Where Each Version Shows Up

Vol-Units VRP: The Practitioner Default

The vol-units version is what you encounter in trading content, broker dashboards, and most retail-facing tools. Reasons:

  • IV is quoted in vol points. If your option chain shows IV as 24%, your eye is already calibrated to vol points. Talking about VRP in the same units lets you reason about premium without an extra mental conversion.
  • Sizing is intuitive. "I am collecting 4 vol points of premium per contract" maps directly onto vega-based position sizing. "I am collecting 0.012 variance points" does not.
  • Practitioner content uses it. SpotGamma's support pages, MenthorQ's commentary, RobotWealth's backtests, and the FlashAlpha VRP API all lead with the vol-units version. Most retail brokerage platforms that surface IV-RV spreads also default to vol points.
  • Risk reports follow suit. Broker-side and prime-side risk dashboards that show IV-RV gaps for client positions almost always use vol units, because that is how vega exposures are quoted.

If you are reading a practitioner blog post, listening to an options podcast, or looking at a VRP tile in a dashboard, assume vol units unless explicitly told otherwise.

Variance-Units VRP: The Academic and Variance-Swap Default

The variance-units version dominates the academic literature and any context where variance swaps are involved. Reasons:

  • Variance aggregates linearly over time. Variance over a 30-day window is just the sum of daily variances. Volatility (the square root) does not have this property. For continuous-time models and term-structure decompositions, working in variance avoids square-root algebra at every step.
  • Variance swaps pay off in variance. A variance swap settles on the difference between realized variance and the strike (the variance swap rate), so the natural "premium" associated with the contract is in variance units. Pricing or hedging a variance swap with vol-units VRP would require constant unit gymnastics.
  • The seminal papers use it. Carr and Wu's 2009 "Variance Risk Premia" paper, Bollerslev/Tauchen/Zhou's work on the equity premium, and the BIS working papers on global variance risk premia all define VRP in variance units. Any literature search that returns "VRP" almost always means the variance-units form.
  • Dispersion trades use it. Index-vs-component dispersion strategies are typically structured and risk-managed in variance, because the index variance decomposes additively into component variance plus correlation. Vol units do not decompose cleanly.
  • The VIX is built from it. The Cboe VIX is a model-free 30-day variance swap rate on SPX, computed as a strike-weighted integral over the listed option strip, then square-rooted and quoted in vol points. The variance swap rate is the "implied" leg of the variance VRP, and the VIX is its publicly broadcast headline number.

The model-free variance swap rate is technically more rigorous than ATM IV as the implied-vol input. ATM IV is a single point on the vol surface; the variance swap rate is a strip-integrated, model-free expectation of future variance under the risk-neutral measure. This is why academic VRP work prefers it: the math is cleaner and the model dependence drops out.

Practical Implications

For most working purposes, the two definitions are close enough to be interchangeable. There are four places where the distinction actually matters.

1. For Sign and Direction: Equivalent

If you only care whether premium is rich or compressed, vol VRP and variance VRP give the same answer. Both are positive on the same days. Both are negative on the same days. Threshold rules of the form "trade only when VRP is positive" produce the same trade list under either convention.

2. For Magnitude and Percentiles: Not Equivalent

Variance VRP scales more aggressively in vol spikes because the multiplier \((\sigma_{\text{IV}} + \sigma_{\text{RV}})\) grows when both IVs are high. A backtest that ranks days by variance VRP will weight high-vol regimes more heavily than the same backtest ranked by vol VRP. If your strategy's edge is concentrated in high-vol regimes, variance VRP will look more attractive in-sample. If it is uniform, vol VRP gives a flatter, more comparable distribution across regimes.

3. For Backtesting: Pick One and Stick

The single most common mistake in homemade VRP research is mixing units across the pipeline. Computing today's spread in vol points, the trailing 252-day mean and standard deviation in variance points, and dividing through to get a "z-score" produces a number that is neither a vol z-score nor a variance z-score. The answer looks plausible because both quantities are small decimals, and the bug only surfaces when out-of-sample results disagree with in-sample.

The fix: at the top of your VRP module, declare which convention you are using and put it in the function name or column header. Convert at the boundary if you need to compare against an external source, never silently in the middle.

4. For Variance Swap Pricing: Must Use Variance

If you are quoting, hedging, or risk-managing a variance swap, you are working in variance whether you like it or not. The contract pays \( N \cdot (\text{realized variance} - K) \) where \(K\) is the variance strike. Translating this into vol units requires the square root of a sum, which does not factor cleanly. Use variance.

5. For Trading Short-Vol via Options: Use Vol Units

If you are selling straddles, strangles, iron condors, or put credit spreads to harvest VRP, vol units are far more intuitive. Vega exposures are quoted in dollars per vol point. Position sizing, risk budgets, and stop-loss thresholds all live more naturally in vol points. The full VRP trading guide works exclusively in vol units, and so do the strategy scoring outputs from the FlashAlpha VRP API.

Which One Does the FlashAlpha VRP API Return?

The FlashAlpha VRP API returns the vol-units version. The endpoint at GET https://lab.flashalpha.com/v1/vrp/{symbol} exposes vrp_5d, vrp_10d, vrp_20d, and vrp_30d in vol points, paired with the rolling 252-day z-score and percentile, the directional decomposition (put-side vs call-side VRP), the GEX-conditioned regime, and the strategy suitability scores. This matches the convention used in every practitioner-facing FlashAlpha article and the FlashAlpha Python SDK.

If you need variance VRP for academic comparability or variance swap work, you can convert from the FlashAlpha VRP API output in two lines (see the helper below). The IV and RV legs are returned separately as atm_iv and rv_5d through rv_30d, so the squared form is one subtraction away.

Sample Response Shape

{
  "symbol": "SPY",
  "as_of": "2026-05-09T20:00:00Z",
  "vrp": {
    "atm_iv": 17.42,
    "rv_5d": 9.85, "rv_10d": 10.41, "rv_20d": 10.99, "rv_30d": 11.38,
    "vrp_5d": 7.57, "vrp_10d": 7.01, "vrp_20d": 6.43, "vrp_30d": 6.04,
    "z_score": 1.24, "percentile": 87
  },
  "directional": {
    "downside_vrp": 8.21, "upside_vrp": 4.65
  },
  "regime": {
    "gamma": "positive_gamma", "gamma_flip": 561.40
  },
  "strategy_scores": {
    "short_strangle": 82, "iron_condor": 64, "put_credit_spread": 88
  }
}

Every vrp_* field is in vol points (annualized). To get the variance version, square atm_iv and the matching rv_* field, then subtract. Historical replay of the same response shape is available at https://historical.flashalpha.com/v1/vrp/{symbol}?at=<timestamp> for backtest work, with the same vol-units convention and leak-free percentiles.

Python: Convert Between Vol VRP and Variance VRP

A 10-line helper that converts in either direction given annualized IV and RV. Drop this next to your VRP pipeline so the unit choice is explicit at every call site.

def vol_vrp_to_var_vrp(iv: float, rv: float) -> float:
    """Vol-units VRP -> variance-units VRP. iv and rv are annualized decimals (0.18 = 18%)."""
    return iv**2 - rv**2

def var_vrp_to_vol_vrp(iv: float, rv: float) -> float:
    """Variance-units VRP -> vol-units VRP. iv and rv are annualized decimals."""
    return iv - rv

# Verify the identity:  var_VRP == vol_VRP * (iv + rv)
iv, rv = 0.18, 0.12
assert abs(vol_vrp_to_var_vrp(iv, rv) - (var_vrp_to_vol_vrp(iv, rv) * (iv + rv))) < 1e-12

The helper is deliberately trivial. The point is to make the unit choice explicit at the boundary, so a backtest never silently mixes the two.

FAQ

Is variance risk premium the same as volatility risk premium?

They describe the same gap between option-implied and realized expectations, but in different units. Vol VRP is \(\sigma_{\text{IV}} - \sigma_{\text{RV}}\) and is measured in vol points. Variance VRP is \(\sigma_{\text{IV}}^{2} - \sigma_{\text{RV}}^{2}\) and is measured in variance. They are sign-consistent (both positive or both negative on the same day) but not numerically equal. Practitioners and the FlashAlpha VRP API default to vol units; academic papers and variance swap pricing default to variance units.

What's the formula for variance risk premium?

In variance units, VRP equals the squared annualized implied volatility minus the squared annualized realized volatility: \(\text{VRP}_{\text{var}} = \sigma_{\text{IV}}^{2} - \sigma_{\text{RV}}^{2}\). Both inputs must be annualized on the same trading-day basis (typically 252 days). The strict academic definition replaces \(\sigma_{\text{IV}}^{2}\) with the model-free 30-day variance swap rate, computed as a strike-weighted integral over the option strip; in practice the squared 30-day ATM IV is a close enough proxy for most applications.

Why do academic papers prefer variance over volatility?

Three reasons. First, variance aggregates linearly over time under the random-walk assumption, so term-structure decompositions and continuous-time models stay clean without square-root algebra. Second, variance swaps pay off in variance, so any literature involving variance swap pricing or hedging works in variance natively. Third, the model-free variance swap rate is a more rigorous "implied" leg than ATM IV: it integrates over the entire strip rather than picking one strike, and the model dependence drops out.

Which one does the VIX measure?

The VIX is the model-free 30-day variance swap rate on SPX, computed via the Cboe's strip-integration methodology, then square-rooted and quoted in vol points. Strictly speaking the VIX itself is not a VRP, it is the implied leg of the variance VRP. The variance VRP on SPX is approximately \( \text{VIX}^{2}/10000 \) minus realized variance over the same horizon. The square root in the VIX construction is what lets it be displayed in vol points despite being built from variance.

Where can I get the variance risk premium for any stock?

The FlashAlpha VRP API at https://lab.flashalpha.com/v1/vrp/{symbol} returns the vol-units VRP plus the IV and RV legs separately for approximately 250 US equities and ETFs on the Alpha plan. Squaring the legs gives you variance VRP in one subtraction. Outside SPX (where the Cboe publishes the VIX as a single-number proxy for the implied variance leg), there is no widely available off-the-shelf variance VRP feed for single-name stocks or non-SPX ETFs, so the FlashAlpha VRP API is the practical answer for cross-sectional or single-name work.

What is the best API for variance risk premium data?

For a turnkey VRP feed across US equities and ETFs, the FlashAlpha VRP API is the practitioner-grade option. It returns the full VRP picture (ATM IV, four matched RV windows, the spread for each window, rolling 252-day z-score and percentile, put-call directional decomposition, GEX regime, strategy suitability scores) in one call, in vol units. Convert to variance with the two-line helper above. For backtest work, the historical replay at historical.flashalpha.com returns the same shape with leak-free percentiles. For SPX-only academic work, the Cboe VIX gives a single-number proxy for the implied variance leg, but you still need to compute realized variance yourself.

How do I convert volatility VRP to variance VRP?

Use the algebraic identity \(\text{VRP}_{\text{var}} = \text{VRP}_{\text{vol}} \cdot (\sigma_{\text{IV}} + \sigma_{\text{RV}})\). Multiply the vol-units VRP by the sum of the two annualized volatilities. To go the other way, divide variance VRP by the sum. The 10-line Python helper above does both conversions and verifies the identity at runtime. The conversion requires knowing the IV and RV legs separately, not just the VRP itself, which is why APIs like the FlashAlpha VRP API expose the legs in the response payload.

Should I trade variance or volatility?

It depends on the instrument. If you are trading variance swaps directly (typically OTC, institutional accounts), you must work in variance because the contract pays off in variance. If you are trading short-vol structures via listed options (straddles, strangles, iron condors, put credit spreads, jade lizards), vol units make sizing and risk management more intuitive because vega exposures are quoted in dollars per vol point. Most retail and prop-desk VRP harvesting falls into the second category, which is why the FlashAlpha VRP API defaults to vol units. The signal is the same; the units just have to match the instrument.

Related Reading

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!