Quand s'échangent les options 0DTE
Analyse du volume horaire des options 0DTE. Étude du spread, du ratio calls-puts et de la saisonnalité hebdomadaire pour comprendre la dynamique de liquidité.
Le récit populaire sur les options 0DTE décrit un casino de fin de journée : des tickets de loterie achetés dans la dernière heure pour un dernier coup de dés. Les données de marché indiquent pourtant le contraire. Analysées heure par heure, les options à échéance intra-journalière présentent leur volume le plus élevé le matin. Le flux de contrats les plus rapides survient durant les trente premières minutes, et leur part du volume total des options atteint son point le plus bas en fin de journée. Les graphiques ci-dessous mesurent ce rythme lors d'une session 0DTE intense (vendredi 10 juillet 2026) et l'analysent selon les sous-jacents, les calls et les puts, ainsi que les jours de la semaine.
À quel moment de la journée les options 0DTE sont-elles le plus échangées ?
Le panel divise chaque transaction d'options de ce vendredi en contrats à échéance le jour même (expirant l'après-midi même) et le reste, classés selon l'heure de New York. La ligne de 09:00 ne couvre qu'une demi-heure — la séance ouvrant à 9:30 — la dernière colonne normalise donc chaque segment en contrats par minute pour permettre une comparaison équitable.
Le SQL exact derrière chaque chiffre
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_hour,
round(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710') / 1e6, 2) AS same_day_contracts_m,
round(sum(size) / 1e6, 2) AS all_options_contracts_m,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710') / sum(size), 1) AS same_day_pct,
round(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')
/ uniqExact(toStartOfMinute(sip_timestamp)) / 1000, 1) AS same_day_k_per_minute
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-07-10 13:30:00', 9)
AND sip_timestamp < toDateTime64('2026-07-10 20:00:00', 9)
GROUP BY et_hour
ORDER BY et_hourTaux de flux. La première demi-heure a enregistré 148.9 mille contrats du jour par minute — la période la plus rapide de la séance. Tous les segments suivants sont plus lents : 119.8k par minute à 10h, 66.6k à midi, un minimum de 50.3k durant l'heure 14:00, et 62.6k durant la dernière heure.
Volume absolu. Le segment le plus important est l'heure de 10h avec 7.19 millions de contrats — une heure complète, et non une demi-heure — après quoi le volume chute à 3.02M durant l'heure 14:00, puis augmente vers la clôture pour atteindre 3.75M. La reprise en fin de journée est réelle ; elle reste toutefois bien loin des niveaux du matin.
Part relative. La part des contrats du jour dans le volume TOTAL des options débute à 52.9%, atteint un pic de 53.4% durant l'heure 11:00, puis diminue chaque heure pour atteindre 38.4% à la clôture — le minimum de la journée. Analysez attentivement cette dernière heure, car c'est là que se situe l'exception : le volume total des options augmente vers la cloche (9.78M contrats contre 6.63M l'heure précédente — le troisième segment le plus chargé de la journée, après les heures 10:00 et 11:00 à 13.58M et 10.86M) alors que la part des 0DTE s'effondre. La clôture est une heure d'activité intense pour les options, mais c'est l'heure la moins concentrée en 0DTE de la séance.
Le pic du matin concerne-t-il uniquement le SPY ?
L'objection est fondée : les ETF indiciels affichent une expiration chaque jour de trading, le phénomène "0DTE" concerne donc peut-être uniquement le SPY et le QQQ. Le tableau suivant détaille le volume intraday du vendredi par sous-jacent, en précisant le volume d'actions quotidien de chaque titre et la part échangée avant midi.
Le SQL exact derrière chaque chiffre
WITH by_name AS (
SELECT substring(ticker, 3, length(ticker) - 17) AS underlying,
sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710') AS same_day_size,
sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710'
AND toHour(toTimeZone(sip_timestamp, 'America/New_York')) < 12) AS morning_size,
sum(size) AS all_size
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-07-10 13:30:00', 9)
AND sip_timestamp < toDateTime64('2026-07-10 20:00:00', 9)
AND ticker NOT LIKE 'O:SPCX%'
GROUP BY underlying
)
SELECT underlying,
round(same_day_size / 1e6, 2) AS same_day_contracts_m,
round(100.0 * same_day_size / sum(same_day_size) OVER (), 1) AS pct_of_all_0dte,
round(100.0 * same_day_size / all_size, 1) AS same_day_pct_of_name,
round(100.0 * morning_size / same_day_size, 1) AS pct_traded_before_noon
FROM by_name
ORDER BY same_day_size DESC
LIMIT 10Les produits indiciels dominent, mais ne monopolisent pas le marché. SPY a représenté à lui seul 25.5% de l'ensemble des contrats intraday échangés sur le marché, QQQ un autre 14.5% ; avec la série d'indices S&P 500 (SPXW) et l'ETF small-cap (IWM), les produits indiciels occupent quatre des six premières positions. Les deux autres sont des actions individuelles — NVDA à 8.7%, TSLA à 7.3%.
La colonne same_day_pct_of_name indique la part de "0DTE" dans le marché des options de chaque titre : 72.1% du volume d'options de SPY ce jour-là expiraient le même après-midi, contre 46.9% pour AMZN en bas du tableau.
Le biais matinal est présent pour les dix titres. La période précédant midi représente deux virgule cinq des six virgule cinq heures de la séance — soit 38 % du temps — et chaque titre a échangé plus que cette proportion de son volume intraday durant cet intervalle : maximum pour IWM à 67.4%, minimum pour MU à 44.5%, SPY à 54.4%, NVDA à 56.3%. Cette tendance est propre au produit, et non à un ETF spécifique.
Les calls et les puts suivent-ils la même horloge ?
L'hypothèse habituelle est que les puts arrivent tardivement — que la clôture soit saturée de couvertures contre un gap overnight. Les données indiquent que les deux côtés suivent presque la même horloge.
Le SQL exact derrière chaque chiffre
SELECT formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_hour,
round(sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / 1e6, 2) AS call_contracts_m,
round(sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'P') / 1e6, 2) AS put_contracts_m,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'P') / sum(size), 1) AS put_share_pct
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-07-10 13:30:00', 9)
AND sip_timestamp < toDateTime64('2026-07-10 20:00:00', 9)
AND substring(ticker, length(ticker) - 14, 6) = '260710'
GROUP BY et_hour
ORDER BY et_hourLes deux côtés atteignent leur pic dans la même tranche de 10 heures — 4.1M de calls contre 3.09M de puts — les deux diminuent durant l'après-midi, puis augmentent vers la clôture. La part des puts dans le volume intra-journalier est l'indicateur clé : elle est au plus bas lors de la séance d'ouverture (34.9%), elle grimpe à 43% à 10 heures, puis se maintient dans une fourchette étroite pour finir à 41.7%.
L'effet de mix est l'inverse de la théorie de la couverture : la poussée de l'ouverture est la période la plus orientée vers les calls de la journée, et les puts regagnent quelques points de part après ce pic. Aucune poussée de puts en fin de journée n'est observée.
Le schéma se confirme-t-il un mardi ?
Le rythme horaire dépend du rythme quotidien : le volume de trading 0DTE possible lors d'une séance dépend des échéances du jour. Le vendredi marque la fin majeure du calendrier d'expiration — les weeklys, les monthlys et les séries d'ETF quotidiens expirent tous ce jour-là — tandis que le mardi ne propose que des titres à échéance quotidienne. Le panel regroupe six semaines de séances par jour de la semaine.
Le SQL exact derrière chaque chiffre
WITH sessions AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
sumIf(volume, substring(ticker, length(ticker) - 14, 6)
= formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%y%m%d')) AS same_day_vol,
sum(volume) AS all_vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime64('2026-06-01 13:30:00', 9)
AND window_start < toDateTime64('2026-07-10 20:00:00', 9)
AND toHour(toTimeZone(window_start, 'America/New_York')) BETWEEN 9 AND 15
GROUP BY session_date
)
SELECT toDayOfWeek(session_date) AS dow,
formatDateTime(session_date, '%W') AS weekday,
count() AS sessions,
round(avg(same_day_vol) / 1e6, 2) AS avg_same_day_contracts_m,
round(100.0 * sum(same_day_vol) / sum(all_vol), 1) AS same_day_pct_of_volume
FROM sessions
GROUP BY dow, weekday
ORDER BY dowSur 6 lundis, 6 mardis, 6 mercredis, 6 jeudis et 4 vendredis, la répartition est marquée. Le vendredi a représenté une part de 46.1% du volume total des options sur le même jour et a enregistré en moyenne 36.1 millions de contrats le même jour par séance — le niveau le plus élevé des cinq jours sur ces deux mesures. Tuesday était la journée la plus faible (29.2%, 18.92M) ; les jours de milieu de semaine sont très proches (34.5% sur Monday, 34.2% sur Wednesday, 35.4% sur Thursday). Le trading le même jour est un phénomène systématique — même le jour le plus faible représente 29.2% du flux des options — mais le niveau est une donnée calendaire, et le vendredi des panels ci-dessus se situe près du haut de cette plage. La forme horaire est généralisable ; pas l'amplitude.
Pourquoi la séance du matin, mécaniquement
La durée de vie d'une option à échéance intraday se limite à une seule séance. Par conséquent, les acteurs cherchant cette exposition — traders de range, couvertures sur événements ou vendeurs de premium exploitant le dernier jour de l'érosion temporelle — disposent de l'offre la plus importante à l'ouverture : le plus grand nombre d'heures, le plus de premium et le range quotidien non résolu le plus large. Chaque heure réduit la valeur du produit, et la baisse de la part disponible l'après-midi correspond à l'expiration du produit en temps réel.
Que se négocie réellement durant la dernière heure ?
L'hypothèse standard veut que le résidu de la dernière heure soit composé de contrats deep in-the-money convergeant vers le titre, ainsi que de strikes de type "loterie" avec un spread de quelques centimes. Le panel teste cette théorie en regroupant les transactions de la même journée par prime payée — un indicateur de la moneyness le jour de l'expiration, puisqu'un contrat dont l'échéance est dans quelques heures et qui coûte 0,05 $ est far out of the money, tandis qu'un contrat au-dessus de 10 $ est deep in the money.
Le SQL exact derrière chaque chiffre
SELECT multiIf(price < 0.10, 'under $0.10', price < 0.50, '$0.10-0.50', price < 2, '$0.50-2', price < 10, '$2-10', '$10 and up') AS premium_bucket,
round(100.0 * sumIf(size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 10)
/ sum(sumIf(size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 10)) OVER (), 1) AS pct_of_10am_contracts,
round(100.0 * sumIf(size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 15)
/ sum(sumIf(size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 15)) OVER (), 1) AS pct_of_3pm_contracts,
round(100.0 * sumIf(price * size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 15)
/ sum(sumIf(price * size, toHour(toTimeZone(sip_timestamp, 'America/New_York')) = 15)) OVER (), 1) AS pct_of_3pm_premium_dollars
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-07-10 13:30:00', 9)
AND sip_timestamp < toDateTime64('2026-07-10 20:00:00', 9)
AND substring(ticker, length(ticker) - 14, 6) = '260710'
AND toHour(toTimeZone(sip_timestamp, 'America/New_York')) IN (10, 15)
GROUP BY premium_bucket
ORDER BY min(price)La répartition bascule nettement vers les prix les plus bas. À l'heure de 10 heures, le bucket modal est $0.50-2, soit 37.4% des contrats, avec le bucket des sous de dix cents à 17.1%. À l'heure de la clôture, le bucket des sous de dix cents a presque doublé sa part pour atteindre 33.8%, $0.10-0.50 ajoute 34.9%, et les contrats $0.50-2 chutent à 19.6%. La majeure partie des échanges avant la cloche coûte moins de cinquante cents.
La dernière colonne est celle de la correction. Ces contrats coûteux sont rares — le bucket $10 and up représente 2.6% des contrats de la dernière heure — et pourtant ils concentrent 54.2% de la prime totale échangée durant cette heure, contre 0.8% pour le bucket des sous de dix cents. Les deux aspects de ce phénomène sont présents, mais dans des unités différentes : en nombre de contrats, la dernière heure est un marché de tickets de loterie ; en dollars, c'est un volume faible de contrats deep in-the-money convergeant vers l'action (le guide 0DTE suit l'un de ces strikes de loterie de dernière heure).
Quand les spreads 0DTE sont-ils les plus serrés ?
Le volume est une mesure de la liquidité ; le coût de l'exécution (crossing the market) est celui que paie le trader. Le panel analyse chaque mise à jour de cotation sur les contrats SPY 0DTE de ce vendredi et rapporte le bid-ask spread médian par heure. L'analyse se limite aux contrats cotés entre 1 $ et 10 $ — une bande de prime comparable (les contrats à l'intérieur de cette bande évoluent au fil de la journée en raison de l'expiration du produit).
Le SQL exact derrière chaque chiffre
SELECT formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_hour,
round(count() / 1e6, 1) AS quote_updates_m,
round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price), toUInt64(sequence_number)), 3) AS median_spread_usd,
round(quantileDeterministic(0.5)(toFloat64(ask_price - bid_price) / toFloat64(bid_price + ask_price) * 200,
toUInt64(sequence_number)), 2) AS median_spread_pct_of_mid
FROM global_markets.cache_options_quotes
WHERE ticker LIKE 'O:SPY260710%'
AND sip_timestamp >= toDateTime64('2026-07-10 13:30:00', 9)
AND sip_timestamp < toDateTime64('2026-07-10 20:00:00', 9)
AND bid_price > 0
AND toFloat64(bid_price + ask_price) / 2 BETWEEN 1 AND 10
GROUP BY et_hour
ORDER BY et_hourLe spread s'élargit au fur et à mesure que la session progresse. Le contrat SPY médian du jour dans cette bande était coté à 0.8% de son mid-price durant la première demi-heure d'ouverture — la période la plus serrée — contre 2.67% durant la dernière heure de cotation, la plus large : le coût d'exécution est plus que doublé pour un produit et une bande de prime identiques, six heures plus tard. Sur le marché au comptant (cash), le spread médian passe de 0.03 $ à 0.11 $, avec une valeur médiane de 1.57% $ à 12:00 $ à la mi-journée. Le flux de cotations suit la même tendance — 1.4 millions de mises à jour durant l'heure de 10 heures contre 0.1M durant la dernière : les market makers rafraîchissent leurs cotations beaucoup moins souvent à mesure que la valeur temps des contrats approche de zéro, et élargissent leurs spreads à ce moment-là.
Analyse : implications pratiques
Le tableau mesuré est un instrument matinal sur une horloge qui s'épuise :
- La période la plus dense, la plus rapide et la moins chère pour croiser le spread d'un contrat 0DTE est ses deux premières heures. Chaque heure suivante présente des quotes plus larges et des volumes plus faibles.
- Ce phénomène n'est pas un artefact des ETF sur indices : les dix sous-jacents les plus importants concentrent leur volume intraday le matin, et les calls et puts suivent le même rythme.
- La dernière heure est réelle mais limitée — deux marchés simultanés : un très grand nombre de contrats très peu chers, et très peu de contrats très chers qui concentrent l'essentiel des dollars.
- Le jour de la semaine est déterminant : le volume intraday du vendredi est bien supérieur à celui de n'importe quel jour en milieu de semaine.
Rien de tout cela n'indique s'il faut trader un produit dont la prime peut tomber à zéro en une après-midi ; cela indique quand le marché est le plus profond et le moins cher pour croiser le spread. La page vocabulaire DTE présente l'ensemble du spectre des expirations.
FAQ
Les options 0DTE sont-elles plus actives lors de la clôture ?
Pas par rapport au reste du marché. Le 10 juillet 2026, les contrats à échéance le jour même ont chuté à 38.4% du volume total des options durant l'heure de clôture — la part la plus faible de la journée — alors que le volume total des options a augmenté pour atteindre 9.78 millions de contrats, soit la troisième heure la plus active de la session (après 13.58M à 10:00 et 10.86M à 11:00). Le volume 0DTE augmente bien jusqu'à la cloche (3.75M contre le pic de 7.19M le matin), mais le reste du marché augmente davantage. Le flux le plus important sur les contrats à échéance le jour même est survenu durant la première demi-heure de cotation, à 148.9 mille contrats par minute.
Quel pourcentage du volume des options représente le 0DTE en moyenne ?
Cela dépend du jour de la semaine. Sur les six semaines précédant le 10 juillet 2026, les contrats à échéance le jour même représentaient 46.1% du volume total des options les vendredis et 29.2% les Tuesday — chaque jour de trading présente un volume 0DTE significatif, et le calendrier des expirations détermine son importance.
Les puts et les calls 0DTE s'échangent-ils aux mêmes moments ?
De manière quasi identique : les deux ont atteint leur pic durant la même heure de 10 heures le 10 juillet 2026 et les deux ont diminué durant l'après-midi. La part des puts dans le volume à échéance le jour même était la plus faible dans le premier créneau (34.9%) et s'est terminée à 41.7% — aucune poussée de hedging en fin de journée n'est observée.
Le pic du matin est-il le même pour le SPY que pour les actions individuelles ?
Oui. Ce vendredi-là, chacun des dix sous-jacents les plus actifs — qu'il s'agisse d'ETF ou d'actions individuelles — a enregistré une part de son volume à échéance le jour même avant midi supérieure aux 38 % que représente cette période sur la durée de la session : 56.3% pour l'action individuelle NVDA, 54.4% pour SPY.
Chaque chiffre ci-dessus provient d'une requête stockée et versionnée sur l'ensemble du tape des options — développez n'importe quel panneau pour lire le SQL, ou analysez une autre session sur le terminal Strasmore.