QQQ · Deep ITM 0DTE: buy by the formula between 09:31 and 10:00, sell at 16:10 or exercise at 17:25
The same test as the purchase at 09:35, but the page waits for the formula: between 09:31 and 10:00 New York it checks the quotes at 09:31, 09:32, 09:33, 09:34, 09:35, 09:37, 09:40, 09:45, 09:50, 09:55 and 10:00 and buys at the first check at which an in-the-money QQQ option expiring that day has strike + premium (a Put: strike − premium) equal to the QQQ price within the tolerance (±0.005% and ±0.01% are practically exact), and of those the one closest to the price (or, as chosen, the one nearest the money). Call and Put are looked for separately. It is closed the same day: sold at the bid at 16:10 or exercised at 17:25 at the intrinsic value from the QQQ price then. About $10,000 a day. Every setting below is recalculated in the browser from frozen quotes.
QQQ · 2022: no data yet
The sessions of QQQ in 2022 are still being collected, or the page snapshot for this year is not built yet. The tool appears here as soon as it is.
Ready for QQQ: 2026.
How it is calculated
- The window. Quotes are checked at 09:31, 09:32, 09:33, 09:34, 09:35, 09:37, 09:40, 09:45, 09:50, 09:55 and 10:00: the NBBO standing at that moment (the last quote since 09:30) of every listed in-the-money strike of the day’s expiry from the money to 5% deep from the 09:35 price, and the QQQ price then (its last trade before that moment). At each check the page applies the formula and the pick below to that check’s quotes and price; the purchase is at the first check where the rule finds a strike, at that check’s ask, so the overpay, the leverage and the same-in-shares comparison use the price of that minute. The checks are those moments only, not every second, so a fit between them is not seen. Only 2026 is collected for now.
- Data. For every session with a same-day expiry the page keeps the NBBO at 09:35:00 of every listed in-the-money Call and Put of that expiry from the money to 5% deep, from the QQQ price at 09:35: the last quote at or before that moment from the vendor the project’s archive comes from (Massive, the /v3/quotes history). For the contracts some setting can buy it also keeps the NBBO at the sale minute. The QQQ price at a minute is its last trade before that minute, from the project’s minute archive. The vendor has option quotes from 7 March 2022. Shortened sessions are left out: the options close earlier.
- Expiry. The same session: 0DTE. A session without a same-day expiry (by the vendor’s list of contracts) is not traded and stays out of the table. Options on QQQ expire every session since late 2022; before that on Mondays, Wednesdays and Fridays.
- Formula and pick. Overpay = strike + premium − price for a Call and premium − (strike − price) for a Put, as a percentage of the QQQ price at 09:35; the premium is the ask (what buying costs) or the middle of the quote, as chosen. The in-the-money options (a Call below the price, a Put above it) whose overpay is within ±tolerance fit. By default the page takes the one whose overpay is smallest, so strike + premium comes closest to the price (overpays within 0.01% of the price count as equal, and the one nearest the money wins); with “the most leverage” it takes the one nearest the money: the cheapest, so the most leverage, even when its overpay is at the edge of the tolerance. When none fits, the session is skipped or, as chosen, the option with the smallest overpay is taken.
- Leverage = the QQQ price at 09:35 ÷ the option’s ask: how many dollars of shares one dollar of premium moves like. The table shows it for every session together with the value of the shares the contracts stand for (100 per contract).
- Purchase. At the ask of the NBBO standing at 09:35:00. The quote must be valid: the ask above zero and not below the bid, at least one contract on the ask, no older than 60 seconds.
- Sale at 16:10. At the bid of the NBBO standing at that minute, when it is no older than 5 minutes and covers the fee. The shares stop trading at 16:00, options on QQQ at 16:15, so at 16:10 the option still has a market. The bid of a deep in-the-money option is often below its intrinsic value (the price minus the strike for a Call, the strike minus the price for a Put): the field “If the bid is below intrinsic value” either sells at the bid anyway (the default) or exercises the option (they are American) at intrinsic value from the QQQ price at that minute. Contracts not sold at the bid are exercised at intrinsic value when it covers the fee; otherwise they count as $0 without a fee. When the vendor has no quote of the option since 15:00 at all, the session has no result and is left out of the totals.
- Exercise at 17:25. Until 17:30 New York the holder of an expiring option decides whether to exercise it, whatever the 16:00 price was. The page exercises at 17:25 when the intrinsic value from the QQQ price then (its last trade before 17:25, in the evening session) covers the fee, and counts that value: the shares delivered at the strike are taken as sold (a Put: bought back) at that price, without the shares’ spread or fees. When the option is out of the money at 17:25 it expires at $0 and the premium is lost.
- Budget is split equally between the chosen legs: with Call + Put, half a day’s budget per leg; both legs are needed, a session without either is skipped. Contracts per leg: the whole number whose cost (ask × 100 + fee each) comes nearest to the leg budget, above or below it; with displayed sizes respected, no more than the ask size. A session where even one contract costs more than twice the leg budget is skipped. The page opens with $10,000 a day and also shows the return on capital: the budget plus the largest drawdown.
- Fees are charged for every contract bought and sold (or exercised); $0.65 by default.
- The same in shares. For comparison: as many shares as the options cover (100 per contract; for a Put, sold short), bought at the 09:35 price and sold at the price of the exit minute, without fees or spread. The difference from the options is what the overpay, the spreads, the fees and the capped loss cost or earned.
- Best variant. The page opens on the best variant of the whole year at $10,000 a day, a $0.65 fee, displayed sizes ignored, the strike closest to the formula and sessions without a fitting strike skipped: among the variants (side × exit × formula price × tolerance and, for the sale at the bid, selling or exercising when the bid is below intrinsic value) that trade on at least half of the sessions with a same-day expiry, the one with the largest total without its three best sessions, so that a few jumps cannot make it; ties go to the larger total. The “Best variant” button searches again within the options chosen in the form at the current settings. All of them are picked on the same sessions their results come from, so those results are overstated.
- Limits. Quotes do not prove fills; latency, queue position and slippage are not modeled, and five minutes after the open spreads are still wider than later in the day. Buying tens of contracts at once can take more than the displayed ask size. The best variant is chosen in-sample, on the year it is shown on: a rule that looks good in one year needs checking on the other years.
- Reproduction. The sessions are collected by
python -B scripts/collect_deep_itm_0dte.py --symbols QQQ(one file per session; a session already on disk is not requested again), and the page snapshot is built from them without new requests bypython -B scripts/build_deep_itm_0dte_page.py --symbols QQQ --years 2022. The browser prices every setting with public/static/deep-itm-0dte-model.js; money is counted in hundredths of a cent, so results are exact to the cent.