# Промт для новой ветки: опционные стратегии

Скопировать целиком в новый чат.

---

Работаем над опционными стратегиями. Ниже — состояние после большого исследования
20.08.2026, чтобы не повторять уже сделанное и не наступать на найденные грабли.

## Что есть под рукой

**Данные (Massive, ex-Polygon, ключ в `polygon_config.json`):**
- опционный NBBO `/v3/quotes/O:*` — с 2022 года, есть expired-контракты
- опционные бары `/v2/aggs` day и minute, `adjusted=false`
- `/v3/reference/options/contracts` с `expired=true`
- 🔴 `/v3/trades/O:*` сейчас **403** (принтов нет), индексы (SPX/VIX/NDX) — **403**
- ETF-опционы (SPY/QQQ) доступны; исторической IV нет, только live snapshot

**Код:** `tools/options_lab/` (`massive_options.py` — quote_at/contract_quotes/
contract_bars с гейтами сессий; `bs.py`, `engine.py`, `friction_map.py`,
`vol_regime.py`, `earnings_straddle_overnight.py`, `opex_drift_test.py`).
`tools/synth_gap/` — вся инфраструктура прошлого исследования: пуллеры котировок,
тиковый реплей, свипы, калибровка ставки, генератор дашборда.

**Готовые датасеты** в `enrichment_data/synth_gap/`: `aligned.parquet` (5158 замеров,
21 имя × 12 мес, синхронные NBBO по 3 ногам), `recalib.parquet`, `tickfull_*.parquet`,
`gap_baseline_pre23x5.parquet`, минутки по 21 имени за год.

**Универс:** 21 имя из GTH-списка Cboe — AAPL AMD AMZN AVGO BABA BAC GOOG GOOGL HOOD
INTC META MSFT MU NFLX NOK NVDA ORCL PFE PLTR TSLA TSM.

## 🔴 ГРАББЛИ — соблюдать без обсуждения

1. **Никогда не сравнивать бар с котировкой.** Опционный NBBO на 15:55:00 против
   close минутного бара 15:55 (~15:55:59) — рассинхрон до 60 с, а это $0.10–0.20 на
   бумаге за $200. В прошлом исследовании **81% дисперсии «расхождения» оказалось
   часовым скосом**. Правило: все ноги — котировки, у каждой записана свежесть,
   гейт `max_stale ≤ 2 с`.
2. **Ставку дисконта выводить из котировок, а не задавать.**
   `r = −ln((S − C + P − PV(div))/K)/T`. Медиана по рынку **5.42%** (IQR 3.73–7.29),
   не 4.3%. На теноре 3 дня вся процентная компонента = **3.5 bps** от цены акции,
   а типичные «эджи» = 0.4–0.6 bps → допущение сильнее сигнала в 7 раз. Свип по r
   переворачивал результат с 0.5% пробоев на 94%.
3. **Исполнимая полоса по ставке 13–24 п.п.** (23.7 при DTE 3, 13.5 при DTE 9).
   Ставка не разрешается на коротком теноре в принципе. Бокс-спред на 3 днях даёт
   DF ≥ 1, чего быть не может.
4. **Гейт свежести обязателен до любых денег.** В сыром сэмпле строки со устаревшей
   ногой несли **96.3%** долларового итога; 6 из 8 крупнейших «возможностей» — один
   день с котировками возрастом 20–76 секунд.
5. **Порог в % от ЦЕНЫ отбирает широкие спреды, а не мисприсинги.** При пороге 20 bps
   медианная ширина рынка синтетики 96 bps против 18.7 обычной. Нормировать надо на
   полполосы: `|базис| / (band/2)`.
6. **Round-trip ATM-стрэддла по спредам = 47 bps** от цены акции. Любая короткая
   опционная идея на single-name для тейкера должна сначала перебить это число.
7. **Опционы не участвуют в аукционе открытия.** Выход «MOO» двумя ногами невозможен:
   акция уходит в 09:30:00, опцион — с 09:30:00.089. Разгрузка около открытия идёт в
   спред вдвое шире обычного (40.9 против 18.7 bps).
8. **Расширенная сессия (GTH 07:30–09:25, Curb 16:00–16:15, с 17.08.2026 на 21 имени)
   в ленте вендора отсутствует** — до 09:30 только служебные 0/0. Бэктестить её пока
   не на чем. Проверять перед началом: вдруг включили.
9. Mon/Wed экспирации у Mag7 с 26.01.2026 расширили полосу с 11.5 до 16.0 bps и
   сократили медианный DTE с 7 до 4 — выборка до и после не однородна.
10. Sharpe считать только по дневному агрегату книги × √252. Sharpe > 5 — по doubt-протоколу.

## Что уже закрыто — не переделывать

| Идея | Вердикт |
|---|---|
| Направленный «запас» синтетика-минус-сток → next open | Мёртв: N=548, p=0.31, вклад сигнала +5.3 bps, книга Sharpe 0.92 против 2.09 у «держать овернайт» |
| Двухногий арбитраж при базисе > 0.2% цены | Условие сигнала = условие неисполнимости; после калибровки 28 событий/год на 21 имени, медиана ~$9 |
| Продажа овернайт-стрэддла | −53.7 bps/сделку по касанию, t=−29.5; по mid тоже минус |
| Подразумеваемый borrow как шорт-сигнал на именах AMC10 | Неизмерим: спред 132 bps / тенор 0.12 года = полоса ±11% годовых |
| Тиковый арбитраж на 3-дневных ATM | Артефакт ставки |

## ✅ Что НЕ мертво и куда стоит идти

**Приоритет 1 — подразумеваемое движение как сайзер овернайт-книги.**
Единственное, что уверенно подтвердилось: corr(стрэддл/√DTE, реализованный |гэп|) =
**0.33**, монотонно по всем 6 бакетам. И овернайт-дрейф растёт вместе с
подразумеваемым движением: **+2.6 → +31.0 bps** от нижнего бакета к верхнему.
То есть опционы не называют направление, но называют масштаб — а это готовый вес для
позиций. Данные уже собраны в `aligned.parquet`. Проверить: улучшает ли такой сайзер
Sharpe книги AMC10 / pm_moo против equal-weight.

**Приоритет 2 — то, что вообще не трогали:**
- VRP на горизонтах длиннее ночи (ночной ATM-стрэддл мёртв, но 7–30 дней не проверяли)
- 0DTE Mon/Wed на 8 именах: продажа ATM-стрэддла в день экспирации 09:35 → 15:55
- OPEX-неделя и режим дилерской gamma (в скилле `datum-options-course` есть GEX-материал)
- earnings-стрэддл: есть заготовка `tools/options_lab/earnings_straddle_overnight.py`
- календарные спреды на разнице тенорной структуры IV

## Как работать

- Русский язык, простой текст, побольше уточняющих вопросов перед нетривиальной задачей.
- Окна исследования 2m / 6m / 12m; N ≥ 100 standalone, ≥ 50 для 3-way.
- Всё на raw P&L без проскальзывания, но опционы — строго по NBBO, не по mid и не по
  close бара.
- Юниверс: медианный дневной объём ≥ 2M шаров, цена ≥ $5. Порог не опускать.
- Дашборды: HTML в `C:\Users\wsu\Downloads\viz\`, свечные примеры на TradingView
  Lightweight Charts (локальный файл `lightweight-charts.standalone.production.js`
  лежит рядом), тёмная тема. Ссылка вида `{tunnel}/file.html` работает **только из
  tailnet** — 443 переведён с funnel на serve 20.08.
- Перед тем как назвать любую цифру в долларах: показать распределение, долю топ-5
  строк в итоге и долю строк с устаревшими котировками.

## Задача

<здесь опиши, что именно хочешь проверить>

Если задача попадает в «уже закрыто» — скажи об этом сразу и предложи ближайшую живую
альтернативу вместо того, чтобы прогонять заново.
