Strasmore Research
Apprendre Matt ConnorPar Matt Connor

Où trouver l’historique de volatilité implicite

Où trouver des données historiques de volatilité implicite, pourquoi deux séries d’IV à 30 jours divergent, quelles sources gratuites ou payantes utiliser et quelle requête exécuter.

Les données historiques de volatilité implicite sont dérivées, et non enregistrées. Ce seul fait explique pourquoi elles sont plus difficiles à obtenir qu’un historique de cours. La volatilité implicite est la valeur obtenue en réinjectant le prix de marché d’une option dans un modèle de valorisation, jusqu’à ce que la valeur du modèle corresponde au prix affiché. Aucune bourse ne la publie sous forme de print sur un flux de marché. Toute série historique de volatilité implicite publiée repose donc sur des choix concernant le modèle, la cotation, la sélection des contrats et l’interpolation. Ces choix expliquent à eux seuls les écarts entre deux séries censées mesurer la même chose.

Si vous souhaitez commencer par la définition, ce qu’est la volatilité implicite et comment la volatilité implicite est calculée présentent les mécanismes. La suite explique où trouver ces données historiques et comment distinguer deux versions d’une même série.

Pourquoi les données historiques de volatilité implicite sont-elles plus difficiles à obtenir que les données de cours ?

Un cours de clôture quotidien est observé : il a fait l’objet d’un print, et tous les fournisseurs publient le même chiffre. Un niveau de volatilité implicite est calculé, et quatre paramètres de ce calcul varient selon la source.

  • Le modèle : résolution européenne de Black-Scholes, arbre binomial américain avec dividendes discrets, ou variante propre au fournisseur intégrant ses hypothèses de taux et de borrow.
  • Le prix utilisé : bid, ask, mid, dernier trade ou cours de règlement de la place de cotation.
  • Les contrats retenus : un strike at-the-money, une fourchette de moneyness, ou un filtre fondé sur le volume ou l’open interest.
  • La manière d’atteindre une maturité fixe : interpolation entre les deux échéances encadrant 30 jours, ou moyenne de tous les contrats compris dans une fenêtre de jours jusqu’à l’échéance.

Modifier un seul paramètre suffit à faire varier le niveau. Modifier les quatre peut conduire deux sources rigoureuses à afficher un écart de plusieurs points de volatilité pour la même séance, sans que l’une d’elles soit erronée.

La dispersion apparaît déjà au sein d’une seule valeur. Le tableau ci-dessous couvre AAPL sur juin 2026. Il ne retient que les contrats dont le strike se situe dans une fourchette de 5 % autour du cours spot, puis les répartit selon le temps restant avant l’échéance.

RequêteUn titre, un mois : volatilité implicite selon l’échéance (AAPL, juin 2026)
Le SQL exact derrière chaque chiffre
SELECT
    dte_band,
    round(100 * quantileDeterministic(0.25)(iv, contract_hash), 1) AS iv_p25_pct,
    round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS iv_median_pct,
    round(100 * quantileDeterministic(0.75)(iv, contract_hash), 1) AS iv_p75_pct,
    count()                                                        AS contract_day_count
FROM
(
    SELECT
        multiIf(days_to_expiry <=   7, '01-07d',
                days_to_expiry <=  21, '08-21d',
                days_to_expiry <=  45, '22-45d',
                days_to_expiry <=  90, '46-90d',
                days_to_expiry <= 180, '91-180d',
                                       '181d+')  AS dte_band,
        toFloat64(implied_volatility)             AS iv,
        cityHash64(ticker)                        AS contract_hash,
        days_to_expiry                            AS dte
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'AAPL'
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry > 0
      AND underlying_close > 0
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY dte_band
ORDER BY min(dte)
Run this yourself

Même sous-jacent, même mois, uniquement des strikes proches de la monnaie. La tranche la plus courte présentée ici, 01-07d, affichait une IV médiane de 29.6%. La plus longue, 181d+, se situait à 28.1%. Dans cette première tranche seulement, les 25e et 75e percentiles s’établissaient respectivement à 24.9% et 35.8%. La forme observée selon les échéances constitue la structure par terme. Son équivalent selon les strikes est le skew de volatilité. Il n’existe donc pas une IV unique. Il existe une surface, et tout chiffre de volatilité implicite publié pour AAPL n’en est qu’une synthèse. C’est cette surface que suit notre page volatilité implicite d’AAPL.

Pourquoi deux graphiques d’IV à 30 jours affichent-ils des chiffres différents ?

Prenez un sous-jacent liquide, une année de séances et calculez une IV à 30 jours de trois façons à partir des mêmes lignes. La première colonne conserve les strikes situés à moins de 1 % du spot et les échéances comprises entre 25 et 35 jours. C’est la mesure la plus resserrée disponible. La deuxième élargit la sélection à 5 % du spot et à des échéances de 20 à 45 jours. C’est le réglage pratique par défaut lorsqu’il faut renseigner chaque séance. La troisième pondère cet ensemble élargi par le volume des contrats. La moyenne se rapproche ainsi des strikes qui ont effectivement été traités.

RequêteTrois méthodes pour construire une IV à 30 jours sur le SPY, à partir d’un même ensemble de lignes
Le SQL exact derrière chaque chiffre
WITH
    near_money AS
    (
        SELECT
            toMonday(date)                                                 AS week_start,
            toFloat64(implied_volatility)                                  AS iv,
            days_to_expiry                                                 AS dte,
            volume                                                         AS vol,
            abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'SPY'
          AND date >= '2025-08-01'
          AND date <  '2026-08-01'
          AND iv_converged = 1
          AND volume > 0
          AND underlying_close > 0
          AND days_to_expiry BETWEEN 20 AND 45
          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
    ),
    weekly AS
    (
        SELECT
            week_start,
            avgIf(iv, dte BETWEEN 25 AND 35 AND moneyness < 0.01) AS tight_atm,
            avg(iv)                                               AS wide_atm,
            sum(iv * vol) / sum(vol)                              AS volume_weighted
        FROM near_money
        GROUP BY week_start
        HAVING countIf(dte BETWEEN 25 AND 35 AND moneyness < 0.01) > 0
    )
SELECT
    toString(week_start) AS week,
    concat(monthName(week_start), ' ', toString(toDayOfMonth(week_start)), ', ', toString(toYear(week_start))) AS week_label,
    round(100 * tight_atm, 1)       AS tight_atm_pct,
    round(100 * wide_atm, 1)        AS wide_atm_pct,
    round(100 * volume_weighted, 1) AS volume_weighted_pct,
    round(100 * (greatest(tight_atm, wide_atm, volume_weighted)
               - least(tight_atm, wide_atm, volume_weighted)), 1) AS spread_pp
FROM weekly
ORDER BY week_start
Run this yourself

Au cours de la première semaine observée, July 28, 2025, les trois méthodes ont donné 16.6%, 16.4% et 16.7%. L’écart entre la valeur la plus élevée et la plus basse était de 0.2 points de pourcentage. La colonne spread suit cet écart sur l’ensemble des 53 semaines. Aucune des trois mesures ne correspond à la véritable IV à 30 jours du fonds. Chacune répond à une question légèrement différente. Un graphique de fournisseur reprend l’une de ces mesures, sans préciser la méthode utilisée dans son libellé.

Jusqu’où remonte l’historique de la volatilité implicite par contrat ?

Le jeu de données utilisé pour ces panneaux est global_markets.options_greeks : une ligne par contrat et par séance, avec la volatilité implicite ainsi que le delta, le gamma, le vega, le theta et le rho, et le strike, l’échéance, le nombre de jours avant l’échéance, le symbole du sous-jacent et son cours de clôture. Il s’agit de données de fin de séance, et non d’un instantané en temps réel de la chaîne d’options. Le panneau ci-dessous comptabilise, pour chaque trimestre, le nombre de noms de sous-jacents distincts comportant au moins une ligne d’IV convergente.

RequêteSous-jacents avec une IV quotidienne convergée, par trimestre
Le SQL exact derrière chaque chiffre
SELECT
    concat(toString(toYear(date)), '-Q', toString(toQuarter(date))) AS quarter,
    uniqExact(underlying_symbol)                                    AS underlyings_covered
FROM global_markets.options_greeks
WHERE iv_converged = 1
  AND volume > 0
  AND underlying_symbol NOT IN ('SPCX')
  AND date < '2026-07-01'
GROUP BY quarter
ORDER BY min(date)
Run this yourself

La couverture s’étend de 2014-Q2 à 2026-Q2, soit 49 trimestres au total. Le dernier trimestre complet présenté compte 5799 noms de sous-jacents avec des données quotidiennes d’IV convergentes.

Quatre filtres jouent l’essentiel du rôle lorsque vous interrogez un jeu de données de ce type.

  • Conservez iv_converged = 1. Le solveur n’aboutit pas toujours. Une ligne non convergente correspond à un ajustement échoué, et non à une valeur faible.
  • Conservez volume > 0. Un contrat qui n’a jamais été négocié comporte une IV calculée à partir d’une cotation obsolète.
  • Regroupez par underlying_symbol. La colonne ticker contient le code de contrat OCC. Un regroupement sur cette colonne renvoie donc une ligne par strike et par échéance, et non une ligne par entreprise.
  • Sélectionnez les contrats de manière ciblée, proches de la monnaie et compris dans une fenêtre donnée de jours avant l’échéance. Sans cette étape, la moyenne intègre à la fois le skew et la structure par terme.

Existe-t-il une API gratuite de volatilité implicite ?

Il existe des sources gratuites, mais chacune présente une limite spécifique.

  • Les plateformes des courtiers calculent l’IV sur leurs propres chaînes d’options et l’affichent en temps réel. L’historique téléchargeable est court, voire inexistant, et la valeur correspond au modèle du courtier, pas à une norme.
  • Les indices de volatilité publiés par les places de marché remontent à plusieurs décennies et sont gratuits. Chacun fournit une valeur agrégée unique pour un panier donné. Il répond donc à une question de marché globale, pas à une question portant sur une valeur individuelle.
  • Les API généralistes de données de marché s’arrêtent généralement aux cours. Les greeks par contrat constituent presque partout un produit distinct. Les offres gratuites qui les incluent renvoient généralement un snapshot en temps réel, sans historique. Notre présentation de l’API gratuite de données boursières détaille ce que les offres gratuites fournissent réellement.
  • C’est auprès des fournisseurs payants que se trouvent les historiques longs par contrat et par valeur individuelle. Ils sont vendus sous forme de fichiers de fin de séance, au mois ou à l’année. Les chaînes en temps réel sont facturées bien plus cher que l’offre historique. L’article Combien coûtent les données de marché en temps réel présente la structure de ces grilles tarifaires.

La distinction entre snapshot et données de fin de séance compte autant que le prix. Un snapshot pris à 16 h 00 ET utilise les cotations disponibles à cet instant. Un fichier établi à partir des prix de règlement repose sur une donnée totalement différente. Les deux s’écartent surtout lors des séances les plus rapides.

La volatilité d’un indice agrégé et celle d’une valeur individuelle ne sont pas interchangeables. Une option sur indice valorise le mouvement d’un panier, dans lequel les mouvements qui se compensent entre les composantes réduisent la variation totale. Une option sur une valeur individuelle valorise la trajectoire propre à l’entreprise. Le tableau ci-dessous compare plusieurs valeurs connues sur un mois, avec des filtres identiques.

RequêteIV médiane proche du cours, de 20 à 45 jours avant l’échéance (juin 2026)
Le SQL exact derrière chaque chiffre
SELECT
    underlying_symbol                                              AS symbol,
    round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS median_iv_pct,
    count()                                                        AS contract_day_count
FROM
(
    SELECT
        underlying_symbol,
        toFloat64(implied_volatility) AS iv,
        cityHash64(ticker)            AS contract_hash
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'XOM', 'TLT')
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND underlying_close > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY symbol
ORDER BY median_iv_pct DESC
Run this yourself

En juin 2026, l’IV médiane proche de la monnaie, sur une fenêtre de 20 à 45 jours, allait de 38.5% à NVDA et jusqu’à 10.4% à TLT, sur 8 valeurs. Même fenêtre, mêmes filtres, même méthode de résolution. Un tel classement n’est valable que tant que la méthode reste identique pour toutes les valeurs retenues.

La source compte-t-elle pour l’IV rank et l’IV percentile ?

Elle détermine la réponse. L’IV rank compare l’IV du jour aux valeurs la plus haute et la plus basse observées sur une période de référence, généralement un an. L’IV percentile mesure la proportion de jours de cette période où l’IV était inférieure à celle du jour. Dans les deux cas, un seul historique est utilisé de bout en bout. Si cet historique change, le score change alors même que le marché n’a pas bougé. Si vous raccordez l’IV issue du mid-quote d’un broker à un historique de règlements fourni par un vendor, vous créez une rupture permanente au milieu de la période de référence. Tout rank calculé sur cette période intégrera cette rupture. IV rank vs IV percentile présente les deux calculs. La même exigence s’applique lorsque vous comparez le mouvement implicite au mouvement réalisé : volatilité historique vs volatilité implicite traite cette comparaison.

La règle de travail consiste à assurer la traçabilité de la série. Choisissez une source, un modèle, une méthode de sélection des contrats et une convention de maturité, puis conservez ces quatre éléments inchangés sur toute la période de référence. Une série cohérente en interne, même légèrement différente de celles des autres fournisseurs, vaut mieux qu’une série assemblée qui ne correspond à chaque vendor que par segments.

FAQ

Où puis-je trouver des données historiques de volatilité implicite ?

Les historiques longs sur une valeur individuelle proviennent de fournisseurs de données sur les options qui vendent les greeks de fin de séance, contrat par contrat, généralement sous forme de fichiers mensuels ou annuels. Les marchés publient gratuitement des historiques de volatilité au niveau des indices. Les plateformes de courtiers affichent la volatilité implicite en temps réel dans leurs chaînes d’options, mais proposent peu d’historique téléchargeable. Les panneaux ci-dessus s’appuient sur un jeu de données quotidien par contrat, couvrant tous les contrats cotés avec un ajustement convergé.

Existe-t-il une API gratuite de volatilité implicite ?

Les offres gratuites incluant les greeks par contrat sont rares. Celles qui existent renvoient généralement un instantané en temps réel plutôt qu’une archive. L’historique de volatilité des indices constitue la principale série longue véritablement gratuite. Un historique détaillé sur une valeur individuelle est normalement payant.

Pourquoi deux sources affichent-elles une volatilité implicite différente pour la même action ?

Les modèles de valorisation peuvent différer, tout comme les cotations utilisées, la sélection des contrats et l’interpolation des maturités. Le panneau ci-dessus construit trois séries à 30 jours à partir d’un même jeu de lignes. Elles sont séparées de 0.2 points de pourcentage dès la première semaine. Un écart entre deux fournisseurs est donc attendu et ne constitue pas nécessairement une erreur.

Jusqu’où remontent les données de volatilité implicite ?

Cela dépend de la source. Partout, les archives par contrat sont plus courtes que les historiques de cours. Le jeu de données utilisé pour cette page commence en 2014-Q2 et contient depuis cette date des lignes quotidiennes pour chaque contrat convergé.


Chaque panneau est accompagné du SQL qui l’a produit. Développez-en un pour voir exactement quels contrats ont été pris en compte. Pour construire la même série sur une autre valeur, une autre période ou selon une autre méthode, formulez votre demande en français courant sur le terminal Strasmore.