e69cc5bd81
I due confronti `abs(net_target - formula) < 1e-6` erano insoddisfacibili per costruzione: `book_report` PUBBLICA valori arrotondati (`net_target` a 2 decimali, `tp_frac` a 4) mentre l'ordine viene costruito sul valore non arrotondato (`build_book_order(inst, net, ...)`), quindi un test che ricalcola la formula dal `tp_frac` pubblicato eredita DUE arrotondamenti. Nessun ordine e' mai stato sbagliato: lo scarto e' 0.5-1.5 centesimi su target da $114 e $954, con min_order a $5. ⚠️ Il difetto vero non e' la tolleranza, e' la POTENZA: con `tp_frac=0` e `skh_sign=0` il target e' esattamente `0.0`, i due arrotondamenti sono esatti e l'invariante passa senza essere mai esercitata. Dal 2026-06-23 al 2026-08-18 il book e' stato flat quasi ininterrottamente -> per due mesi questi test non hanno verificato nulla su una formula di produzione, e il difetto e' emerso solo quando TP01 e SKH01 sono andati long insieme. Stessa lezione del 26/07 (test_skh_partial_entry): un self-check su eventi rari si campiona sugli EVENTI, non sulla popolazione. - `_budget_arrotondamento(equity)`: tolleranza DERIVATA (0.005 del round del net + WEIGHT*equity*W_TP01*0.00005 del round del tp_frac propagato), non tarata sul risultato. - `test_la_formula_del_report_ha_potenza_anche_a_libro_flat`: segnale FORZATO su 4 frazioni scomode (long+SKH long, long+SKH short, flat+SKH short, cap) con contatore che verifica che tutti i casi diano target != 0 -> la copertura non dipende dal mercato. - `test_il_budget_di_arrotondamento_non_copre_un_errore_di_formula`: controllo POSITIVO, i modi reali di rompere la formula (pesi scambiati, cap non applicato, segno invertito) devono stare oltre 100x il budget. Una tolleranza che assolve tutto non e' una tolleranza. Verificato per MUTAZIONE, non a occhio: `round(net, 0)` in book.py -> falliscono tutti e tre (incluso il nuovo, che e' il punto); `W_TP01 <-> W_SKH` -> falliscono test_net_target_sizing e il controllo positivo. src/live/book.py ripristinato bit-identico, produzione NON toccata. 38/38 in tests/test_book_live.py; suite 619 passati, 1 fallito (il noto test_gtaa_band_gate, altro asse, invariato). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>