fix(analysis): distingui ask<=0 (missing ask) da bid>ask (cross reale)
Nuovo campo ChainAuditReport.ask_zero_count. La logica del loop parsifica prima l'ask: se ask<=0 è "missing ask side" (su Deribit significa nessun ordine in vendita), conta in ask_zero_count e non applica il check bid>ask. Solo con ask>0 si confronta con bid. Sul DB prod gli "bid>ask" del primo audit (27 ETH + 10 BTC negli ultimi 7d) erano tutti falsi positivi con ask=0 — concentrati sulla weekly 2026-05-29, OI alti ma volume basso. Dopo il fix: bid>ask=0, ask<=0=83 ETH + 13 BTC. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -76,6 +76,7 @@ class ChainAuditReport:
|
||||
quotes_per_snap_p10: int
|
||||
quotes_per_snap_p90: int
|
||||
bid_gt_ask_count: int
|
||||
ask_zero_count: int
|
||||
iv_null_count: int
|
||||
iv_null_pct: Decimal
|
||||
|
||||
@@ -92,7 +93,8 @@ def audit_option_chain(conn, *, asset, since, now) -> ChainAuditReport: ...
|
||||
| market_snapshots | NULL rate per colonna | > 10% nella finestra | una metrica con >10% NULL non è affidabile per backtest |
|
||||
| option_chain_snapshots | snap mancanti | qualsiasi (count visibile) | cron `*/15`, ogni miss è significativo |
|
||||
| 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 (con ask > 0) | qualsiasi | dato corrotto, da indagare |
|
||||
| option_chain_snapshots | ask ≤ 0 | qualsiasi | missing ask side: best ask vuoto al momento della query (≠ cross BBO) |
|
||||
| option_chain_snapshots | IV null/non-parseable | conteggio + % | IV è chiave per BS skew calibration |
|
||||
|
||||
> **Nota:** il check `book_depth_top3 = 0` originariamente previsto è
|
||||
@@ -144,6 +146,7 @@ l'umano. Far diventare l'audit un gate CI è out of scope.
|
||||
snapshots: 672 expected: 672 coverage: 100.0%
|
||||
quotes/snap: median 55 p10 50 p90 60
|
||||
bid > ask: 0
|
||||
ask <= 0: 37 (missing ask side)
|
||||
IV null: 12 quotes (0.03%)
|
||||
|
||||
=== BTC — ...
|
||||
|
||||
Reference in New Issue
Block a user