Verschil tussen IV rank en IV percentile uitgelegd
Begrijp het verschil tussen IV rank en IV percentile met de exacte formules en een rekenvoorbeeld. Ontdek waarom dezelfde ticker soms sterk uiteenlopende waarden toont.
IV rank versus IV percentile
IV rank en IV percentile zijn gebaseerd op twee verschillende berekeningen die op dezelfde data worden uitgevoerd. IV rank meet waar de huidige implied volatility zich bevindt binnen de range van tweeënvijftig weken, van de laagste tot de hoogste stand. IV percentile telt het aandeel handelsdagen in de gekozen periode dat onder de huidige stand sloot. Dezelfde ticker kan op dezelfde middag een score van achttien op de ene en zeventig op de andere metriek laten zien.
De twee formules, voluit geschreven
IV rank = (huidige IV minus de 52-weeks laagste IV) / (de 52-weeks hoogste IV minus de 52-weeks laagste IV) x 100
IV percentile = (aantal handelsdagen in de periode met een IV lager dan de huidige IV) / (totaal aantal handelsdagen in de periode) x 100
Beide waarden liggen tussen nul en honderd. Voor beide zijn dezelfde twee inputs vereist: een dagelijkse reeks van implied volatility voor het aandeel en een terugkijkperiode, gebruikelijk tweehonderdtweeënvijftig handelsdagen. Implied volatility zelf is de door de optiemarkt geschatte jaarlijkse beweging van het aandeel, afgeleid van actuele optieprijzen, wat in wat implied volatility meet vanaf de basis wordt uitgelegd.
Het verschil tussen beide is hoeveel van de periode elk meetpunt in ogenschouw neemt. IV rank kijkt naar exact twee dagen van de tweehonderdtweeënvijftig: de hoogste en de laagste. Alles daartussen is bijzaak. IV percentile weegt elke dag gelijk en kijkt nooit naar de afstand tussen de metingen. De ene is een positie binnen een bereik. De andere is een telling van dagen.
Een uitgewerkt voorbeeld dat u zelf kunt controleren
Neem een fictieve reeks van tien dagen IV, één meting per sessie: 22, 24, 21, 60, 26, 25, 23, 27, 24, en vandaag 28. Het dieptepunt is 21 en het hoogtepunt is 60.
IV rank: (28 - 21) / (60 - 21) x 100 = 7 / 39 x 100 = 17,9.
IV percentile: zeven van de tien metingen, 22, 24, 21, 26, 25, 23 en 24, liggen onder de 28, wat 7 / 10 x 100 = 70,0 oplevert.
Een IV rank van 17,9 duidt op goedkope volatiliteit. Een IV percentile van 70 geeft aan dat de volatiliteit op de meeste dagen in deze periode lager was dan nu. Beide zijn correcte beschrijvingen van dezelfde tien getallen.
Wijzig nu één waarde. Vervang de 60 door een 30 en laat de overige negen metingen ongewijzigd. De IV rank wordt (28 - 21) / (30 - 21) x 100 = 77,8. De IV percentile verandert niet: deze blijft 70,0. Eén sessie, degene die het hoogtepunt bepaalde, is 60 punten aan IV rank waard en heeft geen enkele invloed op de IV percentile.
Dat is het structurele zwakke punt van IV rank. Een enkele uitschieter in de periode, zoals een earnings gap of een tijdelijke schrikreactie, trekt de noemer ver open en houdt de rank voor de daaropvolgende twaalf maanden dicht bij de bodem, lang nadat de uitschieter uit de optieketen is verdwenen. Wanneer de twee scores sterk uiteenlopen, wijst dit verschil meestal op een uitschieter binnen de periode, en is de percentile de meer betrouwbare beschrijving van waar de volatiliteit zich feitelijk heeft bevonden. IV rank is een betere graadmeter wanneer het verloop gelijkmatig is en beide extremen door meer dan één sessie zijn gevuld. Geen van beide getallen zegt iets over de richting.
Hoe een reële IV-reeks eruitziet
Dit is het basismateriaal waar beide formules op draaien. Het onderstaande paneel construeert een dagelijkse at-the-money implied volatility-waarde voor AAPL op basis van contracten met een looptijd van twintig tot vijfenveertig dagen tot expiratie en binnen vijf procent van de aandelenkoers, en middelt deze waarden vervolgens per week.
De exacte SQL achter elk getal
WITH daily AS
(
SELECT
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
)
SELECT
toString(toMonday(date)) AS week,
formatDateTime(toMonday(date), '%b %e, %Y') AS week_label,
round(avg(atm_iv), 2) AS aapl_atm_iv_pct,
round(min(atm_iv), 2) AS week_low_iv_pct,
round(max(atm_iv), 2) AS week_high_iv_pct
FROM daily
GROUP BY toMonday(date)
ORDER BY toMonday(date)De reeks bevat 54 weekpunten, van de week van Jul 28, 2025, die gemiddeld 30.03% bedroeg, tot de week van Aug 3, 2026 op 27.7%. Het verloop van die lijn bepaalt of de rank en de percentile met elkaar overeenstemmen. Een lijn met één hoge, geïsoleerde uitschieter drijft ze uiteen. Een lijn die binnen een stabiele bandbreedte beweegt, houdt ze dicht bij elkaar. Onze AAPL implied volatility-pagina volgt dit aandeel door de tijd heen; voor de vraag naar het absolute niveau zonder historische context, zie is 30% IV hoog.
IV rank versus IV percentile voor acht tickers
Dezelfde formules, dezelfde lookback-periode, acht liquide namen, één sessie. De kolom gap toont het absolute verschil tussen de twee scores.
De exacte SQL achter elk getal
WITH daily AS
(
SELECT
underlying_symbol AS symbol,
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'SPY', 'QQQ', 'KO')
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY symbol, date
),
latest AS
(
SELECT
symbol,
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
GROUP BY symbol
)
SELECT
d.symbol AS symbol,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile,
round(abs(iv_rank - iv_percentile), 1) AS gap,
formatDateTime(any(l.as_of), '%b %e, %Y') AS as_of_label
FROM daily AS d
INNER JOIN latest AS l ON l.symbol = d.symbol
GROUP BY d.symbol, l.iv_now
ORDER BY gap DESCPer Aug 3, 2026 bedraagt het grootste verschil in de tabel 35.6 punten, bij AAPL, waar de IV rank 32.4 bedraagt tegenover een IV percentile van 68. Aan de andere kant van de tabel houdt TSLA de twee binnen een marge van 6.5 punten van elkaar. Een screening op basis van het ene getal levert een andere lijst op dan een screening op basis van het andere; dit is de praktische reden om te weten welke waarde uw platform weergeeft. De aandelen met de hoogste IV rank-screening sorteert de markt op basis van de eerste van deze twee.
De bereik-inputs achter elke rank in die tabel
Voer de kolommen voor de huidige, lage en hoge waarde in de rank-formule in en de bovenstaande rank-kolom is het resultaat.
De exacte SQL achter elk getal
WITH daily AS
(
SELECT
underlying_symbol AS symbol,
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'SPY', 'QQQ', 'KO')
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY symbol, date
),
latest AS
(
SELECT
symbol,
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
GROUP BY symbol
)
SELECT
d.symbol AS symbol,
round(l.iv_now, 2) AS current_iv_pct,
round(min(d.atm_iv), 2) AS low_52w_iv_pct,
round(max(d.atm_iv), 2) AS high_52w_iv_pct,
count() AS observations,
formatDateTime(any(l.as_of), '%b %e, %Y') AS as_of_label
FROM daily AS d
INNER JOIN latest AS l ON l.symbol = d.symbol
GROUP BY d.symbol, l.iv_now
ORDER BY current_iv_pct DESCWaarom twee platforms verschillende waarden rapporteren voor dezelfde ticker
Geen van beide formules is ambigu. De invoergegevens zijn dat wel. Dataleveranciers publiceren zelden welke IV-reeks zij gebruiken, en de gangbare keuzes bevinden zich aan tegenovergestelde uiteinden van de optieketen: een IV met een constante looptijd van dertig dagen, geïnterpoleerd tussen de twee expiratiedata aan weerszijden van dertig dagen, of het front-month at-the-money contract, dat veel volatieler reageert. Sommige platforms middelen de gehele keten. Dit panel toetst één aandeel aan drie definities van de IV-invoer over dezelfde tweeënvijftig weken.
De exacte SQL achter elk getal
WITH contracts AS
(
SELECT
date,
days_to_expiry,
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness,
toFloat64(implied_volatility) * 100 AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 371
AND iv_converged = 1
AND volume > 0
),
defs AS
(
SELECT
spec.1 AS iv_series,
spec.2 AS min_dte,
spec.3 AS max_dte,
spec.4 AS max_moneyness
FROM
(
SELECT arrayJoin([
('Near 30 day ATM', 20, 45, 0.05),
('Front month ATM', 1, 19, 0.05),
('Wide net, any expiry', 1, 400, 0.30)
]) AS spec
)
),
daily AS
(
SELECT
s.iv_series AS iv_series,
c.date AS date,
avg(c.iv_pct) AS atm_iv
FROM contracts AS c
CROSS JOIN defs AS s
WHERE c.days_to_expiry BETWEEN s.min_dte AND s.max_dte
AND c.moneyness < s.max_moneyness
GROUP BY iv_series, date
),
latest AS
(
SELECT
iv_series,
argMax(atm_iv, date) AS iv_now
FROM daily
GROUP BY iv_series
)
SELECT
d.iv_series AS iv_series,
round(l.iv_now, 2) AS current_iv_pct,
round(min(d.atm_iv), 2) AS low_52w_iv_pct,
round(max(d.atm_iv), 2) AS high_52w_iv_pct,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile
FROM daily AS d
INNER JOIN latest AS l ON l.iv_series = d.iv_series
GROUP BY d.iv_series, l.iv_now
ORDER BY current_iv_pct DESCTijdens de meest recente sessie noteert Wide net, any expiry 37.6%, terwijl Near 30 day ATM 27.7% noteert, en hun IV-ranks komen uit op 23.1 en 32.4. Hetzelfde aandeel, dezelfde sessie, dezelfde formule, maar een andere definitie van de invoer.
De tweede variabele is de terugkijkperiode. Tweeënvijftig weken is de standaard, en veel platforms bieden daarnaast instellingen van dertig, zestig of negentig dagen aan.
De exacte SQL achter elk getal
WITH daily AS
(
SELECT
date,
avg(toFloat64(implied_volatility)) * 100 AS atm_iv
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= today() - 800
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
),
latest AS
(
SELECT
argMax(atm_iv, date) AS iv_now,
max(date) AS as_of
FROM daily
),
windows AS
(
SELECT
spec.1 AS lookback_label,
spec.2 AS lookback_days
FROM
(
SELECT arrayJoin([
('1 month', 30),
('3 months', 90),
('6 months', 180),
('12 months', 371),
('24 months', 742)
]) AS spec
)
)
SELECT
w.lookback_label AS lookback_label,
round(100 * (l.iv_now - min(d.atm_iv)) / nullIf(max(d.atm_iv) - min(d.atm_iv), 0), 1) AS iv_rank,
round(100 * countIf(d.atm_iv < l.iv_now) / count(), 1) AS iv_percentile,
count() AS observations
FROM daily AS d
CROSS JOIN windows AS w
CROSS JOIN latest AS l
WHERE d.date >= l.as_of - w.lookback_days
GROUP BY w.lookback_label, w.lookback_days, l.iv_now
ORDER BY w.lookback_daysBij een terugkijkperiode van 1 month scoort dit aandeel 0.4 op IV-rank en 4.8 op IV-percentiel. Verleng het venster naar 24 months en dezelfde sessie scoort 23.4 en 63.3. Er is niets veranderd aan de optieketen tussen die rijen. Alleen het venster is aangepast. Wanneer twee schermen verschillende waarden tonen voor een ticker, zijn de instelling van de terugkijkperiode en de IV-reeks de eerste twee punten om te controleren.
Hoe de twee cijfers worden gebruikt
Beide waarden fungeren als filter voor de strategiekeuze, nooit als prognose. Handelaren die premie verkopen, waaronder covered calls en cash secured puts, zoeken doorgaans naar hoge waarden, waarbij de optie geprijsd is voor meer beweging dan het aandeel in de betreffende periode doorgaans heeft laten zien. Handelaren die premie kopen, kijken naar de onderkant van het spectrum, waar dezelfde logica in omgekeerde richting geldt. Een relatieve score is voor dit doel beter dan het ruwe IV-cijfer: een IV van veertig procent is voor het ene aandeel normaal en voor het andere extreem; door een aandeel af te zetten tegen zijn eigen historie wordt dit probleem ondervangen. Is een hoge implied volatility gunstig behandelt de afwegingen aan beide kanten.
Eén waarschuwing waar de cijfers geen antwoord op bieden: een hoge waarde kan nog verder stijgen, en een rangorde van vijfennegentig op maandag kan op vrijdag zestig zijn zonder dat er iets in uw positie is veranderd. Geen van beide scores bevat informatie over de richting: een verhoogde IV betekent dat de markt rekening houdt met een grote beweging, zonder dat er een visie is op welke kant die opgaat.
Veelgestelde vragen
Is IV rank of IV percentile beter?
Ze beantwoorden verschillende vragen. IV percentile presteert beter wanneer de terugkijkperiode één hevige uitschieter bevat, omdat het aantal dagen wordt geteld in plaats van te meten ten opzichte van één enkel extreem punt. IV rank is intuïtiever wanneer het bereik goed gevuld is, omdat het direct aangeeft hoe dicht de huidige stand bij het twaalfmaandelijkse hoogtepunt ligt.
Wat is een hoge IV rank?
De meeste trading desks beschouwen waarden boven de vijftig als de bovenste helft van het eigen bereik van een aandeel en waarden boven de tachtig als daadwerkelijk verhoogd voor die specifieke naam. De score is per definitie relatief; een rank van tachtig bij een rustig defensief aandeel en een rank van tachtig bij een volatiel groeiaandeel beschrijven dus zeer verschillende absolute IV-niveaus.
Gebruiken IV rank en IV percentile dezelfde terugkijkperiode?
Doorgaans tweehonderdtweeënvijftig handelsdagen voor beide, hoewel de instelling op de meeste platforms aanpasbaar is en de standaardinstelling per aanbieder verschilt. Het bovenstaande paneel toont een aandeel dat verschillend scoort bij elke vensterlengte; dit is het eerste wat u moet controleren wanneer twee instrumenten tegenstrijdige resultaten geven.
Kan IV rank nul of honderd zijn?
Ja. IV rank bereikt honderd op de dag dat een aandeel een nieuw tweeënvijftig-wekenhoogtepunt in implied volatility noteert en nul bij een nieuw dieptepunt, aangezien de huidige stand zelf een eindpunt van het bereik is. IV percentile raakt zelden een van beide extremen, omdat de huidige sessie zelf in de noemer is opgenomen.
Waarom veranderde mijn IV rank zonder dat de IV bewoog?
Het venster schuift elke sessie op. Wanneer een oude uitschieter uit de afgelopen tweeënvijftig weken valt, wordt het hoogtepunt in de noemer bijgesteld naar een lagere waarde en stijgt de rank, ook al is de IV van vandaag onveranderd. IV crush beschrijft de andere veelvoorkomende verrassing: de daling van de IV zelf direct na een kwartaalcijferpublicatie.
Elk paneel hier bevat de exacte SQL-code eronder. Vervang de ticker in een van de panelen om een andere naam te scoren op de Strasmore-terminal.