Skip to content

The web page: today's setups with a plan, the watchlist and the live track record - #118

Merged
yanivil merged 1 commit into
mainfrom
feat/site
Sep 9, 2026
Merged

yanivil merged 1 commit into
mainfrom
feat/site

Conversation

@yanivil

@yanivil yanivil commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Summary

PR 2 of the website plan: the page itself, built from the nightly scan and the live track record. Deployment to GitHub Pages is PR 3.

What it shows (one self-contained index.html, light and dark themes, no external assets)

  • Market strip: SPY against its SMA200, regime, VIX, breadth; the scan date, bar and universe; a callout when the last bar is stale or the scan reported errors.
  • One card per confirmed row: the buy zone (entry to Max buy), the stop with its distance, the target with the reward and R:R, an action line that restates the report's rule graded by the row's day on the list (Late entry: buying a signal on its Nth day on the list versus at its first report #115: days 1-2 enter, days 3-6 late, from day 7 no entry, a Wolfe from day 6), chips for the regime, trend, volume and fear-and-greed, the pattern anchors, and the eleven-year figure for that pattern.
  • The watchlist with the distance to each trigger and the anchors folded under it; the rows closed since the previous report.
  • The track record: every signal counted once at its first report with the backtest's accounting (Live track record: score the committed signals with the backtest's accounting #117), a cumulative-R curve, open / closed filters, and the replay figures for scale.
  • A glossary and the reference tables (per pattern, late entry).

How

  • tools/build_site.py --signals output/signals.json --evaluation evaluation.json --out-dir _site writes index.html and data.json (the view model); site/style.css and site/app.js are inlined; --fragment writes the page without the document wrapper. Every number is the scanner's or the evaluator's; the day on the list comes from the evaluator's listed_days when its last_listed is the row's own session, else the card says the first report is unknown.
  • REPLAY_REFERENCE carries the tuning page's figures with their run IDs (34323013559 to 34323039560).
  • Tests in test_build_site.py (suite: 147), README layout, wiki 01 and 04, changelog. .claude/ is ignored (the local preview server config).

Checked in the browser with today's scan (2026-09-09 06:00 UTC: HAL on its fourth day, five watchlist rows, three closed rows) and the six live evaluation rows of #117: desktop light and dark, and a 390 px mobile width.

Test plan

  • ruff --select E,F,W --line-length 120 clean, 147 tests pass locally
  • built and reviewed at desktop and mobile widths, light and dark
  • tests workflow on this PR

🤖 Generated with Claude Code

tools/build_site.py renders output/signals.json and the evaluator's JSON
into one self-contained index.html plus data.json: the market strip, one
card per confirmed row with the buy zone, stop, target and an action line
graded by the row's day on the list (#115), the watchlist with the distance
to each trigger, the rows closed since the previous report, the track record
with its cumulative-R curve, a glossary and the eleven-year reference tables.
site/style.css and site/app.js are inlined; light and dark. Tests, README,
wiki 01 and 04, changelog. Deployment follows in its own change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@yanivil
yanivil merged commit 2a349d1 into main Sep 9, 2026
4 of 5 checks passed
@yanivil
yanivil deleted the feat/site branch September 9, 2026 08:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant