Данные. Massive: сводная котировка (NBBO) каждого опционного контракта, последняя действующая на конец минуты; цена акции — последняя сделка минуты, с пре- и афтермаркетом. Экспирация — ближайшая после дня, чтобы опцион пережил ночь: следующий день у QQQ, SPY и IWM, от одного до трёх дней у акций (их опционы экспирируются по понедельникам, средам и пятницам). Страйки — сетка от 1% до 30% в деньгах.
Переплата. Сколько стоит держать опцион сверх самой акции: у Call страйк + цена опциона − цена акции, у Put цена опциона − (страйк − цена акции). По ask — сколько стоит купить; по середине котировки — справедливая оценка без спреда. Ноль — ровно «страйк + премия = цена».
Выбор. Каждую минуту из контрактов, у которых переплата в пределах ± допуска, берётся ближайший к деньгам — с наибольшим плечом. Если такого нет, показывается самый близкий к цене и отмечается как вне допуска (из отличающихся от него не больше чем на 0,01% — снова ближайший к деньгам: ask около цены на редко торгуемом глубоком страйке — не повод его предпочесть). Котировки старше 15 минут не используются.
Ночь. Опцион, выбранный в последнюю минуту торговли опционами (15:59 у акций, 16:14 у QQQ, SPY и IWM — их опционы торгуются до 16:15; в сокращённые дни так же относительно раннего закрытия), покупается по ask и продаётся по bid в конце первой минуты, в 09:30. Его цена на закрытии уже включает все следующие сутки; котировка в 09:30 показывает, сколько из этого ушло за ночь. Итог сравнивается с акцией (Put — с шортом акции). Комиссии не учтены.
Ограничения. С закрытия опционов до 09:30 котировок нет вообще (в 08:00 и 09:00 биржи присылают только пустые), поэтому ночь видна только по цене акции. В первые минуты после 09:30 спреды глубоких страйков часто в разы шире дневных, и продажа по bid стоит дороже; таблица под каждой ночью показывает ту же позицию, проданную в 09:31–10:29.
Сбор. scripts/build_deep_itm_chart.py → data/deep_itm_chart_v1/<ТИКЕР>/<день>.json; эта ночь: 59 контрактов, 3 572 402 котировок.