Implied volatility is the volatility number that makes an option pricing model produce the price the option is actually trading at. Everything else in the model is observable, the underlying price, the strike, the time to expiry and rates, so volatility is the one input left to solve for. That makes it the market's expectation of future movement rather than a measurement of past movement. Massive returns it on the options snapshot, alongside the Greeks.
Applies to
- Plans: an Options subscription.
- Endpoints: /v3/snapshot/options/{underlyingAsset} and /v3/snapshot, as implied_volatility on each contract.
- Asset classes: US-listed options, including index options.
How to get it
curl -X GET "https://api.massive.com/v3/snapshot/options/I:SPX/O:SPX261218C07600000?apiKey=YOUR_API_KEY"
Response
{
"results": {
"details": { "ticker": "O:SPX261218C07600000", "strike_price": 7600 },
"implied_volatility": 0.15387520802176716,
"greeks": { "delta": 0.5756070903107013, "vega": 15.103468903725092 },
"open_interest": 24211
},
"status": "OK"
}
The value is a decimal rather than a percentage: a value of 0.137 means about 13.7 percent annualised. This is a live snapshot, so the number you get back will differ from the one above; the contract is pinned by ticker, so the request itself keeps working.
How it differs from historical volatility
Historical volatility is computed from past prices: take the returns over a window and measure their dispersion. Implied volatility is solved from a current price, so it is forward looking and it changes the moment the option's price changes, even if the underlying has not moved at all.
That is why the two diverge before an event. Ahead of an earnings announcement, options become more expensive because the outcome is uncertain, so implied volatility rises while historical volatility, computed from a quiet run of prices, does not.
Why it is computed rather than published
It is computed rather than published because no exchange publishes it: it is not a traded quantity but it is an output of a model applied to a price. Massive computes it continuously from the live quote, which is also why a contract with no recent quote can come back with no implied volatility and no Greeks. There is nothing to solve from.
Different providers can report slightly different values for the same contract, because the model, the rate assumption and the price used, last trade or mid quote, are all choices.
If you see an error
A contract with no implied_volatility has no usable quote, which is normal for deep out-of-the-money or long-dated strikes with no open interest.
A value that looks implausibly large is usually a deep in-the-money or nearly expired contract, where the solve is numerically unstable rather than wrong.
A figure that differs from another vendor's is expected. Compare the model and the input price before treating it as an error.

