Structure par échéance de l’IV : lire la courbe
La structure par échéance de l’IV montre la volatilité implicite selon l’échéance. Découvrez les courbes ascendantes et inversées avec des données réelles d’options.
La structure par échéance de l’IV représente la volatilité implicite en fonction de l’échéance, avec une observation par échéance, à partir d’options dont le strike est proche du cours actuel de l’action. Deux configurations couvrent presque tous les cas rencontrés : une pente ascendante dans des conditions calmes, lorsque les échéances lointaines affichent le niveau le plus élevé, et une courbe inversée lorsqu’un événement daté se concentre sur l’échéance la plus proche. Les deux configurations ci-dessous sont construites à partir de données d’options par contrat, et non d’un schéma théorique.
Ce que mesure la structure par terme de l’IV
Volatilité implicite désigne l’ampleur annualisée du mouvement que le prix d’une option anticipe pour l’action sous-jacente. Elle est cotée par contrat. Une seule action présente donc à tout moment des centaines de valeurs, une pour chaque strike et chaque échéance disponibles. En maintenant le strike proche du cours actuel et en faisant varier l’échéance, ces valeurs forment une courbe. Cette courbe constitue la structure par terme.
L’échantillonnage compte davantage que ne le laissent entendre la plupart des explications. Chaque graphique retient des contrats dont le delta absolu se situe entre 0,35 et 0,65. C’est la manière standard de sélectionner des options proches du cours sans imposer un strike précis. La médiane de la volatilité implicite est ensuite calculée dans chaque intervalle d’échéance. La médiane est préférable à la moyenne : une cotation obsolète sur un contrat peu liquide peut produire une valeur aberrante, que la moyenne intégrerait au résultat.
Voici la courbe de six valeurs 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)Volatilité implicite médiane mesurée 19.6% dans la bande 5-20 days et 21.5% dans la bande 181-365 days, soit 1.9 points de plus que sur l’échéance la plus proche. Cette configuration porte un nom emprunté aux marchés futures : le contango, lorsque la livraison la plus éloignée présente un prix plus élevé. Une courbe inversée est en backwardation.
Pourquoi la courbe est généralement ascendante
Deux mécanismes maintiennent cette forme normale.
Le premier est la densité des événements. Un contrat arrivant à échéance dans neuf jours couvre neuf jours de risque calendaire. Pour une grande capitalisation sans événement prévu dans cet intervalle, il s’agit essentiellement de jours de marché ordinaires. Un contrat arrivant à échéance dans un an couvre quatre publications de résultats trimestriels, plusieurs réunions de banques centrales et tous les événements imprévus entre-temps. Davantage d’inconnues connues par contrat fait monter le niveau annualisé que le marché est prêt à payer.
Le deuxième tient au comportement de la volatilité elle-même. La volatilité réalisée se regroupe dans le temps : les semaines calmes sont suivies de semaines calmes, et les semaines agitées de semaines agitées. Lorsque le marché est calme, les options proches de l’échéance intègrent une volatilité proche du niveau calme du jour, tandis que les options arrivant à échéance dans un an intègrent un niveau plus proche de la moyenne de long terme, qui est plus élevée. Le même calcul fonctionne en sens inverse après un choc. Dans les séances qui suivent un krach, l’échéance la plus proche affiche la volatilité implicite la plus élevée de la cote et la courbe s’inverse sur toute sa longueur, tandis que les échéances lointaines restent ancrées près de leur niveau habituel.
Ce qui inverse la courbe : un événement daté
La publication programmée des résultats est l’inversion la plus nette que vous puissiez observer. Le rapport est publié après la clôture à une date connue. Chaque échéance qui se dénoue après cette date intègre le mouvement, tandis que celles qui se dénouent avant ne l’intègrent pas. L’échéance la plus proche qui couvre l’événement dispose du moins de jours ordinaires pour en lisser l’effet, et sa mesure annualisée progresse le plus fortement. Une option à six mois répartit le même événement sur environ 125 séances et le reflète à peine.
NVIDIA a publié ses résultats après la clôture le mercredi 26 février 2025. Le graphique lit l’ensemble de la courbe à deux reprises : lors de la dernière séance précédant la publication, le 25 février, puis lors de la première séance suivante, 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% lors de la séance suivante, soit une variation de 18.5 points. La bande 181-365 days a varié de 1 points entre ces deux clôtures, soit une fraction du mouvement de la bande à l’avant de la courbe. Un seul sous-jacent, un seul événement, mais une expérience opposée aux deux extrémités de la courbe. Cet effondrement de l’avant de la courbe est le crush de volatilité implicite, et c’est dans la structure par terme qu’il est visible à l’avance.
Observer la formation et le resserrement de la courbe
Une seule séance de part et d’autre d’une publication ne fournit qu’un instantané. La formation de la courbe s’étale sur plusieurs semaines. Elle se traduit par un écart croissant entre ses deux extrémités.
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, contre 3.3 points lors de la dernière, sur 24 séances. Observez la forme de la ligne avant plutôt que son niveau. Elle monte à l’approche de la publication, atteint un sommet lors des séances qui l’entourent, puis revient à son niveau antérieur dès la séance suivante. La ligne arrière évolue à peine sur l’ensemble de la période. Résultats et grecs des options explique l’effet du même événement sur le vega et le theta des contrats individuels.
À quelle fréquence la courbe est-elle inversée ?
Les inversions ne sont pas rares. La part de l’année passée dans cette configuration varie fortement 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 précédant le 31 juillet 2026, XOM a affiché une bande courte supérieure à la bande de 91 à 180 jours lors de 68.5% d’entre elles, contre 19.5% pour SPY. L’écart médian s’est établi à 1.4 points et -2.1 points, respectivement. Les valeurs dont les événements sont inscrits à un calendrier régulier passent une plus grande partie de l’année en inversion. Un fonds indiciel large reste le plus souvent en contango, les inversions se concentrant autour des phases de vente. Le rang IV mesure autre chose : la position du niveau d’aujourd’hui dans sa propre fourchette des douze derniers mois, et non la forme de la courbe selon les échéances.
L’effet d’une courbe plate ou inversée sur un calendar spread
Un calendar spread vend une option à échéance proche et achète une option à échéance plus lointaine, avec le même strike. Un diagonal applique le même principe avec deux strikes différents. Dans les deux cas, la position est acheteuse de volatilité implicite sur l’échéance lointaine et vendeuse sur l’échéance proche. La structure par terme constitue donc sa principale variable, et non un simple élément de contexte.
Lorsque la courbe est ascendante, la jambe proche est vendue à une volatilité implicite inférieure à celle de la jambe lointaine achetée. Lorsque le premier mois est en inversion avant un événement, cette relation s’inverse. La position est alors ouverte sur une courbe appelée à converger. Ensuite, la volatilité de l’échéance proche baisse fortement vers celle de l’échéance lointaine, qui varie peu. L’écart entre les deux niveaux retrouve sa configuration habituelle. Le résultat réel de la position dépend aussi de l’amplitude du mouvement de l’action, que la courbe ne permet pas de prévoir. La page variation attendue traite cet autre aspect.
Une courbe plate est le cas le plus délicat. Il n’y a de pente exploitable dans aucune direction. Le résultat dépend presque entièrement de la trajectoire de l’action et du passage du temps.
Structure par échéance de l’IV : foire aux questions
Qu’est-ce que la structure par échéance de l’IV dans les options ?
Il s’agit de la volatilité implicite représentée en fonction de la date d’expiration pour des options proches de la monnaie. Sur six valeurs liquides en juin 2026, la valeur médiane s’établissait à 19.6% dans la fourchette 5-20 days et à 21.5% dans la fourchette 181-365 days.
Que signifie une structure par échéance de l’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é intervient pendant le premier mois et, dans les séances qui suivent une forte baisse, lorsque les contrats à courte échéance intègrent de grands mouvements récents tandis que les échéances lointaines restent plus proches d’une moyenne de long terme.
Pourquoi la volatilité implicite de l’échéance la plus proche est-elle si élevée avant la publication des résultats ?
Un contrat à courte échéance ne dispose que de très peu de séances ordinaires pour lisser un important mouvement attendu du jour au lendemain, ce qui fait monter la valeur annualisée. La fourchette 5-20 days de NVIDIA affichait 84.9% lors de la séance précédant la publication de ses résultats du 26 février 2025, puis 66.4% lors de la séance suivante.
La structure par échéance est-elle la même chose que le volatility skew ?
Non. Le skew compare la volatilité implicite selon les strikes au sein d’une même échéance. La structure par échéance maintient la moneyness à un niveau à peu près constant et compare les différentes échéances. Le volatility skew couvre la dimension des strikes de cette même surface.
Chaque valeur ci-dessus provient d’une requête stockée sur la volatilité implicite par contrat. Le code SQL peut être développé sous chaque panneau. Tracez la même courbe pour n’importe quel ticker sur le terminal Strasmore.