Il kill-switch della 4.0.0 chiudeva gli slot, non le posizioni, e «riusciva» con venti gambe ancora sul conto. Ora annulla gli ordini senza esito e ne attende la risoluzione, chiude basket, gambe in attesa e orfane (le esterne solo su richiesta o con risk.closeForeignOnKill), rilegge il conto finché le posizioni del bot non sono sparite e, se qualcosa resta, dichiara Halted-Residuo con l'elenco invece di «tutto chiuso». Il reset è una procedura in cinque passi (stato, file STOP, motivazione, riconciliazione con riscaldamento e picco, ripartenza con entrate bloccate) rifiutata finché il conto non è piatto. INotifier per le notifiche della Fase 5. Test (v)-(x). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Stato del lavoro
Aggiornato: 2026-09-23 (sessione 5.0, Fasi 0-3 concluse).
Fase in corso
Piano 5.0, Fase 4 (docs/PIANO_5.0.md). Le Fasi 0-3 sono committate: post-mortem, registro degli ordini, stati PendingA/PendingB, classificazione e chiusura delle orfane, picco al netto dei movimenti di cassa, bonifica, limiti di margine, kill-switch con verifica di piattezza e reset in cinque passi. La «correttezza dell'esecuzione» richiesta dalla regola finale del piano è coperta: il Demo può ripartire per le 24 ore di verifica (contatore «orfane» a 0, orders.jsonl senza Unknown irrisolti, sizing_bound = margin sui primi ingressi), e la prova manuale del kill-switch con verifica di piattezza va fatta in quella sessione.
Fatto nell'ultima sessione (2026-09-23)
- Fase 0: diagnosi verificata sul codice e sul conto demo via API (sola lettura):
referenceIDnullo sugli ordini v2 (ecco il 404), 21 gambe orfane del 16-21/9 chiuse a mano il 21/9, primi due ordini a 100 % del margine, poi ordini ridotti dal server a 2 000 USD di margine. Endpoint perorderIde cancellazione verificati (D-26, D-27).docs/PIANO_5.0.md,docs/POSTMORTEM_ordini_pendenti.md,docs/QUESTIONS.mdD-26…D-37. - Fase 3:
FlattenProcedure(annulla, chiudi, verifica), kill-switch che chiude basket + gambe in attesa + orfane (esterne opzionali) e dichiaraHalted-Residuoquando il conto non è piatto, comandoresiduo, reset in cinque passi rifiutato con residui,INotifier; test (v)-(x); 204 verdi. - Fase 2: sezione
risk, sizing = min(rischio, margine) consizing_bound/marginUsdnel ledger, ricontrollo del disponibile prima della gamba B, esecuzione dei segnali per |z| con rilettura del conto, margin guard, backtest con gli stessi limiti; test (y), (z); 196 verdi. - Fase 1:
OrderTracker+pending_orders.json+orders.jsonl;EtoroBroker.OpenAsyncperorderIdcon riconoscimento dalla posizione;BasketExecutorconResumeAfterAAsync/CompleteAfterBAsync/UnwindLegAsync; statiPendingA/PendingBpersistiti;PositionClassifiere chiusura delle orfane;EquityTracker; contatori e P&L del conto nello snapshot e in dashboard;--bonifica; bandit senza applicazione automatica;BasketEnginein sei file parziali; ADR-0009; 18 test nuovi, 190 verdi.
Prossimi passi
- Fase 4 — recupero dopo inattività (§6): heartbeat, sezione
recoveryinstrategy.json, procedura di recupero, lock di istanza, rapportorecupero_<run_id>.csv. Test (r). - Fase 5 — Telegram (§7). Test (s)-(u).
- Dopo la risposta a D-28/D-29: Fasi 6-9 (Engine/Server, web UI M3, Docker, Unraid, skill, 5.0.0).
- Riaccendere il Demo per 24 ore di verifica (vedi sopra) e provare il kill-switch a mano con la verifica di piattezza.
- Rifare il backtest (
backtest baskets) con i limiti di margine e aggiornare §3 didocs/STRATEGY.md.
Problemi aperti
- Backtest negativo: la strategia non regge i costi (
docs/STRATEGY.md). - Domande in attesa: D-28 (ritiro WPF), D-29 (registry), D-36 (ledger delle sessioni 16-21/9), D-37 (chiusura manuale del 21/9).
- Il conto reale vale 224,90 USD: il Live non è praticabile.
- Google News blocca le ricerche RSS; RBA 403 a intermittenza; Fed 404 a tratti.
PROMPT.md(la specifica 5.0) eModifiche.txtsono nella radice del repository e non tracciati: decidere se spostarli indocs/.