e328836614
Conversione testnet -> mainnet Deribit (soldi veri). Vedi docs/specs/mainnet-microtest-plan.md, Fase 1. - portfolios.yml: total_capital 500, leva 3, weighting equal; eseguono REALE solo i 7 single-leg (6 fade MR01/02/07 x BTC/ETH 15m + DIP01 1h); pairs/SH01/multi-asset -> paper (rumore arrotondamento a €500); real_truth. - docker-compose.yml: portfolio+dashboard caricano anche .env.mainnet (token mainnet, prevale su .env; .env.mainnet resta gitignored). - reconcile_account.py: watermark FONDI (compute_funds_change) — rileva aumenti di capitale (deposito/top-up) e cali anomali (prelievo) sul balance USDC, alert Telegram FUNDS_INCREASE/FUNDS_DECREASE; soglia max(€25, 5%). Stato in data/funds_watch.json (host-writable). - .gitignore: ignora data/funds_watch.json (stato runtime). Ledger testnet archiviato in data/_reset_backup/pre_mainnet_*.tgz e azzerato. Crons host ri-puntati al conto reale (sourcing .env + .env.mainnet). 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
|