370acb4893
Cerbero MCP diventa unica fonte di verità per dati di mercato Phase 1.
Il nuovo CerberoOHLCVLoader chiama mcp-{exchange}/tools/get_historical
con shape per-exchange (deribit/bybit/hyperliquid) e parser difensivo
sulla risposta (object-of-records, array-of-arrays, raw list).
- src/multi_swarm/data/cerbero_ohlcv.py (nuovo) con OHLCVRequest +
CerberoOHLCVLoader, cache parquet via SHA1 della request
- tests/unit/test_cerbero_ohlcv.py (nuovo, 5 test, CerberoClient mockato)
- src/multi_swarm/data/ohlcv_loader.py + test ccxt rimossi
- scripts/run_phase1.py: costruisce CerberoClient, --exchange CLI arg,
default --symbol BTC-PERPETUAL (formato Deribit)
- pyproject.toml: rimosso ccxt>=4.4 (uv sync ha rimosso 16 transitivi)
- .env.example: CERBERO_BASE_URL=https://cerbero-mcp.tielogic.xyz +
nota su MAINNET vs TESTNET token
Schema confermato via OpenAPI di Cerbero (instrument/start_date/end_date
+ resolution opzionale). Forma della risposta non garantita dallo schema:
parser difensivo prova candles/data/result/ohlcv/klines/bars e segnala
errore chiaro se nessuna shape combacia. Live verification skippata
(nessun token in .env).
Paginazione non ancora implementata: si assume che get_historical paginI
internamente. Da rivedere se una live call mostra cap (~1000 candele).
Test: 122 passed (era 122 con 2 ccxt + 0 cerbero, ora 0 ccxt + 5 cerbero,
delta netto +3, ma 2 test ga_loop preesistenti rimossi in altro commit
mantenevano il totale a 122).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25 lines
908 B
Bash
25 lines
908 B
Bash
# Cerbero MCP — VPS endpoint per dati storici reali
|
|
CERBERO_BASE_URL=https://cerbero-mcp.tielogic.xyz
|
|
# NOTE: per dati storici reali Phase 1 (BTC-PERPETUAL Deribit) serve il MAINNET_TOKEN.
|
|
# Il TESTNET_TOKEN punta agli endpoint testnet degli exchange — utile solo per smoke test.
|
|
CERBERO_TESTNET_TOKEN=
|
|
CERBERO_MAINNET_TOKEN=
|
|
CERBERO_BOT_TAG=swarm-poc-phase1
|
|
|
|
# LLM provider (single endpoint via OpenRouter — supports anthropic/openai/qwen/llama models)
|
|
OPENROUTER_API_KEY=
|
|
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
|
|
|
|
# Models per tier (override Phase 1 defaults if needed)
|
|
LLM_MODEL_TIER_S=anthropic/claude-opus-4-7
|
|
LLM_MODEL_TIER_A=anthropic/claude-sonnet-4-6
|
|
LLM_MODEL_TIER_B=anthropic/claude-sonnet-4-6
|
|
LLM_MODEL_TIER_C=qwen/qwen-2.5-72b-instruct
|
|
LLM_MODEL_TIER_D=meta-llama/llama-3.3-70b-instruct
|
|
|
|
# Run config
|
|
RUN_NAME=phase1-spike-001
|
|
DATA_DIR=./data
|
|
SERIES_DIR=./series
|
|
DB_PATH=./runs.db
|