-- 0005_option_chain_snapshots.sql — catena opzioni storica
--
-- Snapshot della option chain Deribit prelevata ogni 15 minuti (stesso
-- scheduler di market_snapshots, cron */15) per ogni strike entro ±30%
-- dallo spot e per ogni scadenza nella finestra 14-28 DTE. Dato di
-- base per il backtest non-stilizzato e per calibrare empiricamente
-- lo skew premium del modello BS.
--
-- Granularità: una riga per (snapshot_ts, instrument). Lo
-- snapshot_ts è il timestamp del cron tick — TUTTI i quote raccolti
-- in quello stesso tick condividono il timestamp, così filtrare per
-- "lo snapshot del 2026-05-04 alle 13:55" è una semplice
-- WHERE timestamp = X.

CREATE TABLE option_chain_snapshots (
    timestamp        TEXT    NOT NULL,
    asset            TEXT    NOT NULL,
    instrument_name  TEXT    NOT NULL,
    strike           TEXT    NOT NULL,
    expiry           TEXT    NOT NULL,
    option_type      TEXT    NOT NULL CHECK (option_type IN ('C','P')),
    bid              TEXT,
    ask              TEXT,
    mid              TEXT,
    iv               TEXT,
    delta            TEXT,
    gamma            TEXT,
    theta            TEXT,
    vega             TEXT,
    open_interest    INTEGER,
    volume_24h       INTEGER,
    book_depth_top3  INTEGER,
    PRIMARY KEY (timestamp, instrument_name)
) WITHOUT ROWID;

CREATE INDEX idx_option_chain_asset_ts
    ON option_chain_snapshots(asset, timestamp DESC);

CREATE INDEX idx_option_chain_expiry
    ON option_chain_snapshots(asset, expiry);

PRAGMA user_version = 5;
