DTE en options : jours avant échéance
DTE signifie days to expiration : les jours calendaires avant l'échéance d'une option, le jour d'expiration comptant zéro. Calcul, exemples et coût du temps.
DTE signifie days to expiration, c'est-à-dire le nombre de jours calendaires avant l'échéance d'un contrat d'option. Un call « 30 DTE » expire dans trente jours ; une option « 0DTE » expire le jour même où elle se négocie. C'est l'abréviation la plus utilisée dans les conversations sur les options, et elle condense l'information la plus importante sur n'importe quelle option : le temps qu'il lui reste. Cette page définit le terme avec précision, vous montre comment calculer le DTE d'un contrat réel dans votre propre chaîne d'options, puis mesure, à partir des données réelles du marché des options, ce que le DTE fait au prix d'une option et où se situe le volume du marché le long de ce spectre.
Que signifie DTE ?
Days to expiration, littéralement « jours avant échéance ». La convention compte en jours calendaires, pas en jours de bourse, et le décompte court jusqu'à la date d'échéance du contrat, le jour d'échéance lui-même comptant pour zéro : une option qui expire ce vendredi est à 2 DTE le mercredi, à 1 DTE le jeudi et à 0 DTE le vendredi. Les week-ends et les jours fériés font partie du décompte : une option qui expire un lundi est à 3 DTE le vendredi, même s'il ne reste qu'une seule séance de bourse. Cet écart compte plus qu'il n'y paraît : la valeur temps d'une option s'érode au fil des jours calendaires (l'horloge ne s'arrête pas le samedi), et c'est pourquoi un DTE qui enjambe un week-end ne se comporte pas comme le même décompte en milieu de semaine.
Le nombre n'est pas imprimé sur le contrat : il se déduit de la date d'échéance, et il baisse donc de un chaque jour. La chaîne d'options de votre courtier est en réalité une échelle de DTE : les onglets d'échéance en haut de l'écran forment le même spectre, simplement étiqueté avec des dates plutôt qu'avec des décomptes de jours.
Comment calculer le DTE vous-même
L'arithmétique tient en une soustraction :
- Trouvez la date d'échéance du contrat. Toute option cotée aux États-Unis la porte dans son symbole :
O:SPY260710P00740000se lit SPY, puis260710= 2026-07-10, puis P pour put, puis le prix d'exercice (740.000). Votre courtier affiche la même date en haut de l'onglet de la chaîne. - Soustrayez-en la date du jour, en comptant chaque jour calendaire, week-ends et jours fériés de marché compris.
- Le résultat est le DTE. Le jour d'échéance lui-même vaut 0 ; la veille vaut 1.
Rien d'autre n'entre en jeu : pas d'ajustement en jours de bourse, pas d'arrondi. Voici la soustraction appliquée à des contrats réels : le contrat SPY le plus négocié dans chaque tranche de DTE lors de la séance du mercredi 8 juillet 2026, avec la date de négociation et la date d'échéance extraites directement du symbole.
Le SQL exact derrière chaque chiffre
SELECT argMax(contract, (vol, contract)) AS option_ticker,
argMax(traded_on, (vol, contract)) AS traded_on,
argMax(expires_on, (vol, contract)) AS expires_on,
argMax(dte, (vol, contract)) AS calendar_dte,
multiIf(max(vol) >= 1000000,
concat(toString(intDiv(toUInt64(max(vol)), 1000000)), ',',
leftPad(toString(intDiv(toUInt64(max(vol)), 1000) % 1000), 3, '0'), ',',
leftPad(toString(toUInt64(max(vol)) % 1000), 3, '0')),
max(vol) >= 1000,
concat(toString(intDiv(toUInt64(max(vol)), 1000)), ',',
leftPad(toString(toUInt64(max(vol)) % 1000), 3, '0')),
toString(toUInt64(max(vol)))) AS contracts_traded
FROM (
SELECT ticker AS contract,
replaceRegexpAll(formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%M %e, %Y'), ' ', ' ') AS traded_on,
replaceRegexpAll(formatDateTime(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))), '%M %e, %Y'), ' ', ' ') AS expires_on,
dateDiff('day',
toDate(toTimeZone(window_start, 'America/New_York')),
toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte,
multiIf(dte = 0, '0 DTE', dte = 1, '1 DTE', dte <= 7, '2-7 DTE',
dte <= 30, '8-30 DTE', dte <= 90, '31-90 DTE', '91+ DTE') AS bucket,
sum(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE ticker LIKE 'O:SPY2%'
AND window_start >= '2026-07-08 04:00:00'
AND window_start < '2026-07-09 04:00:00'
GROUP BY contract, traded_on, expires_on, dte, bucket
HAVING dte >= 0
)
GROUP BY bucket
ORDER BY min(dte)Lisez la ligne 1 DTE : O:SPY260709P00740000 s'est négocié le July 8, 2026 et expire le July 9, 2026, un seul jour calendaire d'écart : il est donc à 1 DTE, et 93,266 contrats y ont changé de mains. Le contrat en tête de la tranche 31-90 DTE, O:SPY260918P00650000, expire le September 18, 2026, soit 72 jours calendaires après la même date de négociation. Même soustraction, même chaîne, instruments radicalement différents.
Où se situe réellement le volume, par DTE
Une séance complète de toutes les options cotées aux États-Unis, regroupées selon le nombre de jours qu'il restait à chaque contrat négocié :
Le SQL exact derrière chaque chiffre
SELECT multiIf(dte = 0, '0 DTE (expires today)',
dte = 1, '1 DTE',
dte <= 7, '2-7 DTE',
dte <= 30, '8-30 DTE',
dte <= 90, '31-90 DTE',
'91+ DTE') AS bucket,
round(sum(vol) / 1e6, 2) AS contracts_mm,
round(100.0 * sum(vol) / sum(sum(vol)) OVER (), 1) AS pct_of_volume
FROM (
SELECT toFloat64(volume) AS vol,
dateDiff('day',
toDate(toTimeZone(window_start, 'America/New_York')),
toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-08 04:00:00'
AND window_start < '2026-07-09 04:00:00'
)
WHERE dte >= 0
GROUP BY bucket
ORDER BY min(dte)Le marché est étonnamment chargé à l'avant : 38.9 % du volume de contrats de la journée était à 0 DTE, des options dans leurs dernières heures, contre 8.1 % pour tout ce qui expirait dans 91 jours ou plus. Le récapitulatif met un chiffre sur l'ensemble de l'avant de la courbe :
Le SQL exact derrière chaque chiffre
SELECT round(100.0 * sumIf(vol, dte <= 7) / sum(vol), 1) AS pct_week_or_less,
round(100.0 * sumIf(vol, dte >= 31) / sum(vol), 1) AS pct_31_dte_plus,
round(sum(vol) / 1e6, 1) AS total_contracts_mm
FROM (
SELECT toFloat64(volume) AS vol,
dateDiff('day',
toDate(toTimeZone(window_start, 'America/New_York')),
toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-08 04:00:00'
AND window_start < '2026-07-09 04:00:00'
)
WHERE dte >= 061.8 % des 62.6 millions de contrats de la séance avaient une semaine ou moins à vivre ; seuls 18.7 % avaient plus d'un mois devant eux. Le phénomène 0DTE fait les gros titres, mais le motif plus large est que le volume d'options dans son ensemble se concentre près de l'échéance : là où les primes sont les plus faibles, où l'érosion est la plus rapide et où chaque position se dénoue en quelques jours. Le volume n'est toutefois pas la même chose que le positionnement : l'intérêt ouvert compte les contrats encore détenus d'un jour sur l'autre, et il penche vers des échéances plus longues.
Ce que le DTE fait au prix d'une option
Le temps est la matière première dont une option est faite, et le DTE mesure la quantité de temps que vous achetez. Pour l'isoler, gardez tout le reste constant (le même sous-jacent, un prix d'exercice à la monnaie, la même demi-heure de la même séance) et ne faites varier que la date d'échéance. Le panneau ci-dessous sélectionne, pour une échelle de durées cibles, le call SPY dont le prix d'exercice était le plus proche du niveau auquel SPY se négociait vers la mi-journée du 8 juillet 2026.
Le SQL exact derrière chaque chiffre
WITH spot AS (
SELECT avg(close) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-07-08 11:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-08 13:00:00', 'America/New_York')
),
chain AS (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(substring(ticker, length(ticker) - 7, 8)) / 1000 AS strike,
avg(close) AS opt_px
FROM global_markets.options_minute_aggs
WHERE ticker LIKE 'O:SPY2%'
AND substring(ticker, length(ticker) - 8, 1) = 'C'
AND window_start >= toDateTime('2026-07-08 11:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-08 13:00:00', 'America/New_York')
GROUP BY expiry, strike
HAVING sum(volume) > 0
AND abs(strike - (SELECT px FROM spot)) <= 3
AND dateDiff('day', toDate('2026-07-08'), expiry) >= 0
),
atm AS (
SELECT dateDiff('day', toDate('2026-07-08'), expiry) AS dte,
argMin(opt_px, (abs(strike - (SELECT px FROM spot)), strike)) AS call_price
FROM chain
GROUP BY expiry
),
targets AS (
SELECT arrayJoin([0, 1, 2, 7, 14, 30, 60, 90, 180, 365, 730]) AS target
),
nearest AS (
SELECT argMin(dte, (abs(dte - target), dte)) AS pick_dte,
argMin(call_price, (abs(dte - target), dte)) AS pick_px
FROM targets CROSS JOIN atm
GROUP BY target
)
SELECT concat(toString(pick_dte), ' DTE') AS days_to_expiration,
round(pick_px, 2) AS atm_call_price,
round(pick_px / greatest(pick_dte, 1), 2) AS premium_per_remaining_day
FROM nearest
GROUP BY days_to_expiration, atm_call_price, premium_per_remaining_day, pick_dte
ORDER BY pick_dteLe call à la monnaie qui expirait l'après-midi même coûtait 1.65 $. Celui qui expirait le lendemain coûtait 2.92 $ ; à une semaine, 6.09 $ ; à un mois, 13.85 $ ; et le contrat le plus lointain de l'échelle, 891 DTE, coûtait 125.64 $. Remarquez ce que le prix n'est pas : proportionnel au temps. Environ trente fois la durée de vie calendaire de l'option du jour même ne coûtait pas trente fois son prix, loin de là.
La colonne de droite traduit cela en un nombre que les traders ressentent concrètement : la prime divisée par les jours calendaires restants. À 891 DTE, l'acheteur payait 0.14 $ pour chaque jour d'optionnalité restant ; à 7 DTE, 0.87 $ ; à 2 DTE, 1.92 $. Le temps devient régulièrement plus cher par jour à mesure que la date d'échéance approche : cette pente qui se raidit, c'est le sens de « le thêta s'accélère », et cette colonne en est le reçu. (La ligne 0 DTE est la seule exception du tableau, pour une raison mécanique : mesurée à la mi-journée, il lui restait quelques heures de vie plutôt qu'une journée entière, si bien que diviser sa prime par « un jour » sous-estime sa véritable érosion quotidienne.)
Quels tickers offrent réellement des options 0DTE ?
Tous les sous-jacents n'ont pas de contrat expirant le jour même à négocier. Les chaînes qui portent des échéances quasi quotidiennes forment une liste courte : les grands ETF indiciels et une poignée de méga-capitalisations. Six tickers très connus, même séance :
SPY a négocié 35 dates d'échéance distinctes dans cette seule séance, de 0 DTE jusqu'à 891 DTE, options du jour même et LEAPS pluriannuels sur une seule chaîne, et 70.1 % de son volume portait sur des contrats du jour même. QQQ et TSLA avaient aussi des contrats expirant ce mercredi-là (71.5 % et 62 % de leur volume). KO non : son échéance la plus proche se situait à 2 jours, et 0 % de son volume était à 0 DTE. Sa chaîne liste des vendredis, donc un mercredi aucun contrat du jour même n'existe à l'achat.
Voilà la réponse pratique à « puis-je trader du 0DTE sur mon action ? » : cherchez dans la chaîne une échéance datée d'aujourd'hui. Les ETF indiciels en listent une presque chaque jour de bourse ; une valeur moyenne ou une valeur de rendement tranquille propose typiquement des vendredis hebdomadaires et des mensuelles, rien de plus court. Quand expirent les options cartographie le calendrier complet, et le triple witching couvre l'embouteillage trimestriel.
L'avant de la courbe a-t-il toujours été aussi encombré ?
Non : cet encombrement est récent, et il se mesure. La même fenêtre de cinq séances à la mi-juin, options SPY uniquement, année par année :
Le SQL exact derrière chaque chiffre
SELECT year,
round(100.0 * sumIf(vol, dte = 0) / sum(vol), 1) AS pct_0dte,
round(100.0 * sumIf(vol, dte <= 7) / sum(vol), 1) AS pct_week_or_less,
round(sum(vol) / 1e6, 1) AS spy_contracts_mm
FROM (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
toFloat64(volume) AS vol,
dateDiff('day',
toDate(toTimeZone(window_start, 'America/New_York')),
toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte
FROM global_markets.options_minute_aggs
WHERE ticker LIKE 'O:SPY2%'
AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6
AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) BETWEEN 8 AND 12
AND toYear(toTimeZone(window_start, 'America/New_York')) >= 2020
)
WHERE dte >= 0
GROUP BY year
ORDER BY yearEn 2020, les contrats du jour même représentaient 20.2 % du volume d'options SPY dans cette fenêtre. En 2023, ils en représentaient 44.2 %, et en 2026 ils ont atteint 69.5 %. La progression n'est pas parfaitement monotone : 2021 s'est établi à 18.6 %, sous la lecture de 2020. À partir de 2022, chaque échantillon de juin s'inscrit au-dessus du précédent. Les contrats ayant une semaine ou moins à courir sont passés de 61.7 % à 89.9 % sur la même période, sur 71.9 millions de contrats SPY dans la fenêtre la plus récente. La conversation autour du DTE est plus bruyante qu'il y a cinq ans, et les données du marché vont dans le même sens.
Choisir un DTE pour votre stratégie
Il n'existe pas de DTE correct : seulement des arbitrages, et ils sont mécaniques. Un DTE court signifie une prime bon marché, une érosion rapide et une sensibilité démesurée aux petits mouvements près du prix d'exercice. Un DTE long signifie une prime chère, une érosion lente et un comportement plus proche de celui de l'action elle-même. Le dialecte commun du marché :
- 0-1 DTE (jour même et lendemain). La prime la plus faible de la cote, une valeur temps entièrement consumée à la clôture, des issues en tout ou rien. C'est là que vit le volume, et là qu'un mouvement défavorable ne laisse aucun temps pour se rétablir.
- Hebdomadaires, 2-7 DTE. Des jours plutôt que des heures de marge. Un terrain courant pour les spreads de crédit à courte échéance ; toujours en plein dans la partie raide de la courbe d'érosion ci-dessus.
- 30-45 DTE. La tranche conventionnelle pour la vente de prime : covered calls, puts sécurisés en cash. Souvent citée comme le point d'équilibre où l'érosion est significative sans être frénétique, et où une position peut être gérée plutôt que simplement subie. Sur l'échelle du 8 juillet, le call à la monnaie à 30 DTE coûtait 13.85 $ contre 1.65 $ pour le prix d'exercice du jour même : un mois d'horloge à 0.46 $ par jour restant.
- LEAPS, environ 365 DTE et au-delà. Un prix assis surtout sur le mouvement de long terme du sous-jacent plutôt que sur le tic-tac de l'horloge : le temps le moins cher de la cote par jour restant (0.14 $ à 891 DTE), et la plus grosse mise de fonds initiale.
Aucune de ces tranches n'est une règle. Elles décrivent la façon dont le marché parle et, d'après les données de volume ci-dessus, quels dialectes sont réellement parlés. Quelle que soit la tranche retenue, les frais de transaction s'ajoutent à la prime : ce que coûte le trading d'options détaille la facture par contrat.
FAQ
Comment calculer le DTE ?
Soustrayez la date du jour de la date d'échéance du contrat et comptez chaque jour calendaire entre les deux, week-ends et jours fériés compris. Le jour d'échéance vaut zéro. Le 8 juillet 2026, le contrat SPY le plus négocié de la tranche 2-7 DTE, O:SPY260710P00740000, expirait le July 10, 2026, soit 2 jours calendaires plus tard, ce qui le plaçait à 2 DTE ce jour-là.
Que signifie 0 DTE ?
Une option qui se négocie le jour même de son échéance : zéro jour avant échéance. Elle cesse de se négocier à la clôture de cette séance et se règle le soir même, sans valeur ou dans la monnaie. Le 8 juillet 2026, les contrats 0 DTE représentaient à eux seuls 38.9 % de tout le volume d'options US : qu'est-ce que le 0DTE couvre le phénomène en profondeur.
Le DTE se compte-t-il en jours calendaires ou en jours de bourse ?
En jours calendaires, par convention quasi universelle. Les week-ends et les jours fériés comptent, et la valeur temps s'érode pendant eux : une option à 3 DTE le vendredi (échéance le lundi) n'a plus qu'une séance de bourse devant elle, mais trois jours d'horloge.
Quel DTE choisir pour trader les options ?
Il n'y a pas de meilleur DTE unique ; le choix fixe l'arbitrage. Les contrats à courte échéance sont bon marché et se consument vite : le call SPY à la monnaie expirant l'après-midi même coûtait 1.65 $ le 8 juillet 2026. Les contrats à longue échéance coûtent bien plus cher au départ et bien moins par jour de vie (0.14 $ par jour restant à 891 DTE). Les vendeurs de prime travaillent par convention la tranche 30-45 DTE ; les acheteurs qui veulent du temps devant eux visent plus loin.
Quel DTE les traders d'options négocient-ils le plus ?
La réponse mesurée pour le 8 juillet 2026 : 61.8 % du volume de contrats se situait à 7 DTE ou moins, dont 38.9 % à 0 DTE seul. L'activité à plus longue échéance existe (18.7 % du volume était à 31 DTE ou plus), mais le centre de gravité du marché est l'avant de la courbe, et il s'est encore avancé dans chaque échantillon de juin depuis 2022.
Chaque nombre ci-dessus provient d'une requête stockée et versionnée sur l'intégralité des données d'options : dépliez le SQL de n'importe quel panneau, ou découpez le spectre des DTE pour n'importe quel sous-jacent sur le terminal Strasmore.