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>
3.2 KiB
2026-06-16 — Fase 0 smoke mainnet VERDE (ETH→USDC, limit non market)
Contesto
Il conto Deribit mainnet, fino al 2026-06-14 vuoto (€0, unico blocco al micro-test), ha
ricevuto un deposito iniziale di ~$50: 25.00 USDC + 0.013878 ETH. Occasione per eseguire la
Fase 0 del piano (docs/specs/mainnet-microtest-plan.md): validare la catena d'esecuzione su
soldi VERI con rischio ~0, abbinandola a un'operazione utile — consolidare l'ETH stranded in
margine USDC.
Perché consolidare: noi eseguiamo sui perp lineari USDC (*_USDC-PERPETUAL), marginati in
USDC. I 0.0138 ETH stavano nel wallet ETH (collateral dell'inverse, che NON usiamo per la
matematica lineare del backtest) → margine effettivo solo i $25 USDC. Convertendo, l'intero ~$50
diventa USDC utilizzabile.
Ordine (LIMIT, non market — istruzione utente)
Check capability read-only prima: spot ETH_USDC esiste (bid 1780.3/ask 1780.9, testnet:false,
price tick 0.1). Il listing strumenti NON espone lo spot (kind=spot vuoto, endpoint v1 404) ma il
ticker basta. place_order supporta order_type="limit" + price.
- LIMIT SELL
ETH_USDC0.0138 ETH @ floor 1776.3 (~0.1% sotto il bid) — marketable limit con cap di slippage: crossa e filla al bid corrente, ma con un floor sotto cui NON può fillare. Soddisfa "non a market" (prezzo protetto, niente slippage incontrollato) garantendo il fill. - Step 0.0001 ok al primo colpo (niente fallback 0.013); fallback previsti 0.013/0.012.
Esito
order_state = filled filled_amount = 0.0138
average_price = 1778.1 (= bid al momento dell'invio; il bid era sceso 1780.3->1778.1 tra
quote e invio, ma > floor 1776.3 -> zero slippage negativo)
fee = 0.0 (maker, costo nullo)
order_id = ETH_USDC-8488088107
Riconciliazione conto (before→after):
| Wallet | Prima | Dopo |
|---|---|---|
| USDC | 25.00 | 49.538 (+24.538) |
| ETH | 0.013878 | 0.000078 (dust ~$0.14, sotto il min → non convertibile) |
| BTC | 0 | 0 |
| posizioni / ordini resting | — | nessuna / nessuno |
Cosa è dimostrato
Catena end-to-end su mainnet (testnet:false), a costo ~0: routing live + auth + place_order
limit + fill + verifica via get_trade_history + riconciliazione get_account_summary. La
meccanica d'esecuzione reale FUNZIONA su soldi veri. Fase 0 ✅.
Limite residuo (resta il blocco vero)
~$49.54 USDC è sotto il minimo €500 del piano: a questo margine il rumore di arrotondamento BTC (step lineare ~$6.6) soffoca il segnale → NON si può ancora testare l'edge. Per la Fase 1 (fade-only, €1000, 2-4 settimane, verdetto ledger-vs-backtest) serve un top-up a ~€500-1000 USDC. Stato piano aggiornato: token+smoke ✅, funding 🟡 parziale, Fase 1 in attesa di capitale.
Note operative
- Operazione MANUALE one-off (non il runner):
.env.mainnetsourcato a mano, client puntato a mainnet solo per questa sessione. Il runner di produzione resta su testnet (.envcondiviso invariato) → nessun rischio di flip accidentale. - La marketable-limit con floor è il pattern giusto per conversioni one-shot a prezzo controllato (vs il TP resting/limit-al-livello degli sleeve): fill immediato + cap di slippage, fee maker.