Analyst · Week 1
The stats model is the foundation. This layer reads the week's news and forecasts, reports only what the model is not already counting, and moves the number by a capped amount — every claim linked to its source, every claim graded after the final.
Is the news layer helping?
Since the layer went live, over 305 graded claims:
- The adjusted forecast has been worse than the stats model alone — net change in squared error (Brier) of +0.252, where negative is better.
- 146 of 305 claims pushed the number toward the actual result.
- It changed the final pick in 5 games, and those flips went 4–1.
This is the whole test. News can't be backtested the way the base model was (2010–25), so the layer earns its place only forward, and only if it lowers the error over many games — not on any one result. Its job is to move the number toward the truth, not to rescue a pick: when it cut a heavy home pick by 10 points and the team still lost, the move was correct (it lowered the error) even though the pick was wrong — the base model had simply started too far above the market. Picks where we disagree with the market's final price are our weaker spot (about 44% in the backtest, versus 68% when we agree) — they're flagged “we differ” on the picks table so you can watch them.
What we do with the news, step by step
This page is the news layer's public notebook. In plain terms:
- Before kickoff, every run pulls the feeds and attaches new items to the games they concern. Items published after a game has started are never read: in-game news is not a prediction input.
- The reader turns new items into claims: a type (QB change, key starter out, resting starters…), a team, a player, a direction, and a confidence.
- The filters decide, in the same run, whether a claim is applied or declined. Declined if it is below the confidence floor for its type, if the model already counts it (the player is on the injury report, the QB is already the named starter), or if it is the kind of story that has no place (offseason hires, turf, "limited in practice").
- Applied claims move the probability right then, by a fixed number of points for the type, scaled by confidence, capped. That adjusted number is the pick. "Model 74% → analyst 76%" on a game below means exactly that.
- After the final, every claim is graded, applied or declined: did it point the right way, and did it lower the error? Declined claims are graded as if they had been applied, so we learn whether the filter was right to say no.
- Once a month, with enough graded cases, the rules change for future weeks: a type that keeps hurting loses weight; a rejection reason that keeps "would have helped" gets loosened. Past picks are never touched. Every rule change is dated in the changelog.
A claim only affects the game it is attached to. It does not carry into next week's model: a starter who misses Week 2 is caught by the injury report by then, and the model counts him there.
How it works
Sources: public news feeds; the National Weather Service forecast at kickoff for outdoor stadiums; the nflverse injury report and named starters are what the model already counts. The reader (one language-model call per game, only when there is new news) returns typed claims about things not already counted. A fixed table turns each claim into points, scaled by the reader's confidence, capped per type and ±10 in total. Weather is logged at zero weight until a season of grading says otherwise.
| Claim type | Max points |
|---|---|
| starting QB change not yet in the feed | 6.0 |
| key starter out, not on the injury report | 2.0 |
| key starter returning | 1.5 |
| resting starters / playing backups | 8.0 |
| suspension | 2.0 |
| coaching change | 2.0 |
| motivation / eliminated / nothing to play for | 1.5 |
| locker-room or organizational turmoil | 1.0 |
| unusual travel or schedule disruption | 1.0 |
| weather at kickoff (logged, zero weight) | 0.0 |
| other (in-week, concrete, high confidence only) | 0.5 |
Scorecard by claim type
After each final: did the move go the right way, and did it lower the squared error (Brier)? Negative Brier change is good. Types that don't earn their weight get zeroed at season's end.
| Type | Claims | Graded | Avg pts | Helped | Brier Δ |
|---|---|---|---|---|---|
| key starter out, not on the injury report | 205 | 180 | 1.8 | 84/180 | +0.303 |
| other (in-week, concrete, high confidence only) | 56 | 52 | 0.4 | 24/52 | +0.043 |
| motivation / eliminated / nothing to play for | 30 | 23 | 1.1 | 13/23 | +0.017 |
| starting QB change not yet in the feed | 21 | 21 | 5.5 | 12/21 | -0.106 |
| locker-room or organizational turmoil | 9 | 8 | 0.9 | 5/8 | +0.006 |
| unusual travel or schedule disruption | 8 | 8 | 0.7 | 4/8 | -0.003 |
| weather at kickoff (logged, zero weight) | 5 | 5 | 0.0 | 0/5 | +0.000 |
| coaching change | 5 | 3 | 1.6 | 3/3 | -0.028 |
| suspension | 4 | 4 | 1.9 | 1/4 | +0.014 |
| key starter returning | 1 | 1 | 1.1 | 0/1 | +0.006 |
Shadow scorecard — what we declined
Rejected claims are kept at zero weight and graded as if applied. If a rejection reason keeps "helping", the rule is too strict; if "other" keeps hurting, it stays out. This is how the layer learns.
| Rejected because | Type | Claims | Graded | Would have helped | Brier Δ if applied |
|---|---|---|---|---|---|
| no ruled-out language (practice status is not 'out') | key player out | 265 | 241 | 116/241 | +0.207 |
| retired: now on the injury report | key player out | 166 | 165 | 83/165 | +0.145 |
| return of a player the model was not counting out | key player back | 113 | 104 | 61/104 | -0.118 |
| confidence 0.75 below floor for other | other | 64 | 61 | 29/61 | +0.016 |
| no ruled-out language (practice status is not 'out') | QB change | 59 | 48 | 18/48 | +0.769 |
| confidence 0.65 below floor for other | other | 29 | 27 | 16/27 | -0.015 |
| retired: read before this team's previous game (old news) | key player out | 27 | 25 | 15/25 | -0.004 |
| retired: read before this team's previous game (old news) | QB change | 20 | 12 | 12/12 | -0.589 |
| confidence 0.70 below floor for other | other | 19 | 18 | 9/18 | +0.005 |
| confidence 0.30 below floor for key player out | key player out | 17 | 14 | 8/14 | -0.002 |
| soft status (limited/questionable/cleared) | key player back | 17 | 15 | 11/15 | -0.038 |
| already on the injury report | key player out | 16 | 16 | 7/16 | +0.100 |
| confidence 0.75 below floor for turmoil | turmoil | 16 | 13 | 7/13 | +0.017 |
| confidence 0.65 below floor for motivation | motivation | 15 | 14 | 6/14 | +0.010 |
| no ruled-out language (practice status is not 'out') | suspension | 13 | 11 | 4/11 | +0.055 |
| confidence 0.45 below floor for key player out | key player out | 11 | 11 | 6/11 | -0.012 |
| confidence 0.70 below floor for turmoil | turmoil | 11 | 9 | 4/9 | +0.020 |
| retired: read before this team's previous game (old news) | other | 10 | 9 | 7/9 | -0.018 |
| confidence 0.40 below floor for key player out | key player out | 9 | 7 | 1/7 | +0.037 |
| confidence 0.60 below floor for other | other | 9 | 8 | 5/8 | -0.002 |
| about an earlier game, not this one | key player out | 8 | 5 | 4/5 | -0.032 |
| not an in-week coaching change | coaching change | 8 | 8 | 5/8 | -0.027 |
| QB out: the model already uses the named starter | key player out | 6 | 4 | 2/4 | +0.011 |
| confidence 0.35 below floor for key player out | key player out | 6 | 6 | 2/6 | +0.006 |
| confidence 0.00 below floor for key player out | key player out | 5 | 5 | 0/5 | +0.000 |
| offseason / logistics story, already counted | motivation | 5 | 5 | 1/5 | +0.039 |
| retired: read before this team's previous game (old news) | travel | 5 | 5 | 3/5 | -0.010 |
| retired: read before this team's previous game (old news) | turmoil | 5 | 4 | 3/4 | -0.004 |
| retired: same player already counted in this game | key player out | 5 | 5 | 5/5 | -0.088 |
| retired: schedule feed now names this QB | QB change | 5 | 4 | 2/4 | +0.007 |
| QB is already the named starter | QB change | 4 | 3 | 1/3 | +0.068 |
| confidence 0.60 below floor for turmoil | turmoil | 4 | 4 | 2/4 | +0.003 |
| confidence 0.65 below floor for coaching change | coaching change | 4 | 4 | 3/4 | -0.017 |
| offseason / logistics story, already counted | other | 4 | 4 | 1/4 | +0.004 |
| confidence 0.60 below floor for coaching change | coaching change | 3 | 1 | 1/1 | -0.007 |
| confidence 0.60 below floor for motivation | motivation | 3 | 3 | 2/3 | -0.014 |
| retired: same player already counted in this game | other | 3 | 3 | 3/3 | -0.016 |
| confidence 0.00 below floor for QB change | QB change | 2 | 2 | 0/2 | +0.000 |
| confidence 0.50 below floor for other | other | 2 | 2 | 1/2 | -0.000 |
| confidence 0.55 below floor for other | other | 2 | 2 | 2/2 | -0.005 |
| confidence 0.65 below floor for travel | travel | 2 | 2 | 1/2 | +0.000 |
| confidence 0.65 below floor for turmoil | turmoil | 2 | 2 | 2/2 | -0.013 |
| retired: read before this team's previous game (old news) | motivation | 2 | 2 | 0/2 | +0.024 |
| retired: same player already counted in this game | key player out | 2 | 2 | 2/2 | -0.067 |
| retired: same player already counted in this game | other | 2 | 2 | 0/2 | +0.006 |
| retired: same player already counted in this game | key player out | 2 | 2 | 2/2 | -0.034 |
| retired: same player already counted in this game | other | 2 | 2 | 0/2 | +0.011 |
| retired: same player already counted in this game | turmoil | 2 | 2 | 2/2 | -0.007 |
| confidence 0.00 below floor for coaching change | coaching change | 1 | 1 | 0/1 | +0.000 |
| confidence 0.30 below floor for other | other | 1 | 1 | 0/1 | +0.002 |
| confidence 0.30 below floor for QB change | QB change | 1 | 1 | 0/1 | +0.015 |
| confidence 0.50 below floor for turmoil | turmoil | 1 | 1 | 0/1 | +0.003 |
| confidence 0.55 below floor for motivation | motivation | 1 | 1 | 1/1 | -0.009 |
| confidence 0.55 below floor for turmoil | turmoil | 1 | 1 | 1/1 | -0.006 |
| confidence 0.60 below floor for travel | travel | 1 | 1 | 1/1 | -0.005 |
| offseason / logistics story, already counted | coaching change | 1 | 1 | 1/1 | -0.010 |
| retired: same player already counted in this game | turmoil | 1 | 1 | 0/1 | +0.014 |
| retired: same player already counted in this game | suspension | 1 | 1 | 0/1 | +0.008 |
| retired: same player already counted in this game | key player out | 1 | 1 | 0/1 | +0.008 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.007 |
| retired: same player already counted in this game | other | 1 | 1 | 0/1 | +0.007 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.007 |
| retired: same player already counted in this game | key player out | 1 | 1 | 0/1 | +0.024 |
| retired: same player already counted in this game | key player out | 1 | 1 | 1/1 | -0.006 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.007 |
| retired: same player already counted in this game | other | 1 | 1 | 0/1 | +0.004 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.003 |
| retired: same player already counted in this game | key player out | 1 | 1 | 1/1 | -0.018 |
| retired: same player already counted in this game | key player out | 1 | 1 | 1/1 | -0.018 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.001 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.002 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.002 |
| retired: same player already counted in this game | other | 1 | 1 | 1/1 | -0.006 |
| retired: same player already counted in this game | QB change | 1 | 0 | – | – |
| retired: same player already counted in this game | key player out | 1 | 0 | – | – |
| retired: same player already counted in this game | QB change | 1 | 0 | – | – |
| retired: same player already counted in this game | other | 1 | 0 | – | – |
Season: stats model 76–42, model + analyst 79–39; 98 games moved, 5 picks flipped (4 won).
NE @ SEA Wed 8:20 PM
no prediction stored yet
· final 10–13
No claims shown: nothing concrete in the news beyond what the model already counts.
SF @ LA Thu 8:35 PM
no prediction stored yet
· final 27–7
No claims shown: nothing concrete in the news beyond what the model already counts.
CHI @ CAR Sun 1:00 PM
est. model 43% home · no adjustment
· forecast at kickoff: 84.0°F, wind 2.0 mph, Sunny
· final 59–37
No claims shown: nothing concrete in the news beyond what the model already counts.
1 other item read and graded, not shown (we publish roster and schedule facts only).
TB @ CIN Sun 1:00 PM
est. model 65% home · no adjustment
· forecast at kickoff: 83.0°F, wind 2.0 mph, Sunny
· final 27–33
No claims shown: nothing concrete in the news beyond what the model already counts.
NO @ DET Sun 1:00 PM
est. model 74% home → analyst 76% (+1.9 pts)
· final 30–31
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: after kickoff (excluded) RB not expected to play Sunday vs Lions | NO | Alvin Kamara | 0.95 | +1.9 | after the final |
| key starter out, not on the injury report declined: after kickoff (excluded) RB not expected to play Sunday | NO | Alvin Kamara | 0.95 | +1.9 | after the final |
| key starter out, not on the injury report declined: no ruled-out language (practice status is not 'out') Not expected to play Sunday | NO | Alvin Kamara | 0.95 | +1.9 | helped -0.009 |
| key starter out, not on the injury report declined: after kickoff (excluded) LG carted off with knee injury during game | DET | Christian Mahogany | 0.90 | -1.8 | after the final |
BUF @ HOU Sun 1:00 PM
est. model 51% home · no adjustment
· forecast at kickoff: 94.0°F, wind 5.0 mph, Chance Showers And Thunderstorms
· final 36–31
No claims shown: nothing concrete in the news beyond what the model already counts.
1 other item read and graded, not shown (we publish roster and schedule facts only).
BAL @ IND Sun 1:00 PM
est. model 39% home · no adjustment
· forecast at kickoff: 81.0°F, wind 2.0 mph, Mostly Sunny
· final 41–23
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: after kickoff (excluded) Ruled out for second half with hamstring injury during game | BAL | Zay Flowers | 0.95 | +1.9 | after the final |
| key starter out, not on the injury report declined: retired: now on the injury report LB downgraded to out for Ravens game | IND | Austin Ajiake | 0.95 | -1.9 | helped -0.014 |
| coaching change declined: confidence 0.00 below floor for coaching change John Harbaugh left Ravens to become Giants head coach in offseason | IND | 0.00 | 0.0 | after the final +0.000 |
1 other item read and graded, not shown (we publish roster and schedule facts only).
CLE @ JAX Sun 1:00 PM
est. model 81% home · no adjustment
· forecast at kickoff: 88.0°F, wind 6.0 mph, Mostly Sunny
· final 10–34
No claims shown: nothing concrete in the news beyond what the model already counts.
ATL @ PIT Sun 1:00 PM
est. model 67% home → analyst 65% (-1.9 pts)
· forecast at kickoff: 77.0°F, wind 5.0 mph, Partly Sunny
· final 13–20
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: after kickoff (excluded) CB ruled out with back injury; inactive for Week 1 vs. Falcons | PIT | Joey Porter Jr. | 0.95 | -1.9 | after the final |
| key starter out, not on the injury report declined: after kickoff (excluded) CB ruled out with back injury; inactive for Week 1 | PIT | Joey Porter Jr. | 0.95 | -1.9 | after the final |
| key starter out, not on the injury report declined: after kickoff (excluded) OT left Week 1 game vs. Falcons with injury | PIT | Troy Fautanu | 0.85 | -1.7 | after the final |
| key starter out, not on the injury report declined: no ruled-out language (practice status is not 'out') CB unlikely to play Week 1 due to back injury and contract dispute | PIT | Joey Porter Jr. | 0.85 | -1.7 | hurt +0.012 |
2 other items read and graded, not shown (we publish roster and schedule facts only).
NYJ @ TEN Sun 1:00 PM
est. model 53% home · no adjustment
· forecast at kickoff: 88.0°F, wind 0.0 mph, Sunny
· final 23–10
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| coaching change declined: not an in-week coaching change Robert Saleh hired as new head coach of Titans, making debut this week | TEN | 0.70 | -1.4 | helped -0.015 | |
| key starter out, not on the injury report declined: after kickoff (excluded) CB sustained injury in first quarter | NYJ | Jarvis Brownlee | 0.40 | +0.8 | after the final |
| key starter out, not on the injury report declined: after kickoff (excluded) Safety exited in opening quarter, status unclear but reported as questionable to return | NYJ | Minkah Fitzpatrick | 0.40 | +0.8 | after the final |
| key starter out, not on the injury report declined: after kickoff (excluded) WR exited in opening quarter, status unclear but reported as questionable to return | NYJ | Omar Cooper | 0.40 | +0.8 | after the final |
ARI @ LAC Sun 4:25 PM
est. model 75% home · no adjustment
· final 26–14
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: after kickoff (excluded) WR exited Week 1 game after taking big hit over the middle; injury status unclear but game exit reported | LAC | Ladd McConkey | 0.60 | -1.2 | after the final |
MIA @ LV Sun 4:25 PM
est. model 41% home → analyst 43% (+1.9 pts)
· final 13–27
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: after kickoff (excluded) Wide receiver inactive for Week 1 vs Raiders | MIA | Jalen Tolbert | 0.95 | +1.9 | after the final |
| key starter out, not on the injury report declined: already on the injury report Head coach Klint Kubiak confirmed TE will not play Week 1 vs. Dolphins despite earlier optimism | LV | Brock Bowers | 0.95 | -1.9 | hurt +0.023 |
| key starter out, not on the injury report declined: after kickoff (excluded) Wide receiver inactive for Week 1 game vs Raiders | MIA | Jalen Tolbert | 0.85 | +1.7 | after the final |
| key starter returning declined: return of a player the model was not counting out Off injury report, set to play Week 1 vs. Dolphins | LV | Ashton Jeanty | 0.90 | +1.4 | helped -0.016 |
3 other items read and graded, not shown (we publish roster and schedule facts only).
GB @ MIN Sun 4:25 PM
est. model 53% home → analyst 55% (+1.9 pts)
· final 22–39
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report Guard inactive for Packers-Vikings game | GB | Aaron Banks | 0.95 | +1.9 | helped -0.018 |
| starting QB change not yet in the feed declined: after kickoff (excluded) Kyler Murray ruled out with concussion in first quarter; Wentz entered game | MIN | Carson Wentz | 0.95 | -5.7 | after the final |
| starting QB change not yet in the feed declined: after kickoff (excluded) Kyler Murray ruled out with concussion after first-quarter hit; Carson Wentz entered game | MIN | Carson Wentz | 0.95 | -5.7 | after the final |
1 other item read and graded, not shown (we publish roster and schedule facts only).
WAS @ PHI Sun 4:25 PM
est. model 70% home · no adjustment
· forecast at kickoff: 81.0°F, wind 5.0 mph, Mostly Sunny
· final 22–24
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: retired: now on the injury report Rookie tight end placed on injured reserve; will not play Week 1 | PHI | Eli Stowers | 0.95 | -1.9 | hurt +0.012 |
| coaching change declined: confidence 0.60 below floor for coaching change Eagles offensive coordinator moved to booth for first time under Nick Sirianni | PHI | 0.60 | +1.2 | helped -0.007 |
1 other item read and graded, not shown (we publish roster and schedule facts only).
DAL @ NYG Sun 8:20 PM
est. model 55% home · no adjustment
· forecast at kickoff: 78.0°F, wind 2.0 mph, Mostly Clear
· final 20–28
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report declined: already on the injury report RB out for the year after hip surgery | DAL | Malik Davis | 1.00 | +2.0 | helped -0.017 |
| key starter returning declined: return of a player the model was not counting out WR officially active for Week 1 after torn ACL last season | NYG | Malik Nabers | 0.95 | +1.4 | helped -0.012 |
| key starter out, not on the injury report declined: confidence 0.35 below floor for key player out WR listed as questionable; Giants signed insurance WR Dalen Cambre from practice squad | NYG | Malik Nabers | 0.35 | -0.7 | hurt +0.006 |
1 other item read and graded, not shown (we publish roster and schedule facts only).
DEN @ KC Mon 8:15 PM
est. model 41% home → analyst 38% (-2.5 pts)
· forecast at kickoff: 88.0°F, wind 13.0 mph, Clear
· final 10–31
| Claim | Team | Player | Conf. | Points (home) | Graded |
|---|---|---|---|---|---|
| key starter out, not on the injury report Undrafted rookie starting at LT due to Josh Simmons ruled out; inexperienced blindside protection for Mahomes | KC | Kahlil Benson | 0.85 | -1.7 | hurt +0.020 |
| key starter out, not on the injury report declined: retired: now on the injury report Ruled out for Chiefs' opener Monday night | KC | Chamarri Conner | 0.95 | -1.9 | hurt +0.023 |
| key starter out, not on the injury report declined: retired: now on the injury report Left tackle ruled out for Monday night; undrafted rookie Kahlil Benson to start | KC | Josh Simmons | 0.95 | -1.9 | hurt +0.023 |
| key starter out, not on the injury report declined: confidence 0.30 below floor for key player out Defensive lineman listed as limited with calf injury on Friday injury report | KC | Chris Jones | 0.30 | -0.6 | hurt +0.007 |
4 other items read and graded, not shown (we publish roster and schedule facts only).
Follow your team. It's free.
Your team on top of every page, with its next game and our pick. Want more? Plus from US$7/mo, 7 days free.