diff --git a/apps/paper_trader/backtest_sim.py b/apps/paper_trader/backtest_sim.py index 8be2dcd..5a0066c 100644 --- a/apps/paper_trader/backtest_sim.py +++ b/apps/paper_trader/backtest_sim.py @@ -351,310 +351,6 @@ async def _refresh_snapshot( raise -# ── Overlay backtest support ────────────────────────────────────────── - - -def _is_overlay_config(config_path: str) -> bool: - """Return True if config_path is an overlay spec (has 'books' key).""" - import json - try: - data = json.loads(Path(config_path).read_text()) - return "books" in data and "allocations" in data - except Exception: - return False - - -def _resolve_book_experiment_config(book: dict) -> str | None: - """Resolve the experiment config path for an overlay book entry.""" - # Explicit field - explicit = book.get("experiment_config") - if explicit and Path(explicit).exists(): - return explicit - - # Infer from equity_csv filename - csv_path = book.get("equity_csv", "") - if csv_path: - name = Path(csv_path).stem # e.g. "return_max_long_v6.221_equity" - # Strip common suffixes - for suffix in ("_equity", "_train", "_valid", "_test"): - if name.endswith(suffix): - name = name[: -len(suffix)] - break - candidate = f"configs/experiments/{name}.json" - if Path(candidate).exists(): - return candidate - - return None - - -def _overlay_books_are_runnable(overlay_config_path: str) -> bool: - """Check if all books in an overlay config have resolvable experiment configs.""" - import json - try: - spec = json.loads(Path(overlay_config_path).read_text()) - for book in spec.get("books", []): - csv_path = book.get("equity_csv") - if csv_path and Path(csv_path).exists(): - continue - if _resolve_book_experiment_config(book) is None: - return False - return True - except Exception: - return False - - -def _rebase_equity_slice( - df, - *, - initial_equity: float, -): - """Recompute equity within a requested window so the first kept day starts flat.""" - df = df.sort_values("date").copy() - df["daily_return"] = df["equity"].astype(float).pct_change().fillna(0.0) - equity = float(initial_equity) - rebased: list[float] = [] - for ret in df["daily_return"].astype(float): - equity *= 1.0 + float(ret) - rebased.append(equity) - df["equity"] = rebased - return df[["date", "equity", "daily_return"]] - - -def _summarize_book_curve(df, *, initial_equity: float) -> dict[str, float]: - """Return a paper-backtest-like summary from a rebased equity curve.""" - returns = df["daily_return"].astype(float) - final_equity = float(df["equity"].iloc[-1]) - return_pct = (final_equity / float(initial_equity) - 1.0) * 100.0 - - peak = float(initial_equity) - max_dd_pct = 0.0 - for equity in df["equity"].astype(float): - peak = max(peak, float(equity)) - drawdown_pct = (peak - float(equity)) / peak * 100.0 if peak > 0 else 0.0 - max_dd_pct = max(max_dd_pct, drawdown_pct) - - if len(returns) >= 2 and float(returns.std()) > 0: - sharpe = float(returns.mean() / returns.std() * math.sqrt(252.0)) - else: - sharpe = 0.0 - - return { - "return_pct": return_pct, - "final_equity": final_equity, - "max_dd_pct": max_dd_pct, - "trade_count": 0, - "win_rate": 0.0, - "sharpe": sharpe, - } - - -def _load_overlay_book_curve_from_spec( - book: dict, - *, - capital: float, - start_date: dt.date, - end_date: dt.date, -): - """Load a frozen overlay input curve from equity_csv and rebase it to the requested window.""" - from libs.backtest.overlay import load_equity_curve_csv - - csv_path = book.get("equity_csv") - if not csv_path or not Path(csv_path).exists(): - return None - - df = load_equity_curve_csv(csv_path) - df = df[(df["date"] >= start_date) & (df["date"] <= end_date)].copy() - if df.empty: - return None - - rebased = _rebase_equity_slice(df, initial_equity=capital) - summary = _summarize_book_curve(rebased, initial_equity=capital) - return { - "curve": rebased, - "summary": summary, - "source": "equity_csv", - } - - -def run_overlay_backtest_sync( - overlay_config_path: str, - capital: float, - start_date: dt.date, - end_date: dt.date, - console=None, -) -> dict[str, Any]: - """Run an overlay backtest: execute each book strategy, then combine by regime.""" - import json - import pandas as pd - from libs.backtest.overlay import build_overlay_curve, summarize_overlay_curve - - spec = json.loads(Path(overlay_config_path).read_text()) - overlay_name = spec.get("overlay_name", Path(overlay_config_path).stem) - allocations = spec["allocations"] - - # ── Run each book strategy ──────────────────────────────────────── - book_results: list[dict[str, Any]] = [] - curves: dict[str, pd.DataFrame] = {} - - replay_mode = "frozen_equity_csv" - - for book in spec["books"]: - label = book["label"] - loaded = _load_overlay_book_curve_from_spec( - book, - capital=capital, - start_date=start_date, - end_date=end_date, - ) - if loaded is not None: - if console: - source_name = Path(book["equity_csv"]).stem - console.print(f" [dim]Book '{label}':[/] {source_name} [dim](frozen equity_csv)[/]") - curves[label] = loaded["curve"] - book_results.append( - { - "label": label, - "result": { - "session_name": f"{overlay_name}__{label}", - "summary": loaded["summary"], - "equity_curve": [ - {"date": row.date, "equity": row.equity} - for row in loaded["curve"].itertuples(index=False) - ], - "trades": [], - }, - "source": loaded["source"], - } - ) - continue - - replay_mode = "rerun_books" - exp_config = _resolve_book_experiment_config(book) - if exp_config is None: - raise ValueError( - f"Overlay '{overlay_name}': book '{label}' has neither a usable equity_csv nor a resolvable experiment config. " - f"Add 'equity_csv' or 'experiment_config' to the book entry." - ) - - if console: - console.print(f" [dim]Book '{label}':[/] {Path(exp_config).stem} [dim](rerun)[/]") - - result = run_backtest_session_sync( - session_name=f"{overlay_name}__{label}", - config_path=exp_config, - initial_equity=capital, - start_date=start_date, - end_date=end_date, - ) - book_results.append({"label": label, "result": result, "source": "rerun"}) - - eq = result.get("equity_curve", []) - if eq: - df = pd.DataFrame(eq) - df["date"] = pd.to_datetime(df["date"]).dt.date - df["equity"] = df["equity"].astype(float) - curves[label] = _rebase_equity_slice(df[["date", "equity"]], initial_equity=capital) - - if not curves: - raise ValueError(f"Overlay '{overlay_name}': no book produced equity curves") - - # ── Compute regime for each trading day ─────────────────────────── - regimes = _compute_overlay_regimes(spec, start_date, end_date) - - # ── Combine using overlay logic ─────────────────────────────────── - overlay_curve = build_overlay_curve( - curves=curves, - allocations=allocations, - regimes_by_date=regimes, - initial_equity=capital, - ) - - summary = summarize_overlay_curve(overlay_curve, initial_equity=capital) - - # Convert overlay equity curve to standard format - equity_curve = [ - {"date": row.date, "equity": row.overlay_equity} - for row in overlay_curve.itertuples(index=False) - ] - - # Aggregate trade count across books - total_trades = sum( - br["result"]["summary"]["trade_count"] for br in book_results - ) - - return { - "session_name": overlay_name, - "config_path": overlay_config_path, - "initial_equity": capital, - "is_overlay": True, - "overlay_replay_mode": replay_mode, - "equity_curve": equity_curve, - "trades": [], - "book_results": book_results, - "allocations": allocations, - "regime_day_counts": summary.get("regime_day_counts", {}), - "summary": { - "return_pct": summary["return_pct"], - "final_equity": summary["final_equity"], - "max_dd_pct": summary["max_dd_pct"], - "trade_count": total_trades, - "win_rate": 0.0, - "sharpe": summary["sharpe"], - }, - } - - -def _compute_overlay_regimes( - spec: dict, - start_date: dt.date, - end_date: dt.date, -) -> dict[dt.date, str]: - """Compute macro regime for each trading day using the regime_source config. - - Uses _build_merged_snapshot_store to get a full-period store with macro data, - covering the paper backtest date range (not just the original snapshot period). - """ - from apps.backtester.run import _build_merged_snapshot_store, load_manifest, resolve_config - from libs.backtest.allocator import _macro_regime_state - from libs.backtest.overlay import load_merged_store_from_snapshot_dir - from libs.common.config import get_settings - - regime_source = spec.get("regime_source", {}) - config_path = regime_source.get("config_path") - if not config_path: - return {} - - manifest = load_manifest(config_path) - config = resolve_config(manifest) - - raw_snapshot_dir = regime_source.get("snapshot_dir") - if raw_snapshot_dir and ( - (Path(raw_snapshot_dir) / "train.parquet").exists() - or (Path(raw_snapshot_dir) / "test.parquet").exists() - ): - settings = get_settings() - store = load_merged_store_from_snapshot_dir( - raw_snapshot_dir, - oracle_url=settings.stock_oracle_url, - db_dsn=settings.postgres_dsn, - ) - else: - try: - store = _build_merged_snapshot_store( - manifest, - config, - snapshot_dir_override=raw_snapshot_dir, - ) - except FileNotFoundError: - store = _build_merged_snapshot_store(manifest, config, snapshot_dir_override=None) - store = store.slice_by_date_range(start_date, end_date) - - regimes: dict[dt.date, str] = {} - for date in store.all_trading_days(): - regimes[date] = _macro_regime_state(config, store.get_macro_for_date(date)) - return regimes - - def run_backtest( configs: list[str], capital: float, @@ -691,8 +387,6 @@ def run_backtest( # Check if snapshots need refresh (async pipeline, run before sync backtest) for config_path in configs: - if _is_overlay_config(config_path): - continue # overlay books handle their own snapshots from apps.backtester.run import load_manifest, resolve_config manifest = load_manifest(config_path) config = resolve_config(manifest) @@ -723,27 +417,15 @@ def run_backtest( results = [] for config_path in configs: session_name = Path(config_path).stem - - if _is_overlay_config(config_path): - if console: - console.print(f"\n[bold magenta]Running overlay:[/] {session_name}") - result = run_overlay_backtest_sync( - overlay_config_path=config_path, - capital=capital, - start_date=start_date, - end_date=end_date, - console=console, - ) - else: - if console: - console.print(f"\n[bold cyan]Running:[/] {session_name}") - result = run_backtest_session_sync( - session_name=session_name, - config_path=config_path, - initial_equity=capital, - start_date=start_date, - end_date=end_date, - ) + if console: + console.print(f"\n[bold cyan]Running:[/] {session_name}") + result = run_backtest_session_sync( + session_name=session_name, + config_path=config_path, + initial_equity=capital, + start_date=start_date, + end_date=end_date, + ) results.append(result) diff --git a/apps/paper_trader/cli.py b/apps/paper_trader/cli.py index 6d382c9..0acc69f 100644 --- a/apps/paper_trader/cli.py +++ b/apps/paper_trader/cli.py @@ -311,7 +311,6 @@ def _resolve_rank_configs(start: int, end: int) -> list[str]: """Load strategies ranked start..end from leaderboard by SQS score. start/end are 1-based inclusive. e.g. (1, 5) = top 5, (20, 40) = rank 20-40. - Overlays are excluded; use --overlay to run them explicitly. """ import json @@ -322,7 +321,6 @@ def _resolve_rank_configs(start: int, end: int) -> list[str]: registry = json.loads(registry_path.read_text()) ranked: list[str] = [] - skipped_overlays: list[str] = [] entries = sorted( ( e for e in registry.get("entries", []) @@ -334,10 +332,6 @@ def _resolve_rank_configs(start: int, end: int) -> list[str]: ) for e in entries: - is_overlay = e.get("strategy_family") == "overlay" or e.get("overlay_common_window_summary") is not None - if is_overlay: - skipped_overlays.append(e["experiment_name"]) - continue if e.get("trade_count", 0) <= 0 or e.get("valid_trade_count", 0) <= 0: continue name = e["experiment_name"] @@ -345,15 +339,6 @@ def _resolve_rank_configs(start: int, end: int) -> list[str]: if Path(cfg_path).exists(): ranked.append(cfg_path) - if skipped_overlays: - labels = ", ".join(skipped_overlays[:5]) - if len(skipped_overlays) > 5: - labels += ", ..." - _console.print( - "[yellow]Skipping overlay leaderboard entries for `--top/--rank` " - f"(use `--overlay` to run them explicitly): {labels}[/]" - ) - # 1-based inclusive slice return ranked[start - 1 : end] @@ -363,8 +348,6 @@ def cmd_backtest(args: argparse.Namespace) -> None: import datetime as dt configs = args.configs or [] - if args.overlays: - configs.extend(args.overlays) if args.top: configs = _resolve_rank_configs(1, args.top) + configs if args.rank: @@ -378,7 +361,7 @@ def cmd_backtest(args: argparse.Namespace) -> None: _console.print("[red]ERROR: --rank format: N or START-END (e.g. 5 or 20-40)[/]") sys.exit(1) if not configs: - _console.print("[red]ERROR: Specify --config, --overlay, --top, or --rank[/]") + _console.print("[red]ERROR: Specify --config, --top, or --rank[/]") sys.exit(1) for cfg in configs: @@ -590,8 +573,6 @@ def main() -> None: p.add_argument("--config", "-c", action="append", dest="configs", metavar="PATH", help="Config path (repeat for multiple strategies)") - p.add_argument("--overlay", action="append", dest="overlays", metavar="PATH", - help="Overlay config path (repeat for multiple)") p.add_argument("--top", "-t", type=int, default=None, metavar="N", help="Use top N strategies from leaderboard (by SQS score)") p.add_argument("--rank", default=None, metavar="START-END", diff --git a/apps/paper_trader/reporter.py b/apps/paper_trader/reporter.py index 121c6ef..a92c667 100644 --- a/apps/paper_trader/reporter.py +++ b/apps/paper_trader/reporter.py @@ -309,54 +309,6 @@ def print_sessions(sessions: list[SessionRow]) -> None: # Run summary # ------------------------------------------------------------------ # -def _print_overlay_detail(r: dict) -> None: - """Print overlay regime allocation + per-book summary.""" - name = r["session_name"] - - # Regime day counts - regime_counts = r.get("regime_day_counts", {}) - if regime_counts: - regime_tbl = Table( - box=box.SIMPLE_HEAD, show_header=True, header_style="bold yellow", - padding=(0, 1), title=f"[bold magenta]Regime Days — {name}[/]", title_justify="left", - ) - regime_tbl.add_column("Regime", style="bold") - regime_tbl.add_column("Days", justify="right") - regime_tbl.add_column("Allocation", no_wrap=True) - allocations = r.get("allocations", {}) - for regime, count in sorted(regime_counts.items()): - alloc = allocations.get(regime, {}) - alloc_str = " ".join(f"{k}={v:.0%}" for k, v in alloc.items()) - regime_tbl.add_row(regime, str(count), alloc_str) - _console.print(regime_tbl) - - # Per-book summary - book_results = r.get("book_results", []) - if book_results: - book_tbl = Table( - box=box.SIMPLE_HEAD, show_header=True, header_style="bold yellow", - padding=(0, 1), title=f"[bold magenta]Books — {name}[/]", title_justify="left", - ) - book_tbl.add_column("Book", style="bold") - book_tbl.add_column("Return", justify="right") - book_tbl.add_column("MaxDD", justify="right") - book_tbl.add_column("Trades", justify="right") - book_tbl.add_column("WinRate", justify="right") - book_tbl.add_column("Sharpe", justify="right") - for br in book_results: - bs = br["result"]["summary"] - ret_color = "green" if bs["return_pct"] >= 0 else "red" - book_tbl.add_row( - br["label"], - f"[{ret_color}]{bs['return_pct']:+.2f}%[/{ret_color}]", - f"[red]-{bs['max_dd_pct']:.2f}%[/]", - str(bs["trade_count"]), - f"{bs['win_rate']:.0f}%", - f"{bs['sharpe']:+.2f}", - ) - _console.print(book_tbl) - - def print_backtest_results(results: list[dict], output_dir: str | None = None, show_trades: bool = True) -> None: """Print equity curve comparison, summary table, and per-strategy trade logs.""" import csv @@ -386,8 +338,6 @@ def print_backtest_results(results: list[dict], output_dir: str | None = None, s s = r["summary"] ret_color = "green" if s["return_pct"] >= 0 else "red" name = r["session_name"] - if r.get("is_overlay"): - name = f"{name} [overlay]" sum_tbl.add_row( name, f"[{ret_color}]{s['return_pct']:+.2f}%[/{ret_color}]", @@ -399,12 +349,6 @@ def print_backtest_results(results: list[dict], output_dir: str | None = None, s _console.print(sum_tbl) - # ── Overlay detail sections ─────────────────────────────────────────── - for r in results: - if not r.get("is_overlay"): - continue - _print_overlay_detail(r) - # ── Per-strategy trade logs ──────────────────────────────────────────── if not show_trades: if output_dir: @@ -520,8 +464,23 @@ def print_run_summary(summary: dict) -> None: _console.print(f"[dim]{date}: {status}[/]") return + if status == "kill_switch_active": + _console.print(f"[bold red]{date}: KILL SWITCH ACTIVE — all trading halted[/]") + return + _console.print(f"\nProcessing [bold]{date}[/]...") + # Reconciliation report + recon = summary.get("reconciliation") + if recon and recon.has_issues: + _console.print(" [bold yellow]RECONCILIATION:[/]") + for sym in recon.orphaned_alpaca: + _console.print(f" [yellow]ORPHANED[/] {sym} — on Alpaca but no local state") + for sym in recon.ghost_local: + _console.print(f" [yellow]GHOST[/] {sym} — local state but no Alpaca position (auto-closed)") + if recon.stale_orders_cancelled: + _console.print(f" [dim]Stale orders cancelled: {len(recon.stale_orders_cancelled)}[/]") + exits = summary.get("exits", []) entries = summary.get("entries", []) rejected = summary.get("rejected", []) diff --git a/apps/tools/evaluate_book_overlay.py b/apps/tools/evaluate_book_overlay.py deleted file mode 100644 index d7c7909..0000000 --- a/apps/tools/evaluate_book_overlay.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -import argparse -import datetime as dt -import json -from pathlib import Path -from typing import Any - -from apps.backtester.run import _build_merged_snapshot_store -from libs.backtest.allocator import _macro_regime_state -from libs.backtest.manifests import load_manifest, resolve_config -from libs.backtest.overlay import ( - build_overlay_curve, - load_equity_curve_csv, - load_merged_store_from_snapshot_dir, - summarize_overlay_curve, -) -from libs.common.config import get_settings - - -def _parse_date(value: str | None) -> dt.date | None: - if not value: - return None - return dt.date.fromisoformat(value) - - -def _compute_regimes( - *, - snapshot_dir: str | Path, - split: str, - config_path: str | Path, - start_date: dt.date | None, - end_date: dt.date | None, -) -> dict[dt.date, str]: - del split # overlay regimes should cover the full requested window, not a single split - manifest = load_manifest(config_path) - config = resolve_config(manifest, config_root=".") - - raw_snapshot_dir = Path(snapshot_dir) - if (raw_snapshot_dir / "train.parquet").exists() or (raw_snapshot_dir / "test.parquet").exists(): - settings = get_settings() - store = load_merged_store_from_snapshot_dir( - raw_snapshot_dir, - oracle_url=settings.stock_oracle_url, - db_dsn=settings.postgres_dsn, - ) - else: - try: - store = _build_merged_snapshot_store( - manifest, - config, - snapshot_dir_override=str(raw_snapshot_dir), - ) - except FileNotFoundError: - store = _build_merged_snapshot_store( - manifest, - config, - snapshot_dir_override=None, - ) - - if start_date or end_date: - lower = start_date or dt.date.min - upper = end_date or dt.date.max - store = store.slice_by_date_range(lower, upper) - - regimes: dict[dt.date, str] = {} - for date in store.all_trading_days(): - regimes[date] = _macro_regime_state(config, store.get_macro_for_date(date)) - return regimes - - -def _load_spec(path: str | Path) -> dict[str, Any]: - return json.loads(Path(path).read_text()) - - -def main() -> None: - parser = argparse.ArgumentParser(description="Evaluate a regime-switched overlay from book equity curves") - parser.add_argument("--spec", required=True, help="Path to overlay spec JSON") - parser.add_argument("--output-dir", required=True, help="Directory to write overlay outputs") - args = parser.parse_args() - - spec = _load_spec(args.spec) - initial_equity = float(spec.get("initial_equity", 10_000.0)) - - curves = { - book["label"]: load_equity_curve_csv(book["equity_csv"]) - for book in spec["books"] - } - regime_source = spec["regime_source"] - start_date = _parse_date(spec.get("start_date")) - end_date = _parse_date(spec.get("end_date")) - regimes = _compute_regimes( - snapshot_dir=regime_source["snapshot_dir"], - split=regime_source.get("split", "train"), - config_path=regime_source["config_path"], - start_date=start_date, - end_date=end_date, - ) - - curve = build_overlay_curve( - curves=curves, - allocations=spec["allocations"], - regimes_by_date=regimes, - initial_equity=initial_equity, - ) - if start_date: - curve = curve[curve["date"] >= start_date] - if end_date: - curve = curve[curve["date"] <= end_date] - - summary = summarize_overlay_curve(curve, initial_equity=initial_equity) - summary["overlay_name"] = spec.get("overlay_name", Path(args.spec).stem) - summary["books"] = [book["label"] for book in spec["books"]] - summary["allocations"] = spec["allocations"] - - out_dir = Path(args.output_dir) - out_dir.mkdir(parents=True, exist_ok=True) - curve.assign(date=curve["date"].astype(str)).to_csv(out_dir / "overlay_equity.csv", index=False) - (out_dir / "overlay_summary.json").write_text(json.dumps(summary, indent=2) + "\n") - print(json.dumps(summary, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/apps/tracker/cli.py b/apps/tracker/cli.py index a95d231..a5f41c1 100644 --- a/apps/tracker/cli.py +++ b/apps/tracker/cli.py @@ -2,8 +2,6 @@ from __future__ import annotations import argparse -import datetime as dt -import json import sys from pathlib import Path @@ -15,7 +13,6 @@ from rich.table import Table from libs.backtest.domain import ( ConfigDelta, JournalEntry, - OverlayWindowSummary, RobustnessMatrixSummary, SplitResult, WalkForwardSummary, @@ -33,8 +30,6 @@ from libs.backtest.tracker import ( compute_public_sqs_v2, compute_promotion_score, compute_oot_robustness_gate, - compute_overlay_public_sqs, - compute_overlay_stress_sqs, compute_robustness_gate, compute_rqs, compute_sqs, @@ -42,7 +37,6 @@ from libs.backtest.tracker import ( compute_unified_score, compute_wfqs, compute_wfqs_v2, - filter_overlay_registry_entries, filter_registry_entries, get_next_entry_id, journal_lock, @@ -117,43 +111,6 @@ def _load_optional_robustness_summary(path_str: str | None) -> RobustnessMatrixS return RobustnessMatrixSummary.model_validate_json(path.read_text()) -def _build_overlay_window_summary(spec_path: str, summary_path: str) -> OverlayWindowSummary: - spec = json.loads(Path(spec_path).read_text()) - summary = json.loads(Path(summary_path).read_text()) - - start_date = spec.get("start_date") - end_date = spec.get("end_date") - if not start_date or not end_date: - print("ERROR: overlay spec must include start_date and end_date") - sys.exit(1) - - start = dt.date.fromisoformat(start_date) - end = dt.date.fromisoformat(end_date) - initial_equity = float(spec.get("initial_equity", 10_000.0)) - final_equity = summary.get("final_equity") - annualized_return_pct = None - if final_equity is not None and initial_equity > 0: - calendar_days = max((end - start).days, 1) - annualized_return_pct = ((float(final_equity) / initial_equity) ** (365.25 / calendar_days) - 1.0) * 100.0 - - return OverlayWindowSummary( - window_name=summary.get("overlay_name", Path(spec_path).stem), - overlay_name=summary.get("overlay_name", Path(spec_path).stem), - start_date=start, - end_date=end, - initial_equity=initial_equity, - final_equity=summary.get("final_equity"), - return_pct=summary.get("return_pct"), - annualized_return_pct=annualized_return_pct, - max_drawdown_pct=summary.get("max_dd_pct"), - sharpe_ratio=summary.get("sharpe"), - day_count=int(summary.get("day_count") or 0), - books=list(summary.get("books") or []), - allocations=dict(summary.get("allocations") or {}), - regime_day_counts=dict(summary.get("regime_day_counts") or {}), - ) - - def _score_sort_key(sort_by: str, entry) -> tuple: if sort_by == "promotion": return ( @@ -391,86 +348,12 @@ def cmd_record(args: argparse.Namespace) -> None: print(f"Leaderboard updated: {leaderboard_path}") -def cmd_record_overlay(args: argparse.Namespace) -> None: - """Record an overlay evaluation to the official journal and leaderboard.""" - journal_dir = Path(args.journal_dir) - journal_path = journal_dir / "improvement_journal.jsonl" - registry_path = journal_dir / "experiment_registry.json" - leaderboard_path = journal_dir / "LEADERBOARD.md" - - overlay_summary = _build_overlay_window_summary(args.spec, args.summary) - overlay_stress_summary = _build_overlay_window_summary(args.stress_spec, args.stress_summary) - sqs_score, sqs_breakdown, source = compute_overlay_public_sqs( - overlay_summary, - overlay_stress_summary, - ) - stress_sqs_score, stress_sqs_breakdown, _ = compute_overlay_stress_sqs( - overlay_summary, - overlay_stress_summary, - ) - if sqs_score is None: - print(f"ERROR: overlay score unavailable ({source})") - sys.exit(1) - - spec = json.loads(Path(args.spec).read_text()) - experiment_name = spec.get("overlay_name") or Path(args.spec).stem - tags = ["overlay", *list(getattr(args, "tags", []) or [])] - - with journal_lock(journal_path): - dupes = check_duplicate(journal_path, experiment_name) - if dupes and not args.force: - print(f"WARNING: overlay '{experiment_name}' already in journal ({len(dupes)} entries).") - print("Use --force to add anyway.") - sys.exit(1) - - entry_id = get_next_entry_id(journal_path) - entry = JournalEntry( - entry_id=entry_id, - timestamp=utc_now().isoformat(), - experiment_name=experiment_name, - hypothesis=args.hypothesis or "", - overlay_common_window_summary=overlay_summary, - overlay_stress_window_summary=overlay_stress_summary, - sqs_score=sqs_score, - sqs_breakdown=sqs_breakdown, - sqs_v3_score=sqs_score, - sqs_v3_breakdown=sqs_breakdown, - stress_sqs_score=stress_sqs_score, - stress_sqs_breakdown=stress_sqs_breakdown, - verdict=args.verdict or "unknown", - verdict_reasoning=args.reasoning or "", - next_direction=args.next or "", - tags=tags, - ) - append_journal_entry(journal_path, entry) - _sync_and_rebuild(journal_path, registry_path, leaderboard_path) - - stress_label = f", stress={stress_sqs_score:.1f}" if stress_sqs_score is not None else "" - print(f"Recorded {entry_id}: {experiment_name} (SQS={sqs_score:.1f}{stress_label}, source={source})") - print( - " common-window:" - f" Ret={overlay_summary.return_pct:+.2f}%" - f", Ann={overlay_summary.annualized_return_pct:+.2f}%" - f", DD={overlay_summary.max_drawdown_pct:.2f}%" - f", Sharpe={overlay_summary.sharpe_ratio:.2f}" - ) - print( - " stress-window:" - f" Ret={overlay_stress_summary.return_pct:+.2f}%" - f", Ann={overlay_stress_summary.annualized_return_pct:+.2f}%" - f", DD={overlay_stress_summary.max_drawdown_pct:.2f}%" - f", Sharpe={overlay_stress_summary.sharpe_ratio:.2f}" - ) - print(f"Leaderboard updated: {leaderboard_path}") - - def cmd_leaderboard(args: argparse.Namespace) -> None: """Show or regenerate the leaderboard.""" journal_dir = Path(args.journal_dir) journal_path = journal_dir / "improvement_journal.jsonl" registry_path = journal_dir / "experiment_registry.json" leaderboard_path = journal_dir / "LEADERBOARD.md" - overlay_leaderboard_path = journal_dir / "OVERLAY_LEADERBOARD.md" if not journal_path.exists(): journal_path.parent.mkdir(parents=True, exist_ok=True) @@ -478,31 +361,18 @@ def cmd_leaderboard(args: argparse.Namespace) -> None: with journal_lock(journal_path): registry = _sync_and_rebuild(journal_path, registry_path, leaderboard_path) - overlay_only = getattr(args, "overlay_only", False) - if overlay_only: - ranked_source = filter_overlay_registry_entries( - registry.entries, - include_retired=getattr(args, "include_retired", False), - ) - displayed_leaderboard_path = overlay_leaderboard_path - else: - ranked_source = filter_registry_entries( - registry.entries, - include_retired=getattr(args, "include_retired", False), - include_overlays=False, - ) - displayed_leaderboard_path = leaderboard_path + ranked_source = filter_registry_entries( + registry.entries, + include_retired=getattr(args, "include_retired", False), + ) + displayed_leaderboard_path = leaderboard_path sort_by = getattr(args, "sort", "sqs") ranked_entries = sorted(ranked_source, key=lambda entry: _score_sort_key(sort_by, entry)) total = len(ranked_entries) top_n = getattr(args, "top", 10) - diagnostics = (not overlay_only) and sort_by in {"deployment", "dep", "wfqs", "rqs", "promotion", "unified", "sqs2"} - title = ( - f"[bold cyan]Top {top_n} / {total}[/] [dim]· overlay official SQS · Common=full-window Stress=OOT[/]" - if overlay_only - else f"[bold cyan]Top {top_n} / {total}[/] [dim]· {_title_for_sort(sort_by)} · Tr=train V=valid T=test[/]" - ) + diagnostics = sort_by in {"deployment", "dep", "wfqs", "rqs", "promotion", "unified", "sqs2"} + title = f"[bold cyan]Top {top_n} / {total}[/] [dim]· {_title_for_sort(sort_by)} · Tr=train V=valid T=test[/]" tbl = Table( box=box.SIMPLE_HEAD, @@ -537,7 +407,6 @@ def cmd_leaderboard(args: argparse.Namespace) -> None: name = entry.experiment_name if len(name) > _COL_NAME: name = name[: _COL_NAME - 1] + "…" - is_overlay = entry.strategy_family == "overlay" and entry.overlay_common_window_summary is not None row = [ str(rank), name, @@ -553,14 +422,14 @@ def cmd_leaderboard(args: argparse.Namespace) -> None: _fmt(entry.rqs_score, ".1f"), ]) row.extend([ - "-" if is_overlay else _fmt(entry.train_total_return_pct, "+.1f"), - "-" if is_overlay else _fmt(entry.valid_total_return_pct, "+.1f"), + _fmt(entry.train_total_return_pct, "+.1f"), + _fmt(entry.valid_total_return_pct, "+.1f"), _fmt(entry.total_return_pct, "+.1f"), _fmt(entry.annualized_return_pct, "+.1f"), _fmt(entry.max_drawdown_pct, ".1f"), - "-" if is_overlay else _fmt(entry.avg_gross_exposure_pct, ".1f"), - "-" if is_overlay else _fmt(entry.days_in_market_pct, ".1f"), - "-" if is_overlay else _fmt(_ratio(entry.total_return_pct, entry.avg_gross_exposure_pct), ".2f"), + _fmt(entry.avg_gross_exposure_pct, ".1f"), + _fmt(entry.days_in_market_pct, ".1f"), + _fmt(_ratio(entry.total_return_pct, entry.avg_gross_exposure_pct), ".2f"), ]) tbl.add_row(*row) @@ -1034,13 +903,6 @@ def main() -> None: action="store_true", help="Include retired legacy PEAD / short-core / exact-pocket families", ) - subparser.add_argument( - "--overlay", - "--overlay-only", - dest="overlay_only", - action="store_true", - help="Show the separate overlay/book-of-books leaderboard instead of the default single-book leaderboard", - ) for name in ("show", "s"): subparser = sub.add_parser(name, help="Show details of a journal entry") @@ -1071,20 +933,6 @@ def main() -> None: subparser.add_argument("target", help="Entry ID or experiment name to update") subparser.add_argument("--summary", required=True, help="Path to robustness_matrix_summary.json") - for name in ("record-overlay", "rovl"): - subparser = sub.add_parser(name, help="Record an official overlay evaluation") - subparser.add_argument("--journal-dir", **journal_kwargs) - subparser.add_argument("--spec", required=True, help="Path to overlay spec JSON for the main window") - subparser.add_argument("--summary", required=True, help="Path to overlay_summary.json for the main window") - subparser.add_argument("--stress-spec", required=True, help="Path to overlay spec JSON for the stress window") - subparser.add_argument("--stress-summary", required=True, help="Path to overlay_summary.json for the stress window") - subparser.add_argument("--hypothesis", default="", help="Short hypothesis / notes") - subparser.add_argument("--verdict", help="Initial verdict label") - subparser.add_argument("--reasoning", help="Verdict reasoning") - subparser.add_argument("--next", help="Next direction") - subparser.add_argument("--force", action="store_true", help="Allow duplicate overlay names") - subparser.add_argument("--tags", nargs="*", default=[], help="Extra tags") - for name in ("rescore-public", "rsp"): subparser = sub.add_parser(name, help="Recompute stored public scores for journal entries") subparser.add_argument("--journal-dir", **journal_kwargs) @@ -1108,8 +956,6 @@ def main() -> None: "arb": cmd_attach_robustness, "attach-oot-robustness": cmd_attach_oot_robustness, "aoot": cmd_attach_oot_robustness, - "record-overlay": cmd_record_overlay, - "rovl": cmd_record_overlay, "rescore-public": cmd_rescore_public, "rsp": cmd_rescore_public, } diff --git a/configs/overlays/return_book_overlay_v1.json b/configs/overlays/return_book_overlay_v1.json deleted file mode 100644 index 7740a4e..0000000 --- a/configs/overlays/return_book_overlay_v1.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v1", - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6.221_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv" - } - ], - "allocations": { - "risk_on": { - "core": 0.0, - "mom": 1.0 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - } -} diff --git a/configs/overlays/return_book_overlay_v1b.json b/configs/overlays/return_book_overlay_v1b.json deleted file mode 100644 index 89c5779..0000000 --- a/configs/overlays/return_book_overlay_v1b.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v1b", - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6.221_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv" - } - ], - "allocations": { - "risk_on": { - "core": 0.0, - "mom": 1.0 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 0.0, - "mom": 1.0 - } - } -} diff --git a/configs/overlays/return_book_overlay_v1c.json b/configs/overlays/return_book_overlay_v1c.json deleted file mode 100644 index 51d5df8..0000000 --- a/configs/overlays/return_book_overlay_v1c.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v1c", - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6.221_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv" - } - ], - "allocations": { - "risk_on": { - "core": 0.0, - "mom": 1.0 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 0.5, - "mom": 0.5 - } - } -} diff --git a/configs/overlays/return_book_overlay_v2.json b/configs/overlays/return_book_overlay_v2.json deleted file mode 100644 index c1a0bca..0000000 --- a/configs/overlays/return_book_overlay_v2.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.114.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/fallback_book_compare/return_max_long_v6.114_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv" - } - ], - "overlay_name": "return_book_overlay_v2", - "allocations": { - "risk_on": { - "core": 0, - "mom": 1 - }, - "neutral": { - "core": 0, - "mom": 1 - }, - "risk_off": { - "core": 1, - "mom": 0 - }, - "unknown": { - "core": 1, - "mom": 0 - } - } -} diff --git a/configs/overlays/return_book_overlay_v2b.json b/configs/overlays/return_book_overlay_v2b.json deleted file mode 100644 index d6137a9..0000000 --- a/configs/overlays/return_book_overlay_v2b.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.114.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/fallback_book_compare/return_max_long_v6.114_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv" - } - ], - "overlay_name": "return_book_overlay_v2b", - "allocations": { - "risk_on": { - "core": 0, - "mom": 1 - }, - "neutral": { - "core": 0, - "mom": 1 - }, - "risk_off": { - "core": 1, - "mom": 0 - }, - "unknown": { - "core": 0, - "mom": 1 - } - } -} diff --git a/configs/overlays/return_book_overlay_v3.json b/configs/overlays/return_book_overlay_v3.json deleted file mode 100644 index fb30189..0000000 --- a/configs/overlays/return_book_overlay_v3.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v3", - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6.221_equity.csv", - "experiment_config": "configs/experiments/return_max_long_v6.221.json" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv", - "experiment_config": "configs/experiments/return_max_long_v6new.54.json" - } - ], - "allocations": { - "risk_on": {"core": 0.5, "mom": 0.5}, - "neutral": {"core": 0.0, "mom": 1.0}, - "risk_off": {"core": 1.0, "mom": 0.0}, - "unknown": {"core": 1.0, "mom": 0.0} - } -} diff --git a/configs/overlays/return_book_overlay_v3_oot.json b/configs/overlays/return_book_overlay_v3_oot.json deleted file mode 100644 index 0b5fd0d..0000000 --- a/configs/overlays/return_book_overlay_v3_oot.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v3_oot", - "initial_equity": 10000, - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/datasets/snapshots/midlarge-liquid-long-v1-oot-2020-2021", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_oot_inputs/csv/core_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_oot_inputs/csv/mom_equity.csv" - } - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - } -} diff --git a/configs/overlays/return_book_overlay_v3b.json b/configs/overlays/return_book_overlay_v3b.json deleted file mode 100644 index d3b33b2..0000000 --- a/configs/overlays/return_book_overlay_v3b.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v3b", - "initial_equity": 10000, - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/parquet/midlarge-liquid-long-v1_bucketfix_full_audit_mom_v2", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6.221_equity.csv", - "experiment_config": "configs/experiments/return_max_long_v6.221.json" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_v1_inputs/return_max_long_v6new.54_equity.csv", - "experiment_config": "configs/experiments/return_max_long_v6new.54.json" - } - ], - "allocations": { - "risk_on": {"core": 0.5, "mom": 0.5}, - "neutral": {"core": 0.5, "mom": 0.5}, - "risk_off": {"core": 1.0, "mom": 0.0}, - "unknown": {"core": 1.0, "mom": 0.0} - } -} diff --git a/configs/overlays/return_book_overlay_v3b_oot.json b/configs/overlays/return_book_overlay_v3b_oot.json deleted file mode 100644 index a731073..0000000 --- a/configs/overlays/return_book_overlay_v3b_oot.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "overlay_name": "return_book_overlay_v3b_oot", - "initial_equity": 10000, - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "regime_source": { - "config_path": "configs/experiments/return_max_long_v6.221.json", - "snapshot_dir": "data/datasets/snapshots/midlarge-liquid-long-v1-oot-2020-2021", - "split": "train" - }, - "books": [ - { - "label": "core", - "equity_csv": "runs/book_overlay_oot_inputs/csv/core_equity.csv" - }, - { - "label": "mom", - "equity_csv": "runs/book_overlay_oot_inputs/csv/mom_equity.csv" - } - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - } -} diff --git a/docs/public_sqs_calculation.md b/docs/public_sqs_calculation.md index b903340..42a0cb1 100644 --- a/docs/public_sqs_calculation.md +++ b/docs/public_sqs_calculation.md @@ -8,7 +8,6 @@ split-only 점수와 final leaderboard 점수가 다를 수 있는지를 정리 - `SQS v4`: `SQS v3` + common-window capital-growth blend - `sqs_v3_score`: deployment/WFV-first primary rank - `stress_sqs_score`: 예전 public score. stress OOT quality를 추가 패널티로 곱한 legacy score -- overlay entry는 split/WFV 기반 `SQS v4` 대신 **overlay 전용 official score**를 쓴다. 핵심 결론부터 말하면: @@ -44,42 +43,13 @@ public leaderboard / registry rebuild도 같은 함수를 쓴다: 즉, 수동 계산과 leaderboard 계산은 같은 코드 경로를 따라야 한다. -## 1.5 Overlay는 어떻게 공식 점수화되나 +## 1.5 Overlay 경로는 retired 상태다 -overlay는 train/valid/test/WFV 구조가 없으므로 single-book `SQS v4`를 그대로 쓸 수 없다. +overlay/book-of-books 평가는 코드베이스에서 제거됐다. -대신 아래 두 summary를 붙여서 공식 점수를 계산한다. - -- `overlay_common_window_summary` -- `overlay_stress_window_summary` - -계산 함수는: - -- [`compute_overlay_public_sqs`](/Users/yirugi/mycloud/personal/workspace/fithia2/libs/backtest/tracker.py#L1356) -- [`compute_overlay_stress_sqs`](/Users/yirugi/mycloud/personal/workspace/fithia2/libs/backtest/tracker.py#L1381) - -공식 overlay 점수는: - -```text -overlay_window_score * overlay_stress_gate -``` - -legacy overlay stress 점수는: - -```text -overlay_window_score * overlay_stress_gate * overlay_quality_factor -``` - -즉 overlay도 stress window는 ranking 보조가 아니라 **공식 통과 게이트**에 가깝게 다룬다. - -추가 원칙: - -- overlay official score는 spec의 `books[].equity_csv`를 **frozen input**으로 본다. -- [`fithia2 paper backtest --overlay`](/Users/yirugi/mycloud/personal/workspace/fithia2/apps/paper_trader/cli.py)도 같은 frozen `equity_csv`를 우선 replay해야 한다. -- 그래서 overlay leaderboard 숫자와 paper overlay 숫자가 다르면 먼저 - `equity_csv`, `regime_source`, `start_date`, `end_date`가 같은지 확인한다. -- stress OOT overlay는 full-window csv를 재사용하면 안 된다. - OOT 전용 `equity_csv`와 OOT snapshot `regime_source.snapshot_dir`를 같이 고정해야 한다. +- 기본 leaderboard는 single-book 전략만 포함한다. +- journal에 남아 있는 과거 overlay entry는 historical record로만 취급한다. +- registry rebuild와 `fithia2 lb`는 overlay entry를 건너뛴다. ## 2. 흔한 오해 diff --git a/docs/research_workflow_and_handoff.md b/docs/research_workflow_and_handoff.md index 2dbdaba..465ae25 100644 --- a/docs/research_workflow_and_handoff.md +++ b/docs/research_workflow_and_handoff.md @@ -224,52 +224,13 @@ python apps/tracker/cli.py attach-oot-robustness \ --summary runs/_oot_rm/robustness_matrix/robustness_matrix_summary.json ``` -### Book Overlay Evaluation +### Retired Overlay Path -single-book manifest를 억지로 섞지 말고, 별도 book을 각각 먼저 고정 기간으로 돌린 뒤 -overlay를 따로 평가한다. +book-of-books overlay 실험은 코드베이스에서 제거됐다. -1. 같은 기간, 같은 초기 자본으로 각 book의 equity curve를 만든다. -2. [`configs/overlays`](/Users/yirugi/mycloud/personal/workspace/fithia2/configs/overlays) 아래 spec에 - regime별 자본 배분을 적는다. -3. [`apps/tools/evaluate_book_overlay.py`](/Users/yirugi/mycloud/personal/workspace/fithia2/apps/tools/evaluate_book_overlay.py)로 - overlay equity와 summary를 만든다. -4. full-window spec/summary와 stress-window spec/summary를 모두 만든 뒤 - [`apps/tracker/cli.py`](/Users/yirugi/mycloud/personal/workspace/fithia2/apps/tracker/cli.py) - `record-overlay`로 공식 journal/leaderboard에 등록한다. - -주의: - -- overlay spec의 `books[].equity_csv`는 **재현 기준 입력**이다. -- 공식 평가와 [`fithia2 paper backtest --overlay`](/Users/yirugi/mycloud/personal/workspace/fithia2/apps/paper_trader/cli.py)는 - 둘 다 이 frozen curve를 우선 replay해야 한다. -- OOT overlay는 full-window csv를 재사용하면 안 된다. - `runs/book_overlay_oot_inputs/...`처럼 OOT 전용 book curve를 따로 만든다. -- `regime_source.snapshot_dir`가 explicit snapshot directory라면 evaluator는 그 디렉터리를 그대로 merged load해야 한다. - -예시: - -```bash -fithia2 paper backtest \ - --config configs/experiments/return_max_long_v6.221.json \ - --config configs/experiments/return_max_long_v6new.54.json \ - --capital 10000 \ - --start 2022-03-03 \ - --end 2026-03-13 \ - --output runs/book_overlay_v1_inputs \ - --no-trades - -python apps/tools/evaluate_book_overlay.py \ - --spec configs/overlays/return_book_overlay_v1.json \ - --output-dir runs/return_book_overlay_v1_eval - -python apps/tracker/cli.py record-overlay \ - --spec configs/overlays/return_book_overlay_v3.json \ - --summary runs/return_book_overlay_v3_eval/overlay_summary.json \ - --stress-spec configs/overlays/return_book_overlay_v3_oot.json \ - --stress-summary runs/return_book_overlay_v3_oot_eval/overlay_summary.json \ - --hypothesis "Official overlay candidate" -``` +- 공식 leaderboard와 paper backtest는 이제 single-book 전략만 지원한다. +- 과거 overlay journal entry는 재현성 기록으로만 남고, registry/leaderboard 재빌드에는 포함되지 않는다. +- 새 연구는 [`configs/experiments`](/Users/yirugi/mycloud/personal/workspace/fithia2/configs/experiments) 아래 single-book manifest 기준으로 진행한다. ## 8. 빠른 무결성 점검 diff --git a/journal/LEADERBOARD.md b/journal/LEADERBOARD.md index 9e3d6f1..5448921 100644 --- a/journal/LEADERBOARD.md +++ b/journal/LEADERBOARD.md @@ -1,7 +1,7 @@ # Strategy Improvement Leaderboard -_Updated: 2026-03-27T03:43:33.985346+00:00_ +_Updated: 2026-03-27T04:05:32.124207+00:00_ -_Default view excludes overlay/book-of-books rows, retired legacy PEAD / short-core / exact-pocket families, and incomplete train-only scans. Use `fithia2 lb --overlay` for overlays or `fithia2 lb --include-retired` to inspect archived research._ +_Default view excludes retired legacy PEAD / short-core / exact-pocket families and incomplete train-only scans. Use `fithia2 lb --include-retired` to inspect archived research._ _`SQS` below is public SQS v4: v3 deployment/WFV-first ranking plus a modest common-window capital-growth term when available. Stress OOT remains an eligibility gate. Prior v3 values remain in `experiment_registry.json` as `sqs_v3_score`._ diff --git a/journal/OVERLAY_LEADERBOARD.md b/journal/OVERLAY_LEADERBOARD.md deleted file mode 100644 index 972e622..0000000 --- a/journal/OVERLAY_LEADERBOARD.md +++ /dev/null @@ -1,36 +0,0 @@ -# Overlay Strategy Leaderboard -_Updated: 2026-03-27T03:43:33.985346+00:00_ - -_This board is separate from the default single-book leaderboard. Overlay rows are book-of-books evaluations and are not directly comparable to single-book `SQS` rows._ - -_`SQS` here is overlay official SQS: common-window overlay score with a stress OOT gate. `T.*` columns are common-window overlay metrics._ - -| # | Overlay | SQS | [T]Ret% | [T]Ann% | [T]DD% | Stress Ret% | Stress DD% | Stress Sharpe | Date | -|---|---------|-----|----------|----------|--------|-------------|------------|---------------|------| -| 1 | return_book_overlay_v4 | 91.4 | +185.3 | +29.7 | 5.0 | +7.4 | 5.8 | +0.80 | 2026-03-27 | -| 2 | return_book_overlay_v4b | 91.4 | +187.2 | +30.0 | 5.0 | +7.4 | 5.8 | +0.80 | 2026-03-27 | -| 3 | return_book_overlay_v3 | 90.2 | +175.6 | +28.6 | 4.5 | +6.0 | 5.4 | +0.67 | 2026-03-26 | -| 4 | return_book_overlay_v3b | 87.7 | +169.5 | +27.9 | 5.0 | +7.4 | 5.8 | +0.80 | 2026-03-26 | -| 5 | return_book_overlay_v4c | 60.7 | +232.5 | +34.8 | 5.2 | +3.1 | 3.3 | +0.43 | 2026-03-27 | - -## Recent Overlay Entries -### IMP-0794 (2026-03-27) — return_book_overlay_v4b -Hypothesis: Core v6.221 plus higher-ranked v6new.207 momentum book with balanced 50/50 neutral allocation. -Verdict: **UNKNOWN** (SQS 91.4) - -### IMP-0793 (2026-03-27) — return_book_overlay_v4c -Hypothesis: Core v6.221 plus top-return v6new.275 momentum book with aggressive 75/25 risk-on and full-neutral momentum allocation. -Verdict: **UNKNOWN** (SQS 60.7) - -### IMP-0792 (2026-03-27) — return_book_overlay_v4 -Hypothesis: Core v6.221 plus higher-ranked v6new.196 momentum book with balanced 50/50 neutral allocation. -Verdict: **UNKNOWN** (SQS 91.4) - -### IMP-0738 (2026-03-26) — return_book_overlay_v3b -Hypothesis: Balanced overlay variant with 50/50 neutral allocation between v6.221 and v6new.54. -Verdict: **UNKNOWN** (SQS 87.7) - -### IMP-0737 (2026-03-26) — return_book_overlay_v3 -Hypothesis: Book-of-books overlay using v6.221 as stress fallback and v6new.54 as normal-regime book. -Verdict: **UNKNOWN** (SQS 90.2) - diff --git a/journal/experiment_registry.json b/journal/experiment_registry.json index b888403..f5da44c 100644 --- a/journal/experiment_registry.json +++ b/journal/experiment_registry.json @@ -1,505 +1,5 @@ { "entries": [ - { - "entry_id": "IMP-0792", - "experiment_name": "return_book_overlay_v4", - "strategy_family": "overlay", - "is_retired": false, - "sqs_score": 91.4, - "sqs_v3_score": 91.4, - "stress_sqs_score": 58.9, - "sqs_v2_score": null, - "promotion_score": null, - "unified_score": null, - "rqs_score": null, - "wfqs_score": null, - "wfqs_v2_score": null, - "deployment_score": null, - "common_window_score": null, - "common_window_summary": null, - "overlay_common_window_summary": { - "window_name": "return_book_overlay_v4", - "overlay_name": "return_book_overlay_v4", - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "initial_equity": 10000.0, - "final_equity": 28533.769396343927, - "return_pct": 185.33769396343928, - "annualized_return_pct": 29.737609916187125, - "max_drawdown_pct": 4.952503311051353, - "sharpe_ratio": 2.698541363816893, - "day_count": 1014, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 83, - "risk_off": 312, - "risk_on": 619 - } - }, - "overlay_stress_window_summary": { - "window_name": "return_book_overlay_v4_oot", - "overlay_name": "return_book_overlay_v4_oot", - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "initial_equity": 10000.0, - "final_equity": 10742.597083222194, - "return_pct": 7.42597083222194, - "annualized_return_pct": 3.654139119591049, - "max_drawdown_pct": 5.758756741288944, - "sharpe_ratio": 0.7998468196254072, - "day_count": 508, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 54, - "risk_off": 98, - "risk_on": 352, - "unknown": 4 - } - }, - "walk_forward_summary": null, - "robustness_matrix_summary": null, - "out_of_time_robustness_summary": null, - "train_total_return_pct": null, - "train_annualized_return_pct": null, - "profit_factor": null, - "total_return_pct": 185.33769396343928, - "annualized_return_pct": 29.737609916187125, - "win_rate": null, - "sharpe_ratio": 2.698541363816893, - "max_drawdown_pct": 4.952503311051353, - "trade_count": 0, - "avg_gross_exposure_pct": null, - "avg_net_exposure_pct": null, - "days_in_market_pct": null, - "valid_profit_factor": null, - "valid_total_return_pct": null, - "valid_annualized_return_pct": null, - "valid_win_rate": null, - "valid_sharpe_ratio": null, - "valid_max_drawdown_pct": null, - "valid_trade_count": 0, - "valid_avg_gross_exposure_pct": null, - "valid_avg_net_exposure_pct": null, - "valid_days_in_market_pct": null, - "timestamp": "2026-03-27T03:34:12.994662+00:00" - }, - { - "entry_id": "IMP-0794", - "experiment_name": "return_book_overlay_v4b", - "strategy_family": "overlay", - "is_retired": false, - "sqs_score": 91.4, - "sqs_v3_score": 91.4, - "stress_sqs_score": 58.9, - "sqs_v2_score": null, - "promotion_score": null, - "unified_score": null, - "rqs_score": null, - "wfqs_score": null, - "wfqs_v2_score": null, - "deployment_score": null, - "common_window_score": null, - "common_window_summary": null, - "overlay_common_window_summary": { - "window_name": "return_book_overlay_v4b", - "overlay_name": "return_book_overlay_v4b", - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "initial_equity": 10000.0, - "final_equity": 28724.75896020887, - "return_pct": 187.24758960208868, - "annualized_return_pct": 29.95269200710682, - "max_drawdown_pct": 4.952503311051353, - "sharpe_ratio": 2.692136311757153, - "day_count": 1014, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 83, - "risk_off": 312, - "risk_on": 619 - } - }, - "overlay_stress_window_summary": { - "window_name": "return_book_overlay_v4b_oot", - "overlay_name": "return_book_overlay_v4b_oot", - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "initial_equity": 10000.0, - "final_equity": 10742.597083222194, - "return_pct": 7.42597083222194, - "annualized_return_pct": 3.654139119591049, - "max_drawdown_pct": 5.758756741288944, - "sharpe_ratio": 0.7998468196254072, - "day_count": 508, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 54, - "risk_off": 98, - "risk_on": 352, - "unknown": 4 - } - }, - "walk_forward_summary": null, - "robustness_matrix_summary": null, - "out_of_time_robustness_summary": null, - "train_total_return_pct": null, - "train_annualized_return_pct": null, - "profit_factor": null, - "total_return_pct": 187.24758960208868, - "annualized_return_pct": 29.95269200710682, - "win_rate": null, - "sharpe_ratio": 2.692136311757153, - "max_drawdown_pct": 4.952503311051353, - "trade_count": 0, - "avg_gross_exposure_pct": null, - "avg_net_exposure_pct": null, - "days_in_market_pct": null, - "valid_profit_factor": null, - "valid_total_return_pct": null, - "valid_annualized_return_pct": null, - "valid_win_rate": null, - "valid_sharpe_ratio": null, - "valid_max_drawdown_pct": null, - "valid_trade_count": 0, - "valid_avg_gross_exposure_pct": null, - "valid_avg_net_exposure_pct": null, - "valid_days_in_market_pct": null, - "timestamp": "2026-03-27T03:34:15.275782+00:00" - }, - { - "entry_id": "IMP-0737", - "experiment_name": "return_book_overlay_v3", - "strategy_family": "overlay", - "is_retired": false, - "sqs_score": 90.2, - "sqs_v3_score": 90.2, - "stress_sqs_score": 54.7, - "sqs_v2_score": null, - "promotion_score": null, - "unified_score": null, - "rqs_score": null, - "wfqs_score": null, - "wfqs_v2_score": null, - "deployment_score": null, - "common_window_score": null, - "common_window_summary": null, - "overlay_common_window_summary": { - "window_name": "return_book_overlay_v3", - "overlay_name": "return_book_overlay_v3", - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "initial_equity": 10000.0, - "final_equity": 27558.18371700649, - "return_pct": 175.58183717006492, - "annualized_return_pct": 28.621755050004193, - "max_drawdown_pct": 4.517074525529228, - "sharpe_ratio": 2.6554068438624885, - "day_count": 1014, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 83, - "risk_off": 312, - "risk_on": 619 - } - }, - "overlay_stress_window_summary": { - "window_name": "return_book_overlay_v3_oot", - "overlay_name": "return_book_overlay_v3", - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "initial_equity": 10000.0, - "final_equity": 10595.000000000002, - "return_pct": 5.95, - "annualized_return_pct": 2.9381371283850877, - "max_drawdown_pct": 5.37, - "sharpe_ratio": 0.67, - "day_count": 508, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "risk_on": 352, - "neutral": 54, - "risk_off": 98, - "unknown": 4 - } - }, - "walk_forward_summary": null, - "robustness_matrix_summary": null, - "out_of_time_robustness_summary": null, - "train_total_return_pct": null, - "train_annualized_return_pct": null, - "profit_factor": null, - "total_return_pct": 175.58183717006492, - "annualized_return_pct": 28.621755050004193, - "win_rate": null, - "sharpe_ratio": 2.6554068438624885, - "max_drawdown_pct": 4.517074525529228, - "trade_count": 0, - "avg_gross_exposure_pct": null, - "avg_net_exposure_pct": null, - "days_in_market_pct": null, - "valid_profit_factor": null, - "valid_total_return_pct": null, - "valid_annualized_return_pct": null, - "valid_win_rate": null, - "valid_sharpe_ratio": null, - "valid_max_drawdown_pct": null, - "valid_trade_count": 0, - "valid_avg_gross_exposure_pct": null, - "valid_avg_net_exposure_pct": null, - "valid_days_in_market_pct": null, - "timestamp": "2026-03-26T06:57:26.199795+00:00" - }, - { - "entry_id": "IMP-0738", - "experiment_name": "return_book_overlay_v3b", - "strategy_family": "overlay", - "is_retired": false, - "sqs_score": 87.7, - "sqs_v3_score": 87.7, - "stress_sqs_score": 56.6, - "sqs_v2_score": null, - "promotion_score": null, - "unified_score": null, - "rqs_score": null, - "wfqs_score": null, - "wfqs_v2_score": null, - "deployment_score": null, - "common_window_score": null, - "common_window_summary": null, - "overlay_common_window_summary": { - "window_name": "return_book_overlay_v3b", - "overlay_name": "return_book_overlay_v3b", - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "initial_equity": 10000.0, - "final_equity": 26947.684334259407, - "return_pct": 169.47684334259407, - "annualized_return_pct": 27.908286564660003, - "max_drawdown_pct": 4.951509972711183, - "sharpe_ratio": 2.628921146148096, - "day_count": 1014, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 83, - "risk_off": 312, - "risk_on": 619 - } - }, - "overlay_stress_window_summary": { - "window_name": "return_book_overlay_v3b_oot", - "overlay_name": "return_book_overlay_v3b", - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "initial_equity": 10000.0, - "final_equity": 10743.0, - "return_pct": 7.43, - "annualized_return_pct": 3.6560869509189686, - "max_drawdown_pct": 5.76, - "sharpe_ratio": 0.8, - "day_count": 508, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.5, - "mom": 0.5 - }, - "neutral": { - "core": 0.5, - "mom": 0.5 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "risk_on": 352, - "neutral": 54, - "risk_off": 98, - "unknown": 4 - } - }, - "walk_forward_summary": null, - "robustness_matrix_summary": null, - "out_of_time_robustness_summary": null, - "train_total_return_pct": null, - "train_annualized_return_pct": null, - "profit_factor": null, - "total_return_pct": 169.47684334259407, - "annualized_return_pct": 27.908286564660003, - "win_rate": null, - "sharpe_ratio": 2.628921146148096, - "max_drawdown_pct": 4.951509972711183, - "trade_count": 0, - "avg_gross_exposure_pct": null, - "avg_net_exposure_pct": null, - "days_in_market_pct": null, - "valid_profit_factor": null, - "valid_total_return_pct": null, - "valid_annualized_return_pct": null, - "valid_win_rate": null, - "valid_sharpe_ratio": null, - "valid_max_drawdown_pct": null, - "valid_trade_count": 0, - "valid_avg_gross_exposure_pct": null, - "valid_avg_net_exposure_pct": null, - "valid_days_in_market_pct": null, - "timestamp": "2026-03-26T06:57:37.332636+00:00" - }, { "entry_id": "IMP-0795", "experiment_name": "return_max_long_v6new.307", @@ -586,8 +86,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -1323,8 +821,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -2060,8 +1556,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -2797,8 +2291,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -3534,8 +3026,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -4270,8 +3760,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -5007,8 +4495,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -5743,8 +5229,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -6479,8 +5963,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -7216,8 +6698,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -7953,8 +7433,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -8690,8 +8168,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -9426,8 +8902,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -10094,8 +9568,6 @@ "deployment_score": 74.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -10762,8 +10234,6 @@ "deployment_score": 74.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -11430,8 +10900,6 @@ "deployment_score": 74.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -12098,8 +11566,6 @@ "deployment_score": 74.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -12766,8 +12232,6 @@ "deployment_score": 74.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -13434,8 +12898,6 @@ "deployment_score": 74.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -14102,8 +13564,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -14770,8 +14230,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -15438,8 +14896,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -16106,8 +15562,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -16774,8 +16228,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -17442,8 +16894,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -18110,8 +17560,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -18778,8 +18226,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -19446,8 +18892,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -20114,8 +19558,6 @@ "deployment_score": 75.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -20782,8 +20224,6 @@ "deployment_score": 74.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -21450,8 +20890,6 @@ "deployment_score": 74.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -22118,8 +21556,6 @@ "deployment_score": 74.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -22786,8 +22222,6 @@ "deployment_score": 74.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -23454,8 +22888,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -24122,8 +23554,6 @@ "deployment_score": 74.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -24790,8 +24220,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -25458,8 +24886,6 @@ "deployment_score": 74.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -26126,8 +25552,6 @@ "deployment_score": 74.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -26794,8 +26218,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -27462,8 +26884,6 @@ "deployment_score": 73.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -28130,8 +27550,6 @@ "deployment_score": 73.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -28798,8 +28216,6 @@ "deployment_score": 73.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -29466,8 +28882,6 @@ "deployment_score": 73.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -30134,8 +29548,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -30802,8 +30214,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -31470,8 +30880,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -32138,8 +31546,6 @@ "deployment_score": 72.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -32806,8 +32212,6 @@ "deployment_score": 72.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -33474,8 +32878,6 @@ "deployment_score": 72.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -34210,8 +33612,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -34878,8 +34278,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -35546,8 +34944,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -36214,8 +35610,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -36882,8 +36276,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -37550,8 +36942,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -38218,8 +37608,6 @@ "deployment_score": 75.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -38886,8 +38274,6 @@ "deployment_score": 75.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -39554,8 +38940,6 @@ "deployment_score": 75.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -40290,8 +39674,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -40958,8 +40340,6 @@ "deployment_score": 71.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -41626,8 +41006,6 @@ "deployment_score": 71.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -42294,8 +41672,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -42962,8 +42338,6 @@ "deployment_score": 75.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -43698,8 +43072,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -44200,8 +43572,6 @@ "deployment_score": 69.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -44936,8 +44306,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -45438,8 +44806,6 @@ "deployment_score": 73.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -46106,8 +45472,6 @@ "deployment_score": 74.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -46618,8 +45982,6 @@ "deployment_score": 73.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -47130,8 +46492,6 @@ "deployment_score": 73.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -47642,8 +47002,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -48310,8 +47668,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -48978,8 +48334,6 @@ "deployment_score": 73.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -49490,8 +48844,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -50158,8 +49510,6 @@ "deployment_score": 74.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -50826,8 +50176,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -51494,8 +50842,6 @@ "deployment_score": 74.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -52152,8 +51498,6 @@ "deployment_score": 73.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -52810,8 +52154,6 @@ "deployment_score": 73.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -53468,8 +52810,6 @@ "deployment_score": 73.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -54126,8 +53466,6 @@ "deployment_score": 73.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -54784,8 +54122,6 @@ "deployment_score": 73.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -55442,8 +54778,6 @@ "deployment_score": 73.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -56100,8 +55434,6 @@ "deployment_score": 73.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -56758,8 +56090,6 @@ "deployment_score": 73.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -57416,8 +56746,6 @@ "deployment_score": 73.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -58074,8 +57402,6 @@ "deployment_score": 72.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -58732,8 +58058,6 @@ "deployment_score": 72.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -59390,8 +58714,6 @@ "deployment_score": 72.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -60048,8 +59370,6 @@ "deployment_score": 73.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -60706,8 +60026,6 @@ "deployment_score": 72.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -61432,8 +60750,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -61934,8 +61250,6 @@ "deployment_score": 73.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -62446,8 +61760,6 @@ "deployment_score": 73.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -63104,8 +62416,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -63762,8 +63072,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -64420,8 +63728,6 @@ "deployment_score": 72.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -65078,8 +64384,6 @@ "deployment_score": 72.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -65746,8 +65050,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -66404,8 +65706,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -67062,8 +66362,6 @@ "deployment_score": 71.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -67788,8 +67086,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -68290,8 +67586,6 @@ "deployment_score": 72.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -68958,8 +68252,6 @@ "deployment_score": 73.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -69470,8 +68762,6 @@ "deployment_score": 73.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -70128,8 +69418,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -70776,8 +70064,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -71444,8 +70730,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -72102,8 +71386,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -72760,8 +72042,6 @@ "deployment_score": 71.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -73418,8 +72698,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -74066,8 +73344,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -74724,8 +74000,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -75382,8 +74656,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -76040,8 +75312,6 @@ "deployment_score": 71.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -76708,8 +75978,6 @@ "deployment_score": 72.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -77366,8 +76634,6 @@ "deployment_score": 71.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -78024,8 +77290,6 @@ "deployment_score": 71.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -78672,8 +77936,6 @@ "deployment_score": 65.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -79340,8 +78602,6 @@ "deployment_score": 70.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -79988,8 +79248,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -80646,8 +79904,6 @@ "deployment_score": 70.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -81304,8 +80560,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -81952,8 +81206,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -82600,8 +81852,6 @@ "deployment_score": 69.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -83258,8 +82508,6 @@ "deployment_score": 70.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -83899,131 +83147,6 @@ "valid_days_in_market_pct": 60.431654676258994, "timestamp": "2026-03-24T05:03:50.387855+00:00" }, - { - "entry_id": "IMP-0793", - "experiment_name": "return_book_overlay_v4c", - "strategy_family": "overlay", - "is_retired": false, - "sqs_score": 60.7, - "sqs_v3_score": 60.7, - "stress_sqs_score": 33.6, - "sqs_v2_score": null, - "promotion_score": null, - "unified_score": null, - "rqs_score": null, - "wfqs_score": null, - "wfqs_v2_score": null, - "deployment_score": null, - "common_window_score": null, - "common_window_summary": null, - "overlay_common_window_summary": { - "window_name": "return_book_overlay_v4c", - "overlay_name": "return_book_overlay_v4c", - "start_date": "2022-03-03", - "end_date": "2026-03-13", - "initial_equity": 10000.0, - "final_equity": 33250.250172740525, - "return_pct": 232.50250172740525, - "annualized_return_pct": 34.76028669870157, - "max_drawdown_pct": 5.235162480181079, - "sharpe_ratio": 2.743594552510967, - "day_count": 1014, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.25, - "mom": 0.75 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 83, - "risk_off": 312, - "risk_on": 619 - } - }, - "overlay_stress_window_summary": { - "window_name": "return_book_overlay_v4c_oot", - "overlay_name": "return_book_overlay_v4c_oot", - "start_date": "2020-01-02", - "end_date": "2021-12-31", - "initial_equity": 10000.0, - "final_equity": 10306.771509789098, - "return_pct": 3.0677150978909884, - "annualized_return_pct": 1.5254270183844065, - "max_drawdown_pct": 3.343114464494687, - "sharpe_ratio": 0.4345757185253481, - "day_count": 508, - "books": [ - "core", - "mom" - ], - "allocations": { - "risk_on": { - "core": 0.25, - "mom": 0.75 - }, - "neutral": { - "core": 0.0, - "mom": 1.0 - }, - "risk_off": { - "core": 1.0, - "mom": 0.0 - }, - "unknown": { - "core": 1.0, - "mom": 0.0 - } - }, - "regime_day_counts": { - "neutral": 54, - "risk_off": 98, - "risk_on": 352, - "unknown": 4 - } - }, - "walk_forward_summary": null, - "robustness_matrix_summary": null, - "out_of_time_robustness_summary": null, - "train_total_return_pct": null, - "train_annualized_return_pct": null, - "profit_factor": null, - "total_return_pct": 232.50250172740525, - "annualized_return_pct": 34.76028669870157, - "win_rate": null, - "sharpe_ratio": 2.743594552510967, - "max_drawdown_pct": 5.235162480181079, - "trade_count": 0, - "avg_gross_exposure_pct": null, - "avg_net_exposure_pct": null, - "days_in_market_pct": null, - "valid_profit_factor": null, - "valid_total_return_pct": null, - "valid_annualized_return_pct": null, - "valid_win_rate": null, - "valid_sharpe_ratio": null, - "valid_max_drawdown_pct": null, - "valid_trade_count": 0, - "valid_avg_gross_exposure_pct": null, - "valid_avg_net_exposure_pct": null, - "valid_days_in_market_pct": null, - "timestamp": "2026-03-27T03:34:14.422002+00:00" - }, { "entry_id": "IMP-0532", "experiment_name": "return_max_long_v6new.16", @@ -84041,8 +83164,6 @@ "deployment_score": 68.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -84699,8 +83820,6 @@ "deployment_score": 72.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -85211,8 +84330,6 @@ "deployment_score": 67.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -85869,8 +84986,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -86517,8 +85632,6 @@ "deployment_score": 67.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -87175,8 +86288,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -87823,8 +86934,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -88471,8 +87580,6 @@ "deployment_score": 72.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -89119,8 +88226,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -89767,8 +88872,6 @@ "deployment_score": 72.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -90415,8 +89518,6 @@ "deployment_score": 73.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -91083,8 +90184,6 @@ "deployment_score": 62.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -91585,8 +90684,6 @@ "deployment_score": 71.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -92253,8 +91350,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -92901,8 +91996,6 @@ "deployment_score": 70.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -93569,8 +92662,6 @@ "deployment_score": 70.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -94237,8 +93328,6 @@ "deployment_score": 61.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -95217,8 +94306,6 @@ "deployment_score": 70.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -95875,8 +94962,6 @@ "deployment_score": 71.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -96543,8 +95628,6 @@ "deployment_score": 69.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -97191,8 +96274,6 @@ "deployment_score": 70.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -97859,8 +96940,6 @@ "deployment_score": 68.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -98371,8 +97450,6 @@ "deployment_score": 72.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -99019,8 +98096,6 @@ "deployment_score": 70.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -99687,8 +98762,6 @@ "deployment_score": 70.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -100335,8 +99408,6 @@ "deployment_score": 58.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -101315,8 +100386,6 @@ "deployment_score": 65.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -101963,8 +101032,6 @@ "deployment_score": 69.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -102611,8 +101678,6 @@ "deployment_score": 59.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -103123,8 +102188,6 @@ "deployment_score": 69.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -103771,8 +102834,6 @@ "deployment_score": 55.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -104439,8 +103500,6 @@ "deployment_score": 69.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -105087,8 +104146,6 @@ "deployment_score": 69.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -105735,8 +104792,6 @@ "deployment_score": 68.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -106247,8 +105302,6 @@ "deployment_score": 68.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -106759,8 +105812,6 @@ "deployment_score": 68.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -107271,8 +106322,6 @@ "deployment_score": 68.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -107783,8 +106832,6 @@ "deployment_score": 67.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -108441,8 +107488,6 @@ "deployment_score": 68.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -108953,8 +107998,6 @@ "deployment_score": 69.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -109601,8 +108644,6 @@ "deployment_score": 64.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -110269,8 +109310,6 @@ "deployment_score": 68.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -110781,8 +109820,6 @@ "deployment_score": 70.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -111429,8 +110466,6 @@ "deployment_score": 70.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -112077,8 +111112,6 @@ "deployment_score": 70.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -112725,8 +111758,6 @@ "deployment_score": 69.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -113373,8 +112404,6 @@ "deployment_score": 68.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -113885,8 +112914,6 @@ "deployment_score": 68.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -114533,8 +113560,6 @@ "deployment_score": 68.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -115045,8 +114070,6 @@ "deployment_score": 69.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -115693,8 +114716,6 @@ "deployment_score": 69.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -116205,8 +115226,6 @@ "deployment_score": 68.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -116717,8 +115736,6 @@ "deployment_score": 52.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -117697,8 +116714,6 @@ "deployment_score": 62.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -118209,8 +117224,6 @@ "deployment_score": 51.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -119179,8 +118192,6 @@ "deployment_score": 58.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -120139,8 +119150,6 @@ "deployment_score": 49.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -121119,8 +120128,6 @@ "deployment_score": 68.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -121767,8 +120774,6 @@ "deployment_score": 67.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -122279,8 +121284,6 @@ "deployment_score": 58.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -122791,8 +121794,6 @@ "deployment_score": 57.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -123303,8 +122304,6 @@ "deployment_score": 58.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -123815,8 +122814,6 @@ "deployment_score": 72.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -124463,8 +123460,6 @@ "deployment_score": 48.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -125443,8 +124438,6 @@ "deployment_score": 66.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -126091,8 +125084,6 @@ "deployment_score": 54.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -126759,8 +125750,6 @@ "deployment_score": 68.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -127407,8 +126396,6 @@ "deployment_score": 68.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -128055,8 +127042,6 @@ "deployment_score": 52.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -129015,8 +128000,6 @@ "deployment_score": 69.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -129663,8 +128646,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -130311,8 +129292,6 @@ "deployment_score": 72.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -130959,8 +129938,6 @@ "deployment_score": 47.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -131939,8 +130916,6 @@ "deployment_score": 67.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -132441,8 +131416,6 @@ "deployment_score": 67.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -132943,8 +131916,6 @@ "deployment_score": 67.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -133445,8 +132416,6 @@ "deployment_score": 67.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -133947,8 +132916,6 @@ "deployment_score": 64.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -134595,8 +133562,6 @@ "deployment_score": 67.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -135097,8 +134062,6 @@ "deployment_score": 67.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -135599,8 +134562,6 @@ "deployment_score": 64.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -136101,8 +135062,6 @@ "deployment_score": 64.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -136603,8 +135562,6 @@ "deployment_score": 54.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -137485,8 +136442,6 @@ "deployment_score": 64.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -137987,8 +136942,6 @@ "deployment_score": 66.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -138635,8 +137588,6 @@ "deployment_score": 64.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -139137,8 +138088,6 @@ "deployment_score": 50.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -139785,8 +138734,6 @@ "deployment_score": 66.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -140433,8 +139380,6 @@ "deployment_score": 41.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -141081,8 +140026,6 @@ "deployment_score": 63.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -141729,8 +140672,6 @@ "deployment_score": 57.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -142231,8 +141172,6 @@ "deployment_score": 60.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -142879,8 +141818,6 @@ "deployment_score": 49.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -143527,8 +142464,6 @@ "deployment_score": 39.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -144175,8 +143110,6 @@ "deployment_score": 51.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -144823,8 +143756,6 @@ "deployment_score": 53.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -145471,8 +144402,6 @@ "deployment_score": 51.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -146119,8 +145048,6 @@ "deployment_score": 63.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -146621,8 +145548,6 @@ "deployment_score": 48.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -147123,8 +146048,6 @@ "deployment_score": 48.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -147625,8 +146548,6 @@ "deployment_score": 64.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -148127,8 +147048,6 @@ "deployment_score": 57.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -148629,8 +147548,6 @@ "deployment_score": 41.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -149131,8 +148048,6 @@ "deployment_score": 41.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -149633,8 +148548,6 @@ "deployment_score": 51.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -150145,8 +149058,6 @@ "deployment_score": 52.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -150657,8 +149568,6 @@ "deployment_score": 50.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -151169,8 +150078,6 @@ "deployment_score": 62.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -151671,8 +150578,6 @@ "deployment_score": 54.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -152173,8 +151078,6 @@ "deployment_score": 61.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -152675,8 +151578,6 @@ "deployment_score": 65.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -153333,8 +152234,6 @@ "deployment_score": 62.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -153835,8 +152734,6 @@ "deployment_score": 60.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -154503,8 +153400,6 @@ "deployment_score": 46.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -155015,8 +153910,6 @@ "deployment_score": 46.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -155527,8 +154420,6 @@ "deployment_score": 67.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -156029,8 +154920,6 @@ "deployment_score": 67.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -156531,8 +155420,6 @@ "deployment_score": 63.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -157033,8 +155920,6 @@ "deployment_score": 64.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -157535,8 +156420,6 @@ "deployment_score": 52.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -158047,8 +156930,6 @@ "deployment_score": 47.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -158715,8 +157596,6 @@ "deployment_score": 54.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -159217,8 +158096,6 @@ "deployment_score": 64.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -159719,8 +158596,6 @@ "deployment_score": 54.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -160221,8 +159096,6 @@ "deployment_score": 26.9, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -160869,8 +159742,6 @@ "deployment_score": 30.0, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -161371,8 +160242,6 @@ "deployment_score": 77.8, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -161979,8 +160848,6 @@ "deployment_score": 77.2, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -162587,8 +161454,6 @@ "deployment_score": 76.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -163195,8 +162060,6 @@ "deployment_score": 75.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -163803,8 +162666,6 @@ "deployment_score": 74.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -164411,8 +163272,6 @@ "deployment_score": 74.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -164803,8 +163662,6 @@ "deployment_score": 74.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -165195,8 +164052,6 @@ "deployment_score": 73.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -165587,8 +164442,6 @@ "deployment_score": 73.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -165979,8 +164832,6 @@ "deployment_score": 73.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -166577,8 +165428,6 @@ "deployment_score": 72.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -167175,8 +166024,6 @@ "deployment_score": 72.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -167723,8 +166570,6 @@ "deployment_score": 72.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -168115,8 +166960,6 @@ "deployment_score": 72.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -168567,8 +167410,6 @@ "deployment_score": 71.1, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -169115,8 +167956,6 @@ "deployment_score": 68.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -169507,8 +168346,6 @@ "deployment_score": 67.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -169959,8 +168796,6 @@ "deployment_score": 67.4, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -170411,8 +169246,6 @@ "deployment_score": 59.5, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -170803,8 +169636,6 @@ "deployment_score": 56.7, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -171255,8 +170086,6 @@ "deployment_score": 56.6, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -171707,8 +170536,6 @@ "deployment_score": 51.3, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 504, @@ -172099,8 +170926,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172145,8 +170970,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172191,8 +171014,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172237,8 +171058,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172283,8 +171102,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172329,8 +171146,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172375,8 +171190,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172421,8 +171234,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172467,8 +171278,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172513,8 +171322,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172559,8 +171366,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172605,8 +171410,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172651,8 +171454,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172697,8 +171498,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172743,8 +171542,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172789,8 +171586,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172835,8 +171630,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172881,8 +171674,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172927,8 +171718,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -172973,8 +171762,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173019,8 +171806,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173065,8 +171850,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173111,8 +171894,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173157,8 +171938,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173203,8 +171982,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173249,8 +172026,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173295,8 +172070,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173341,8 +172114,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173387,8 +172158,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173433,8 +172202,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173479,8 +172246,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173525,8 +172290,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173571,8 +172334,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173617,8 +172378,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173663,8 +172422,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173709,8 +172466,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173755,8 +172510,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173801,8 +172554,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173847,8 +172598,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173893,8 +172642,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173939,8 +172686,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -173985,8 +172730,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174031,8 +172774,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174077,8 +172818,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174123,8 +172862,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174169,8 +172906,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174215,8 +172950,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174261,8 +172994,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174307,8 +173038,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174353,8 +173082,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174399,8 +173126,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174445,8 +173170,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174491,8 +173214,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174537,8 +173258,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174583,8 +173302,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174629,8 +173346,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174675,8 +173390,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174721,8 +173434,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174767,8 +173478,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174813,8 +173522,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174859,8 +173566,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174905,8 +173610,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174951,8 +173654,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -174997,8 +173698,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175043,8 +173742,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175089,8 +173786,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175135,8 +173830,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175181,8 +173874,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175227,8 +173918,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175273,8 +173962,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175319,8 +174006,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175365,8 +174050,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175411,8 +174094,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175457,8 +174138,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175503,8 +174182,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175549,8 +174226,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175595,8 +174270,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175641,8 +174314,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175687,8 +174358,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175733,8 +174402,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175779,8 +174446,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175825,8 +174490,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175871,8 +174534,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175917,8 +174578,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -175963,8 +174622,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176009,8 +174666,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176055,8 +174710,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176101,8 +174754,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176147,8 +174798,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176193,8 +174842,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176239,8 +174886,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176285,8 +174930,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176331,8 +174974,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176377,8 +175018,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176423,8 +175062,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176469,8 +175106,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176515,8 +175150,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176561,8 +175194,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176607,8 +175238,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176653,8 +175282,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176699,8 +175326,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -176795,8 +175420,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176841,8 +175464,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176887,8 +175508,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176933,8 +175552,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -176979,8 +175596,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177025,8 +175640,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177071,8 +175684,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177117,8 +175728,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177163,8 +175772,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177209,8 +175816,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177255,8 +175860,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177301,8 +175904,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177347,8 +175948,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177393,8 +175992,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177439,8 +176036,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177485,8 +176080,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177531,8 +176124,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177577,8 +176168,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177623,8 +176212,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177669,8 +176256,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177715,8 +176300,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177761,8 +176344,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177807,8 +176388,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177853,8 +176432,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177899,8 +176476,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177945,8 +176520,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -177991,8 +176564,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -178087,8 +176658,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178133,8 +176702,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178179,8 +176746,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178225,8 +176790,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178271,8 +176834,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178317,8 +176878,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178363,8 +176922,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178409,8 +176966,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178455,8 +177010,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178501,8 +177054,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178547,8 +177098,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178593,8 +177142,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178639,8 +177186,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178685,8 +177230,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178731,8 +177274,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178777,8 +177318,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178823,8 +177362,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178869,8 +177406,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178915,8 +177450,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -178961,8 +177494,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179007,8 +177538,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179053,8 +177582,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179099,8 +177626,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179145,8 +177670,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179191,8 +177714,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179237,8 +177758,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179283,8 +177802,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179329,8 +177846,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179375,8 +177890,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179421,8 +177934,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179467,8 +177978,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179513,8 +178022,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179559,8 +178066,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179605,8 +178110,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179651,8 +178154,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179697,8 +178198,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179743,8 +178242,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -179839,8 +178336,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179885,8 +178380,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179931,8 +178424,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -179977,8 +178468,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180023,8 +178512,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180069,8 +178556,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180115,8 +178600,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180161,8 +178644,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180207,8 +178688,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180253,8 +178732,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180299,8 +178776,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180345,8 +178820,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180391,8 +178864,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180437,8 +178908,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180483,8 +178952,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180529,8 +178996,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180575,8 +179040,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180621,8 +179084,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180667,8 +179128,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180713,8 +179172,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180759,8 +179216,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180805,8 +179260,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180851,8 +179304,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180897,8 +179348,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180943,8 +179392,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -180989,8 +179436,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181035,8 +179480,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181081,8 +179524,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181127,8 +179568,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181173,8 +179612,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181219,8 +179656,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181265,8 +179700,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181311,8 +179744,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181357,8 +179788,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181403,8 +179832,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181449,8 +179876,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181495,8 +179920,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181541,8 +179964,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181587,8 +180008,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181633,8 +180052,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181679,8 +180096,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181725,8 +180140,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181771,8 +180184,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181817,8 +180228,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181863,8 +180272,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181909,8 +180316,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -181955,8 +180360,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182001,8 +180404,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182047,8 +180448,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182093,8 +180492,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182139,8 +180536,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182185,8 +180580,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182231,8 +180624,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182277,8 +180668,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182323,8 +180712,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182369,8 +180756,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182415,8 +180800,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182461,8 +180844,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182507,8 +180888,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182553,8 +180932,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182599,8 +180976,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182645,8 +181020,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182691,8 +181064,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182737,8 +181108,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182783,8 +181152,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182829,8 +181196,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182875,8 +181240,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182921,8 +181284,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -182967,8 +181328,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183013,8 +181372,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183059,8 +181416,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183105,8 +181460,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183151,8 +181504,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183197,8 +181548,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183243,8 +181592,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183289,8 +181636,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183335,8 +181680,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183381,8 +181724,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183427,8 +181768,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183473,8 +181812,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183519,8 +181856,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183565,8 +181900,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183611,8 +181944,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183657,8 +181988,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183703,8 +182032,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183749,8 +182076,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183795,8 +182120,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183841,8 +182164,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183887,8 +182208,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183933,8 +182252,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -183979,8 +182296,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184025,8 +182340,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184071,8 +182384,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184117,8 +182428,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184163,8 +182472,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184209,8 +182516,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184255,8 +182560,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184301,8 +182604,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184347,8 +182648,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184393,8 +182692,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184439,8 +182736,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184485,8 +182780,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184531,8 +182824,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184577,8 +182868,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184623,8 +182912,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184669,8 +182956,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184715,8 +183000,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184761,8 +183044,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184807,8 +183088,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184853,8 +183132,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184899,8 +183176,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184945,8 +183220,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -184991,8 +183264,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185037,8 +183308,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185083,8 +183352,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185129,8 +183396,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185175,8 +183440,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -185271,8 +183534,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185317,8 +183578,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185363,8 +183622,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185409,8 +183666,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185455,8 +183710,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185501,8 +183754,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -185597,8 +183848,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185643,8 +183892,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185689,8 +183936,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185735,8 +183980,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185781,8 +184024,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185827,8 +184068,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185873,8 +184112,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185919,8 +184156,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -185965,8 +184200,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186011,8 +184244,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186057,8 +184288,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186103,8 +184332,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186149,8 +184376,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186195,8 +184420,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186241,8 +184464,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186287,8 +184508,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186333,8 +184552,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186379,8 +184596,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186425,8 +184640,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186471,8 +184684,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186517,8 +184728,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186563,8 +184772,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186609,8 +184816,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186655,8 +184860,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186701,8 +184904,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186747,8 +184948,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186793,8 +184992,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186839,8 +185036,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186885,8 +185080,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186931,8 +185124,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -186977,8 +185168,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187023,8 +185212,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187069,8 +185256,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187115,8 +185300,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187161,8 +185344,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187207,8 +185388,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187253,8 +185432,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187299,8 +185476,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187345,8 +185520,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187391,8 +185564,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187437,8 +185608,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187483,8 +185652,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187529,8 +185696,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187575,8 +185740,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187621,8 +185784,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187667,8 +185828,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187713,8 +185872,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187759,8 +185916,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187805,8 +185960,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187851,8 +186004,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187897,8 +186048,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187943,8 +186092,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -187989,8 +186136,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188035,8 +186180,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188081,8 +186224,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188127,8 +186268,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188173,8 +186312,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188219,8 +186356,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -188325,8 +186460,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188371,8 +186504,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188417,8 +186548,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188463,8 +186592,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188509,8 +186636,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188555,8 +186680,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188601,8 +186724,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188647,8 +186768,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188693,8 +186812,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188739,8 +186856,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188785,8 +186900,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188831,8 +186944,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188877,8 +186988,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188923,8 +187032,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -188969,8 +187076,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189015,8 +187120,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189061,8 +187164,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189107,8 +187208,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189153,8 +187252,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189199,8 +187296,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189245,8 +187340,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189291,8 +187384,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189337,8 +187428,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189383,8 +187472,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": { @@ -189489,8 +187576,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189535,8 +187620,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189581,8 +187664,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189627,8 +187708,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189673,8 +187752,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189719,8 +187796,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189765,8 +187840,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189811,8 +187884,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189857,8 +187928,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189903,8 +187972,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189949,8 +188016,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -189995,8 +188060,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190041,8 +188104,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190087,8 +188148,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190133,8 +188192,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190179,8 +188236,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190225,8 +188280,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190271,8 +188324,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190317,8 +188368,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190363,8 +188412,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190409,8 +188456,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190455,8 +188500,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190501,8 +188544,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190547,8 +188588,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190593,8 +188632,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190639,8 +188676,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190685,8 +188720,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190731,8 +188764,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190777,8 +188808,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190823,8 +188852,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190869,8 +188896,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190915,8 +188940,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -190961,8 +188984,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191007,8 +189028,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191053,8 +189072,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191099,8 +189116,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191145,8 +189160,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191191,8 +189204,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191237,8 +189248,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191283,8 +189292,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191329,8 +189336,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191375,8 +189380,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191421,8 +189424,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191467,8 +189468,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191513,8 +189512,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191559,8 +189556,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191605,8 +189600,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191651,8 +189644,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191697,8 +189688,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191743,8 +189732,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191789,8 +189776,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191835,8 +189820,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191881,8 +189864,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191927,8 +189908,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -191973,8 +189952,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192019,8 +189996,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192065,8 +190040,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192111,8 +190084,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192157,8 +190128,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192203,8 +190172,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192249,8 +190216,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192295,8 +190260,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192341,8 +190304,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192387,8 +190348,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192433,8 +190392,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192479,8 +190436,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192525,8 +190480,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192571,8 +190524,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192617,8 +190568,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192663,8 +190612,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192709,8 +190656,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192755,8 +190700,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192801,8 +190744,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192847,8 +190788,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192893,8 +190832,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192939,8 +190876,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -192985,8 +190920,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193031,8 +190964,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193077,8 +191008,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193123,8 +191052,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193169,8 +191096,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193215,8 +191140,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193261,8 +191184,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193307,8 +191228,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193353,8 +191272,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193399,8 +191316,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193445,8 +191360,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193491,8 +191404,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193537,8 +191448,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193583,8 +191492,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193629,8 +191536,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193675,8 +191580,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193721,8 +191624,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193767,8 +191668,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193813,8 +191712,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193859,8 +191756,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193905,8 +191800,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193951,8 +191844,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -193997,8 +191888,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194043,8 +191932,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194089,8 +191976,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194135,8 +192020,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194181,8 +192064,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194227,8 +192108,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194273,8 +192152,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194319,8 +192196,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194365,8 +192240,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194411,8 +192284,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194457,8 +192328,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194503,8 +192372,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194549,8 +192416,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194595,8 +192460,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194641,8 +192504,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194687,8 +192548,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194733,8 +192592,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194779,8 +192636,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194825,8 +192680,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194871,8 +192724,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194917,8 +192768,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -194963,8 +192812,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195009,8 +192856,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195055,8 +192900,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195101,8 +192944,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195147,8 +192988,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195193,8 +193032,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195239,8 +193076,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195285,8 +193120,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195331,8 +193164,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195377,8 +193208,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195423,8 +193252,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195469,8 +193296,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195515,8 +193340,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195561,8 +193384,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195607,8 +193428,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195653,8 +193472,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195699,8 +193516,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195745,8 +193560,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195791,8 +193604,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195837,8 +193648,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -195883,8 +193692,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -196531,8 +194338,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -196577,8 +194382,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -196623,8 +194426,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -196737,8 +194538,6 @@ } } }, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": { "window_mode": "rolling_fixed", "train_days": 252, @@ -197405,8 +195204,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -197451,8 +195248,6 @@ "deployment_score": null, "common_window_score": null, "common_window_summary": null, - "overlay_common_window_summary": null, - "overlay_stress_window_summary": null, "walk_forward_summary": null, "robustness_matrix_summary": null, "out_of_time_robustness_summary": null, @@ -197481,5 +195276,5 @@ "timestamp": "2026-03-26T14:56:24.543029+00:00" } ], - "updated_at": "2026-03-27T03:43:33.985346+00:00" + "updated_at": "2026-03-27T04:05:32.124207+00:00" } \ No newline at end of file diff --git a/libs/backtest/domain.py b/libs/backtest/domain.py index 4df31c1..6035051 100644 --- a/libs/backtest/domain.py +++ b/libs/backtest/domain.py @@ -797,25 +797,6 @@ class CommonWindowSummary(BaseModel): metrics: MetricsBundle -class OverlayWindowSummary(BaseModel): - """Compact overlay run summary for full-window / stress-window evaluation.""" - - window_name: str = "overlay_window" - overlay_name: str = "" - start_date: dt.date - end_date: dt.date - initial_equity: float = 10_000.0 - final_equity: float | None = None - return_pct: float | None = None - annualized_return_pct: float | None = None - max_drawdown_pct: float | None = None - sharpe_ratio: float | None = None - day_count: int = 0 - books: list[str] = Field(default_factory=list) - allocations: dict[str, dict[str, float]] = Field(default_factory=dict) - regime_day_counts: dict[str, int] = Field(default_factory=dict) - - class ConfigDelta(BaseModel): """Records what changed from a baseline experiment.""" @@ -836,8 +817,6 @@ class JournalEntry(BaseModel): robustness_matrix_summary: RobustnessMatrixSummary | None = None out_of_time_robustness_summary: RobustnessMatrixSummary | None = None common_window_summary: CommonWindowSummary | None = None - overlay_common_window_summary: OverlayWindowSummary | None = None - overlay_stress_window_summary: OverlayWindowSummary | None = None sqs_score: float | None = None sqs_breakdown: dict[str, float] = Field(default_factory=dict) sqs_v3_score: float | None = None @@ -885,8 +864,6 @@ class RegistryEntry(BaseModel): deployment_score: float | None = None common_window_score: float | None = None common_window_summary: CommonWindowSummary | None = None - overlay_common_window_summary: OverlayWindowSummary | None = None - overlay_stress_window_summary: OverlayWindowSummary | None = None walk_forward_summary: WalkForwardSummary | None = None robustness_matrix_summary: RobustnessMatrixSummary | None = None out_of_time_robustness_summary: RobustnessMatrixSummary | None = None diff --git a/libs/backtest/overlay.py b/libs/backtest/overlay.py deleted file mode 100644 index 830003f..0000000 --- a/libs/backtest/overlay.py +++ /dev/null @@ -1,193 +0,0 @@ -"""Evaluate deterministic book overlays from daily equity curves.""" -from __future__ import annotations - -import datetime as dt -import math -from pathlib import Path -from typing import Any - -import pandas as pd - - -def load_merged_store_from_snapshot_dir( - snapshot_dir: str | Path, - *, - oracle_url: str, - db_dsn: str, -): - """Load and merge train/valid/test splits from an explicit snapshot directory.""" - from libs.backtest.snapshot_store import SnapshotStore - - base = Path(snapshot_dir) - stores = [] - for split in ("train", "valid", "test"): - if not (base / f"{split}.parquet").exists(): - continue - stores.append( - SnapshotStore.load( - snapshot_dir=base, - split_name=split, - oracle_url=oracle_url, - db_dsn=db_dsn, - ) - ) - - if not stores: - raise FileNotFoundError(f"No snapshot splits found under {base}") - - merged_candidates: dict[dt.date, dict[tuple[Any, ...], dict[str, Any]]] = {} - merged_bars: dict[str, dict[dt.date, dict[str, Any]]] = {} - merged_macro: dict[dt.date, dict[str, Any]] = {} - - for store in stores: - for exec_date in store.all_execution_dates(): - bucket = merged_candidates.setdefault(exec_date, {}) - for candidate in store.get_candidates_for_date(exec_date): - dedupe_key = ( - candidate.get("event_id"), - candidate.get("symbol"), - candidate.get("execution_date"), - candidate.get("reaction_date"), - ) - bucket.setdefault(dedupe_key, candidate) - for symbol, bars in store._bars.items(): - merged_bars.setdefault(symbol, {}).update(bars) - for macro_date, macro_values in store._macro.items(): - merged_macro.setdefault(macro_date, {}).update(macro_values) - - from libs.backtest.snapshot_store import SnapshotStore - - return SnapshotStore( - candidates_by_exec_date={ - date: list(rows.values()) - for date, rows in merged_candidates.items() - }, - bars_by_symbol_date=merged_bars, - macro_by_date=merged_macro, - ) - - -def load_equity_curve_csv(path: str | Path) -> pd.DataFrame: - """Load a paper backtest equity CSV into a normalized daily returns frame.""" - csv_path = Path(path) - df = pd.read_csv(csv_path, parse_dates=["date"]) - required = {"date", "equity"} - missing = required.difference(df.columns) - if missing: - raise ValueError(f"Missing columns in {csv_path}: {sorted(missing)}") - if df.empty: - raise ValueError(f"Equity CSV has no rows: {csv_path}") - - df = df.sort_values("date").copy() - df["date"] = pd.to_datetime(df["date"]).dt.date - df["equity"] = df["equity"].astype(float) - df["daily_return"] = df["equity"].pct_change().fillna(0.0) - return df[["date", "equity", "daily_return"]] - - -def validate_allocations( - allocations: dict[str, dict[str, float]], - labels: set[str], - *, - tolerance: float = 1e-6, -) -> None: - """Ensure each regime allocation references known labels and sums to 1.""" - if not allocations: - raise ValueError("allocations must not be empty") - if "unknown" not in allocations: - raise ValueError("allocations must include an 'unknown' regime") - - for regime, weights in allocations.items(): - unknown = set(weights).difference(labels) - if unknown: - raise ValueError( - f"Allocation for regime '{regime}' references unknown labels: {sorted(unknown)}" - ) - total = sum(float(weight) for weight in weights.values()) - if abs(total - 1.0) > tolerance: - raise ValueError( - f"Allocation for regime '{regime}' must sum to 1.0, got {total:.6f}" - ) - - -def build_overlay_curve( - *, - curves: dict[str, pd.DataFrame], - allocations: dict[str, dict[str, float]], - regimes_by_date: dict[dt.date, str], - initial_equity: float = 10_000.0, -) -> pd.DataFrame: - """Combine per-book daily returns into a single overlay equity curve.""" - labels = set(curves) - if not labels: - raise ValueError("curves must not be empty") - validate_allocations(allocations, labels) - - merged: pd.DataFrame | None = None - for label, df in curves.items(): - renamed = df.rename( - columns={ - "equity": f"equity_{label}", - "daily_return": f"daily_return_{label}", - } - ) - frame = renamed[["date", f"daily_return_{label}"]] - merged = frame if merged is None else merged.merge(frame, on="date", how="inner") - - if merged is None or merged.empty: - raise ValueError("No overlapping dates across curves") - - merged = merged.sort_values("date").copy() - merged["regime"] = merged["date"].map(regimes_by_date).fillna("unknown") - - overlay_returns: list[float] = [] - for row in merged.itertuples(index=False): - weights = allocations.get(row.regime, allocations["unknown"]) - ret = 0.0 - for label in labels: - ret += float(weights.get(label, 0.0)) * float(getattr(row, f"daily_return_{label}")) - overlay_returns.append(ret) - - merged["overlay_return"] = overlay_returns - equity = initial_equity - overlay_equity: list[float] = [] - for ret in overlay_returns: - equity *= 1.0 + float(ret) - overlay_equity.append(equity) - merged["overlay_equity"] = overlay_equity - return merged[["date", "regime", "overlay_return", "overlay_equity"]] - - -def summarize_overlay_curve(curve: pd.DataFrame, *, initial_equity: float) -> dict[str, Any]: - """Return total return, drawdown, Sharpe, and regime counts for an overlay.""" - if curve.empty: - raise ValueError("curve must not be empty") - - final_equity = float(curve["overlay_equity"].iloc[-1]) - total_return_pct = (final_equity / float(initial_equity) - 1.0) * 100.0 - - peak = float(initial_equity) - max_drawdown_pct = 0.0 - for equity in curve["overlay_equity"]: - peak = max(peak, float(equity)) - drawdown_pct = (peak - float(equity)) / peak * 100.0 if peak > 0 else 0.0 - max_drawdown_pct = max(max_drawdown_pct, drawdown_pct) - - rets = curve["overlay_return"].astype(float) - if len(rets) >= 2 and float(rets.std()) > 0: - sharpe = float(rets.mean() / rets.std() * math.sqrt(252.0)) - else: - sharpe = 0.0 - - regime_counts = { - str(regime): int(count) - for regime, count in curve["regime"].value_counts().sort_index().items() - } - return { - "return_pct": total_return_pct, - "max_dd_pct": max_drawdown_pct, - "sharpe": sharpe, - "final_equity": final_equity, - "day_count": int(len(curve)), - "regime_day_counts": regime_counts, - } diff --git a/libs/backtest/tracker.py b/libs/backtest/tracker.py index c06d0c7..fc019c8 100644 --- a/libs/backtest/tracker.py +++ b/libs/backtest/tracker.py @@ -22,7 +22,6 @@ from libs.backtest.domain import ( ReturnScoreWeights, PromotionScoreWeights, RegistryEntry, - OverlayWindowSummary, SplitResult, SQSWeights, SQSv2Weights, @@ -1316,134 +1315,6 @@ def compute_common_window_score( return round(score, 1), breakdown -def compute_overlay_window_score( - overlay_summary: OverlayWindowSummary | None, -) -> tuple[float | None, dict[str, float]]: - """Score an overlay on full-window capital growth and risk efficiency.""" - if overlay_summary is None: - return None, {} - - return_score = _normalize(overlay_summary.return_pct, low=0.0, high=180.0) - ann_score = _normalize(overlay_summary.annualized_return_pct, low=0.0, high=35.0) - sharpe_score = _normalize(overlay_summary.sharpe_ratio, low=0.0, high=3.0) - drawdown_score = _normalize_inverse(overlay_summary.max_drawdown_pct, low=12.0, high=2.5) - activity_score = _normalize(float(overlay_summary.day_count), low=250.0, high=1000.0) - - score = ( - return_score * 0.40 - + ann_score * 0.15 - + sharpe_score * 0.25 - + drawdown_score * 0.15 - + activity_score * 0.05 - ) - breakdown = { - "overlay_return": round(return_score, 1), - "overlay_annualized_return": round(ann_score, 1), - "overlay_sharpe": round(sharpe_score, 1), - "overlay_drawdown": round(drawdown_score, 1), - "overlay_activity": round(activity_score, 1), - "overlay_day_count": float(overlay_summary.day_count), - } - return round(score, 1), breakdown - - -def compute_overlay_stress_gate( - overlay_stress_summary: OverlayWindowSummary | None, -) -> tuple[float, dict[str, float]]: - """Gate overlay scores using a stress-period overlay run.""" - if overlay_stress_summary is None: - return 0.0, {"requires_overlay_stress_window": 1.0} - - pass_return = (overlay_stress_summary.return_pct or 0.0) >= 5.0 - pass_sharpe = (overlay_stress_summary.sharpe_ratio or 0.0) >= 0.50 - pass_drawdown = (overlay_stress_summary.max_drawdown_pct or 999.0) <= 10.0 - pass_count = sum([pass_return, pass_sharpe, pass_drawdown]) - gate_factor = { - 3: 1.00, - 2: 0.85, - 1: 0.65, - 0: 0.40, - }[pass_count] - return gate_factor, { - "overlay_gate_return": 1.0 if pass_return else 0.0, - "overlay_gate_sharpe": 1.0 if pass_sharpe else 0.0, - "overlay_gate_drawdown": 1.0 if pass_drawdown else 0.0, - } - - -def compute_overlay_stress_quality( - overlay_stress_summary: OverlayWindowSummary | None, -) -> tuple[float | None, dict[str, float]]: - """Diagnostic stress quality for overlay entries.""" - if overlay_stress_summary is None: - return None, {} - - return_score = _normalize(overlay_stress_summary.return_pct, low=0.0, high=20.0) - sharpe_score = _normalize(overlay_stress_summary.sharpe_ratio, low=0.0, high=1.5) - drawdown_score = _normalize_inverse(overlay_stress_summary.max_drawdown_pct, low=12.0, high=3.0) - quality = return_score * 0.45 + sharpe_score * 0.35 + drawdown_score * 0.20 - breakdown = { - "overlay_stress_return": round(return_score, 1), - "overlay_stress_sharpe": round(sharpe_score, 1), - "overlay_stress_drawdown": round(drawdown_score, 1), - } - return round(quality, 1), breakdown - - -def compute_overlay_public_sqs( - overlay_common_window_summary: OverlayWindowSummary | None, - overlay_stress_window_summary: OverlayWindowSummary | None, -) -> tuple[float | None, dict[str, float], str | None]: - """Return the official overlay score.""" - base_score, base_breakdown = compute_overlay_window_score(overlay_common_window_summary) - if base_score is None: - return None, {"requires_overlay_common_window": 1.0}, "pending_overlay_common_window" - gate_factor, gate_breakdown = compute_overlay_stress_gate(overlay_stress_window_summary) - if overlay_stress_window_summary is None: - return None, gate_breakdown, "pending_overlay_stress_window" - stress_quality, stress_breakdown = compute_overlay_stress_quality(overlay_stress_window_summary) - final_score = base_score * gate_factor - breakdown = { - "overlay_base_score": round(base_score, 1), - "overlay_gate_factor": round(gate_factor, 2), - **base_breakdown, - **gate_breakdown, - **stress_breakdown, - } - if stress_quality is not None: - breakdown["overlay_stress_quality"] = round(stress_quality, 1) - return round(final_score, 1), breakdown, "overlay_v1_common_window+stress_gate" - - -def compute_overlay_stress_sqs( - overlay_common_window_summary: OverlayWindowSummary | None, - overlay_stress_window_summary: OverlayWindowSummary | None, -) -> tuple[float | None, dict[str, float], str | None]: - """Legacy overlay score with an extra stress-quality penalty.""" - base_score, base_breakdown = compute_overlay_window_score(overlay_common_window_summary) - if base_score is None: - return None, {"requires_overlay_common_window": 1.0}, "pending_overlay_common_window" - gate_factor, gate_breakdown = compute_overlay_stress_gate(overlay_stress_window_summary) - if overlay_stress_window_summary is None: - return None, gate_breakdown, "pending_overlay_stress_window" - stress_quality, stress_breakdown = compute_overlay_stress_quality(overlay_stress_window_summary) - quality_factor = 1.0 - if stress_quality is not None: - quality_factor = 0.30 + 0.70 * (stress_quality / 100.0) - final_score = base_score * gate_factor * quality_factor - breakdown = { - "overlay_base_score": round(base_score, 1), - "overlay_gate_factor": round(gate_factor, 2), - "overlay_quality_factor": round(quality_factor, 2), - **base_breakdown, - **gate_breakdown, - **stress_breakdown, - } - if stress_quality is not None: - breakdown["overlay_stress_quality"] = round(stress_quality, 1) - return round(final_score, 1), breakdown, "overlay_v1_common_window+stress_quality" - - def _get_robustness_horizon_summary( summary: RobustnessMatrixSummary | None, horizon_days: int, @@ -1745,32 +1616,6 @@ def refresh_public_scores( updated_entries.append(entry) continue - if entry.overlay_common_window_summary is not None: - overlay_sqs, overlay_breakdown, _ = compute_overlay_public_sqs( - entry.overlay_common_window_summary, - entry.overlay_stress_window_summary, - ) - overlay_stress_sqs, overlay_stress_breakdown, _ = compute_overlay_stress_sqs( - entry.overlay_common_window_summary, - entry.overlay_stress_window_summary, - ) - refreshed = entry.model_copy( - update={ - "sqs_score": overlay_sqs, - "sqs_breakdown": overlay_breakdown, - "sqs_v3_score": overlay_sqs, - "sqs_v3_breakdown": overlay_breakdown, - "stress_sqs_score": overlay_stress_sqs, - "stress_sqs_breakdown": overlay_stress_breakdown, - "common_window_score": None, - "common_window_breakdown": {}, - } - ) - if refreshed.model_dump() != entry.model_dump(): - updated_count += 1 - updated_entries.append(refreshed) - continue - test_result = _hydrate_split_result(entry.results.get("test")) valid_result = _hydrate_split_result(entry.results.get("valid")) train_result = _hydrate_split_result(entry.results.get("train")) @@ -2036,7 +1881,6 @@ def filter_registry_entries( entries: list[RegistryEntry], *, include_retired: bool = False, - include_overlays: bool = False, ) -> list[RegistryEntry]: """Filter registry entries for the default surfaced leaderboard.""" filtered = list(entries) if include_retired else [entry for entry in entries if not entry.is_retired] @@ -2045,32 +1889,9 @@ def filter_registry_entries( for entry in filtered if ( entry.sqs_score is not None - and ( - (include_overlays and entry.strategy_family == "overlay") - or ( - entry.strategy_family != "overlay" - and entry.trade_count > 0 - and entry.valid_trade_count > 0 - ) - ) - ) - ] - - -def filter_overlay_registry_entries( - entries: list[RegistryEntry], - *, - include_retired: bool = False, -) -> list[RegistryEntry]: - """Filter registry entries for the dedicated overlay leaderboard.""" - filtered = list(entries) if include_retired else [entry for entry in entries if not entry.is_retired] - return [ - entry - for entry in filtered - if ( - entry.sqs_score is not None - and entry.strategy_family == "overlay" - and entry.overlay_common_window_summary is not None + and entry.strategy_family != "overlay" + and entry.trade_count > 0 + and entry.valid_trade_count > 0 ) ] @@ -2080,8 +1901,6 @@ def _is_retired_journal_entry(entry: JournalEntry) -> bool: def _is_complete_journal_entry(entry: JournalEntry) -> bool: - if entry.overlay_common_window_summary is not None: - return entry.sqs_score is not None test_result = entry.results.get("test") valid_result = entry.results.get("valid") return ( @@ -2365,37 +2184,7 @@ def rebuild_registry( for je in entries: strategy_family = classify_strategy_family(je.experiment_name, je.tags) is_retired = is_retired_strategy_family(strategy_family) - - if je.overlay_common_window_summary is not None: - computed_overlay_sqs, _, _ = compute_overlay_public_sqs( - je.overlay_common_window_summary, - je.overlay_stress_window_summary, - ) - computed_overlay_stress_sqs, _, _ = compute_overlay_stress_sqs( - je.overlay_common_window_summary, - je.overlay_stress_window_summary, - ) - overlay = je.overlay_common_window_summary - registry_entries.append( - RegistryEntry( - entry_id=je.entry_id, - experiment_name=je.experiment_name, - strategy_family=strategy_family, - is_retired=is_retired, - sqs_score=computed_overlay_sqs, - sqs_v3_score=computed_overlay_sqs, - stress_sqs_score=computed_overlay_stress_sqs, - common_window_score=None, - overlay_common_window_summary=je.overlay_common_window_summary, - overlay_stress_window_summary=je.overlay_stress_window_summary, - total_return_pct=overlay.return_pct, - annualized_return_pct=overlay.annualized_return_pct, - sharpe_ratio=overlay.sharpe_ratio, - max_drawdown_pct=overlay.max_drawdown_pct, - trade_count=0, - timestamp=je.timestamp, - ) - ) + if strategy_family == "overlay": continue test_result = _hydrate_split_result(je.results.get("test")) @@ -2540,9 +2329,8 @@ def rebuild_registry( registry_path.parent.mkdir(parents=True, exist_ok=True) registry_path.write_text(registry.model_dump_json(indent=2)) - # Write LEADERBOARD.md and OVERLAY_LEADERBOARD.md + # Write LEADERBOARD.md _write_leaderboard_md(leaderboard_path, registry, entries) - _write_overlay_leaderboard_md(leaderboard_path.parent / "OVERLAY_LEADERBOARD.md", registry, entries) logger.info("registry_rebuilt", count=len(registry_entries)) return registry @@ -2556,7 +2344,6 @@ def _write_leaderboard_md( visible_entries = filter_registry_entries( registry.entries, include_retired=False, - include_overlays=False, ) visible_recent = [ entry @@ -2570,7 +2357,7 @@ def _write_leaderboard_md( lines: list[str] = [] lines.append("# Strategy Improvement Leaderboard") lines.append(f"_Updated: {registry.updated_at}_\n") - lines.append("_Default view excludes overlay/book-of-books rows, retired legacy PEAD / short-core / exact-pocket families, and incomplete train-only scans. Use `fithia2 lb --overlay` for overlays or `fithia2 lb --include-retired` to inspect archived research._\n") + lines.append("_Default view excludes retired legacy PEAD / short-core / exact-pocket families and incomplete train-only scans. Use `fithia2 lb --include-retired` to inspect archived research._\n") lines.append("_`SQS` below is public SQS v4: v3 deployment/WFV-first ranking plus a modest common-window capital-growth term when available. Stress OOT remains an eligibility gate. Prior v3 values remain in `experiment_registry.json` as `sqs_v3_score`._\n") lines.append("| # | Experiment | SQS | [Tr]Ret% | [V]Ret% | [T]Ret% | [T]Ann% | [T]DD% | [T]Gross% | [T]DIM% | [T]R/G | Date |") lines.append("|---|-----------|-----|----------|----------|----------|----------|--------|------------|----------|---------|------|") @@ -2621,62 +2408,6 @@ def _write_leaderboard_md( path.write_text("\n".join(lines) + "\n") -def _write_overlay_leaderboard_md( - path: Path, - registry: ExperimentRegistry, - journal_entries: list[JournalEntry], -) -> None: - visible_entries = filter_overlay_registry_entries(registry.entries, include_retired=False) - visible_recent = [ - entry - for entry in reversed(journal_entries) - if ( - not _is_retired_journal_entry(entry) - and _is_complete_journal_entry(entry) - and classify_strategy_family(entry.experiment_name, entry.tags) == "overlay" - ) - ][:5] - lines: list[str] = [] - lines.append("# Overlay Strategy Leaderboard") - lines.append(f"_Updated: {registry.updated_at}_\n") - lines.append("_This board is separate from the default single-book leaderboard. Overlay rows are book-of-books evaluations and are not directly comparable to single-book `SQS` rows._\n") - lines.append("_`SQS` here is overlay official SQS: common-window overlay score with a stress OOT gate. `T.*` columns are common-window overlay metrics._\n") - lines.append("| # | Overlay | SQS | [T]Ret% | [T]Ann% | [T]DD% | Stress Ret% | Stress DD% | Stress Sharpe | Date |") - lines.append("|---|---------|-----|----------|----------|--------|-------------|------------|---------------|------|") - - for rank, e in enumerate(visible_entries, 1): - stress = e.overlay_stress_window_summary - ts = e.timestamp[:10] if e.timestamp else "-" - stress_ret = f"{stress.return_pct:+.1f}" if stress and stress.return_pct is not None else "-" - stress_dd = f"{stress.max_drawdown_pct:.1f}" if stress and stress.max_drawdown_pct is not None else "-" - stress_sharpe = f"{stress.sharpe_ratio:+.2f}" if stress and stress.sharpe_ratio is not None else "-" - lines.append( - f"| {rank} | {e.experiment_name} | {e.sqs_score:.1f}" - f" | {e.total_return_pct:+.1f} | {e.annualized_return_pct:+.1f} | {e.max_drawdown_pct:.1f}" - f" | {stress_ret}" - f" | {stress_dd}" - f" | {stress_sharpe}" - f" | {ts} |" - ) - - if visible_recent: - lines.append("\n## Recent Overlay Entries") - registry_by_id = {entry.entry_id: entry for entry in registry.entries} - for je in visible_recent: - canonical_sqs = registry_by_id.get(je.entry_id).sqs_score if je.entry_id in registry_by_id else je.sqs_score - lines.append(f"### {je.entry_id} ({je.timestamp[:10]}) — {je.experiment_name}") - lines.append(f"Hypothesis: {je.hypothesis}") - lines.append(f"Verdict: **{je.verdict.upper()}** (SQS {canonical_sqs})") - if je.verdict_reasoning: - lines.append(f"Reasoning: {je.verdict_reasoning}") - if je.next_direction: - lines.append(f"Next: {je.next_direction}") - lines.append("") - - path.parent.mkdir(parents=True, exist_ok=True) - path.write_text("\n".join(lines) + "\n") - - # --------------------------------------------------------------------------- # Run scanning helpers (for CLI record command) # --------------------------------------------------------------------------- diff --git a/tests/unit/backtest/test_overlay.py b/tests/unit/backtest/test_overlay.py deleted file mode 100644 index 22d0b91..0000000 --- a/tests/unit/backtest/test_overlay.py +++ /dev/null @@ -1,76 +0,0 @@ -from __future__ import annotations - -import datetime as dt - -import pandas as pd - -from libs.backtest.overlay import build_overlay_curve, summarize_overlay_curve, validate_allocations - - -def test_validate_allocations_requires_unknown_and_unit_sum() -> None: - try: - validate_allocations({"risk_on": {"core": 1.0}}, {"core"}) - except ValueError as exc: - assert "unknown" in str(exc) - else: - raise AssertionError("expected ValueError") - - try: - validate_allocations({"unknown": {"core": 0.8}}, {"core"}) - except ValueError as exc: - assert "sum to 1.0" in str(exc) - else: - raise AssertionError("expected ValueError") - - -def test_build_overlay_curve_switches_by_regime() -> None: - dates = [dt.date(2024, 1, 2), dt.date(2024, 1, 3), dt.date(2024, 1, 4)] - core = pd.DataFrame( - { - "date": dates, - "equity": [100.0, 110.0, 104.5], - "daily_return": [0.0, 0.10, -0.05], - } - ) - mom = pd.DataFrame( - { - "date": dates, - "equity": [100.0, 105.0, 110.25], - "daily_return": [0.0, 0.05, 0.05], - } - ) - regimes = { - dates[0]: "risk_on", - dates[1]: "risk_off", - dates[2]: "risk_on", - } - allocations = { - "risk_on": {"core": 0.0, "mom": 1.0}, - "risk_off": {"core": 1.0, "mom": 0.0}, - "unknown": {"core": 1.0, "mom": 0.0}, - } - - curve = build_overlay_curve( - curves={"core": core, "mom": mom}, - allocations=allocations, - regimes_by_date=regimes, - initial_equity=100.0, - ) - - assert curve["overlay_return"].round(6).tolist() == [0.0, 0.10, 0.05] - assert round(float(curve["overlay_equity"].iloc[-1]), 4) == 115.5 - - -def test_summarize_overlay_curve_reports_return_drawdown_and_regimes() -> None: - curve = pd.DataFrame( - { - "date": [dt.date(2024, 1, 2), dt.date(2024, 1, 3), dt.date(2024, 1, 4)], - "regime": ["risk_on", "risk_off", "risk_on"], - "overlay_return": [0.0, -0.10, 0.05], - "overlay_equity": [100.0, 90.0, 94.5], - } - ) - summary = summarize_overlay_curve(curve, initial_equity=100.0) - assert round(summary["return_pct"], 4) == -5.5 - assert round(summary["max_dd_pct"], 4) == 10.0 - assert summary["regime_day_counts"] == {"risk_off": 1, "risk_on": 2} diff --git a/tests/unit/backtest/test_tracker.py b/tests/unit/backtest/test_tracker.py index cb11fcf..1e9bf6d 100644 --- a/tests/unit/backtest/test_tracker.py +++ b/tests/unit/backtest/test_tracker.py @@ -13,7 +13,6 @@ from libs.backtest.domain import ( CommonWindowSummary, JournalEntry, MetricsBundle, - OverlayWindowSummary, RobustnessHorizonSummary, RobustnessMatrixSummary, SplitResult, @@ -44,8 +43,6 @@ from libs.backtest.tracker import ( compute_public_sqs_v3, compute_public_sqs_v4, compute_common_window_score, - compute_overlay_public_sqs, - compute_overlay_stress_sqs, compute_promotion_score, _compute_oot_positive_rate_63plus, compute_oot_robustness_gate, @@ -58,7 +55,6 @@ from libs.backtest.tracker import ( compute_unified_split_quality, compute_wfqs, compute_wfqs_v2, - filter_overlay_registry_entries, filter_registry_entries, get_next_entry_id, journal_lock, @@ -900,61 +896,6 @@ class TestCommonWindowScore: assert v4_strong > v4_weak -class TestOverlayPublicScore: - def test_rewards_strong_overlay_with_positive_stress_window(self): - overlay = OverlayWindowSummary( - overlay_name="return_book_overlay_v3", - start_date=dt.date(2022, 3, 3), - end_date=dt.date(2026, 3, 13), - return_pct=145.0, - annualized_return_pct=26.0, - max_drawdown_pct=4.5, - sharpe_ratio=2.62, - day_count=1014, - ) - stress = OverlayWindowSummary( - overlay_name="return_book_overlay_v3", - start_date=dt.date(2020, 1, 2), - end_date=dt.date(2021, 12, 31), - return_pct=5.95, - annualized_return_pct=2.9, - max_drawdown_pct=5.37, - sharpe_ratio=0.67, - day_count=508, - ) - public_score, breakdown, source = compute_overlay_public_sqs(overlay, stress) - stress_score, _, _ = compute_overlay_stress_sqs(overlay, stress) - assert source == "overlay_v1_common_window+stress_gate" - assert public_score is not None and public_score > 0 - assert stress_score is not None and stress_score <= public_score - assert breakdown["overlay_gate_factor"] == 1.0 - - def test_penalizes_overlay_with_flat_negative_stress_window(self): - overlay = OverlayWindowSummary( - overlay_name="return_book_overlay_v1", - start_date=dt.date(2022, 3, 3), - end_date=dt.date(2026, 3, 13), - return_pct=153.89, - annualized_return_pct=27.0, - max_drawdown_pct=4.52, - sharpe_ratio=2.72, - day_count=1014, - ) - weak_stress = OverlayWindowSummary( - overlay_name="return_book_overlay_v1", - start_date=dt.date(2020, 1, 2), - end_date=dt.date(2021, 12, 31), - return_pct=-1.26, - annualized_return_pct=-0.6, - max_drawdown_pct=3.15, - sharpe_ratio=-0.16, - day_count=508, - ) - public_score, breakdown, _ = compute_overlay_public_sqs(overlay, weak_stress) - assert public_score is not None - assert breakdown["overlay_gate_factor"] == 0.65 - - class TestComputeRQS: def test_requires_valid_and_test(self): score, breakdown = compute_rqs(None, None, None) @@ -1934,56 +1875,27 @@ class TestRebuildRegistry: assert "| # |" in lb_text assert "| # | Experiment | SQS | [Tr]Ret% | [V]Ret% | [T]Ret% | [T]Ann% | [T]DD% | [T]Gross% | [T]DIM% | [T]R/G | Date |" in lb_text - def test_registry_and_leaderboard_split_overlay_entry(self, tmp_path): + def test_registry_skips_legacy_overlay_entries(self, tmp_path): journal_path = tmp_path / "journal.jsonl" registry_path = tmp_path / "registry.json" leaderboard_path = tmp_path / "LEADERBOARD.md" - overlay_leaderboard_path = tmp_path / "OVERLAY_LEADERBOARD.md" entry = JournalEntry( entry_id="IMP-0001", timestamp="2026-03-25T22:00:00+00:00", experiment_name="return_book_overlay_v3", hypothesis="overlay", - overlay_common_window_summary=OverlayWindowSummary( - overlay_name="return_book_overlay_v3", - start_date=dt.date(2022, 3, 3), - end_date=dt.date(2026, 3, 13), - return_pct=145.0, - annualized_return_pct=26.0, - max_drawdown_pct=4.5, - sharpe_ratio=2.62, - day_count=1014, - ), - overlay_stress_window_summary=OverlayWindowSummary( - overlay_name="return_book_overlay_v3", - start_date=dt.date(2020, 1, 2), - end_date=dt.date(2021, 12, 31), - return_pct=5.95, - annualized_return_pct=2.9, - max_drawdown_pct=5.37, - sharpe_ratio=0.67, - day_count=508, - ), tags=["overlay"], ) append_journal_entry(journal_path, entry) registry = rebuild_registry(journal_path, registry_path, leaderboard_path) visible = filter_registry_entries(registry.entries) - overlay_visible = filter_overlay_registry_entries(registry.entries) assert len(visible) == 0 - assert len(overlay_visible) == 1 - assert overlay_visible[0].strategy_family == "overlay" - assert overlay_visible[0].sqs_score is not None - assert overlay_visible[0].total_return_pct == 145.0 - assert overlay_visible[0].annualized_return_pct == 26.0 + assert registry.entries == [] lb_text = leaderboard_path.read_text() - overlay_lb_text = overlay_leaderboard_path.read_text() assert "return_book_overlay_v3" not in lb_text - assert "Default view excludes overlay/book-of-books rows" in lb_text - assert "return_book_overlay_v3" in overlay_lb_text - assert "Overlay Strategy Leaderboard" in overlay_lb_text + assert "Default view excludes retired legacy PEAD" in lb_text def test_registry_preserves_walk_forward_summary(self, tmp_path): journal_path = tmp_path / "journal.jsonl" diff --git a/tests/unit/paper_trader/test_cli.py b/tests/unit/paper_trader/test_cli.py index cccabd0..1babcc7 100644 --- a/tests/unit/paper_trader/test_cli.py +++ b/tests/unit/paper_trader/test_cli.py @@ -8,7 +8,7 @@ from rich.console import Console from apps.paper_trader import cli -def test_resolve_rank_configs_skips_overlay_rows_and_warns(tmp_path: Path, monkeypatch) -> None: +def test_resolve_rank_configs_selects_runnable_single_book_rows(tmp_path: Path, monkeypatch) -> None: monkeypatch.chdir(tmp_path) journal_dir = tmp_path / "journal" journal_dir.mkdir(parents=True) @@ -19,17 +19,16 @@ def test_resolve_rank_configs_skips_overlay_rows_and_warns(tmp_path: Path, monke registry = { "entries": [ { - "experiment_name": "return_book_overlay_v3", - "strategy_family": "overlay", + "experiment_name": "return_max_long_missing", + "strategy_family": "return_max_long", "sqs_score": 81.6, - "trade_count": 0, - "valid_trade_count": 0, - "overlay_common_window_summary": {"return_pct": 145.0}, + "trade_count": 10, + "valid_trade_count": 3, "is_retired": False, }, { "experiment_name": "return_max_long_demo", - "strategy_family": "pead", + "strategy_family": "return_max_long", "sqs_score": 70.0, "trade_count": 10, "valid_trade_count": 3, @@ -46,6 +45,4 @@ def test_resolve_rank_configs_skips_overlay_rows_and_warns(tmp_path: Path, monke configs = cli._resolve_rank_configs(1, 1) assert configs == ["configs/experiments/return_max_long_demo.json"] - output = console.export_text() - assert "Skipping overlay leaderboard entries for `--top/--rank`" in output - assert "return_book_overlay_v3" in output + assert console.export_text() == "" diff --git a/tests/unit/paper_trader/test_overlay_backtest.py b/tests/unit/paper_trader/test_overlay_backtest.py deleted file mode 100644 index 80d9428..0000000 --- a/tests/unit/paper_trader/test_overlay_backtest.py +++ /dev/null @@ -1,75 +0,0 @@ -from __future__ import annotations - -import datetime as dt -import json -from pathlib import Path - -import pandas as pd - -from apps.paper_trader.backtest_sim import run_overlay_backtest_sync - - -def _write_equity_csv(path: Path, rows: list[tuple[str, float]]) -> None: - df = pd.DataFrame(rows, columns=["date", "equity"]) - path.parent.mkdir(parents=True, exist_ok=True) - df.to_csv(path, index=False) - - -def test_run_overlay_backtest_sync_replays_frozen_equity_csv(tmp_path: Path) -> None: - core_csv = tmp_path / "core.csv" - mom_csv = tmp_path / "mom.csv" - _write_equity_csv(core_csv, [("2025-01-02", 100.0), ("2025-01-03", 110.0), ("2025-01-06", 121.0)]) - _write_equity_csv(mom_csv, [("2025-01-02", 100.0), ("2025-01-03", 90.0), ("2025-01-06", 81.0)]) - - spec = { - "overlay_name": "overlay_demo", - "books": [ - {"label": "core", "equity_csv": str(core_csv)}, - {"label": "mom", "equity_csv": str(mom_csv)}, - ], - "allocations": { - "unknown": {"core": 0.5, "mom": 0.5}, - }, - } - spec_path = tmp_path / "overlay.json" - spec_path.write_text(json.dumps(spec)) - - result = run_overlay_backtest_sync( - overlay_config_path=str(spec_path), - capital=100.0, - start_date=dt.date(2025, 1, 2), - end_date=dt.date(2025, 1, 6), - ) - - assert result["is_overlay"] is True - assert result["overlay_replay_mode"] == "frozen_equity_csv" - assert round(result["summary"]["return_pct"], 4) == 0.0 - assert result["summary"]["trade_count"] == 0 - - -def test_run_overlay_backtest_sync_rebases_window_from_frozen_curves(tmp_path: Path) -> None: - core_csv = tmp_path / "core.csv" - _write_equity_csv(core_csv, [("2025-01-02", 100.0), ("2025-01-03", 200.0), ("2025-01-06", 400.0)]) - - spec = { - "overlay_name": "overlay_demo", - "books": [ - {"label": "core", "equity_csv": str(core_csv)}, - ], - "allocations": { - "unknown": {"core": 1.0}, - }, - } - spec_path = tmp_path / "overlay.json" - spec_path.write_text(json.dumps(spec)) - - result = run_overlay_backtest_sync( - overlay_config_path=str(spec_path), - capital=100.0, - start_date=dt.date(2025, 1, 3), - end_date=dt.date(2025, 1, 6), - ) - - assert result["overlay_replay_mode"] == "frozen_equity_csv" - assert round(result["summary"]["return_pct"], 4) == 100.0 - assert round(result["summary"]["final_equity"], 4) == 200.0 diff --git a/tests/unit/tools/test_evaluate_book_overlay.py b/tests/unit/tools/test_evaluate_book_overlay.py deleted file mode 100644 index 8d390ac..0000000 --- a/tests/unit/tools/test_evaluate_book_overlay.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import annotations - -import datetime as dt - -from apps.tools import evaluate_book_overlay as mod - - -class _FakeStore: - def __init__(self) -> None: - self._dates = [dt.date(2025, 1, 2), dt.date(2025, 1, 3)] - - def slice_by_date_range(self, start: dt.date, end: dt.date): - self._dates = [d for d in self._dates if start <= d <= end] - return self - - def all_trading_days(self): - return list(self._dates) - - def get_macro_for_date(self, date: dt.date): - return {"state": f"regime-{date.isoformat()}"} - - -def test_compute_regimes_uses_merged_store(monkeypatch) -> None: - fake_store = _FakeStore() - - monkeypatch.setattr(mod, "load_manifest", lambda path: object()) - monkeypatch.setattr(mod, "resolve_config", lambda manifest, config_root=".": object()) - monkeypatch.setattr(mod, "_build_merged_snapshot_store", lambda manifest, config, snapshot_dir_override=None: fake_store) - monkeypatch.setattr(mod, "_macro_regime_state", lambda config, macro: macro["state"]) - - regimes = mod._compute_regimes( - snapshot_dir="data/parquet/example_snapshot", - split="train", - config_path="configs/experiments/example.json", - start_date=dt.date(2025, 1, 2), - end_date=dt.date(2025, 1, 3), - ) - - assert regimes == { - dt.date(2025, 1, 2): "regime-2025-01-02", - dt.date(2025, 1, 3): "regime-2025-01-03", - } - - -def test_compute_regimes_prefers_explicit_snapshot_dir(monkeypatch, tmp_path) -> None: - snapshot_dir = tmp_path / "snap" - snapshot_dir.mkdir() - (snapshot_dir / "train.parquet").write_text("stub") - - fake_store = _FakeStore() - - monkeypatch.setattr(mod, "load_manifest", lambda path: object()) - monkeypatch.setattr(mod, "resolve_config", lambda manifest, config_root=".": object()) - monkeypatch.setattr(mod, "load_merged_store_from_snapshot_dir", lambda snapshot_dir, oracle_url, db_dsn: fake_store) - monkeypatch.setattr(mod, "_build_merged_snapshot_store", lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("should not be called"))) - monkeypatch.setattr(mod, "_macro_regime_state", lambda config, macro: macro["state"]) - - regimes = mod._compute_regimes( - snapshot_dir=snapshot_dir, - split="train", - config_path="configs/experiments/example.json", - start_date=dt.date(2025, 1, 2), - end_date=dt.date(2025, 1, 3), - ) - - assert regimes == { - dt.date(2025, 1, 2): "regime-2025-01-02", - dt.date(2025, 1, 3): "regime-2025-01-03", - }