docs: Fase 0 smoke mainnet VERDE (ETH->USDC limit) + aggiorna piano micro-test
Catena d'esecuzione validata su mainnet con soldi veri a costo ~0: LIMIT SELL ETH_USDC 0.0138 @ floor 1776.3 -> filled@1778.1 (=bid), fee 0, USDC 25->49.54. Consolidato l'ETH stranded in margine USDC. Funding parziale ~$49.54 (sotto il min EUR500) -> Fase 1 in attesa di top-up a ~EUR1000. Diario + STATO/checklist del piano aggiornati. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
# 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_USDC` 0.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.mainnet` sourcato a mano, client puntato a
|
||||||
|
mainnet solo per questa sessione. Il runner di produzione resta su **testnet** (`.env` condiviso
|
||||||
|
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.
|
||||||
@@ -14,16 +14,25 @@ testnet era ancora congelato a 1661.95 da 36h+ → conferma definitiva: testnet
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## STATO (2026-06-14)
|
## STATO (2026-06-16)
|
||||||
|
|
||||||
- ✅ **Token mainnet wired e VERIFICATO.** `MAINNET_TOKEN` (da cerbero-mcp, che ha già le chiavi
|
- ✅ **Token mainnet wired e VERIFICATO.** `MAINNET_TOKEN` (da cerbero-mcp, che ha già le chiavi
|
||||||
Deribit LIVE) copiato in **`.env.mainnet`** (chmod 600, gitignored), SEPARATO dal `.env`
|
Deribit LIVE) copiato in **`.env.mainnet`** (chmod 600, gitignored), SEPARATO dal `.env`
|
||||||
condiviso. Verifica read-only: `is_mainnet()=True`, auth OK su `get_account_summary` (nessun
|
condiviso. Verifica read-only: `is_mainnet()=True`, auth OK su `get_account_summary` (nessun
|
||||||
ordine). Il `.env` condiviso resta testnet → il runner attuale NON flippa a mainnet a un riavvio.
|
ordine). Il `.env` condiviso resta testnet → il runner attuale NON flippa a mainnet a un riavvio.
|
||||||
- 🔴 **BLOCCO: conto Deribit mainnet VUOTO** (equity 0.0 USDC/BTC/ETH). Serve il deposito (~€1000
|
- ✅ **FASE 0 SMOKE VERDE (2026-06-16).** Catena d'esecuzione validata su mainnet con soldi VERI a
|
||||||
USDC) prima di qualsiasi smoke/trade.
|
costo ~0: LIMIT SELL `ETH_USDC` spot 0.0138 ETH @ floor 1776.3 (marketable, NON market) →
|
||||||
- ⏭️ Appena finanziato: avviare il micro-test come **servizio separato** (env_file `.env.mainnet`,
|
`order_state=filled`, average_price **1778.1** (= bid, zero slippage negativo), **fee 0.0**.
|
||||||
dir dati pulita, `portfolios.yml` fade-only) → Fase 0 smoke → Fase 1.
|
Riconciliazione conto: USDC 25.00→**49.54** (+24.54), ETH→0.000078 dust, nessun ordine resting.
|
||||||
|
Provato end-to-end: routing live + auth + place_order limit + fill + verifica trade + balance.
|
||||||
|
(Doppio scopo: consolidare l'ETH stranded in margine USDC + smoke.) Diario
|
||||||
|
`docs/diary/2026-06-16-mainnet-fase0-smoke.md`.
|
||||||
|
- 🟡 **FINANZIAMENTO PARZIALE: ~$49.54 USDC** (deposito iniziale ~$50: 25 USDC + 0.0138 ETH, ora
|
||||||
|
consolidati). **Sotto il minimo €500** del piano → basta per la meccanica (Fase 0 ✅) ma NON per
|
||||||
|
testare l'edge (a $50 di margine il rumore di arrotondamento BTC soffoca il segnale). **Serve
|
||||||
|
top-up a ~€500-1000 USDC** prima della Fase 1.
|
||||||
|
- ⏭️ Appena finanziato a ~€1000: avviare il micro-test come **servizio separato** (env_file
|
||||||
|
`.env.mainnet`, dir dati pulita, `portfolios.yml` fade-only) → Fase 1.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -164,9 +173,9 @@ feed congelato). Criterio (lo stesso del report, soglie già nel verdetto 🟢/
|
|||||||
|
|
||||||
- [x] MAINNET_TOKEN Cerbero abilitato + verificato (auth OK, is_mainnet=True) — 2026-06-14
|
- [x] MAINNET_TOKEN Cerbero abilitato + verificato (auth OK, is_mainnet=True) — 2026-06-14
|
||||||
- [x] Token in `.env.mainnet` (separato, gitignored, chmod 600) + `CERBERO_BOT_TAG=pythagoras-mainnet`
|
- [x] Token in `.env.mainnet` (separato, gitignored, chmod 600) + `CERBERO_BOT_TAG=pythagoras-mainnet`
|
||||||
- [ ] **Conto Deribit mainnet KYC + finanziato ~€1000 USDC** ← BLOCCO ATTUALE (conto a €0)
|
- [x] Fase 0 smoke mainnet VERDE (LIMIT SELL ETH_USDC filled, fill@bid, fee 0, balance riconciliato) — 2026-06-16
|
||||||
|
- [~] Conto Deribit mainnet finanziato: **~$49.54 USDC** (parziale, sotto il min €500) ← **TOP-UP a ~€1000 = BLOCCO Fase 1**
|
||||||
- [ ] Servizio micro-test separato (env_file `.env.mainnet`, dir dati pulita)
|
- [ ] Servizio micro-test separato (env_file `.env.mainnet`, dir dati pulita)
|
||||||
- [ ] Fase 0 smoke mainnet verde (ordine→verifica→fee)
|
|
||||||
- [ ] `portfolios.yml` micro-test (fade-only, €1000, exec sleeves MR01/02/07)
|
- [ ] `portfolios.yml` micro-test (fade-only, €1000, exec sleeves MR01/02/07)
|
||||||
- [ ] runner mainnet + reconciler + report ledger-vs-backtest schedulati
|
- [ ] runner mainnet + reconciler + report ledger-vs-backtest schedulati
|
||||||
- [ ] dopo ≥10–20 trade: leggere il verdetto → scala / aspetta / stop
|
- [ ] dopo ≥10–20 trade: leggere il verdetto → scala / aspetta / stop
|
||||||
|
|||||||
Reference in New Issue
Block a user