Modèle de Heston et volatility smile : analyse technique
Une volatilité unique ne permet pas de valoriser une chaîne d'options. Découvrez comment le modèle de Heston modélise la variance stochastique pour expliquer le volatility smile.
Le modèle de Heston
Le modèle de Heston est un modèle d'évaluation d'options qui considère la volatilité comme une variable aléatoire plutôt que fixe. Il repose sur deux composantes dynamiques : le cours de l'action et la variance de ce cours, chacune étant soumise à son propre choc aléatoire. C'est cette seconde source d'aléa qui permet au modèle de générer un volatility smile. Une volatilité constante, telle que supposée dans le modèle Black-Scholes, ne peut produire qu'une ligne plate à travers les différents strikes, alors qu'aucune chaîne d'options n'a jamais présenté un tel profil.
Pourquoi un chiffre de volatilité unique ne suffit pas pour une chaîne d'options
La volatilité implicite est la donnée de volatilité qui permet à une formule de valorisation de refléter le prix auquel une option s'échange réellement. Si l'on inverse ce calcul contrat par contrat, comme l'explique notre page sur la méthode de calcul de la volatilité implicite, une échéance donnée produit une courbe selon les prix d'exercice plutôt qu'un niveau unique. Le tableau ci-dessous reprend tous les contrats SPY ayant entre vingt et quarante-cinq jours de maturité résiduelle sur le premier semestre deux mille vingt-six, les répartit par bandes de deux pour cent selon l'écart entre le strike et le cours spot, et calcule la moyenne de la volatilité implicite au sein de chaque bande.
Le SQL exact derrière chaque chiffre
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_bucketLa bande -12%, correspondant aux strikes largement inférieurs au cours spot, affiche une volatilité implicite moyenne de 28.05%, soit 11.61 points de volatilité au-dessus de la moyenne « at-the-money » pour la même période. La bande +12%, du côté des calls, affiche une moyenne de 15.56%. Les bandes intermédiaires dessinent la courbe qui donne son nom au phénomène, et son inclinaison latérale est appelée volatility skew. Un modèle utilisant un paramètre de volatilité unique ne permet pas de capturer ces variations : chaque strike est valorisé à partir d'une distribution unique du prix à l'échéance, et l'inversion d'un tel modèle renvoie, par construction, le même chiffre pour tous les strikes.
Ce que change le modèle de Heston
Heston conserve le choc aléatoire de l'action et ajoute un second processus pour la variance. En termes simples plutôt qu'en symboles :
- Le mouvement de l'action sur l'instant suivant est une dérive augmentée d'un choc aléatoire, pondérée par la racine carrée de la variance actuelle.
- Le mouvement de la variance est une attraction vers un niveau de long terme à une vitesse fixe, augmentée de son propre choc, pondérée par un paramètre de volatilité de la volatilité et la racine carrée de la variance actuelle.
- Les deux chocs sont corrélés par un nombre compris entre moins un et un.
Cette pondération par la racine carrée correspond à la forme de Cox-Ingersoll-Ross, et elle remplit une fonction utile : le choc sur la variance tend vers zéro à mesure que la variance approche de zéro, ce qui empêche la variance de devenir négative. Lorsque deux fois la vitesse multipliée par la variance de long terme excède le carré de la volatilité de la volatilité, une condition nommée d'après Feller, la variance demeure strictement positive.
La variance elle-même n'est pas observable. Sa contrepartie implicite l'est, et elle n'est pas statique. Le graphique ci-dessous trace la volatilité implicite at-the-money pour deux titres, à raison d'une lecture par séance, sur le deuxième trimestre deux mille vingt-six.
Le SQL exact derrière chaque chiffre
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 dateLe SPY a ouvert la période à 20.39% le 2026-04-01 et l'a clôturée à 14.45% le 2026-06-30. NVDA est passé de 36.83% à 38.22% sur les mêmes 62 séances. Aucune des deux courbes ne reste immobile, et aucune ne s'échappe : elles dérivent toutes deux tout en revenant constamment vers une zone d'équilibre. Valoriser les deux extrémités de ce graphique nécessite un niveau de départ ainsi qu'un niveau de long terme, avec une vitesse d'attraction entre les deux.
L'impact de chaque paramètre de Heston sur la surface
La réversion à la moyenne et le niveau de long terme déterminent la structure par terme
La valeur d'une option dépend de la variance moyenne attendue sur sa durée de vie, et non de la variance actuelle. Pour un contrat expirant la semaine prochaine, la variance du jour domine cette moyenne ; pour une échéance à un an, c'est le niveau de long terme qui prévaut. Le paramètre de vitesse définit la rapidité avec laquelle l'anticipation évolue entre ces deux points, ce qui fixe la pente de la volatilité implicite entre le court et le long terme.
Le SQL exact derrière chaque chiffre
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)Les contrats SPY proches de la monnaie dans le compartiment 1 to 7 days ont affiché une moyenne de 17.05% au premier semestre 2026, contre 18.77% dans le compartiment 181 to 365 days. NVDA a enregistré 41.22% et 44.94% sur ces deux mêmes compartiments. Un modèle à un seul chiffre évalue chaque maturité sur la base d'une volatilité unique. Heston permet d'attribuer des niveaux distincts au court et au long terme, le paramètre de vitesse régissant la forme de la courbe entre les deux. Davantage de ces courbes sont disponibles sur notre page structure par terme de la VI.
La volatilité de la volatilité courbe le « smile »
La volatilité de la volatilité est la volatilité de la variance elle-même. Si on la fixe à zéro, la variance suit une trajectoire lisse : la structure par terme peut toujours présenter une pente, mais le « smile » selon les prix d'exercice devient plat. Si on l'augmente, la distribution du prix à l'échéance gagne du poids dans les deux queues de distribution, ce qui relève les prix d'exercice éloignés du cours spot par rapport à ceux qui en sont proches. L'amplitude réelle de la variance varie selon le sous-jacent, et le panneau ci-dessous mesure directement cette dynamique.
Le SQL exact derrière chaque chiffre
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 DESCAMZN a couvert l'éventail le plus large du panneau : une volatilité implicite à la monnaie aussi basse que 28.21% et aussi élevée que 74.42%, soit un écart de 46.22 points de volatilité sur six mois. KO a couvert l'éventail le plus étroit, avec 10.75 points. Le Vega, cette sensibilité du prix à la volatilité définie sur notre page vega, mesure le niveau de la surface. Dans un cadre de volatilité stochastique, deux contrats ayant un Vega identique peuvent se comporter différemment si c'est la forme de la surface qui évolue plutôt que son niveau.
La corrélation incline le « smile » en un « skew »
La corrélation entre le choc sur l'action et le choc sur la variance transforme un « smile » symétrique en une courbe asymétrique. En cas de corrélation négative, les trajectoires où l'action chute sont celles où la variance augmente ; la queue gauche de la distribution à l'échéance pèse alors plus lourd que la droite. La volatilité implicite des puts se traite alors au-dessus de celle des calls pour une même distance par rapport au cours spot.
Le SQL exact derrière chaque chiffre
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 DESCAu premier semestre 2026, SPY a présenté l'écart le plus large du panneau : les contrats avec un prix d'exercice inférieur d'au moins 5 % au cours spot ont affiché une moyenne de 27%, contre 14.76% pour les contrats avec un prix d'exercice supérieur d'au moins 5 %, soit un écart de 12.23 points de volatilité. À l'autre extrémité, MSFT a enregistré 3.9 points sur la même mesure. Un seul paramètre de corrélation par sous-jacent suffit à couvrir toute cette gamme d'inclinaisons.
La variance initiale fixe le niveau
Le cinquième paramètre est la variance de départ du modèle. Il relève ou abaisse l'ensemble de la surface sans en modifier sensiblement la forme, ce qui explique pourquoi il est réajusté le plus fréquemment : il permet de maintenir le modèle au niveau actuel du marché, tandis que les quatre autres paramètres en assurent la géométrie.
Ce que le modèle achète et ce que cela coûte
L'achat est une surface qui s'incurve dans deux directions à partir de cinq chiffres interprétables, valorisés rapidement. Heston valorise les options européennes via une fonction caractéristique et une intégrale numérique, sans nécessiter de simulation, ce qui rend pratique l'ajustement d'une chaîne entière en une fraction de seconde. Les coûts méritent d'être énoncés clairement.
- Les cinq paramètres sont calibrés, ajustés aux prix des options observés plutôt que mesurés à partir d'éléments tangibles.
- Une calibration est un instantané. Refaites l'ajustement demain et les chiffres bougent, ce qui signifie que les constantes du modèle ne sont pas constantes.
- Un ensemble de paramètres s'ajuste rarement à toutes les échéances simultanément. Les smiles observés sur les maturités très courtes s'incurvent plus nettement que ce processus de variance ne peut le faire.
- Les prix sur le marché présentent des gaps. La variance et le spot évoluent ici de manière continue, et un gap doit être absorbé par les chiffres ajustés.
Une mise en garde importe pour les lecteurs venant des pages sur la volatilité. Le processus de variance décrit la dynamique qui valorise les options, ce qui est un objet différent de la volatilité qu'une action finit par réaliser. L'écart entre les deux est le sujet de volatilité implicite versus volatilité réalisée.
Là où le modèle fait encore défaut
Des extensions existent pour combler chaque lacune. Le modèle de Bates conserve la variance de Heston tout en ajoutant des sauts au processus de prix, ce qui accentue la pente du smile pour les maturités courtes. Les modèles de volatilité « rough » conservent une variance aléatoire mais remplacent le moteur par des trajectoires plus irrégulières qu’un mouvement brownien standard, ce qui permet de mieux ajuster la partie très courte de la courbe. Aucun de ces modèles ne résout le problème du calibrage : tous deux ajoutent des paramètres qui doivent être ajustés à un instant T, puis recalibrés par la suite.
FAQ
Qu’est-ce que le modèle de Heston en termes simples ?
Il s’agit d’un modèle de valorisation d’options dans lequel la volatilité est aléatoire. La variance suit sa propre trajectoire avec un rappel vers un niveau de long terme, et son caractère aléatoire est corrélé à celui de l’action, ce qui permet au modèle de valoriser un « volatility smile » courbe plutôt qu’une ligne plate.
Pourquoi Black-Scholes donne-t-il un « volatility smile » plat ?
Il suppose une volatilité constante, ce qui fixe une distribution unique pour le prix à l’échéance. Chaque strike est valorisé à partir de cette même distribution, et l’inversion de la formule renvoie la même volatilité pour chaque strike. La ligne plate est un résultat de l’hypothèse, et non une observation des marchés.
Que signifient les cinq paramètres de Heston ?
La variance initiale définit le niveau actuel de la surface. La variance de long terme définit le point vers lequel la variance est ramenée au fil du temps, et la vitesse de retour à la moyenne définit l’intensité de ce rappel. La « vol of vol » définit la courbure du smile, et la corrélation entre les deux chocs définit son inclinaison.
Le modèle de Heston s’ajuste-t-il aux prix réels des options ?
Il s’ajuste étroitement au milieu d’une surface typique, mais éprouve plus de difficultés sur les échéances très courtes, où les smiles observés se courbent plus brusquement que ne le permet son processus de variance. Les paramètres ajustés changent également d’un jour à l’autre, ce qui fait de la calibration un exercice répété plutôt qu’une mesure ponctuelle.
Chaque panneau ci-dessus est fourni avec le SQL qui l’a généré, prêt à être redirigé vers un autre nom ou une autre fenêtre. Pour poser l’une de ces questions en langage clair sur des données d’options, ouvrez le terminal Strasmore.