Updates to the current release of the Golden Picks Report, newest first. No version numbers: each entry patches the release already running.
2026-11-12 · Forward-test tracker for the raised floor; design inspector reports zero findings
Recent form now leads with a "Since floor raise" tile: picks starting on or after 2026-11-12 (the day the live floor rose from 0.60 to 0.62) grading as they go. This is the forward test of the raised floor — the back-test said 71.3% at the old floor becomes 73.5% at the new one, and this tile is where it is confirmed once picks grade. It reads "—" until a pick starts after the raise and grades.
The Golden vs red page's above-fold now fits cleanly: "Today on the board & daily parlays" and "Lab studies" each fold under their own disclosure beside the existing "Deeper stats" fold. The design inspector now reports zero findings (no FAIL, no WARN) at 1440 / 768 / 390 widths.
2026-11-12 · Live golden floor raised to 62%; pipeline prunes non-Prime; headline latency reflects the stable regime
The live golden floor was raised from 60% to 62% after the sub-band drag study showed the 60-65% band dragging at 63.6% of 330 picks. The brackets page now reads 405-127-19 at 73.5% on 551 settled rows (up from 500-174-27 at 71.3% on 701 at the old floor): a realized +2.2 pts measured improvement, at the cost of about 21% of the published pick volume. Paper units at the fair price went from +42.42u to +36.58u. Past picks that were golden at 60% keep their records in pick-history; only new publishing uses the tighter floor. BANDS and GOLDEN_BANDS split cleanly at the new boundary (62-70%, 50-62%, and 62-65% for the finer bins).
buildScoreboard now prunes non-Prime upcoming golden picks from the written scoreboard. The scoreboard.json served over SSE and loaded from disk no longer carries Standard or Doubted upcoming picks at all — the auto-prune is a pipeline-level filter, not a view toggle. In-play and just-finished starred picks are never pruned so live action stays visible; the Schedule page (which reads the ledger directly) still shows everything; pick-history still logs it all. Controlled by opts.primeOnly on SB, default true.
Settle latency headlines "Current regime (since 2026-11-02)" — the day the pipeline stabilised after the 10-31 catch-up event. The displayed p90 is now 11 min (vs the all-rows p90 of 1547 min which was dragged by the one-off backlog). The full history is still readable under a disclosure, honestly tagged as including the catch-up event. The "Last 7 days" window remains for the right-now signal.
Everything from "By sport" down on the Golden vs red page now folds under a single "Deeper stats" disclosure, so the first screen shows only the Prime hero, Golden and Red brackets, Recent form tiles, today's picks on the board, parlays and the lab studies. The design inspector's below-fold count went from 8 of 32 blocks to 9 of 20.
2026-11-12 · Pipeline default is Prime; brackets lead with a 3-card row; mobile cards compact
The Live board now defaults to the Prime filter on a fresh visit. New browsers see only Prime-tier upcoming picks (model or bookmaker 70%+, bookmaker not under 60%) alongside every in-play or just-finished starred match, so live action never vanishes but Standard and Doubted upcoming picks are automatically pruned from the first view. Standard and Doubted still log on the page and in pick-history. A browser that saved its own filter keeps its choice; one tap on "All" shows everything.
Golden vs red leads with a 3-card top row: Prime first (the pipeline default), then Golden and Red for the broader view. Prime gets its own bar with the all-golden 71.3% baseline as the reference line, so the lift reads at a glance.
On mobile, the bracket cards compact so three of them fit within the first screen without the bottom tab bar covering the last record. Record font and padding shrink; the tier signal stays.
2026-11-11 · Prime is the headline; auto-pruned alerts; honest settle-latency window
The Golden vs red page now leads with a Prime hero card: 219-48 (82%), with a "+10.7 pts vs all golden" tag that names the lift against the all-golden baseline (71.3%). Prime is the top tier (model or bookmaker 70%+, bookmaker not under 60%), and the hero verdict carries through from the tier study ("above 75% (back-test)"). The broader Golden and Red brackets sit below as context, not as the headline.
Desktop alerts now auto-prune to Prime by default. On a new browser, "Prime only" is on without anyone touching the toggle, so the first alerts heard are 82% back-tested picks only; Standard and Doubted still log on the page. A browser that already saved a different choice before 2026-11-11 keeps it; the toggle is still under "Which alerts pop up" to turn it off.
Settle latency now splits into "Last 7 days" (the current-pipeline view) on top and "All-time" below. A one-off historical catch-up batch no longer drags the headline: last week landed 12 settles with 1 late (8.3%), p50 3 min, p90 4 min; the all-time figures (which still carry the 10-31 catch-up event) read 12 late of 29 (41.4%), p50 6 min, p90 1547 min. The "Last 7 days" block is the signal for whether the live pipeline is healthy right now.
2026-11-11 · Golden threshold what-if, softer bracket cards, and a cleaner mobile top bar
Golden threshold what-if: a new table on Golden vs red back-tests higher floors on every pick the ledgers have. On today's data, raising the floor from 60% to 65% would have lifted the hit rate from 71.3% to 78.2% (+6.8 pts over 371 settled picks), clearing the 75% bar; 70% reaches 82.0% on 189 picks, 75% reaches 83.1% on 89. The live floor stays at 60% — the table is a measurement of where the drag lives, not a change to how picks are judged. Paper units also move: 60% today earns +42.42u, 65% earns +34.95u; higher hit rate, fewer picks.
Bracket card tops are now a soft 3px inner highlight rather than a 4px border, so the Golden vs red page reads as one surface instead of a grid of boxes. The gold and red tier signal is kept.
Mobile top bar is now just the brand and the active tab. The horizontal nav row is hidden on narrow screens (under 760px) — the bottom tab bar already holds Live, Picks, History, Tennis and All pages, and the "All pages" tab opens the full map. Removes a strip of noise at the top of every mobile page, cuts about 40 pixels of vertical space the content gets back, and ends the half-cut-off label at the right edge.
The Golden vs red intro is one short line instead of a five-line paragraph, with a jump link to the new what-if table.
2026-11-11 · Pick-rate stats, settle latency, and Prime-only desktop alerts
Golden vs red page: four new sections grounded in the live settled.json. "Recent form" tiles show the last 7 days, 30 days, 50 graded and 100 graded (rolling counts so a quiet day does not blank the page). "By league" aggregates each sport's leagues with 10+ settled picks, so tennis's ATP (70.5% of 149) and WTA (73.4% of 192) finally sit side by side. "Golden sub-bands" breaks the 60–70% band into 5-point bins (60–65% / 65–70% / 70–75% / 75–80% / 80%+): if the 60–65% band is dragging, it will show here. "Settle latency" reports graded, on-time, late, and p50 / p90 / p95 latency against the SLA target, with per-sport p50 / p95 / max.
Prime-only desktop alerts: a "Prime only" checkbox under the alerts section on the Live page. When on, this browser pops a desktop notification only for Prime-tier golden alerts (model or bookmaker 70%+, bookmaker not under 60%; 82.3% of 260 back-tested). Standard and Doubted alerts still land in the page's alert log, so nothing is lost; finals and call-offs still pop no matter the tier, so a hidden pick never silently ends. Each pick's pre-game tier now rides in the live state, sticky through kick-off so an in-play swing or final knows which tier it belonged to. The choice is kept per browser; no setting is shared or sent anywhere.
2026-11-11 · A SWING is not called after a wobble either
Fix: an ESPN board that flipped a match from "in play" to "post" (with no result) and back to "in play" could fire a spurious SWING on the first result change after the wobble (seen 2026-11-10 at 18:03 POSTPONED then 18:06 SWING for Holger Rune). Once POSTPONED is called for a pick, SWING is suppressed for that pick until the final. The FINAL heads-up still fires normally, so a genuinely postponed and resumed match is covered.
2026-11-10 · Kick-off is called once, even when ESPN flakes
Fix: an ESPN board that flipped a match from "in play" back to "scheduled" and then forward again (seen 2026-11-10 at 19:06 and 19:08 for Lorenzo Musetti) used to fire the START heads-up twice. Each pick now keeps a sticky "started" mark the moment we first see it in play, so a second flip never reads as a fresh kick-off.
2026-11-10 · Golden tiers: Prime, Standard, Doubted
All golden picks together win under 75% (71.5% of 687 graded on 2026-11-10). The Golden vs red page now sorts them into tiers by two chances known before the start: the model's and, where ESPN carries one, the bookmaker's for the same side. Prime: a golden pick the model or the bookmaker rates 70%+, and the bookmaker does not rate under 60%; such picks won 82.3% of 260 (80.7% on the earlier picks, 83.6% on the later ones). Doubted: a golden pick the bookmaker rates under 60%; they won 41.4% of 58. Standard: every other golden pick; they won 68.6% of 369, and 64.9% on the later picks.
Market-backed: a pick that is not golden but the bookmaker rates 70%+. Such picks won 85.5% of 62. That is the bookmaker's call, not the model's, and the later picks (28-5) are not clear of 75% yet.
On the Live board, before the start, a Prime pick carries a gold "Prime" chip and a market-backed pick a "Market-backed" chip, each with how such picks have done, and a "Prime" filter lists only our upcoming Prime picks. A card reads the latest price, so a pick's tier can change until the start, and the chip leaves once play starts. Tennis and League of Legends have no bookmaker price, so their tier rests on the model's chance alone; Polymarket's tennis price never moves a tier.
This is a back-test, not proof. The 70% and 60% lines were chosen after seeing these results, with other lines tried beside them, so they can fall short on new picks. The page's "Since 2026-11-10" column is the test: a tier is called proven only when 30 or more picks graded since then clear 75%. Nothing here shows the model beating the market, and the paper units are a measurement, not advice.
2026-11-09 · The live report runs on this PC
The report is now its own web page on this computer: http://127.0.0.1:8787/ (node serve.mjs, or the NhatFinanceLocalLive task, which starts it at sign-in and restarts it if it stops). It serves the Live page and every report page, game page and daily report. It runs the live scores itself every minute, so the board refreshes every 30 seconds while a match is in play, and it pushes each new board to the open page the moment it is written instead of the page checking every 15 seconds. Nothing on it leaves this computer, and it costs nothing.
Alerts on this PC: the Live page opened from the local server lists what happens to our golden and lab picks: a market turn before the start, kick-off, a swing, a drop under 40%, the final, a call-off. Once "Turn on desktop alerts" is allowed, each pops up as a desktop notification. Which kinds pop up is chosen on the page and kept in this browser. The alerts follow the same rules as the phone report's live monitor, and a match that ended while the server was off is not announced.
The local server answers this computer only. Other devices, and web pages that point their own names at it, are refused. It hands out the report's pages and the live board, never the ledgers, logs or code.
The cloud site (Cloudflare) was removed on 2026-11-09 at the owner's request, and its live board, Booth and alerts now run on this PC instead. The fan zone and the AI call need a shared, Claude-hosted page, so they stay on the phone report.
2026-11-08 · Pick knowledge on the live cards
Each pick on the Live board now shows what the report knows besides the model's own chance. Calibrated: where the calibration lab has proven that a sport's golden picks win more often than stated (soccer today), a golden pick's chance after that correction, so a 72% soccer pick reads about 83%. Market: the betting market's price for the pick's side when a tennis pick was stamped. Neither is shown where the report does not know it; both refresh with every settle run.
Record: each golden pick also shows how its sport's golden picks have done so far, graded (soccer 74.7% of 178, tennis 72.1% of 341, MLB 63.3% of 90 and NFL 62.5% of 24 today; hover for what they said on average), and the Booth's kick-off call for our pick says it too. A sport needs 20 graded golden picks before it gets a record, so League of Legends shows none yet.
Where a pick's own league has 20 graded golden picks and the sport has more than that league, the card shows the league's record instead (WTA 73.4% of 192, ATP 70.5% of 149, Primeira Liga 90.5% of 21 today), with the whole sport's in the hover text.
Calibrated is shown on golden picks only: the correction was fitted on golden picks and proves nothing about a pick under 60%.
Book: before the start, a soccer, NFL or MLB pick also shows the bookmaker's chance for the same side (DraftKings, from ESPN's boards, with the bookmaker's margin taken out). On the first sweep, 53 of 54 picks starting soon had one. Once the line has moved a point since it opened, the chip shows where it opened, with a green arrow when it moved toward our pick and a red one when it moved away. Its hover text says how the closing price has forecast that sport against our chance (soccer: the close did better, 0.220 against 0.237 on 1,567 graded picks). It is a price, not a result, and it leaves the card once play starts.
Against the closing price: a finished match's ESPN summary keeps DraftKings' opening and closing price, so every graded soccer, NFL and MLB pick now gets its closing line (data/book-summary.jsonl, one row per pick): read at each final from the summary settle already fetches, and for picks graded before today, a dozen each run until the history is done (or all at once with node backfill-close.mjs). Each sweep also logs the price the report first read for a pick and its last read before the start (data/book-close.jsonl). The Golden vs red page grades the picks against the close: did they win more often than the closing price said, did the line move toward them, and what one paper unit on each would have returned at that price. The verdict needs 30 graded picks. On the first 1,965 graded picks with a close, the closing price forecast better than our chance in soccer, MLB and NFL, and our picks show no edge over it.
Where we and the close disagree: the Golden vs red page now groups graded picks by how far our chance sat from the closing price and by which way the line moved, each group judged on the earlier 60% of picks and again on the later 40%. Picks we rated 10+ points above the close won 28.9% of 339 (we said 48.3%, the close 31.8%). A pick on the Live board that sits 5+ points from the bookmaker now says so, with how such picks have done (for example "Far above the book · won 28.9%"). The Booth's kick-off call for a golden or lab pick also says where the market stood at the last look before the start.
Daily tests: a game that ESPN never showed in play, which the board sweep's own timeline confirms, is now set aside from "Tracked live while in play" like a walkover, and named, instead of failing the watcher. On 2026-11-07 ESPN published no live scores for the Stockholm Open (7 golden picks), and every other tournament was tracked in play every time. Long lists in a check now say how many more there are.
The AI call now knows what the report knows: for our pick it also gets the pick's record (its league's golden record when the league has 20 graded picks, else the sport's) and the Calibrated chance, and it is told to say them as facts, never as promises.
Market agrees / Market doubts: a golden pick with a bookmaker's price now says whether the market also rates it 60% or more, with how such golden picks have done. Golden picks the closing price also rated 60%+ won 78.2% of 238 (we said 66.7%, the close 72.3%), and the earlier and later picks lean the same way. Golden picks it rated under 60% won 41.4% of 58. The Golden vs red page judges both groups on the earlier and later picks.
The daily test report now shows each golden game's closing price ("doubted" under 60%) and a line under the verdict splitting the day by whether the market agreed (for example "Market agreed 11-1 · doubted 1-0").
Tennis cards' Market chip now shows Polymarket's latest price for the pick, with where it stood when the pick was first stamped once it has moved a point (for example "Market 69.5% ▼ from 75%"). It reaches the cloud board through the knowledge file.
The Picks page (the schedule) now carries the market too. Each upcoming golden pick shows the latest price the report read for its side and when it was read (the bookmaker's in soccer, NFL and MLB; Polymarket's in tennis), with "Market agrees" or "Market doubts" and how such golden picks have done where the record exists. Each graded golden pick shows its closing price and whether the market agreed (60%+) or doubted. A pick in play shows neither: a pre-game price is not a live one.
Market turns: before the start, the live monitor now sends a heads-up when the market crosses 60% on a golden pick, either way, in the form "MARKET Golden (pick) 68.8%: the market now doubts it, the book has it at 58.5% (was 61%) · golden picks the close rated under 60% won 41.4% of 58". The price has to be a full point past 60% before a turn is called, so a price sitting on the line stays quiet, and the cloud alerts send each side once. Between the opening line and the close, 18 of 302 graded golden picks crossed 60% by a full point (32 crossed it at all) over 54 days, so it is a few heads-ups a week at most: the board only sees the prices from when ESPN lists the match. Tennis uses Polymarket's price and tennis's own record, once it has one.
A "Market agrees" filter on the Live board: one tap lists only our upcoming golden picks that the market also rates 60% or more (the bookmaker's price in soccer, NFL and MLB; Polymarket's in tennis, once tennis has its own record). That is the strongest group the closing-price study found: golden picks the close also rated 60%+ won 78.3% of 244, against 41.4% of 58 for those it rated under 60%. The chip shows only while such a pick is on the board. It is a view of the facts, not a bet.
Tennis gets its own Market agrees / Market doubts note: once 30 graded golden tennis picks have a Polymarket closing price, a golden tennis pick before the start says whether Polymarket's latest price also rates it 60% or more, with how such golden tennis picks have done against Polymarket's close. It never borrows the bookmaker's soccer, NFL and MLB record. On 2026-11-09 no graded tennis pick had a Polymarket close yet, so tennis cards show no note until the record is there. The AI preview now also gets a tennis pick's Polymarket price before the start, named as Polymarket's and never as the bookmaker's.
Tennis joins the closing-price study: ESPN publishes no tennis odds, so each 30-minute Polymarket refresh now prices every upcoming tennis pick it covers. The first and last price before the start are kept, and the close is logged once the match is underway (data/poly-open.json, then data/book-close.jsonl). As tennis picks are graded they appear in "Against the closing price", the disagreement bands and the market-agreement split. The first refresh priced 32 upcoming picks, 20 of them golden.
Pick history now shows each golden pick's closing price ("doubted" where the market rated it under 60%) and a "By market" record. Golden picks the close also rated 60%+: 189-31-22 (78.1%), +40.92 paper units. Golden picks it rated under 60%: 24-29-5 (41.4%), -21.15 units. Units are at the model's fair price, as everywhere on the page.
AI preview: when nothing is in play, the AI button on the phone reads "AI preview: our next picks". It asks Claude for a one-line preview of each of the next golden and lab picks (up to eight), from the report's facts only: when it starts, our chance, the bookmaker's price and how it moved, the NFL spread, whether the market agrees and how such picks have done. Where the market doubts a golden pick, the preview says so plainly. In play it is the live call, as before.
The forward test: the "Where we and the close disagree" table has a "Since 2026-11-09" column, which counts only picks starting on or after the day the market notes went on the cards. "Market agrees · won 78%" was measured on past picks; this column shows whether it holds on picks made after the claim went up.
The kick-off heads-up for a golden or lab pick now says where the market stood at the last look before the start, for example "START Golden Chicago Bears 76.1% is live … · the book had it at 70%, the market agreed".
NFL cards now show the point spread before kick-off, next to the pick's chance (for example "Detroit Lions 64% · DET -1.5"), read from ESPN's boards. Soccer and MLB show none: their line is a moneyline, which the Book chip already gives.
Watcher: a "Closing lines" row shows the closing-line logging at work: rows written and read failures in the log window, picks priced on the last board read, boards skipped, and graded picks with a close against those still to fill. Failures that keep rising, or a backlog that stops shrinking, mean ESPN is not answering.
2026-11-07 · The Booth: live commentary on every match, an AI call on the phone, and a fan zone
The Booth, on top of the Live page: a running call of every match on the board, written straight from ESPN's scoreboards. Soccer goals with the scorer and minute (penalties and own goals marked), equalisers, late goals and red cards; touchdowns, field goals and runs read from the points scored, with the feed's own last play quoted; tennis sets with their scores and deciding sets; and every final. On our golden and lab picks' matches it also calls the start, breaks of serve, tiebreaks, a serve for the match and a 15-point move in the live chance, and calls our pick cashing (or a stunner when a 75%+ pick goes down). Our picks are marked gold and the big moments run hot. It never calls what it did not see: a first look, or a last look more than 10 minutes old, starts fresh.
Soccer cards now show who scored and who was sent off.
The AI call, on the phone report: one tap and Claude calls the action in every match in play (our picks first), or one match from its own Call it button, in TV play-by-play style, from the board's facts only (scores, sets, the minute, scorers, the last play, the chances). It runs on the viewer's own Claude account, only when tapped, asks before the first call, and can be wrong; none of it is betting advice.
The fan zone, on the phone report: everyone who can open the report sees a win-or-lose wall of our finished picks and our picks in play, reacts to each (fire, clap, shock, tears; one reaction per person per pick, tap again to take it back) and shouts about the night. Reactions also sit on each of our picks' cards. Each person writes only their own entry; viewers with view-only access read along.
2026-11-07 · Live win chance and risk alerts, a daily golden parlay, and a calibration lab
Live chance on every card in play: our pick's chance to win right now, against the chance it was given before the start (up or down arrow). Tennis from sets and games (one game-win chance for the match, set so the pre-match chance comes back out; ESPN publishes no points), NFL and college football from score, time left and the pre-game edge, soccer from goals and the minute. Baseball is not modelled. A golden or lab pick under 40% is marked At risk, and the phone push sends a RISK line the moment one drops under it.
Every golden and lab pick's live chance is logged while it plays (first sight and every 5-point move) and graded by how the match ended: the Live chance check on the Live page shows, band by band, how often picks at each live chance went on to win, with a Brier score. A model, not a market price, and the check says whether to trust it.
Daily golden parlays on paper: each day's top 2 (double) and top 3 (treble) golden picks by conviction, chosen by conviction alone so no result leaks in; paid at the model's own combined price. Since August: doubles 30-23 (56.6% against 55.0% stated), trebles 24-25 (49.0% against 39.3% stated).
Calibration lab: for each sport, one shrink factor on the odds, proven only with 60+ graded picks, the likelihood-ratio test passed and the fix helping on the later 40% of picks it never saw. Soccer golden picks are proven underconfident (won 74.3% against 66.1% stated). NFL picks look overconfident (59.4% against 69.2%) but 32 graded picks prove nothing yet: the model keeps its stated chances. Red tennis: no filter proven; stated 55–60% is a hint of a drag only.
2026-11-07 · Golden vs red: the 60%+ picks against everything under 60%, side by side
New Golden vs red page. Golden = picks the model stated at 60% or more; red = everything under 60%. Every ledger pick is graded the way the History page grades golden ones (the ledger's grade counts, a draw on a win pick is a loss, paper units at the model's own price), so the golden numbers match the History page exactly.
Each bracket shows its record, hit rate against the chance the model stated (bar and line), paper units, picks graded and awaiting a grade. Below: today's golden and red picks from the live board, then sport by sport, the last 14 days and conviction band by band. College football lab picks are in neither bracket.
The phone push now reports only when something happens to a golden or lab pick (a final, a swing while in play, a postponement) and stays quiet otherwise.
2026-11-06 · Live scores on the home page, every 30 seconds, and a new phone layout
The report now opens on Live: every match on the boards the report covers (both tennis tours, every soccer league, the NFL, MLB and FBS college football) in play, starting within 8 hours or finished within 8 hours, one scoreboard card each. Tennis is set by set with tiebreak points, seeds and who is serving; soccer by the minute; football with down, distance, the ball and the red zone; baseball with the count and the bases. Team colours and where to watch come from ESPN.
Our pick sits on its card (golden picks marked and linked to their game page, the college football lab's locks marked as the lab) with "WIN if it ends now" while it runs and Won, Lost or Draw the moment ESPN calls it final. Filters: All, Our picks, or one sport. The ledger's grade is still the one that counts; a postponed or suspended match carries no result.
How it stays live: a new task (NhatFinanceLiveScores) runs every minute and reads every hot board twice (30 s apart): a board with a match in play or starting within the hour. Quiet boards are read at most every 15 minutes. The page reloads the board every 15 s without reloading itself. If the task is off, the 5-minute settle job keeps the board up from its own sweep (scores only), and the page says how old its board is.
The phone report gets the board pushed from this PC while the Claude session is open (every 3 minutes when the scores moved); between pushes it shows its last board and its age. ESPN publishes games and sets, not the points inside a game, so neither does the board.
New phone layout on every page: a sticky header with the report's name and a one-line page bar that scrolls sideways, a bottom tab bar (Live, Picks, History, Tennis, All pages), two-column tiles, rounded cards and tables that scroll inside their own frame. The map moved to its own page (map.html) and the old Live board is folded into Live.
2026-11-06 · College football: every FBS team rated, scoring analysed, and a forward test against the DraftKings line
New College football page (lab only: not a ledger pick, so the golden record, managers and history are unchanged). ESPN's FBS scoreboards for 2022-2026, read week by week: 4,289 finals, 0 failed calls. Past seasons are read once; this season is re-read every 3 hours (new task NhatFinanceCollegeFootball).
Two models, both walked forward (every forecast uses only games played before it): a margin-aware Elo, and a points model (each team's offense against the other's defense, adjusted for the opponent). Every setting is chosen on 2024-2025 (1,853 games) and the forecast is whichever model has the lower Brier there: the points model (0.1673 against the Elo's 0.1719, z 2.60). 2026 only scores: 629 games, winner right 76.8% (Elo 74.9%, home team 68.8%, better AP rank 71.9%), Brier 0.1581 (Elo 0.1665, z 3.03; home team 0.2160), margin miss 13.9 points a game, total miss 12.9 (the league average misses by 13.2, so the total is the hardest part). Calibration holds in every band (70-80% stated: 75.2%, hit 80.0%; 90%+ stated 95.4%, hit 95.4%).
Teams: all 138 FBS teams with record, net points (offense + defense), offense and defense, Elo and its last-3-games move, AP rank, schedule strength, one-score record and second-half margin; conferences by average rating and record outside the conference (SEC 28-2 against other FBS teams). Top 5 by net points: Notre Dame +23.5, Ohio State +23.4, Miami +23.2, Indiana +22.5, Georgia +22.1.
Scoring (FBS v FBS): 52.3 points a game in 2026 (54.4 in 2022); 39.8% of games decided by one score (8 or fewer); home teams won 62.8% (58.4-59.5% in 2022-2025) by +6.7 a game; the second quarter scores most (7.9 points a team against 5.4 in the first); final margins pile up on 3, 7, 10 and 14 (chart). FBS v FCS in 2026: 122 games, FBS won 116.
Forward test: every FBS game in the next 8 days is locked when first seen (97 so far, weeks 10-11) with our chance, margin and total, beside the DraftKings line ESPN shows (read-only, never an order). A spread or total lean needs our number 3+ points from the line (27 of each so far); a game locked before its line exists takes its leans from the first line seen before kickoff. Graded after the final against the line at lock, with the closing line kept beside it. The first finals come in tonight.
2026-11-06 · Pick history, backed up daily, learning from the losses, head to head since 2020, and every link checked
Fixed the daily test: a game ESPN lists as postponed or cancelled is "not played" (nothing to settle), and a walkover settles without counting against live tracking or captured plays (no match was played). 2026-11-05 re-judged: PASS (it said FAIL only because Al Qadsiah v Al Fayha was postponed and Alcaraz v Berrettini was a walkover); 13 settled, 11-2, 12/12 on time.
More data: ESPN tennis results for 2020-2023 (2022-2023: 19,156 matches; 2020-2021: 8,568; 0 failed calls), so head to head now reads every meeting since 2020 (46,936 earlier matches).
Head to head ADDED to the live model's own chance (new lab section, re-run every lab build): fitted on the first 70% of the season, judged on the last 3,035 matches. It makes the prediction better in every group, most when recent meetings weigh more: matches between players who had met, Brier 0.21398 -> 0.21340; met 2+ times, accuracy 66.59% -> 67.67%; both top 20 and had met (47 matches), accuracy 65.96% -> 70.21%. But the gain is small and not proven yet (z -1.83 to -1.93 against a bar of 2.24): a consistent direction to keep watching, not a change to the live model.
Head to head as a residual (who wins more than the model says): the leader over every meeting since 2020 wins 5.4 pts more often than v1 says (1,877 matches, z 4.85, proven) but only 1.5 pts more than duel-elo-v4 (z 1.44, no effect); between two top-20 players (100 matches) +3.8 pts against v4 (z 0.81). This season's meetings alone: +3.5 pts, a hint. Golden picks (almost all made by v1): our pick led the head to head 56-20 (+5.50u), level 9-8 (-3.97u), trailed 14-13 (-5.69u), never met 142-48 (+23.99u).
Four seasons of history for the rating itself, on predict-41's own engine and v4's held-out gate: seasoned accuracy 64.32% -> 64.02%, Brier the same (z 0.18); thin matchups Brier 0.21438 -> 0.21196 (z -2.28) but accuracy 65.88% -> 64.80%. Not a clear gain over v4 (whose K by experience already does most of what extra history does), so no v5 is proposed. In the lab's simpler replay (without K by experience) the same history is a large gain on thin matchups (z -6.43).
Tennis lab, the owner's loss ideas tested against the live model (duel-elo-v4, 4,497 matchups, thresholds fixed before any result was seen; 24 ideas now, so a result needs |z| >= 3.08): retired hurt or gave a walkover in the last 60 days -7.5 pts (90 matches, too few); lost 3+ of the last 4 -4.9 pts (z -2.32, a hint: the rating under-reacts to a slump, not proven); dropped 4+ more sets over the last 5 matches -3.0 pts (no effect); a shift from their power (games share 5+ points under their own season) +0.3 pts (no effect). The one thing the live model still misses: a player ranked higher yet the rating's underdog wins 8.2 pts more often than it says (z 3.15, holds).
Golden losses, looked at from before each match: of 310 graded golden tennis picks, a proven weakness against our pick (the opponent ranked higher) was there before 6 of 89 losses and 7 of 221 wins (those 13 picks went 7-6). Our pick coming off a round 6+ games longer went 11-9 (55% against 66% stated, -3.37u): a hint. Most losses carry no measurable warning: golden tennis hits 71.6% against 67% stated.
Weakness and exposure: every upcoming golden tennis pick (lab page and its game page) lists what each study sees on either player today. Only proven studies count; the managers move their chance by the cautious end of the proven effect (the 95% bound nearest zero, about -3 pts for an opponent ranked higher) before the market blend, so an exposed pick needs a bigger edge. Hints never move a chance.
New History page: every golden pick the ledgers have locked since 2026-08-31 (667 so far), gold when it won, red when it lost (a draw on a win pick counts as lost), month by month, with the record, hit rate against the stated conviction and paper units by sport and by conviction band. All time: 435-153-26, hit 70.8% against 66.7% stated, +37.66u. The 80%+ band hits 78.6% against 84.4% stated and football 62.5% against 74%: both over-confident.
A backup record (data/pick-history.jsonl) keeps each pick's first final grade and only ever adds lines: a grade the ledger changes later, or a pick that leaves the ledger, shows under Check-up instead of silently rewriting the past. 624 endings recorded at the start.
Daily backup at 06:07: the history goes to the owner's backup folder (synced off the device) and is committed and pushed to the private repo. Only the two history files are committed, every commit says [skip ci], and the push goes out only when every unpushed commit is a backup.
Every link checked (98 pages, 2,043 links, all resolve): the live board no longer links picks under 60% to game pages that do not exist; pages written by other jobs (tennis lab, players, daily reports) get the current nav each tick; a daily report's link to a game page that left the window now opens that pick's row on the History page.
2026-11-06 · The tennis lab tests the live model, a stronger model waits behind its gate, safer managers
Tennis lab: every idea is now also tested against the live model's own pre-match chance (duel-elo-v3, priced by predict-41's own engine), not only against v1. Most of what held against v1 is already inside v3: charted serve and return (+7.5 pts against v1) and earlier meetings (+5.1 pts) show no effect against v3. Nothing clears the bar against v3; the nearest are "ranked higher, yet the rating's underdog" (+7.2 pts, z 2.89), fatigue after a longer previous round (-3.1 pts) and a long layoff (-7.6 pts), all hints.
predict-41: duel-elo-v4 (v3 with K by experience: a newcomer's rating moves fast, a 60-match veteran's slowly; the schedule is chosen on the training part only) is built behind the same held-out gate, with an off switch, on its own branch. The real-season dry run promotes it: held-out accuracy 64.0% -> 64.3%, Brier 0.2203 -> 0.2198, and on the thin matchups where picks have lost money Brier 0.2187 -> 0.2144. Update: the owner approved it, and the 10:44 UTC tennis run promoted it on its own (same schedule, 64 -> 20 by 60 matches); new tennis picks lock as duel-elo-v4.
Pick managers: tennis positions now open only against a liquid Polymarket price. The old fallback priced a position at our own model's number, so Hunter's Sabalenka positions were the v2 model betting against our own v1 price, which tests nothing. Positions already open are unchanged.
Pick managers: one player or club can hold at most 2% (Guardian) or 5% (Hunter) of the bankroll across all open positions, because one withdrawal settles them all at once (Hunter held 10.7u on Sabalenka across three matches); and Hunter stakes at most 1% on a price of 3 or longer (it is 1-6 on long shots so far, -7.36u).
2026-11-05 · Soccer games the watcher could not find
Fixed: the watcher now finds soccer games where the ledger and ESPN name a club differently: accents (Fenerbahçe / Fenerbahce), short forms (Man City, Spurs, PSV, B. Dortmund) and local names (Slavia Praha / Slavia Prague, Bayern München / Bayern Munich, 1. FC Köln / FC Cologne). It also checks the previous day's scoreboard for evening kickoffs after midnight UTC, which ESPN lists under the US date (MLS, NWSL). Replayed on the last 21 days' 656 soccer picks it now finds 641 (it found 494). The 15 left are kickoffs the ledger has at another time than ESPN (8 Bundesliga placeholders at 00:00 UTC, 6 rescheduled French games) and one Saudi game missing from ESPN's board. 2026-11-04 stays FAIL: the watcher never followed Slavia Praha v Arsenal (the ledger graded it a WIN, 1-2).
2026-11-04 · Watch every match, two pick managers, history, and the performance report
Fixed the daily test's settle timing: a settle is now timed from the last watcher tick that saw the game still in play, not from its last score change. A tennis set can run an hour without the set score changing, so matches settled within 5 minutes were reported as up to 80 minutes late. 2026-11-03 re-judged: PASS (Charaeva v Ruzic settled within 4 minutes of the final).
Tennis market lens: a player the market lists under a shorter name (a middle name or second surname dropped, e.g. "Tomas Etcheverry" for Tomas Martin Etcheverry) now matches, but only when exactly one market fits. The managers price at it too.
Tennis lab and performance: the shadow test's columns are now labelled v1 (they said "live", but v3 has been live since the 13:01 UTC run), and the promoted live model gets its own forward test against v1 on the matches it locked.
Pick managers: a calibration gap now only adjusts picks from the model version that earned it. v1's record no longer moves v3 picks; v3 has no graded history yet, so its stated chance stands.
Watcher: every pick in the ledgers is now watched live every 5 minutes, any conviction, until its final is captured; every final goes to the learner capture with its plays. Golden picks still settle exactly as before.
Score timelines of matches that leave the window move to an append-only archive (data/timelines-archive.jsonl) instead of being dropped.
Every listed match, not just picks: every match on the covered ESPN scoreboards (both tennis tours, every soccer league, NFL, MLB) is tracked, and every final goes once to the all-time archive (data/matches-archive.jsonl). First sweep: 287 matches tracked, 156 finals archived.
Every listed match is now watched live: a scoreboard with a match in play or starting within the hour is read every 5 minutes, a quiet one every 30; each match keeps its own score timeline (one entry per change), archived with its final.
Fixed live tennis data: 291 tennis picks locked on "TBD v TBD" before the draw named the players (some 52 days old) sat pending forever; predict-41 now voids a placeholder pick a day past its start (out of W-L; graded picks untouched). Pending went 347 -> 52, awaiting a result 297 -> 8, grade-refused 156 -> 0.
Fixed game pages for changed lineups: the page no longer shows the replacement match's score and plays as this game's; it names the match now in ESPN's slot instead.
Managers settle faster: a position settles from the ESPN final the watcher captures within minutes, instead of waiting for the ledger's next harvest run (4 a day). The ledger grade stays the authority: if it later disagrees, the position is flagged, never silently changed.
Fixed: doubles matches in the every-match tracker had no names (ESPN lists a pair under roster, not athlete); they now carry the pair ("A / B").
Performance page: "Data collected, by day" - finals archived, picked matches captured with plays, market prices stamped and shadow picks graded, per UTC day.
Live board: a new "Every match in play" section and an all-time finals count.
Pick managers: two paper managers compete on the same picks - Guardian (risk management: agreed favourites, 1% stakes) and Hunter (high return: longer prices, 4% stakes, may back the underpriced underdog). Unproven knowledge lifts nothing.
Tennis market lens: Polymarket prices for ATP/WTA matches (keyless, read-only, never an order; vig removed) are read every 30 minutes and stamped once on each upcoming tennis pick before its start - 37 of 53 upcoming picks on the first read. The performance page scores model against market on graded picks as they finish.
Managers now price at the market: a position uses Polymarket's price when the market holds $1,000+ of liquidity, else the model's fair price. Against a market the model is half-trusted only where both players are seasoned, and not at all otherwise (a warming-up pairing the market prices at 3.5% is model ignorance, not an edge). Both managers restarted at 100u on this rule; no position had settled.
Tennis lab: 2024-2025 seasons backfilled from ESPN (19,212 matches). History + pre-season seed + margin is the best rule on held-out 2026 matches (warming-up accuracy 54.9% -> 63.9%, z -6.59). Proposed as the next live model change; not applied.
predict-41: duel-elo-v2 (pre-season ranking seed + margin-weighted updates) is implemented behind the existing held-out gate, which promotes it on real data (held-out accuracy 60.4% -> 63.3%). New picks lock with v2 from the next tennis run; locked picks never change; nothing deployed.
predict-41: v2 went live at the 10:44 UTC tennis run (the first 2 picks locked as duel-elo-v2); the lab still reproduces v1 exactly against the v1 backtest the cycle now stores.
predict-41: duel-elo-v3 (v2 replayed over the pinned 2024-2025 seasons first) is built behind the same gate and committed (not pushed). On the same held-out matches the real-season dry run gives accuracy v1 60.5%, v2 63.3%, v3 64.0% and Brier 0.2308 / 0.2245 / 0.2196, so it promotes; new picks lock with v3 from the next tennis run unless switched off. Its published backtest scores 8,024 matches (players known from history count as seasoned sooner), still 2026-only.
Fixed in predict-41: the ledger check required every tennis pick to say duel-elo-v1 and broke on the first v2 picks; tennis may now carry v1/v2/v3, every other duel sport must still be v1.
Shadow v2 forward test: locks its own probability beside every live pick and grades both on the same final.
Outside records: ESPN rankings and player profiles, Match Charting Project styles (CC BY-NC-SA 4.0) and Wikidata. SofaScore is not used: it refuses automated requests.
New pages: Map (home), Players, Tennis lab, Pick managers, Skills and performance, Patch notes.
Fixed: a changed-lineup pick no longer keeps another pairing's score history; a postponed game is shown as postponed, not "finished, settling".
Fixed: the source fetcher no longer sends a personal contact address in its request headers.
Deploy: the site snapshot passes a preflight (page structure, no external scripts, no private data, every link resolves) before it is published.