@@ -18,7 +18,8 @@ python -m src.cli run-live-forward-daily --as-of YYYY-MM-DD
1818
1919The command performs these steps in order:
2020
21- 1 . Incrementally refreshes market data and evaluates portfolios frozen before the current session.
21+ 1 . Incrementally refreshes market data and evaluates portfolios frozen before the current session,
22+ including one holding-level return record per selected stock.
22232 . Waits for the final 15:30 hourly bar and verifies the official daily close is available.
23243 . Rebuilds price features through the decision date.
24254 . Builds forward-return training labels only where the future outcome was already known before the
@@ -27,6 +28,7 @@ The command performs these steps in order:
2728 configurations, and freezes both top-40 lists for the next evaluation session.
28296 . Writes model-agreement and day-over-day selection-stability diagnostics.
29307 . Rebuilds ` reports/live_forward/dashboard.html ` .
31+ 8 . Publishes and validates the sanitized static bundle under ` site/ ` for GitHub Pages.
3032
3133If final market data is unavailable, the command retries and then fails closed. It must not create a
3234snapshot from a partial trading day.
@@ -52,6 +54,11 @@ previous official close, not to the session open.
5254The date controls aggregate every completed observation in the selected range. Because the top-40
5355holdings can change each day, each session uses the list frozen before that session.
5456
57+ The stock-level view defaults to the newest decision date with a completed holding-level evaluation.
58+ The newest frozen portfolios remain available in the selector with a ` Pending ` label until their next
59+ session closes. Experiment history defaults to the newest evaluation date and can be filtered by
60+ evaluation date or selected model, limited to a compact number of rows, and sorted by any column.
61+
5562## Selection-stability metrics
5663
5764All dashboard insights are deterministic calculations; no LLM API is required.
@@ -76,9 +83,15 @@ Generated outputs remain under the ignored `reports/live_forward/` directory:
7683- dated Ridge and XGBoost snapshot directories with manifests, tuning results, predictions, and
7784 selected holdings;
7885- intraday and close-to-close evaluation files for each frozen portfolio;
86+ - holding-level returns, benchmark-relative returns, and beat-SPY indicators for completed sessions;
7987- ` selection_stability_YYYY-MM-DD.json ` ;
8088- ` dashboard.html ` .
8189
90+ The daily command also refreshes the tracked ` site/ ` directory. It contains only the allowlisted
91+ dashboard fields and split static assets required by GitHub Pages. See the
92+ [ deployment guide] ( GITHUB_PAGES_DEPLOYMENT.md ) for the privacy boundary, validation command, and
93+ one-time repository setting.
94+
8295Keep source code, configurations, tests, and documentation in Git. Do not commit cached prices,
8396trained artifacts, generated reports, credentials, or temporary pytest directories.
8497
0 commit comments