Files
root 6ff021fbf4 feat(strategy): abbandono gating settimanale — entry daily 24/7
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>
2026-05-03 16:21:16 +00:00

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

  1. Legge dati di mercato dagli MCP (Deribit, Hyperliquid, sentiment, macro).
  2. Valuta condizioni di entrata su finestra temporale fissa (giornaliera, 14:00 UTC; crypto è 24/7).
  3. Calcola la struttura ottimale dello spread secondo le regole.
  4. Verifica liquidità, cap di rischio, calendar macro.
  5. Calcola sizing in contratti.
  6. Costruisce la proposta di trade e la inoltra ad Adriano (Telegram).
  7. Su conferma di Adriano, invia istruzione a Cerbero core.
  8. Persiste lo stato della posizione (entry DVOL, credit, strikes, ecc.).
  9. Monitora ogni 12 ore le posizioni aperte e applica le regole di uscita.
  10. Su trigger di uscita, propone la chiusura ad Adriano e poi a Cerbero core.
  11. 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.