docs(report): strategie_attive.html rigenerato su dati freschi (tutti gli 8 asset al 2026-06-12)

- parquet rinfrescati post-fix downloader: BTC+ETH 1h/15m/5m completi via v2,
  alt 1h incrementali (erano fermi al 28-29/05, panel multi-asset incoerenti)
- make_strategy_doc.yearly_stats: clamp di j (l'engine live-path lascia j>=n
  per il trade aperto al bordo serie -> IndexError coi dati freschi)
- header v1.1.26, card XS01 con phase-tranching, metodologia con verita'
  d'esecuzione/netting. Backtest canonico STABILE su +2 settimane di dati:
  FULL Sharpe 7.34 / DD 3.46 — OOS 10.07 / 1.48 (identico al 2026-06-11)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-06-12 06:17:39 +00:00
parent e18adba4a6
commit 003875f2c3
2 changed files with 22 additions and 12 deletions
+4 -1
View File
@@ -440,7 +440,10 @@ def yearly_stats(trades, ts):
cap, peak, tot_peak, tot_dd = 1000.0, 1000.0, 1000.0, 0.0
cur = None
for i, j, ret in sorted(trades, key=lambda t: t[1]):
ey, xy = ts.iloc[i].year, ts.iloc[j].year
# clamp: l'engine live-path lascia j >= n per il trade aperto al bordo
# della serie (con dati freschi a fine-serie c'e' quasi sempre)
ey = ts.iloc[i].year
xy = ts.iloc[min(j, len(ts) - 1)].year
d = years.setdefault(ey, {"n": 0, "pnl": 0.0, "dd": 0.0})
d["n"] += 1
d["pnl"] += ret * 100