14522262e6
Reset del progetto su fondamenta verificate dopo la scoperta che l'intera libreria "validata OOS" era artefatto di feed contaminato (print fantasma del feed Cerbero TESTNET + storico Binance/USDT). - Storico ricostruito da Deribit MAINNET (ccxt pubblico, tokenless) e CERTIFICATO (certify_feed.py): BTC/ETH puliti su TUTTA la storia (mediana 2-6 bps vs Coinbase USD), integrita' OHLC + coerenza resample (maxΔ 0.00) + cross-venue OK. Alt esclusi (illiquidi/divergenti: LTC/DOGE 50-82% barre flat; XRP/BNB non certificabili). - Verdetto sul feed pulito: FADE / PAIRS / XS01 / TSM01 morti (ogni portafoglio Sharpe -2.3..-3.0, DD ~40%); solo SH01 e frammenti HONEST con segnale residuo, da ri-validare in isolamento. - Cleanup "restart pulito": strategie, stack live (src/live, src/portfolio, runner/executor, yml, docker), ~100 script ricerca/gate, waste/games/ portfolios, dati non certificati + cache e 60+ diari -> archiviati in Old/ (preservati, non cancellati). Diario consolidato in un unico documento. - Skeleton ricerca tenuto: Strategy ABC + indicatori + src/fractal + src/backtest/engine + load_data; tool dati certificati (rebuild_history, certify_feed, audit_feed, multi_source_check). - Universo dati ATTIVO: solo BTC/ETH (5m/15m/1h); guardrail fisico (load_data su alt -> FileNotFoundError). Esecuzione DISABILITATA, conto flat. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
50 lines
1.8 KiB
YAML
50 lines
1.8 KiB
YAML
services:
|
|
portfolio:
|
|
build: .
|
|
container_name: pythagoras-portfolio
|
|
restart: unless-stopped
|
|
command: ["uv", "run", "python", "-m", "src.portfolio.runner"]
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./portfolios.yml:/app/portfolios.yml:ro
|
|
env_file:
|
|
- .env
|
|
- .env.mainnet # token MAINNET (soldi veri); prevale su .env (vedi micro-test plan)
|
|
environment:
|
|
- PYTHONUNBUFFERED=1
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import os; assert any(f.endswith('status.json') for r,d,fs in os.walk('/app/data/portfolios') for f in fs)"]
|
|
interval: 120s
|
|
timeout: 10s
|
|
retries: 3
|
|
labels:
|
|
- com.centurylinklabs.watchtower.enable=false
|
|
|
|
# Dashboard web read-only (stato live, PnL totale/per-strategia, grafico equity,
|
|
# trade attivi+chiusi). Stessa immagine del runner, monta gli stessi data/ in sola
|
|
# lettura logica (legge equity.jsonl + status/trades dei worker). Porta 8787.
|
|
# NB: nessuna auth -> non esporre su internet pubblico, solo rete interna/VPN.
|
|
dashboard:
|
|
build: .
|
|
container_name: pythagoras-dashboard
|
|
restart: unless-stopped
|
|
command: ["uv", "run", "python", "-m", "src.live.dashboard", "--port", "8787"]
|
|
ports:
|
|
- "8787:8787"
|
|
volumes:
|
|
- ./data:/app/data
|
|
- ./portfolios.yml:/app/portfolios.yml:ro
|
|
- ./docs/report:/app/docs/report:ro # scheda strategie_attive.html (modal "scheda dettagliata")
|
|
env_file:
|
|
- .env
|
|
- .env.mainnet # token MAINNET (soldi veri); prevale su .env (vedi micro-test plan)
|
|
environment:
|
|
- PYTHONUNBUFFERED=1
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8787/api/state', timeout=5)"]
|
|
interval: 120s
|
|
timeout: 10s
|
|
retries: 3
|
|
labels:
|
|
- com.centurylinklabs.watchtower.enable=false
|