fix(test): test_paper_advance bug latente — factor divideva via (1+tail[0]), passava solo con combo[-500]==0

Pre-esistente su main (fallisce anche li'), emerso con l'avanzare dei dati.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-07-24 20:58:52 +00:00
parent 870428e559
commit acfba63420
+6 -3
View File
@@ -60,11 +60,14 @@ def test_paper_advance_matches_backtest_slice():
# equity sull'ultimo tratto (skip warmup) # equity sull'ultimo tratto (skip warmup)
tail = combo[-500:] tail = combo[-500:]
eq_ref = np.cumprod(1.0 + np.clip(tail, -0.99, None)) eq_ref = np.cumprod(1.0 + np.clip(tail, -0.99, None))
# ricostruzione "alla paper" deve dare lo stesso fattore # ricostruzione "alla paper" deve dare lo stesso fattore. NB fix 2026-07-24:
factor = float(eq_ref[-1] / eq_ref[0]) # l'equity parte da 1.0 PRIMA della fetta -> il fattore della fetta e' eq_ref[-1].
# (Il vecchio eq_ref[-1]/eq_ref[0] divideva via (1+tail[0]): passava solo finche'
# combo[-500] era esattamente 0.0 — bug latente emerso con l'avanzare dei dati.)
factor = float(eq_ref[-1])
assert factor > 0 assert factor > 0
# sanity: il fattore equivale al prodotto dei (1+combo) # sanity: il fattore equivale al prodotto dei (1+combo)
assert np.isclose(factor, np.prod(1.0 + np.clip(tail, -0.99, None)) / (1.0), rtol=1e-9) assert np.isclose(factor, np.prod(1.0 + np.clip(tail, -0.99, None)), rtol=1e-9)
def test_tsmom_blend_range(): def test_tsmom_blend_range():