Back to blog
methodology

How to chart IV rank and IV percentile

5 August 2026 7 min read

Quick answer

IV rank is the position of today's implied volatility between its lowest and highest values over the lookback window, calculated as (current IV minus the low) divided by (the high minus the low), times 100. IV percentile is the share of days in that window on which IV closed below today's, so it uses every observation rather than only the two extremes. To chart either you first have to build a daily history of a constant-maturity implied volatility, because an options chain gives you today's IV and not last year's, and plotting both series together on a fixed 0 to 100 axis is what exposes the divergence a single number hides.

IV rank and IV percentile are two of the best documented numbers in options trading and two of the least charted. Every broker, every education page and every screener will give you today's value and explain the formula. Almost none will show you the line, which is a shame, because the line contains information the number cannot: when the two measures disagree, by how much, and the moment the metric moves without the market moving at all.

The two formulas, and why they disagree

IV rank takes today's implied volatility, subtracts the lowest value over the lookback window, and divides by the range between the highest and lowest values in that window. Multiply by 100 and you have a number between 0 and 100 describing where today sits between the two extremes.

IV percentile counts instead. It is the proportion of days in the window on which implied volatility closed below today's level, expressed as a percentage. The window is conventionally one year, which is about 252 trading days.

The difference is the whole story. Rank looks at exactly two observations from the past year and ignores the other 250. Percentile looks at all of them and ignores how far apart they are. One is a position within a range; the other is a position within a distribution. They answer different questions and they are routinely quoted as if they were the same number.

A worked example where they disagree

These are illustrative figures chosen to make the mechanism visible, not a real ticker. Take a name whose implied volatility over the last year has ranged from a low of 12 percent to a high of 60 percent, where the 60 came from a single earnings shock. Today it sits at 18 percent.

IV rank is (18 minus 12) divided by (60 minus 12), times 100, which is 6 over 48, or 12.5. On that reading volatility is cheap and close to the bottom of its range.

Now suppose that on 200 of the 252 days in the window, implied volatility closed below 18 percent. IV percentile is 200 divided by 252, times 100, or 79.4. On that reading today is more expensive than four days in five.

Same day, same series, same underlying: 12.5 and 79.4. Neither is wrong. The single 60 percent print stretched the denominator of the rank calculation and pushed everything else towards the floor, while the percentile simply counted and found today near the top. If you only ever see one of these numbers, you cannot tell which situation you are in.

You have to build the input series first

This is where most attempts stop, and it is worth saying plainly: neither metric comes out of an options chain. A chain gives you today's implied volatility across strikes and expirations. IV rank needs a year of daily observations of a single IV number, and no chain contains its own history. So the first job is a stored daily series, either bought as history or captured session by session, which is a choice worth making deliberately and early — see where to get free options chain data.

Until that series is a full window long, neither number exists. Both are undefined for the first 252 days of collection, and a chart that starts computing on day 30 is showing a rank against a month of history while calling it a year. Start the line where the window fills, and say in the caption when that was.

Use a constant-maturity IV, not the nearest contract

Which IV you record every day matters more than the formula you then apply to it. The obvious choice, the at-the-money IV of the front expiration, is the wrong one. As that contract runs down towards expiry its implied volatility behaves differently from a contract with weeks left, and when it rolls to the next expiration the series jumps. Do that for a year and you have built a sawtooth driven by the expiry calendar rather than by volatility.

Record a constant-maturity number instead: at-the-money IV interpolated to a fixed horizon, conventionally 30 days, which is the same basis the VIX uses. Today's 30-day figure is then comparable with the one from eight months ago, which is the entire premise of the metric. If you already build an implied volatility term structure, the 30-day point on that curve is the number to store.

Charting it: both series, fixed 0 to 100

Plot rank and percentile as two lines on the same axes. This is the chart that does not exist elsewhere and it is the reason to build it: where the lines sit together, the range and the distribution agree and the reading is solid. Where they separate, an outlier is doing the work, and the gap itself is the signal.

Fix the y axis from 0 to 100. Both measures are bounded percentages, so an auto-scaled axis buys nothing and costs comparability: two tickers charted side by side on free axes cannot be read against each other, which is most of what these numbers are for.

Draw horizontal reference lines at 20 and 80. Those thresholds are a widely used convention for cheap and expensive rather than anything derived, so label them as convention and not as a rule. They make the chart readable at a glance, which is what a reference line is for.

State the window in the caption. One year is conventional but nothing enforces it, and a 6-month rank and a 2-year rank on the same underlying can differ by fifty points.

The step you will see, and why not to smooth it

Carry the worked example forward. Some months later the 60 percent earnings shock ages past the edge of the lookback window and drops out of the calculation. If the new high over the trailing year is 30 percent, IV rank becomes (18 minus 12) over (30 minus 12), times 100, which is 6 over 18, or 33.3.

Today's implied volatility never moved. It is 18 percent on both days. The rank went from 12.5 to 33.3 because the window forgot something, and on the chart that is a vertical step with no corresponding move in the underlying market.

Do not smooth it away. A moving average over the rank series hides exactly the artefact a reader needs to see, and turns a mechanical jump into what looks like a genuine volatility repricing. The same structure shows up in any metric whose denominator is an extreme rather than a spread, which is why the Calmar ratio line steps in the same way. Percentile, plotted alongside, will barely flinch at the same moment, and the contrast is what tells the reader the step was bookkeeping.

Edge cases and honest limits

If implied volatility never moved across the whole window, the rank formula divides by zero. Handle it explicitly and return 50, which is the honest reading of a series with no range, rather than letting an infinity propagate into the chart.

More importantly, both numbers are relative to a name's own past and nothing else. A company whose volatility regime has genuinely shifted, after a takeover approach or a change of business, will read as extreme against a history that no longer describes it. A rank of 90 says today is high for this underlying over this window. It does not say options are expensive in any absolute sense, and it does not say what happens next. Charted honestly, these are descriptive lines, and they are useful for what they describe.

Rank and percentile describe the level of implied volatility over time. Its shape across strikes and expirations is a different picture entirely, covered in the volatility smile and the volatility surface. Read together they answer whether volatility is high, and where.

[QUADESTO-EMBED: IV rank and IV percentile plotted together over one year on a fixed 0-100 axis, with 20/80 reference bands and the window roll-off step annotated]

Point Quadesto at a stored implied volatility history and it will build both lines on one axis.

Ready to try Quadesto?

Connect your data. AI builds the charts. Embed anywhere.

Get Started Free
IV rankIV percentileimplied volatilityoptionsvolatility