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:
File diff suppressed because one or more lines are too long
@@ -440,7 +440,10 @@ def yearly_stats(trades, ts):
|
|||||||
cap, peak, tot_peak, tot_dd = 1000.0, 1000.0, 1000.0, 0.0
|
cap, peak, tot_peak, tot_dd = 1000.0, 1000.0, 1000.0, 0.0
|
||||||
cur = None
|
cur = None
|
||||||
for i, j, ret in sorted(trades, key=lambda t: t[1]):
|
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 = years.setdefault(ey, {"n": 0, "pnl": 0.0, "dd": 0.0})
|
||||||
d["n"] += 1
|
d["n"] += 1
|
||||||
d["pnl"] += ret * 100
|
d["pnl"] += ret * 100
|
||||||
|
|||||||
Reference in New Issue
Block a user