Crypto opera 24/7: la cadenza settimanale lunedì-only era un retaggio TradFi senza giustificazione. La nuova cadenza è giornaliera (cron 0 14 * * *), con i gate quantitativi a decidere se entrare o saltare. Cambiamenti principali: * runtime/orchestrator.py — _CRON_ENTRY 0 14 * * * (era MON) * runtime/auto_pause.py — pause_until(days=) (era weeks=); minimo clamp 1 giorno (era 1 settimana) * core/backtest.py — MondayPick→DailyPick, monday_picks→daily_picks (1 pick per calendar-day all'ora target); Sharpe annualization su ~120 trade/anno (era 52) * config/schema.py — default cron daily; max_concurrent_positions 1→5; AutoPauseConfig.pause_weeks→pause_days, default 14 * runtime/option_chain_snapshot_cycle.py + orchestrator — cron */15 per accumulo continuo dataset di backtest empirico Strategy yamls (config_version 1.3.0 → 1.4.0, hash rigenerati): * strategy.yaml — max_concurrent 1→5, cap_aggregate coerente * strategy.aggressiva.yaml — max_concurrent 2→8, cap_aggregate 3200→6400, max_contracts_per_trade invariato a 16 * strategy.conservativa.yaml — max_concurrent 1→3 * tutti — pause_weeks→pause_days: 14 GUI (pages/7_📚_Strategia.py): * slider Trade/anno: range 20-200 (era 8-30), default 110, help riallineato sulla math 365 candidature × pass-rate 30-40% * card profili: versione letta dinamicamente da config_version invece che hard-coded "v1.2.0" * warning "entrambi perdono soldi" ora valuta i P/L effettivi (cons['annual_pl'], aggr['annual_pl']) invece del win_rate grezzo; aggiunto stato intermedio quando solo conservativo è in perdita Tests (450/450 passati): * test_auto_pause: pause_days, clamp ≥1 giorno * test_backtest: rinomina + ridisegno daily picks (assert su calendar-day dedupe e hour filter) * test_sizing_engine: other_open_positions=5 per cap default * test_config_loader: version 1.4.0 Docs (README + 9 file in docs/) — tutti i riferimenti weekly/lunedì allineati a daily/24-7, volume option_chain ricalcolato per cron */15 (~1.1 MB/giorno, ~400 MB/anno). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.7 KiB
00 — Overview
Obiettivo
Eseguire in modo sistematico, deterministico e disciplinato la strategia Cerberus Bite — credit spread su opzioni Ethereum su Deribit con gestione attiva — minimizzando l'errore umano e rispettando i cap di rischio definiti.
Perché senza LLM
La strategia è completamente codificabile in regole. Non c'è alcuna componente di interpretazione semantica del mercato che richieda un modello linguistico. Tutte le decisioni del decision loop sono matematiche o booleane:
- "il mark price dello spread è ≤ 50% del credito iniziale?" — confronto numerico
- "DVOL corrente è ≥ DVOL all'apertura + 10?" — confronto numerico
- "delta della short put ha superato 0.30 in valore assoluto?" — confronto numerico
- "sono trascorse 11 giorni da apertura?" — confronto numerico
L'introduzione di un LLM in questo loop introdurrebbe:
- non determinismo (stesso input → output diversi)
- latenza non controllata
- costi ricorrenti senza valore aggiunto
- difficoltà di test e di audit
- rischio di hallucination su dati di mercato
Il LLM (Milito) resta nel ruolo di consulente offline: aggiorna le regole quando l'evidenza statistica lo richiede, riceve dati post-trade per imparare, ma non sta nel loop di esecuzione.
Confine del sistema
Cosa fa Cerbero Bite
- Legge dati di mercato dagli MCP (Deribit, Hyperliquid, sentiment, macro).
- Valuta condizioni di entrata su finestra temporale fissa (giornaliera, 14:00 UTC; crypto è 24/7).
- Calcola la struttura ottimale dello spread secondo le regole.
- Verifica liquidità, cap di rischio, calendar macro.
- Calcola sizing in contratti.
- Costruisce la proposta di trade e la inoltra ad Adriano (Telegram).
- Su conferma di Adriano, invia istruzione a Cerbero core.
- Persiste lo stato della posizione (entry DVOL, credit, strikes, ecc.).
- Monitora ogni 12 ore le posizioni aperte e applica le regole di uscita.
- Su trigger di uscita, propone la chiusura ad Adriano e poi a Cerbero core.
- Logga ogni evento per audit e per il successivo aggiornamento Kelly.
Cosa NON fa
- Non esegue ordini direttamente sul broker.
- Non aggiorna autonomamente le proprie regole o i parametri.
- Non interpreta news o sentiment in modo qualitativo.
- Non sceglie un sottostante diverso da ETH (per ora).
- Non applica strategie di rolling (regola hard della strategia).
- Non considera setup intraday o eventi a frequenza inferiore alle 12 ore.
Stakeholder
| Attore | Ruolo |
|---|---|
| Adriano | Owner del capitale, decisore finale, riceve report |
| Cerbero Bite | Rule engine deterministico (questo progetto) |
| Cerbero core | Motore di esecuzione ordini sul broker |
| Milito | Consulente offline (LLM), aggiorna regole su evidenza |
| Cerbero_Brain | Wiki tecnica condivisa con Milito (ricerca lezioni) |
Vincoli ereditati
-
Cap Cerbero v4 (vedi
Cerbero_Office/CLAUDE.md):- Max 200 EUR per singolo trade
- Max 1.000 EUR di impegno totale aperto
- Max 4 posizioni concorrenti
- Max 6 trade per giorno
- Stop trading se perdita giornaliera > 3% equity
- No vendita vega 24h prima di FOMC, CPI, NFP
-
Hard Prohibitions (non aggirabili nemmeno con override Adriano):
- Mai opzioni nude
- Mai leva > 3x sui perp (irrilevante per Bite, ma resta valido)
- Mai short premium senza SL on-exchange dove tecnicamente possibile
Metriche di successo a 12 mesi
Soglie minime sotto le quali il sistema va riesaminato:
| Metrica | Target | Soglia di allarme |
|---|---|---|
| Win rate | ≥ 75% | < 65% |
| CAGR (capitale operativo) | ≥ 30% | < 10% |
| Drawdown massimo | ≤ 25% | > 35% |
| Sharpe ratio (annualizzato) | ≥ 0.8 | < 0.4 |
| Numero di violazioni di regole | 0 | ≥ 1 (incident review) |
| Errori di stato (posizioni desincronizzate) | 0 | ≥ 1 (kill switch + fix) |
I risultati sono confrontati a fine anno con la simulazione Monte Carlo
del documento Cerbero_Office/NewStrategy/analisi_dai_storici/ analisi-montecarlo-kelly.md.
Glossario rapido
- DVOL: indice di volatilità implicita ETH calcolato da Deribit, analogo al VIX per S&P 500.
- Bull Put Spread: vendita di una put OTM e acquisto di una put più OTM come protezione, su stesso sottostante e stessa scadenza. Incassi credito netto.
- DTE: Days To Expiration, giorni alla scadenza dell'opzione.
- Quarter Kelly: 25% della frazione di Kelly piena, sizing professionale standard. In questa strategia coincide con il 13% del capitale corrente.
- Vol stop: regola di uscita che chiude la posizione se la volatilità implicita esplode oltre una soglia rispetto all'entry.
- Combo order: ordine atomico su Deribit che apre/chiude entrambe le gambe dello spread simultaneamente, eliminando il leg risk.