Commit Graph

66 Commits

Author SHA1 Message Date
Adriano 26c328d541 feat(protocol): AST compiler to (df -> Series[Side]) signal fn
Implementa compile_strategy che produce funzione df -> Series[Side]
con valutazione regole in ordine, prima-che-matcha vince, FLAT default
e NaN per warmup degli indicatori.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:40:28 +02:00
Adriano 052f323790 feat(protocol): semantic validator for AST
Aggiunge validatore semantico per AST Strategy: arity check su
verbi logici/comparatori/data, whitelist indicatori
(sma, rsi, atr, macd, realized_vol) e feature OHLCV.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:34:03 +02:00
Adriano 19035812c3 feat(protocol): grammatica S-expression (15 verbi) + parser
Aggiunge il modulo `multi_swarm.protocol` con la grammatica del DSL di
strategia (15 verbi: 4 azioni, 3 logici, 3 comparatori, 4 dati, `when`
e `strategy`) e un parser che produce un AST tipizzato (Strategy/Rule/
Node). Lessing delegato a sexpdata, validazione del set di verbi e
forma `(when <cond> <action>)` gestita dal parser. Sollevata ParseError
su top-level malformato, strategia vuota, verbi sconosciuti o azioni
non terminali.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:30:54 +02:00
Adriano 7290900dc7 feat(cerbero): tools wrapper for Phase 1 indicator subset
Espone sma/rsi/atr/macd/realized_vol/funding_rate sopra CerberoClient
delegando a call_tool(exchange, tool, args).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:27:34 +02:00
Adriano 14b1b84a47 feat(cerbero): HTTP client with bearer + bot-tag + retry
Client minimale verso Cerbero MCP unified server con header
Authorization Bearer e X-Bot-Tag su ogni richiesta. Retry esponenziale
solo su ConnectionError (non su 4xx). 4xx/5xx -> RuntimeError.

Switch da httpx a requests per allineamento con libreria mock
`responses` (httpx richiederebbe respx). httpx resta in deps per usi
futuri. Aggiunto types-requests ai dev deps per mypy strict.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:25:00 +02:00
Adriano b61bbaf13c feat(metrics): Deflated Sharpe Ratio (Bailey & Lopez de Prado)
Aggiunge expected_max_sharpe e deflated_sharpe_ratio per correggere
multiple testing nella valutazione di strategie. Considera skewness,
kurtosis e numero di trial.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:21:35 +02:00
Adriano 2687ce7dd2 feat(metrics): Sharpe + max drawdown + total return
Metriche base per valutazione strategie: Sharpe annualizzato
(default 8760 periodi/anno per dati orari), max drawdown
percentuale dalla curva equity, total return cumulativo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:18:48 +02:00
Adriano 9301ab9051 feat(backtest): event-driven engine with 1-bar exec delay
Engine sincrono bar-per-bar con delay 1: segnale a t-1 esegue a open di t
per evitare lookahead. Position sizing 1 unit, fees su entry+exit,
mark-to-market su close, chiusura forzata posizione open a fine serie.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:15:05 +02:00
Adriano 36e05233d0 feat(backtest): Order/Position/Trade dataclasses with fees
Side StrEnum (long/short/flat), frozen dataclasses con calcolo
unrealized_pnl per Position e gross/fees/net_pnl per Trade
(fees in basis point, default 5bp). 4 test TDD passing,
ruff + mypy strict clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:11:27 +02:00
Adriano d30f981421 feat(data): expanding walk-forward splits
Aggiunge expanding_walk_forward e dataclass Split per generare fold
walk-forward con train che cresce e test sulla finestra successiva.
Rispetta min_train_days e ritorna lista vuota su fold troppo piccoli.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:08:43 +02:00
Adriano 116879400a fix(data): restore pagination early-break + update test count
Code review on b977c37 flagged: with dataset smaller than limit=1000
(typical Phase 1 case), the loop made an extra HTTP request that
returned duplicate rows. Restored `if len(rows) < limit: break`
after extending. Test assertion adjusted from 2 to 1 calls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:06:50 +02:00
Adriano b977c371e5 feat(data): OHLCV loader via ccxt with parquet cache
Adjust .gitignore to keep src/multi_swarm/data/ tracked (only
top-level /data/ cache directory remains ignored).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 19:01:25 +02:00
Adriano b73416f482 feat(config): pydantic settings loader from .env
Aggiunge Settings (BaseSettings) che carica configurazione da
variabili d'ambiente / file .env, con validazione obbligatoria
dei segreti Cerbero testnet e OpenRouter.

Test:
- test_settings_loads_from_env: happy path via monkeypatch.setenv
- test_settings_requires_tokens: ValidationError quando token
  obbligatori mancano (forza _env_file=None per isolare il test
  da eventuale .env locale popolato).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:55:04 +02:00
Adriano 362ffb33a8 chore: project skeleton with uv + pyproject + deps
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:49:27 +02:00
Adriano c46525805b docs(plans): Phase 1 lean spike implementation plan
Plan TDD a 38 task per la Phase 1 del PoC Multi-Swarm Coevolutivo:
project skeleton, data layer (OHLCV via ccxt + walk-forward),
backtest engine, metrics (Sharpe + Deflated Sharpe Ratio), Cerbero
wrapper, protocollo S-expression (parser/validator/compiler),
genome + mutation/crossover, LLM client (OpenRouter Qwen + Anthropic
Sonnet), cost tracker, agents (hypothesis LLM-driven, falsification
e adversarial hand-crafted), GA (fitness/selection/loop/summary),
persistence SQLite, orchestrator end-to-end, dashboard Streamlit
(Overview/GA Convergence/Genomes), scripts CLI, smoke run, run reale,
gate decision memo + report tecnico.

Plan generato tramite skill writing-plans dopo decisione strategica B3
(spec docs/superpowers/specs/2026-05-09-decisione-strategica-design.md).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:45:09 +02:00
Adriano eb6b52ff04 Initial commit: framework concettuale + design strategico PoC
Stato iniziale del progetto Multi_Swarm_Coevolutive:

- 00_documento_zero.md: framework concettuale (Renaissance → swarm
  co-evolutivo LLM, tre layer cognitivi, decisione strategica A/B/C).
- coevolutive_swarm_system.md: design Filone A (sistema completo,
  co-evoluzione 4 popolazioni, 12-18 mesi).
- poc_trading_swarm.md: design Filone B (PoC trading focalizzato,
  3-4 mesi, scope semplificato).
- docs/superpowers/specs/2026-05-09-decisione-strategica-design.md:
  decisione strategica B3 (PoC trading incrementale a 3 fasi con
  gate go/no-go), prodotta tramite skill brainstorming.
- .gitignore: pattern Python, editor, secrets, artefatti runtime
  (runs.db, series/, dataset binari) non versionati.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 18:19:55 +02:00