Data. Massive: the consolidated quote (NBBO) of every option contract, the last one in force at the end of each minute; the share price is the last trade of the minute, pre- and after-market included. The expiry is the nearest one after the day, so the option lives through the night: the next day for QQQ, SPY and IWM, one to three days for the stocks (their options expire on Mondays, Wednesdays and Fridays). Strikes: a grid from 1% to 30% in the money.
Overpay. What holding the option costs above holding the shares: for a Call strike + option price − share price, for a Put option price − (strike − share price). At the ask it is what buying costs; at the middle of the quote, the fair value without the spread. Zero is exactly «strike + premium = price».
The pick. Every minute, among the contracts whose overpay is within ± the tolerance, the one nearest the money: the most leverage. If none is that close, the one nearest to the price is shown and marked as outside (of overpays within 0.01% of it, again the one nearest the money: an ask at the price on a rarely traded deep strike is no reason to prefer it). Quotes older than 15 minutes are not used.
The night. The option picked at the last options minute (15:59 for the stocks, 16:14 for QQQ, SPY and IWM, whose options trade until 16:15; 15 minutes after an early close likewise) is bought at the ask and sold at the bid at the end of the first minute, 09:30. Its price at the close already carries the whole next day; the 09:30 quote shows how much of that went with the night. The result is compared with holding the shares (a Put with shorting them). Commissions are not included.
Limits. Between the options close and 09:30 no option is quoted at all (at 08:00 and 09:00 exchanges send only empty quotes), so the night can only be seen through the share price. In the first minutes after 09:30 the spreads of deep strikes are often many times wider than in the day, and the sale at the bid then costs more; the table under each night shows the same position sold at 09:31–10:29.
Collection. scripts/build_deep_itm_chart.py → data/deep_itm_chart_v1/<TICKER>/<day>.json; this night: 56 contracts, 1 767 417 quotes.