Comprendre la structure par terme de la IV
La structure par terme de la IV analyse la volatilité implicite selon les échéances. Découvrez l'interprétation des courbes ascendantes et inversées avec des données réelles.
La structure par terme de la volatilité implicite (IV) représente la volatilité implicite en fonction de l'échéance, avec une valeur par maturité, en utilisant des options dont le prix d'exercice est proche du cours actuel de l'action. Deux formes couvrent la quasi-totalité des situations : une pente ascendante en période calme, où les échéances lointaines affichent le chiffre le plus élevé, et une courbe inversée lorsqu'un événement daté se situe dans le mois à venir. Les deux formes ci-dessous sont construites à partir de données d'options par contrat plutôt que d'un diagramme théorique.
Ce que mesure la structure par terme de la IV
La volatilité implicite est l'ampleur annualisée du mouvement qu'implique le prix d'une option pour l'action sous-jacente. Elle est cotée par contrat ; une seule action affiche donc des centaines de valeurs à tout moment, une pour chaque prix d'exercice et chaque échéance. Fixez le prix d'exercice près du cours actuel, faites varier l'échéance, et ces valeurs s'alignent pour former une courbe. Cette courbe est la structure par terme.
L'échantillonnage est plus important que la plupart des explications ne le laissent entendre. Chaque panneau ici utilise des contrats dont le delta absolu se situe entre 0,35 et 0,65, ce qui est la méthode standard pour désigner le « near the money » sans figer un prix d'exercice, puis retient la médiane de la volatilité implicite au sein de chaque bande de maturité. La médiane plutôt que la moyenne : une cotation obsolète sur un contrat peu liquide peut imprimer une valeur invraisemblable, qu'une moyenne entraînerait dans le résultat.
Voici la courbe pour six titres liquides sur les séances de juin 2026.
Le SQL exact derrière chaque chiffre
WITH (
SELECT quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker))
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 20
) AS front_band_iv
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)), 1) AS median_iv_pct,
round(100 * (quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)) - front_band_iv), 1) AS pts_vs_front_band,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
AND date >= toDate('2026-06-01')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 3
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
ORDER BY min(days_to_expiry)La volatilité implicite médiane mesurait 19.6% dans la bande 5-20 days et 21.5% dans la bande 181-365 days, soit 1.9 points au-dessus de l'échéance courte. La forme porte un nom emprunté aux marchés à terme : le contango, où la livraison ultérieure affiche le prix le plus élevé. Une courbe inversée est une situation de déport (backwardation).
Pourquoi la courbe est généralement ascendante
Deux mécanismes maintiennent la forme normale.
Le premier est la densité des événements. Un contrat expirant dans neuf jours couvre neuf jours de risque calendaire, et sur une grande capitalisation sans événement prévu dans cette fenêtre, il s'agit principalement de jours de bourse ordinaires. Un contrat expirant dans un an couvre quatre publications de résultats trimestriels, plusieurs réunions de banques centrales et tous les titres imprévus entre-temps. Davantage d'inconnues connues par contrat augmentent le chiffre annualisé que le marché est prêt à payer.
Le second est le comportement de la volatilité elle-même. La volatilité réalisée se regroupe : les semaines calmes succèdent aux semaines calmes, les semaines violentes aux semaines violentes. Lorsque le marché est calme, les options à court terme se traitent près de la valeur calme actuelle, et les options expirant dans un an se traitent plus près de la moyenne à long terme, qui est plus élevée. La même arithmétique s'inverse après un choc. Dans les séances suivant un krach, l'échéance courte affiche la volatilité implicite la plus élevée et la courbe s'inverse sur toute sa longueur, les mois lointains restant ancrés près de leur niveau habituel.
Ce qui inverse la courbe : un événement daté
Une publication de résultats prévue est l'inversion la plus nette que vous puissiez observer. Le rapport tombe après la clôture à une date connue. Chaque échéance se réglant après cette date intègre le mouvement, et chaque échéance se réglant avant ne l'intègre pas. L'échéance la plus proche couvrant l'événement a le moins de jours ordinaires pour le lisser, et sa valeur annualisée grimpe le plus fortement. Une option à six mois répartit le même événement sur environ cent vingt-cinq jours de bourse et l'enregistre à peine.
NVIDIA a publié ses résultats après la clôture le mercredi 26 février 2025. Le panneau lit toute la courbe deux fois : lors de la dernière séance avant la publication, le 25 février, et lors de la première séance après, le 27 février.
Le SQL exact derrière chaque chiffre
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
days_to_expiry <= 45, '21-45 days',
days_to_expiry <= 90, '46-90 days',
days_to_expiry <= 180, '91-180 days',
'181-365 days') AS expiry_band,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25')), 1) AS iv_before_print_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27')), 1) AS iv_after_print_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-25'))
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
toDate(date) = toDate('2025-02-27'))), 1) AS iv_drop_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-25')
AND date < toDate('2025-02-28')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
HAVING countIf(toDate(date) = toDate('2025-02-25')) >= 3
AND countIf(toDate(date) = toDate('2025-02-27')) >= 3
ORDER BY min(days_to_expiry)La bande 5-20 days affichait 84.9% lors de la séance précédant la publication et 66.4% après, soit une variation de 18.5 points. La bande 181-365 days a bougé de 1 points sur les deux mêmes clôtures, une fraction du mouvement de la bande courte. Un sous-jacent, un événement, une expérience opposée aux deux extrémités de la courbe. Cet effondrement de la partie courte est un IV crush, et la structure par terme est l'endroit où il est visible à l'avance.
Observer la construction et l'effondrement de la courbe
Une séance de chaque côté d'un rapport est un instantané. La construction prend des semaines et se manifeste par un élargissement de l'écart entre les deux extrémités de la courbe.
Le SQL exact derrière chaque chiffre
SELECT toDate(date) AS session_date,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20), 1) AS front_iv_pct,
round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180), 1) AS back_iv_pct,
round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 20)
- quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180)), 1) AS front_minus_back_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
AND date >= toDate('2025-02-10')
AND date < toDate('2025-03-15')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.05 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 20) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 20) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
ORDER BY session_dateL'écart entre les bandes était de 12.4 points lors de la première séance de la fenêtre et de 3.3 points lors de la dernière, sur 24 séances. Observez la forme de la ligne courte plutôt que son niveau : elle grimpe à l'approche du rapport, atteint un sommet lors des séances autour de celui-ci, et retombe dès la séance suivante. La ligne longue ne fait presque rien tout au long de la période. Les résultats et les grecques d'options traite de l'impact du même événement sur le vega et le theta des contrats individuels.
À quelle fréquence la courbe est-elle inversée ?
L'inversion n'est pas rare, et la proportion de l'année pendant laquelle un titre reste dans cet état diffère énormément selon les tickers.
Le SQL exact derrière chaque chiffre
WITH daily AS (
SELECT underlying_symbol,
toDate(date) AS session_date,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 5 AND 30) AS front_iv,
quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
days_to_expiry BETWEEN 91 AND 180) AS back_iv
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'AMZN', 'KO', 'JNJ', 'PG', 'SPY', 'XOM', 'WMT')
AND date >= toDate('2025-08-01')
AND date < toDate('2026-08-01')
AND iv_converged = 1
AND volume > 0
AND implied_volatility BETWEEN 0.03 AND 5
AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
AND ((days_to_expiry BETWEEN 5 AND 30) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY underlying_symbol, session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 30) >= 3
AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
)
SELECT underlying_symbol AS ticker,
count() AS sessions,
round(100 * countIf(front_iv > back_iv) / count(), 1) AS inverted_pct,
round(100 * quantileDeterministic(0.5)(front_iv - back_iv,
cityHash64(concat(underlying_symbol, toString(session_date)))), 1) AS median_spread_pts
FROM daily
GROUP BY underlying_symbol
ORDER BY inverted_pct DESCSur 251 séances au cours des douze mois se terminant le 31 juillet 2026, XOM a affiché la bande courte au-dessus de la bande 91 à 180 jours lors de 68.5% d'entre elles, contre 19.5% pour SPY. Leurs écarts médians étaient de 1.4 points et -2.1 points. Les titres avec des événements datés sur un calendrier régulier passent plus de temps inversés, et un fonds indiciel large passe la majeure partie de son temps en contango, avec des inversions regroupées autour des phases de baisse. Le rang de IV mesure quelque chose de différent : où se situe le niveau actuel par rapport à sa propre année passée, et non la forme de la courbe selon les échéances.
L'impact d'une courbe plate ou inversée sur un calendar spread
Un calendar spread consiste à vendre une option à court terme et à acheter une option à plus long terme au même prix d'exercice. Un diagonal fait de même sur deux prix d'exercice différents. Dans les deux cas, la position est longue de la volatilité implicite de l'échéance longue et courte de celle de l'échéance courte, ce qui fait de la structure par terme son principal moteur plutôt qu'un détail de second plan.
Lorsque la courbe est ascendante, la jambe courte est vendue à une volatilité implicite inférieure à celle à laquelle la jambe longue est achetée. Lorsque le mois court est inversé avant un événement, cette relation s'inverse, et la position est ouverte sur une courbe qui a une marge de convergence. Ensuite, la partie courte s'effondre vers la partie longue, la partie longue bouge peu, et l'écart entre les deux valeurs revient à sa forme habituelle. Le résultat final de la position dépend également de l'ampleur du mouvement de l'action, sur lequel la courbe ne donne aucune indication. La page sur le mouvement attendu couvre cette moitié du problème.
Une courbe plate est le cas délicat. Il n'y a pas de pente à exploiter dans un sens ou dans l'autre, et le résultat dépend presque entièrement de la trajectoire de l'action et de l'écoulement du temps.
FAQ sur la structure par terme de la IV
Qu'est-ce que la structure par terme de la IV dans les options ?
C'est la volatilité implicite tracée par date d'échéance pour les options « near the money ». Sur six titres liquides en juin 2026, la valeur médiane mesurait 19.6% dans la bande 5-20 days et 21.5% dans la bande 181-365 days.
Que signifie une structure par terme de la IV inversée ?
Une courbe inversée affiche sa volatilité implicite la plus élevée sur les échéances les plus proches. Elle apparaît lorsqu'un événement daté se situe dans le mois à venir, et lors des séances suivant une forte baisse, lorsque les contrats à court terme se basent sur les mouvements récents importants tandis que les contrats lointains se situent plus près d'une moyenne à long terme.
Pourquoi la volatilité implicite du mois court est-elle si élevée avant les résultats ?
Un contrat à court terme a très peu de jours de bourse ordinaires pour lisser un mouvement nocturne important attendu, et le chiffre annualisé grimpe pour en tenir compte. La bande 5-20 days de NVIDIA affichait 84.9% la séance avant son rapport du 26 février 2025 et 66.4% la séance après.
La structure par terme est-elle la même chose que le skew de volatilité ?
Non. Le skew compare la volatilité implicite entre les prix d'exercice pour une même échéance. La structure par terme maintient le niveau de « moneyness » globalement fixe et compare les échéances entre elles. Le skew de volatilité couvre la dimension des prix d'exercice de cette même surface.
Chaque chiffre ci-dessus provient d'une requête stockée sur la volatilité implicite par contrat, avec le SQL consultable sous chaque panneau. Tracez la même courbe pour n'importe quel ticker sur le terminal Strasmore.