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:
@@ -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():
|
||||||
|
|||||||
Reference in New Issue
Block a user