Strasmore Research
Formazione Matt ConnorDi Matt Connor · data as of August 6, 2026 · refreshed weekly

IV Rank vs IV Percentile: formule e differenze

IV rank e IV percentile a confronto: formule complete, un esempio da verificare a mano e il caso in cui divergono nettamente sullo stesso ticker.

IV rank e IV percentile si distinguono per due calcoli applicati agli stessi dati. L’IV rank misura la posizione della volatilità implicita di oggi all’interno del suo intervallo di 52 settimane, dal valore più basso a quello più alto. L’IV percentile conta la quota di sedute nel periodo analizzato che si sono chiuse al di sotto del valore odierno. Lo stesso ticker, nello stesso pomeriggio, può registrare 18 su una metrica e 70 sull’altra.

Le due formule, per esteso

Rank IV = (IV corrente meno IV minimo delle 52 settimane) / (IV massimo delle 52 settimane meno IV minimo delle 52 settimane) x 100

Percentile IV = (giorni di contrattazione nel periodo con IV inferiore all’IV odierna) / (giorni di contrattazione totali nel periodo) x 100

Entrambe restituiscono un valore compreso tra 0 e 100. Entrambe richiedono gli stessi due input: una serie giornaliera della volatilità implicita del titolo e una finestra di osservazione, convenzionalmente pari a 252 giorni di contrattazione. La volatilità implicita è la stima annualizzata del mercato delle opzioni sull’ampiezza del movimento del titolo, ricavata dai prezzi correnti delle opzioni. L’articolo che cosa misura la volatilità implicita la illustra dalle basi.

La differenza riguarda la quota della finestra che ciascun indicatore considera. Il rank IV prende in esame esattamente due giorni su 252: quello con il valore più alto e quello con il valore più basso. Tutto ciò che sta in mezzo viene ignorato. Il percentile IV considera invece ogni giorno allo stesso modo e non tiene conto della distanza tra i valori osservati. Il primo indica una posizione all’interno di un intervallo. Il secondo conta i giorni.

Un esempio pratico verificabile a mano

Prendiamo una serie IV fittizia di dieci giorni, con una rilevazione per seduta: 22, 24, 21, 60, 26, 25, 23, 27, 24 e oggi 28. Il minimo è 21 e il massimo è 60.

IV rank: (28 - 21) / (60 - 21) x 100 = 7 / 39 x 100 = 17,9.

IV percentile: sette delle dieci rilevazioni, 22, 24, 21, 26, 25, 23 e 24, sono inferiori a 28, quindi 7 / 10 x 100 = 70,0.

Un IV rank di 17,9 indica una volatilità a buon mercato. Un IV percentile di 70 indica che, nella maggior parte delle sedute della finestra considerata, la volatilità è stata inferiore al livello attuale. Entrambe sono descrizioni corrette degli stessi dieci valori.

Ora cambiamo un solo valore. Sostituiamo 60 con 30 e lasciamo invariate le altre nove rilevazioni. L’IV rank diventa (28 - 21) / (30 - 21) x 100 = 77,8. L’IV percentile non cambia: resta 70,0. Una sola seduta, quella che aveva fissato il massimo, vale 60 punti per l’IV rank e nulla per l’IV percentile.

Questo è il punto debole strutturale dell’IV rank. Un singolo picco nella finestra, un gap legato agli utili o uno spavento di una sola giornata, amplia il denominatore e mantiene il rank vicino al minimo per i dodici mesi successivi, molto tempo dopo che il picco è uscito dalla catena delle opzioni. Quando i due indicatori divergono nettamente, la divergenza segnala di solito la presenza di un outlier nella finestra; il percentile descrive più fedelmente dove si è collocata la volatilità nel tempo. L’IV rank è l’indicatore più utile quando l’intervallo è regolare e sia il minimo sia il massimo sono rappresentati da più di una seduta. Nessuno dei due valori dice nulla sulla direzione.

Come appare una vera serie di IV

Questo è il materiale grezzo su cui vengono eseguite entrambe le formule. Il pannello sotto costruisce una lettura giornaliera della volatilità implicita at the money di AAPL, usando contratti con scadenza tra 20 e 45 giorni e entro il 5% dal prezzo dell’azione, poi calcola la media delle letture per settimana.

QueryVolatilità implicita at the money di AAPL, settimanale, ultime 52 settimane
L'esatto SQL dietro ogni numero
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)
Run this yourself

La serie contiene 54 punti settimanali, dalla settimana del Jul 28, 2025, con una media di 30.03%, fino alla settimana del Aug 3, 2026, a 27.7%. La forma della linea determina se rank e percentile coincidono. Una linea con un unico picco molto pronunciato li separa. Una linea che oscilla all’interno di una fascia stabile li mantiene vicini. La nostra pagina volatilità implicita di AAPL segue questo titolo nel tempo; per una valutazione del livello assoluto senza serie storica, vedere la IV del 30% è elevata.

IV rank e IV percentile su otto ticker

Stesse formule, stesso periodo di osservazione, otto titoli liquidi, una sola seduta. La colonna gap indica la distanza assoluta tra i due punteggi.

QueryRank IV vs percentile IV, otto titoli liquidi, finestra di osservazione di 52 settimane
L'esatto SQL dietro ogni numero
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 DESC
Run this yourself

Alla data Aug 3, 2026, la maggiore divergenza nella tabella è di 35.6 punti e riguarda AAPL, con un IV rank pari a 32.4 contro un IV percentile di 68. All’estremo opposto, TSLA mantiene i due valori entro 6.5 punti l’uno dall’altro. Uno screening costruito su un solo valore restituisce un elenco diverso da quello basato sull’altro. Per questo è utile sapere quale dei due valori mostra la propria piattaforma. Lo screening delle azioni con l’IV rank più elevato ordina il mercato in base al primo dei due.

Gli input dell’intervallo alla base di ogni rank nella tabella

Inserendo nelle formule del rank i valori corrente, minimo e massimo, si ottiene la colonna del rank riportata sopra.

QueryIV ATM corrente, minimo e massimo a 52 settimane per ciascun titolo
L'esatto SQL dietro ogni numero
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 DESC
Run this yourself

Perché due piattaforme riportano valori diversi per lo stesso ticker

Nessuna delle due formule è ambigua. Lo sono gli input. I vendor raramente pubblicano quale serie di IV utilizzano, e le scelte più comuni si collocano agli estremi opposti della catena: una IV a scadenza costante di 30 giorni, interpolata tra le due scadenze ai lati dei 30 giorni, oppure il contratto at the money del primo mese, molto più volatile. Alcune piattaforme calcolano invece la media dell’intera catena. Questo pannello analizza un titolo applicando tre definizioni dell’input IV alle stesse 52 settimane.

QueryUn titolo, una sessione, tre definizioni dell’input IV
L'esatto SQL dietro ogni numero
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 DESC
Run this yourself

Nell’ultima seduta, Wide net, any expiry riporta 37.6%, mentre Near 30 day ATM riporta 27.7%; i relativi IV rank sono 23.1 e 32.4. Stesso titolo, stessa seduta, stessa formula, diversa definizione dell’input.

La seconda variabile è la durata del lookback. 52 settimane è la convenzione, ma molte piattaforme offrono anche impostazioni a 30, 60 o 90 giorni.

QueryLa stessa sessione valutata su cinque diverse finestre di osservazione
L'esatto SQL dietro ogni numero
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_days
Run this yourself

Con un lookback di 1 month, questo titolo registra 0.4 sull’IV rank e 4.8 sull’IV percentile. Estendendo la finestra a 24 months, nella stessa seduta registra 23.4 e 63.3. Tra le due righe non è cambiato nulla nella catena di opzioni. È cambiata solo la finestra. Quando due schermate riportano valori diversi per un ticker, il lookback e la serie IV sono i primi due elementi da verificare.

Come vengono utilizzati i due numeri

Entrambe le misure funzionano come filtro per selezionare una strategia, non come previsioni. I trader che vendono premi, tra cui chi utilizza covered call e put garantite da liquidità, tendono a cercare valori elevati. In questi casi, l’opzione incorpora un movimento maggiore di quello registrato di norma dal titolo nell’intervallo considerato. I trader che acquistano premi guardano invece alla fascia bassa, dove la stessa logica opera in senso inverso. Per questo scopo, un punteggio relativo è più utile del valore grezzo dell’IV: un’IV del 40% è ordinaria per un titolo ed estrema per un altro. Confrontare un titolo con la propria storia elimina questo problema. L’elevata volatilità implicita è positiva dipende dai compromessi associati a ciascun lato dell’operazione.

C’è però un aspetto che questi numeri non possono chiarire. Un valore elevato può aumentare ancora. Un rank pari a 95 lunedì può diventare 60 venerdì, anche senza modificare la posizione. Nessuno dei due punteggi fornisce informazioni sulla direzione: un’IV elevata indica che il mercato ha prezzato un movimento ampio, ma non in quale direzione.

FAQ

È migliore l’IV rank o l’IV percentile?

Rispondono a domande diverse. L’IV percentile è più robusto quando nella finestra di osservazione è presente un solo picco molto violento, perché conta i giorni invece di misurare il livello rispetto a un unico estremo. L’IV rank è più intuitivo quando l’intervallo contiene molti dati, perché indica direttamente quanto il livello odierno sia vicino al massimo degli ultimi dodici mesi.

Che cos’è un IV rank elevato?

La maggior parte dei desk considera le letture sopra 50 come la metà superiore dell’intervallo storico di un titolo e quelle sopra 80 come effettivamente elevate per quel nome. Il punteggio è relativo per costruzione: un rank pari a 80 su un titolo consumer staple poco volatile e un rank pari a 80 su un titolo growth volatile descrivono livelli assoluti di IV molto diversi.

IV rank e IV percentile usano la stessa finestra di osservazione?

Di norma entrambi usano 252 sedute di Borsa, anche se l’impostazione è modificabile sulla maggior parte delle piattaforme e il valore predefinito varia in base al vendor. Il pannello sopra mostra un titolo che ottiene un punteggio diverso per ciascuna lunghezza della finestra. È il primo elemento da controllare quando due strumenti non concordano.

L’IV rank può essere 0 o 100?

Sì. L’IV rank raggiunge 100 nel giorno in cui un titolo registra un nuovo massimo a 52 settimane della volatilità implicita e 0 quando registra un nuovo minimo, perché la lettura odierna è essa stessa uno degli estremi dell’intervallo. L’IV percentile raggiunge raramente uno dei due estremi, perché la seduta odierna rientra nel denominatore.

Perché il mio IV rank è cambiato anche se l’IV non si è mossa?

La finestra scorre in avanti a ogni seduta. Quando un vecchio picco esce dalle 52 settimane precedenti, il massimo usato al denominatore si riduce e il rank aumenta, anche se l’IV odierna non cambia. IV crush descrive l’altra sorpresa comune: il calo dell’IV subito dopo la pubblicazione dei risultati societari.


Ogni pannello qui riportato contiene l’SQL esatto sottostante. Sostituisci il ticker in uno qualsiasi dei pannelli per calcolare il punteggio di un altro nome sul terminale Strasmore.