Czym są opcje 0DTE i jak działają
Wyjaśnienie pojęcia 0DTE oraz mechanizmu opcji wygasających tego samego dnia. Analiza znaczenia terminu DTE oraz sposobu budowania strategii rynkowych.
Opcje 0DTE to kontrakty handlowane w ostatnim dniu ich życia — zero days to expiration, wygasające wraz z zamknięciem sesji tego samego popołudnia. Każda notowana opcja staje się 0DTE w dniu swojej daty wygaśnięcia; termin ten upowszechnił się, gdy największe produkty indeksowe zaczęły oferować kontrakty wygasające każdego dnia handlowego. W poniedziałek, 6 lipca 2026 roku, kontrakty wygasające tego samego dnia stanowiły 38.8% całkowitego wolumenu opcji w USA. Wszystkie poniższe dane pochodzą z rejestru transakcji, gdzie jeden kontrakt liczony jest jako jednostka.
Co oznacza 0DTE?
DTE to skrót rynkowy oznaczający days to expiration (dni do wygaśnięcia): liczba dni kalendarzowych pozostałych do wygaśnięcia opcji. Opcja 30-DTE ma miesiąc do końca terminu; opcja 0-DTE — „zero days to expiry”, czyli opcja jednodniowa — wygasa dzisiaj. Przy zamknięciu sesji opcja typu in-the-money podlega realizacji lub rozliczeniu gotówkowemu; opcja typu out-of-the-money traci ważność bez wartości.
0DTE nie jest osobnym produktem: opcja kupna na SPY, która na początku czerwca miała 30-DTE, w swoim ostatnim dniu handlu staje się 0-DTE. Pełna struktura terminów wygaśnięcia znajduje się w co oznacza DTE w opcjach. Wolumen w tym przypadku dotyczy obrotu kontraktami, a nie otwartych pozycji — patrz wolumen opcji a otwarty interest.
Które opcje wygasają każdego dnia?
Przez dziesięciolecia opcje na akcje notowane na giełdach USA wygasały raz w miesiącu, w trzeci piątek; cotygodniowe piątki upowszechniły się w latach 2000. i 2010. W 2022 roku giełdy uzupełniły kalendarz dla największych produktów indeksowych: Cboe dodało wiosną wygasanie opcji na S&P 500 (SPX) we wtorki i czwartki, a w listopadzie wprowadzono notowania dla ETF SPY oraz QQQ również we wtorki i czwartki. Od końca 2022 roku SPX, SPY oraz QQQ posiadają termin wygaśnięcia na każdy dzień handlowy w tygodniu; ETF Russell 2000 (IWM) również wygasa codziennie. Akcje pojedynczych spółek zachowały stary rytm, więc niegdyś piątek był jedynym dniem, w którym opcja na akcje mogła być 0DTE.
Jaki udział w wolumenie opcji stanowi 0DTE?
Panel klasyfikuje każdy kontrakt obrócony w ten poniedziałek — pełna sesja została zweryfikowana, dane pochodzą z oficjalnych rejestrów — według liczby dni pozostałych do wygaśnięcia, na podstawie danych z tickerów OCC.
Dokładny kod SQL dla każdej liczby
SELECT multiIf(dte = 0, '0 (expires today)',
dte = 1, '1 day',
dte <= 7, '2-7 days',
dte <= 30, '8-30 days',
'31+ days') AS days_to_expiry,
round(sum(volume) / 1e6, 2) AS contracts_mm,
round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_volume
FROM (
SELECT toFloat64(volume) AS volume,
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 >= toDateTime('2026-07-06 08:00:00')
AND window_start < toDateTime('2026-07-07 04:00:00')
AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
)
WHERE dte >= 0
GROUP BY days_to_expiry
ORDER BY min(dte)Kontrakty wygasające tego samego dnia stanowiły największą grupę: 23.52 milionów, co stanowi 38.8% z łącznych 60.64 milionów kontraktów obróconych podczas sesji — powyżej 18.6% kontraktów z terminem wygaśnięcia przekraczającym miesiąc. Najmniejszą grupę stanowią kontrakty z terminem wygaśnięcia następnego dnia: ich wolumen wyniósł 4.5%. Aktywność krótkoterminowa koncentruje się w dniu wygaśnięcia, a nie dzień wcześniej.
Dane za pełny miesiąc:
Dokładny kod SQL dla każdej liczby
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
round(sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / 1e6, 1) AS zero_dte_contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')W ciągu 21 sesji czerwcowych i 1477.9 milionów kontraktów, 506.3 milionów — 34.3% — wygasło w dniu obrotu. Nasze podsumowanie rynku za pierwszą połowę 2026 analizowało te dane miesiąc po miesiącu, wykazując wzrost udziału kontraktów wygasających tego samego dnia od poziomu styczniowego do szczytu w czerwcu.
Jak traderzy konstruują transakcje 0DTE
„Trading 0DTE” nie jest pojedynczą transakcją. Większość obrotu obejmują cztery struktury, z których każda stanowi kombinację opcji call i put z tym samym terminem wygaśnięcia. Treść ma charakter wyłącznie definicyjny, a nie rekomendacyjny.
- Kierunkowa pojedyncza noga. Zakup opcji call (zyskuje powyżej ceny wykonania) lub opcji put (poniżej ceny wykonania) z terminem wygaśnięcia w tym samym dniu. Maksymalna strata kupującego to zapłacona premia; kontrakt ma wartość zero przy zamknięciu, chyba że zakończy się w stanie „in the money”.
- Spread kredytowy (pionowy). Sprzedaż jednej opcji i zakup tańszej opcji typu „out-of-the-money” o tym samym typie i terminie wygaśnięcia. Sprzedający otrzymuje różnicę — kredyt — i zachowuje ją, jeśli instrument bazowy zamknie się po właściwej stronie; długa noga ogranicza stratę do różnicy między cenami wykonania pomniejszonej o otrzymany kredyt („ryzyko zdefiniowane”).
- Iron condor. Dwa spready kredytowe jednocześnie: spread call powyżej rynku oraz spread put poniżej rynku. Trader zachowuje oba kredyty, jeśli instrument bazowy zamknie się między cenami wykonania pozycji krótkiej; strata jest ograniczona w każdym przypadku i rozliczana przy zamknięciu sesji.
- Gamma scalping. Handlowanie instrumentem bazowym w celu utrzymania neutralności delta względem pozycji opcyjnej w obliczu wahań jej czułości. W dniu wygaśnięcia te wahania są najsilniejsze, a hedging odbywa się najczęściej — to jeden z powodów, dla których market makers wykazują dużą aktywność w kontraktach jednodniowych.
Każda noga generuje koszt spreadu bid-ask oraz prowizję przy otwarciu i zamknięciu pozycji — koszt handlu opcjami określa te opłaty, a w przypadku strategii condor płaci się je cztery razy.
Dlaczego opcje 0DTE zmieniają się tak szybko: theta i gamma
Dwa terminy z matematyki opcyjnej odpowiadają za większość tych różnic — wynika to z mechaniki kontraktu, a nie z prognoz.
Theta to upływ czasu. Cena opcji składa się z dwóch części: wartości wewnętrznej (ile wart byłoby jej zakup poprzez realizację) oraz wartości czasowej (premia za to, co może się jeszcze wydarzyć). Wartość czasowa musi spaść do zera w terminie wygaśnięcia; w ostatnim dniu to, co pozostało, wyparowuje w ciągu godzin, a nie tygodni.
Gamma określa, jak szybko zmienia się delta opcji — czyli jej wrażliwość na cenę instrumentu bazowego. W pobliżu wygaśnięcia delta opcji at-the-money gwałtownie oscyluje między wartościami bliskimi zeru a bliskimi jeden, gdy instrument bazowy przekracza cenę wykonania.
Theta, gamma i delta to trzy z greckich współczynników opcyjnych — standardowych miar wrażliwości, które podaje każdy dział opcyjny. Aby zapoznać się z pełnym zestawem miar stosowanych w handlu, należy zacząć od wyjaśnienia greckich współczynników opcyjnych, a następnie przejść do szczegółowych analiz dotyczących theta, gamma oraz delta.
Oba współczynniki w handlu. Wśród wszystkich kontraktów SPY handlowanych tego samego dnia w poniedziałek, dwa najbardziej aktywne to call za $751 (1.08 milionów kontraktów) oraz put za $750 (0.99 milionów); ranking znajduje się w notatkach do danych poniżej. Panel analizuje oba współczynniki co trzydzieści minut względem odległości SPY od ceny wykonania $751. SPY otworzył na poziomie $748.74.
Dokładny kod SQL dla każdej liczby
SELECT formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
round(anyIf(close, ticker = 'O:SPY260706C00751000'), 2) AS call_751_price,
round(anyIf(close, ticker = 'O:SPY260706P00750000'), 2) AS put_750_price,
round(anyIf(close, ticker = 'SPY') - 751, 2) AS spy_vs_751_strike
FROM (
SELECT window_start, ticker, close
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
AND ticker IN ('O:SPY260706C00751000', 'O:SPY260706P00750000')
UNION ALL
SELECT window_start, ticker, close
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
AND ticker = 'SPY'
)
WHERE toMinute(window_start) % 30 = 0
GROUP BY et_time, window_start
ORDER BY window_startPrzy otwarciu o godzinie 09:30 call handlował po $0.7, a put po $1.88, przy czym SPY znajdowało się $-1.75 od ceny wykonania (trzecia kolumna). Jeden kontrakt obejmuje 100 akcji: kilkanaście dolarów premii w stosunku do 100 akcji ETF handlowanego w okolicach $748.74. To jest dźwignia finansowa.
Theta dominuje w środku dnia. O godzinie 11:30 call kosztował $0.57, a put $0.48, przy czym SPY znajdowało się $-0.29 od ceny wykonania. Dwie godziny później, o 13:30, SPY nadal znajdowało się w odległości mniejszej niż jeden dolar od ceny wykonania ($-0.52) — a cena call spadła do $0.42, natomiast put utrzymała poziom zbliżony do początkowego $0.47. W obu próbkach call nie posiadał wartości wewnętrznej, a SPY zakołowało w punkcie wyjścia: sam upływ czasu obniżył premię.
Gamma dominuje po południu. SPY przekroczyło cenę wykonania $751 po godzinie 14:00 i zakończyło na poziomie $0.47 powyżej niej — co stanowi mniej niż pół procenta w ETF. W tym okresie cena call wzrosła z $0.29 do $1.29 o godzinie 15:30, natomiast cena put spadła z $0.52 do $0.03: niewielka zmiana indeksu spowodowała trocyfrowy procentowy wzrost call oraz niemal całkowity spadek put, w przeciwnych kierunkach tego samego popołudnia.
Co dzieje się podczas zamknięcia o godzinie 16:00?
W momencie sygnału matematyka jest prosta: kontrakt typu same-day jest wart tyle, co jego wartość wewnętrzna, lub nic. Wiersz 16:00 powyżej to ostatnia minuta handlu — call wyceniono na $0.57, blisko $0.47 wartości wewnętrznej, z jaką rozliczono kontrakt; put, przy SPY powyżej strike $750, wyceniono na $0.01. Rozszerzając to na wszystkie strike SPY typu same-day, zestawiono je z zamknięciem SPY na poziomie $751.47:
Dokładny kod SQL dla każdej liczby
WITH (
SELECT round(argMax(close, window_start), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_close
SELECT if(expired_at_zero, 'Out of the money at the close (expired at zero)',
'In the money at the close (settled with value)') AS at_the_bell,
count() AS contracts,
round(sumIf(vol, opt_type = 'C') / 1e6, 2) AS call_contracts_mm,
round(sumIf(vol, opt_type = 'P') / 1e6, 2) AS put_contracts_mm,
round(100.0 * sum(vol) / sum(sum(vol)) OVER (), 1) AS pct_of_spy_zero_dte_volume
FROM (
SELECT substring(ticker, length(ticker) - 8, 1) AS opt_type,
toFloat64(substring(ticker, length(ticker) - 7, 8)) / 1000 AS strike,
(opt_type = 'C' AND strike > spy_close) OR (opt_type = 'P' AND strike < spy_close) AS expired_at_zero,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 08:00:00')
AND window_start < toDateTime('2026-07-07 04:00:00')
AND startsWith(ticker, 'O:SPY260706')
GROUP BY ticker, opt_type, strike, expired_at_zero
)
GROUP BY expired_at_zero
ORDER BY expired_at_zero DESC86 dzisiejszych strike SPY zakończyło się poza pieniądzem (out of the money) i wygasło z wartością zero, stanowiąc 66.9% wolumenu SPY typu same-day z danej sesji — 3.91 milionów putów i 1.78 milionów calli. Kontrakty 33.1%, które zakończyły się w pieniądzu (in the money), rozłożyły się na 163 strike'ach.
Należy to odczytać w obu kierunkach: każdy kontrakt w górnym wierszu oznaczał całkowitą stratę dla podmiotu posiadającego pozycję long w momencie sygnału, a całą premię zachował podmiot posiadający pozycję short. Wolumen nie oznacza własności — dane nie wskazują, kto posiadał te kontrakty o 16:00. Informują one jedynie, że większość wolumenu SPY typu same-day z sesji znajdowała się w kontraktach, które straciły całą wartość. Biorąc pod uwagę skalę obu skrajnych wyników, najlepsze i najgorsze tysiące dolarów z czerwca 2026 stanowiły zestawienie z miesięcznym opóźnieniem.
Rozliczenie różni się w zależności od instrumentu: opcje na SPY, QQQ oraz akcje pojedynczych spółek są rozliczane w akcjach, zatem kontrakt in-the-money utrzymywany do wygaśnięcia staje się pozycją akcyjną: jeden call na SPY za $751 dostarcza 100 akcji po danym strike'u. Opcje na SPX są rozliczane gotówkowo.
Które tickery dominują w handlu 0DTE?
Każdy ticker opcyjny zawiera w sobie root — produkt, do którego należy. Zestawienie szeregu root według wolumenu w ramach tego samego dnia.
Dokładny kod SQL dla każdej liczby
SELECT root AS underlying,
round(sum(volume) / 1e6, 2) AS zero_dte_contracts_mm,
round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_zero_dte_volume
FROM (
SELECT substring(ticker, 3, length(ticker) - 17) AS root,
toFloat64(volume) AS volume
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 08:00:00')
AND window_start < toDateTime('2026-07-07 04:00:00')
AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
AND toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))
)
WHERE root != 'SPCX'
GROUP BY root
ORDER BY sum(volume) DESC
LIMIT 8Dwa największe indeksowe ETF zajmują pierwsze miejsca: SPY wygenerował 36.1% wolumenu z tego samego dnia (8.49 milionów kontraktów), a QQQ kolejne 21.2%. SPXW — root dla tygodniowych opcji na indeks S&P 500 rozliczanych gotówkowo — odnotował 11.3%, natomiast IWM 3.5%. Kluczowa informacja: TSLA był największym pojedynczym rootem akcyjnym w ramach tego samego dnia z wynikiem 11.9%, za którym uplasowały się NVDA, AAPL oraz META — w poniedziałek, dzień, w którym żadna opcja akcyjna nie wygasłaby według starej konwencji tylko w piątki.
Kto handluje opcjami 0DTE i kiedy?
Rejestr zawiera informacje o kontraktach, cenach, wielkościach i czasie transakcji — nigdy o tożsamościach uczestników. Giełdy i regulatorzy opisują ten przepływ jako mieszankę: biura instytucjonalne realizujące strategie spread i zabezpieczenia oraz inwestorzy detaliczni zajmujący pozycje kierunkowe. Czas transakcji jest mierzalny — kiedy handluje się opcjami 0DTE wskazuje, że największa aktywność w ramach tego samego dnia występuje w pierwszej półgodzinie sesji, a nie na jej końcu.
Uwagi do danych: sesja i przetworzone dane
SPY wygenerował 390 minutowych słupków sesji regulowanej w dniu 6 lipca — pełna sesja od 9:30 do 16:00 — otwierając na poziomie $748.74 i zamykając na poziomie $751.47. Wolumen opcji, których termin wygaśnięcia nie został poprawnie odczytany z tickera OCC: 0%. Wolumen na kontraktach po terminie wygaśnięcia: 0%. Znaczniki czasu są w strefie UTC, a przed porównaniem dat zostają przeliczone na czas wschodnioamerykański; panel ścieżki kontraktu odczytuje zamknięcia minutowych słupków (ostatnie ceny transakcyjne, a nie środki cenowe).
Dwa kontrakty, które śledzi sekcja theta/gamma, to najbardziej aktywne w ramach sesji strike'i SPY o tym samym terminie wygaśnięcia, uszeregowane tutaj według liczby obróconych kontraktów.
Dokładny kod SQL dla każdej liczby
SELECT if(opt_type = 'P', 'Put', 'Call') AS side,
toString(intDiv(strike_thousandths, 1000)) AS strike,
round(contracts / 1e6, 2) AS contracts_mm
FROM (
SELECT substring(ticker, length(ticker) - 8, 1) AS opt_type,
toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)) AS strike_thousandths,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 08:00:00')
AND window_start < toDateTime('2026-07-07 04:00:00')
AND startsWith(ticker, 'O:SPY260706')
GROUP BY ticker, opt_type, strike_thousandths
ORDER BY contracts DESC
LIMIT 2
)
ORDER BY contracts DESCDokładny kod SQL dla każdej liczby
WITH (
SELECT countIf(window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:00:00', 'America/New_York'))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-07-06 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-07 00:00:00', 'America/New_York')
) AS spy_bars,
(
SELECT round(argMin(open, window_start), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_open,
(
SELECT round(argMax(close, window_start), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_close
SELECT spy_bars AS spy_session_bars_jul06,
spy_open AS spy_open_jul06,
spy_close AS spy_close_jul06,
round(sum(toFloat64(volume)) / 1e6, 2) AS total_contracts_mm,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) IS NULL) / sum(toFloat64(volume)), 2) AS unparsable_expiry_pct,
round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) < toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 2) AS past_expiry_pct
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 08:00:00')
AND window_start < toDateTime('2026-07-07 04:00:00')
AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')FAQ dotyczące opcji 0DTE
Czym są opcje zero days to expiry (0DTE)?
Zero days to expiry — 0DTE — to opcje handlowane w dniu ich wygaśnięcia: przy zamknięciu sesji są one realizowane według wartości wewnętrznej lub tracą wartość. Terminy „zero days to expiration”, „same-day options” oraz „dailies” odnoszą się do tego samego zjawiska — etapu cyklu życia kontraktu, a nie do konkretnego produktu. Indeksy SPX, SPY, QQQ i IWM oferują takie opcje każdego dnia handlowego; każda akcja objęta obrotem opcyjnym posiada takie kontrakty w piątki wygaśnięcia.
Jaki udział w wolumenie opcji stanowią 0DTE?
W całym amerykańskim obrocie opcyjnym kontrakty handlowane w dniu wygaśnięcia stanowiły 34.3% wolumenu z czerwca 2026 roku — 506.3 milionów z 1477.9 milionów kontraktów. W poniedziałek, 6 lipca 2026 roku, udział opcji typu same-day wyniósł 38.8%.
Czy potrzebuję specjalnej zgody na handel opcjami 0DTE?
Tak. Kontrakty 0DTE podlegają standardowemu procesowi zatwierdzania opcji przez brokera, który odbywa się etapami: kupowanie opcji call i put na niższym poziomie, spready i condory na wyższym, a sprzedaż niezabezpieczona (naked) na jeszcze wyższym poziomie — zazwyczaj wymaga to rachunku margin i minimalnego salda. Kupno i sprzedaż tego samego kontraktu w ramach jednej sesji jest traktowane jako day trade, zatem częsty trader 0DTE podlega amerykaskiej zasadzie pattern-day-trader: cztery lub więcej operacji day trade w ciągu pięciu dni roboczych wymaga posiadania kapitału w wysokości 25 000 USD na rachunku margin. Poziomy zależą od brokera.
Czy opcje 0DTE są bardziej ryzykowne niż opcje o dłuższym terminie wygaśnięcia?
Koncentrują one te same wyniki w ramach jednej sesji: wartość czasowa wygasa w ciągu kilku godzin, gamma jest najwyższa w pobliżu ceny strike, a kontrakt typu out-of-the-money wygasa bez wartości przy zamknięciu — co oznacza całkowitą utratę zapłaconej premii. Wytyczne FINRA dla inwestorów wskazują na ryzyko związane z handlem opcjami o krótkim terminie wygaśnięcia.
Każda powyższa sekcja jest wynikiem zapytania SQL — rozwiń kod SQL pod dowolną tabelą lub zadaj to samo pytanie w języku angielskim na terminalu Strasmore.