Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Modello Heston e volatility smile spiegazione

Un singolo valore di volatilità non basta per prezzare una intera option chain. Scopri come il modello Heston modella la varianza e influenza la forma dello smile.

Il modello Heston

Il modello Heston è un modello di pricing per le opzioni che considera la volatilità come una variabile casuale anziché fissa. Si compone di due elementi dinamici: il prezzo dell'azione e la varianza di tale prezzo, ciascuno soggetto a un proprio shock stocastico. È proprio questa seconda fonte di casualità a permettere al modello di generare uno volatility smile. Una volatilità costante, l'ipotesi alla base del modello Black-Scholes, può tracciare solo una linea piatta tra i vari strike, e nessuna option chain è mai stata piatta.

Perché un singolo valore di volatilità non può descrivere un'intera catena di opzioni

La volatilità implicita è l'input di volatilità che permette a una formula di pricing di restituire il prezzo a cui un'opzione viene effettivamente scambiata. Invertendo il calcolo contratto per contratto, come illustrato nella nostra pagina su come viene calcolata la volatilità implicita, una singola scadenza genera una curva lungo gli strike anziché un livello unico. Il pannello sottostante prende in esame tutti i contratti SPY con una durata residua compresa tra venti e quarantacinque giorni per la prima metà del 2026, li suddivide in bande del due per cento in base alla distanza tra strike e spot e calcola la media della volatilità implicita all'interno di ciascuna banda.

QueryVolatilità implicita SPY per distanza dallo strike, 20-45 giorni alla scadenza (gen-giu 2026)
L'esatto SQL dietro ogni numero
WITH
    (
        SELECT avg(implied_volatility)
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'SPY'
          AND date BETWEEN '2026-01-02' AND '2026-06-30'
          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.01
    ) AS atm_iv
SELECT
    concat(if(m_bucket > 0, '+', ''), toString(m_bucket), '%') AS moneyness,
    round(avg(iv) * 100, 2)                                    AS iv_pct,
    round((avg(iv) - atm_iv) * 100, 2)                          AS iv_vs_atm_pts,
    count()                                                     AS contracts
FROM
(
    SELECT
        implied_volatility AS iv,
        toInt16(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50) * 2) AS m_bucket
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date BETWEEN '2026-01-02' AND '2026-06-30'
      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.12
)
GROUP BY m_bucket
HAVING count() >= 100
ORDER BY m_bucket
Run this yourself

La banda -12%, con strike molto al di sotto dello spot, ha registrato una volatilità implicita media pari a 28.05%, ovvero 11.61 punti di volatilità al di sopra della media at-the-money per lo stesso intervallo temporale. La banda +12% sul lato call ha registrato una media del 15.56%. Le bande intermedie tracciano la curva da cui l'effetto prende il nome, la cui inclinazione laterale è nota come volatility skew. Un modello basato su un singolo parametro di volatilità non dispone di alcuna variabile per rappresentare questo fenomeno: ogni strike viene prezzato in base a una distribuzione unica per il valore alla scadenza e, per costruzione, l'inversione di tale modello restituisce lo stesso numero per ogni strike.

Cosa cambia con il modello di Heston

Heston mantiene lo shock casuale del titolo e aggiunge un secondo processo per la varianza. In parole, anziché in simboli:

  • Il movimento del titolo nell'istante successivo è dato da un drift più uno shock casuale, scalato dalla radice quadrata della varianza corrente.
  • Il movimento della varianza è una spinta verso un livello di lungo periodo a una velocità fissa, più il suo shock specifico, scalato da un parametro di vol-of-vol e dalla radice quadrata della varianza corrente.
  • I due shock sono correlati da un numero compreso tra meno uno e uno.

Quella scalatura tramite radice quadrata è la forma di Cox-Ingersoll-Ross, e svolge una funzione degna di nota: lo shock della varianza si riduce verso lo zero man mano che la varianza si avvicina allo zero, il che impedisce alla varianza di diventare negativa. Quando il doppio della velocità moltiplicato per la varianza di lungo periodo supera il quadrato della vol-of-vol, una condizione che prende il nome da Feller, la varianza rimane strettamente positiva.

La varianza in sé non è osservabile. La sua controparte implicita lo è, e non resta ferma. Il grafico sottostante riporta la volatilità implicita at-the-money per due nomi, una lettura per seduta, durante il secondo trimestre del duemilaventisei.

QueryVolatilità implicita at-the-money giornaliera, SPY e NVDA (apr-giu 2026)
L'esatto SQL dietro ogni numero
SELECT
    toString(date)                                                        AS session_date,
    round(avgIf(implied_volatility, underlying_symbol = 'SPY') * 100, 2)  AS spy_atm_iv_pct,
    round(avgIf(implied_volatility, underlying_symbol = 'NVDA') * 100, 2) AS nvda_atm_iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'NVDA')
  AND date BETWEEN '2026-04-01' AND '2026-06-30'
  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
HAVING countIf(underlying_symbol = 'SPY') > 0
   AND countIf(underlying_symbol = 'NVDA') > 0
ORDER BY date
Run this yourself

SPY ha aperto la finestra a 20.39% il 2026-04-01 e l'ha chiusa a 14.45% il 2026-06-30. NVDA è passata da 36.83% a 38.22% nel corso delle stesse 62 sedute. Nessuna delle due linee resta ferma, e nessuna diverge: entrambe fluttuano e continuano a tornare verso un intorno. Prezzare entrambe le estremità di quel quadro richiede un livello di partenza più un livello di lungo periodo con una velocità per la spinta tra i due.

Cosa determina ogni parametro di Heston sulla superficie

La mean reversion e il livello di lungo periodo definiscono la term structure

Il valore di un'opzione dipende dalla varianza media attesa durante la sua vita, non dalla varianza odierna. Per un contratto in scadenza la prossima settimana, la varianza odierna domina tale media; per uno in scadenza tra un anno, domina il livello di lungo periodo. Il parametro di velocità stabilisce quanto rapidamente l'aspettativa si sposta tra i due, determinando l'inclinazione della volatilità implicita lungo la curva temporale.

QueryVolatilità implicita near-the-money per tempo alla scadenza (gen-giu 2026)
L'esatto SQL dietro ogni numero
SELECT
    tenor,
    round(avgIf(implied_volatility, underlying_symbol = 'SPY') * 100, 2)  AS spy_iv_pct,
    round(avgIf(implied_volatility, underlying_symbol = 'NVDA') * 100, 2) AS nvda_iv_pct
FROM
(
    SELECT
        implied_volatility,
        underlying_symbol,
        days_to_expiry,
        multiIf(
            days_to_expiry <= 7,   '1 to 7 days',
            days_to_expiry <= 21,  '8 to 21 days',
            days_to_expiry <= 45,  '22 to 45 days',
            days_to_expiry <= 90,  '46 to 90 days',
            days_to_expiry <= 180, '91 to 180 days',
                                   '181 to 365 days') AS tenor
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'NVDA')
      AND date BETWEEN '2026-01-02' AND '2026-06-30'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 1 AND 365
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.02
)
GROUP BY tenor
HAVING countIf(underlying_symbol = 'SPY') > 0
   AND countIf(underlying_symbol = 'NVDA') > 0
ORDER BY min(days_to_expiry)
Run this yourself

I contratti SPY near-the-money nel bucket 1 to 7 days hanno registrato una media di 17.05% durante la prima metà del 2026, contro 18.77% nel bucket 181 to 365 days. NVDA ha stampato 41.22% e 44.94% nei medesimi due bucket. Un modello a numero singolo prezza ogni scadenza basandosi sulla stessa volatilità. Heston assegna livelli distinti alla parte front e alla parte back, con il parametro di velocità che governa la forma intermedia. Ulteriori curve di questo tipo sono disponibili nella nostra pagina IV term structure.

La vol of vol incurva lo smile

La vol of vol è la volatilità della varianza stessa. Impostandola a zero, la varianza segue un percorso lineare: la term structure può ancora inclinarsi, ma lo smile tra gli strike diventa piatto. Aumentandola, la distribuzione del prezzo alla scadenza guadagna peso in entrambe le code, il che innalza gli strike distanti dallo spot rispetto a quelli vicini. L'ampiezza dell'escursione della varianza varia in base al sottostante, e il pannello sottostante misura tale movimento direttamente.

QueryVariazione della volatilità implicita at-the-money (gen-giu 2026)
L'esatto SQL dietro ogni numero
SELECT
    symbol,
    round(min(daily_iv) * 100, 2)                   AS low_iv_pct,
    round(max(daily_iv) * 100, 2)                   AS high_iv_pct,
    round((max(daily_iv) - min(daily_iv)) * 100, 2) AS swing_pts
FROM
(
    SELECT
        underlying_symbol      AS symbol,
        date,
        avg(implied_volatility) AS daily_iv
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')
      AND date BETWEEN '2026-01-02' AND '2026-06-30'
      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
)
GROUP BY symbol
ORDER BY swing_pts DESC
Run this yourself

AMZN ha coperto l'intervallo più ampio nel pannello: una volatilità implicita at-the-money con un minimo di 28.21% e un massimo di 74.42%, con una differenza di 46.22 punti di volatilità in sei mesi. KO ha coperto l'intervallo più stretto, pari a 10.75 punti. Il Vega, ovvero la sensibilità del prezzo alla volatilità definita nella nostra pagina sul vega, misura il livello della superficie. Con una volatilità stocastica, due contratti con Vega identico possono comportarsi in modo differente quando a muoversi è la forma della superficie anziché il suo livello.

La correlazione inclina lo smile in uno skew

La correlazione tra lo shock del titolo e lo shock della varianza trasforma uno smile simmetrico in uno asimmetrico. In presenza di una correlazione negativa, i percorsi in cui il titolo scende sono quelli in cui la varianza sale, e la coda sinistra della distribuzione alla scadenza assume un peso maggiore rispetto a quella destra. La volatilità implicita dei put prezza quindi al di sopra della volatilità implicita dei call alla stessa distanza dallo spot.

QueryVolatilità implicita put vs call, 20-45 giorni (gen-giu 2026)
L'esatto SQL dietro ogni numero
SELECT
    underlying_symbol                                                    AS symbol,
    round(avgIf(iv, ratio <= 0.95) * 100, 2)                             AS otm_put_iv_pct,
    round(avgIf(iv, ratio >= 1.05) * 100, 2)                             AS otm_call_iv_pct,
    round((avgIf(iv, ratio <= 0.95) - avgIf(iv, ratio >= 1.05)) * 100, 2) AS put_minus_call_pts
FROM
(
    SELECT
        underlying_symbol,
        implied_volatility                                    AS iv,
        toFloat64(strike_price) / toFloat64(underlying_close) AS ratio
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')
      AND date BETWEEN '2026-01-02' AND '2026-06-30'
      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.20
)
GROUP BY underlying_symbol
HAVING countIf(ratio <= 0.95) > 0
   AND countIf(ratio >= 1.05) > 0
ORDER BY put_minus_call_pts DESC
Run this yourself

Durante la prima metà del 2026, SPY ha mostrato il divario più ampio nel pannello: i contratti con strike inferiore di almeno il cinque percento rispetto allo spot hanno registrato una media di 27% contro 14.76% per i contratti con strike superiore di almeno il cinque percento, con una differenza di 12.23 punti di volatilità. All'estremo opposto, MSFT ha registrato 3.9 punti nella stessa misurazione. Un singolo parametro di correlazione per sottostante è sufficiente a coprire l'intera gamma di inclinazioni.

La varianza iniziale definisce il livello

Il quinto parametro è la varianza da cui il modello parte oggi. Esso solleva o abbassa l'intera superficie senza modificarne significativamente la forma; per questo motivo viene ricalibrato più frequentemente: mantiene il modello allineato al livello attuale di mercato, mentre gli altri quattro parametri ne definiscono la geometria.

Cosa acquista il modello e quanto costa

L'acquisto è una superficie che si incurva in due direzioni a partire da cinque numeri interpretabili, prezzati rapidamente. Heston valuta le opzioni europee tramite una funzione caratteristica e un integrale numerico, senza necessità di simulazione, il che rende pratico il fitting di un'intera catena in una frazione di secondo. I costi meritano di essere esposti chiaramente.

  • I cinque parametri sono calibrati, adattati ai prezzi delle opzioni osservati anziché misurati da dati oggettivi.
  • Una calibrazione è un'istantanea. Ricalibrando domani i numeri cambiano, il che significa che le costanti del modello non sono costanti.
  • Un set di parametri raramente si adatta a tutte le scadenze contemporaneamente. Gli smile osservati sulle scadenze brevissime si incurvano più bruscamente di quanto questo processo di varianza possa fare.
  • I prezzi di mercato presentano dei gap. Qui la varianza e lo spot si muovono in modo continuo, e un gap deve essere assorbito dai numeri fittati.

Un'avvertenza è importante per i lettori che provengono dalle pagine sulla volatilità. Il processo di varianza descrive le dinamiche che prezzano le opzioni, un oggetto diverso dalla volatilità che un titolo andrà effettivamente a realizzare. La distanza tra le due è oggetto di volatilità implicita contro volatilità realizzata.

Dove il modello mostra ancora lacune

Esistono estensioni per ogni lacuna. Bates mantiene la varianza di Heston e aggiunge salti al processo di prezzo, il che accentua lo smile a breve termine. I modelli di rough volatility mantengono la varianza casuale e sostituiscono il driver con percorsi più irregolari del moto browniano standard, allineandosi meglio alla parte brevissima della curva. Nessuno dei due elimina il problema della calibrazione: entrambi aggiungono parametri che devono essere adattati a un momento e ricalibrati successivamente.

FAQ

Cos'è il modello di Heston in termini semplici?

È un modello di pricing delle opzioni in cui la volatilità è casuale. La varianza segue un proprio percorso con una spinta verso un livello di lungo periodo e la sua casualità è correlata a quella del titolo, il che consente al modello di prezzare una curva di volatilità (volatility smile) anziché una linea piatta.

Perché Black-Scholes produce una volatility smile piatta?

Assume una volatilità costante, che fissa un'unica distribuzione per il prezzo alla scadenza. Ogni strike viene prezzato a partire dalla stessa distribuzione e invertendo la formula si ottiene la stessa volatilità per ogni strike. La linea piatta è un risultato dell'assunto, non una scoperta sui mercati.

Cosa significano i cinque parametri di Heston?

La varianza iniziale definisce il livello attuale della superficie. La varianza di lungo periodo stabilisce verso quale valore la varianza viene attratta nel tempo, mentre la velocità di mean-reversion determina l'intensità di tale attrazione. La vol of vol definisce la curvatura dello smile, mentre la correlazione tra i due shock ne determina l'inclinazione.

Il modello di Heston si adatta ai prezzi reali delle opzioni?

Si adatta bene alla parte centrale di una superficie tipica, mentre incontra maggiori difficoltà sulla parte a brevissimo termine, dove gli smile osservati si incurvano più bruscamente di quanto il suo processo di varianza consenta. I parametri calibrati cambiano inoltre da un giorno all'altro, rendendo la calibrazione un esercizio ripetuto piuttosto che una misurazione una tantum.


Ogni pannello qui sopra viene fornito con il codice SQL che lo ha generato, pronto per essere puntato su un altro nome o un'altra finestra. Per porre una di queste domande in linguaggio naturale sui dati delle opzioni, apri il terminale Strasmore.