docs(spec): rimuovi depth_zero_pct + nota su book_depth_top3 NULL-by-design

Allinea la spec all'implementazione: dataclass ChainAuditReport senza
depth_zero_pct, tabella checks senza la riga book_depth_top3=0, output
example senza la riga depth_top3. Aggiunta nota che spiega perché il
check è stato rimosso (colonna popolata solo dal path entry_cycle).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-05-16 19:48:23 +00:00
parent 923acd79f6
commit 374822a931
@@ -78,7 +78,6 @@ class ChainAuditReport:
bid_gt_ask_count: int bid_gt_ask_count: int
iv_null_count: int iv_null_count: int
iv_null_pct: Decimal iv_null_pct: Decimal
depth_zero_pct: Decimal
def audit_market_snapshots(conn, *, asset, since, now) -> MarketAuditReport: ... def audit_market_snapshots(conn, *, asset, since, now) -> MarketAuditReport: ...
def audit_option_chain(conn, *, asset, since, now) -> ChainAuditReport: ... def audit_option_chain(conn, *, asset, since, now) -> ChainAuditReport: ...
@@ -95,7 +94,13 @@ def audit_option_chain(conn, *, asset, since, now) -> ChainAuditReport: ...
| option_chain_snapshots | quote/snap < 50% mediana 24h | qualsiasi | rilevatore di chain truncate (mismatch with width filter) | | option_chain_snapshots | quote/snap < 50% mediana 24h | qualsiasi | rilevatore di chain truncate (mismatch with width filter) |
| option_chain_snapshots | bid > ask | qualsiasi | dato corrotto, da indagare | | option_chain_snapshots | bid > ask | qualsiasi | dato corrotto, da indagare |
| option_chain_snapshots | IV null/non-parseable | conteggio + % | IV è chiave per BS skew calibration | | option_chain_snapshots | IV null/non-parseable | conteggio + % | IV è chiave per BS skew calibration |
| option_chain_snapshots | `book_depth_top3 = 0` | % per snapshot | proxy di illiquidità |
> **Nota:** il check `book_depth_top3 = 0` originariamente previsto è
> stato rimosso. La colonna è NULL by design sugli snapshot (il collector
> `option_chain_snapshot_cycle` non chiama l'orderbook per ogni strike
> per non saturare l'API Deribit); viene popolata solo dal path
> `entry_cycle` per gli strike candidati al picker. Il check di liquidità
> ha senso solo lì, non in questo audit.
Le soglie sono costanti modulo (non config YAML) per ridurre il blast Le soglie sono costanti modulo (non config YAML) per ridurre il blast
radius dei cambi: il backtest e l'audit girano in contesti diversi, radius dei cambi: il backtest e l'audit girano in contesti diversi,
@@ -140,7 +145,6 @@ l'umano. Far diventare l'audit un gate CI è out of scope.
quotes/snap: median 55 p10 50 p90 60 quotes/snap: median 55 p10 50 p90 60
bid > ask: 0 bid > ask: 0
IV null: 12 quotes (0.03%) IV null: 12 quotes (0.03%)
depth_top3 = 0: 1.2% of quotes
=== BTC — ... === BTC — ...
``` ```