You're offline: this is a saved copy and its numbers may be out of date. Data last updated Oct 4, 7:14 PM ET.
21+ · Not betting advice · Gambling problem? Call 1-800-GAMBLER · Terms · Last updated Oct 4, 7:14 PM ET

Game recaps › Week 4

Denver Broncos 14, San Francisco 49ers 24: our projections vs the box score

AI-assisted. Written automatically from our model's own numbers with fixed templates; nothing is invented, and no language model adds facts. How this works.

The 49ers beat the Broncos 24-14 (kickoff Oct 4, 2026, 3:25 PM CT). This recap compares the projections we published before kickoff with the final box score, then grades every prop forecast we logged before the game. Nothing below was adjusted after the game.

Projection note: the projections graded here came from an earlier simulation (last refreshed 10:34 a.m. CT), not a final pre-kickoff refresh. From 2:12 p.m. CT until kickoff, our live updater queued re-simulations for this game, but every one was held back by a failing automated check on other games (a bug in the updater, since fixed). Status changes on these two teams that the published projections and prop prices did not reflect: Dallen Bentley (DEN) active to out; Sam Ehlinger (DEN) active to out; Jordan James (SF) active to out; Kurtis Rourke (SF) active to out; Mike Evans (SF) questionable to active. Results are graded against the projections as published.

Among the 12 fantasy-relevant players (projected or scoring 5+ FanDuel points), 10 finished inside our 10th-90th percentile range (83%; a well-calibrated range should hold about 80%). Average miss versus our mean: 4.2 FanDuel points.

The game's big outlier: Tyler Badie scored 6.9 FanDuel points against a projected median of 0.8 (90th percentile 5.3).

Below our range: Courtland Sutton managed 0.9 points against a 6.3 median (10th percentile 1.3).

Status changes our injury feed showed after kickoff: Pat Bryant (6.2 points), questionable from 6:00 PM CT.

Projections vs results (FanDuel points)

PlayerTeamPosProj. meanMedian10–90 rangeActualResult
Bo NixDENQB19.718.510.2–31.113.6in range
Brock PurdySFQB19.617.99.8–31.619.6in range
Christian McCaffreySFRB18.116.16.5–32.214.5in range
Deebo Samuel Sr.SFWR7.45.91.5–15.715.5in range
George KittleSFTE11.59.12.7–24.115.0in range
RJ HarveyDENRB7.15.81.3–14.514.3in range
Jaylen WaddleDENWR10.48.42.4–22.012.0in range
J.K. DobbinsDENRB10.38.23.0–21.06.2in range
Mike EvansSFWR8.06.41.5–17.110.1in range
Courtland SuttonDENWR8.26.31.3–17.60.9below range
Tyler BadieDENRB1.80.80.0–5.36.9above range
Pat BryantDENWR4.23.10.0–9.56.2in range
Kaelon BlackSFRB4.73.10.3–11.21.3in range
Evan EngramDENTE4.12.70.0–10.01.1in range
Kyle JuszczykSFRB1.80.60.0–5.83.8in range
Jacob CowingSFWR1.20.00.0–3.40.2in range
Marvin Mims Jr.DENWR0.90.00.0–2.5-0.5below range
Adam TrautmanDENTE0.80.00.0–2.00.0in range
Brandin CooksSFWR0.70.00.0–2.20.0in range
Luke FarrellSFTE0.60.00.0–1.70.0in range

FanDuel scoring computed from the ESPN box score with FanDuel's rules: half-PPR, 2-point conversions, and +3 bonuses for 100+ rushing, 100+ receiving and 300+ passing yards. 'No box-score line' means the player recorded no stats (did not play or was not targeted).

Stat projections vs box score

PlayerStatOur median10–90 rangeActualvs range
Bo NixPass yds235.0138.0–326.0214in range
Bo NixPass TD1.00.0–4.01in range
Bo NixRush yds14.00.0–45.010in range
Brock PurdyPass yds240.0145.0–350.0218in range
Brock PurdyPass TD1.00.0–4.02in range
Brock PurdyRush yds16.01.0–44.029in range
Christian McCaffreyRush yds50.023.0–106.052in range
Christian McCaffreyCarries14.08.0–21.015in range
Christian McCaffreyCatches4.01.0–8.03in range
George KittleRec yds51.017.0–122.070in range
George KittleCatches5.02.0–9.04in range
Jaylen WaddleRec yds50.013.0–119.035in range
Jaylen WaddleCatches4.01.0–7.05in range
J.K. DobbinsRush yds50.022.0–106.040in range
J.K. DobbinsCarries13.08.0–20.011in range
J.K. DobbinsCatches1.00.0–2.02in range
Courtland SuttonRec yds33.06.0–87.04below
Courtland SuttonCatches3.01.0–6.01in range
Mike EvansRec yds35.07.0–91.076in range
Mike EvansCatches3.01.0–7.05in range

Props graded

We logged 28 sportsbook forecasts with positive estimated EV for this game before kickoff (final pre-kickoff version of each). Official record (4 picks priced on our market-blended fair probability, as the board showed them): 3 won, 1 lost, for +2.52 units at the posted prices (1 unit risked per pick). Unders went 3-1; overs 0-0.

Not in the official record: 24 rows whose final pre-kickoff version was still priced on raw simulation probability (logged before the board switched to fair probabilities and never re-logged). Graded anyway and listed below: 12 won, 9 lost, 3 void, +2.30 units. Grading rule.

PlayerPropPickPriceEst. EVOfficialActualResultUnits
Christian McCaffreyCatchesUnder 4.5+104 FanDuel+1.3%Yes (fair)3Win+1.04
Adam TrautmanCatchesUnder 0.5+136 FanDuel+0.8%Yes (fair)0Win+1.36
George KittleCatchesUnder 4.5+112 FanDuel+0.5%Yes (fair)4Win+1.12
RJ HarveyCatchesUnder 3.5−136 FanDuel+0.4%Yes (fair)10Loss−1.00
Adam TrautmanRec ydsUnder 5.5−113 FanDuel+34.2%No (raw sim)0Win+0.89
Adam TrautmanCatchesUnder 0.5+120 BetOnline+31.5%No (raw sim)0Win+1.20
Christian McCaffreyRush ydsUnder 67.5−112 DraftKings+26.0%No (raw sim)52Win+0.89
Kyle JuszczykRec ydsUnder 8.5−112 DraftKings+22.5%No (raw sim)28Loss−1.00
George KittleRec ydsUnder 64.5−113 FanDuel+22.4%No (raw sim)70Loss−1.00
Pat BryantRec ydsUnder 22.5−113 FanDuel+21.3%No (raw sim)47Loss−1.00
Bo NixAnytime TDOver 0.5+340 BetRivers+17.7%No (raw sim)0Loss−1.00
Bo NixPass ydsOver 221.5−113 FanDuel+14.8%No (raw sim)214Loss−1.00
RJ HarveyRush ydsUnder 15.5−113 FanDuel+13.6%No (raw sim)25Loss−1.00
Evan EngramRec ydsUnder 17.5−113 FanDuel+13.0%No (raw sim)6Win+0.89
J.K. DobbinsRush ydsUnder 59.5−113 FanDuel+12.7%No (raw sim)40Win+0.89
Jaylen WaddleRec ydsUnder 56.5−113 FanDuel+10.0%No (raw sim)35Win+0.89
Courtland SuttonRec ydsUnder 38.5−113 FanDuel+9.9%No (raw sim)4Win+0.89
George KittleCatchesUnder 4.5+110 Bovada+9.5%No (raw sim)4Win+1.10
Christian McCaffreyRec ydsUnder 39.5−113 FanDuel+8.1%No (raw sim)18Win+0.89
Kyle JuszczykCatchesUnder 1.5−200 FanDuel+7.4%No (raw sim)2Loss−1.00
Christian McCaffreyCatchesUnder 4.5+103 DraftKings+4.9%No (raw sim)3Win+1.03
Brock PurdyRush ydsUnder 17.5−112 DraftKings+4.5%No (raw sim)29Loss−1.00
Kaelon BlackRush ydsUnder 22.5−113 FanDuel+2.9%No (raw sim)13Win+0.89
Bo NixRush ydsUnder 16.5−113 FanDuel+0.9%No (raw sim)10Win+0.89
RJ HarveyRec ydsUnder 21.5−113 FanDuel+0.6%No (raw sim)68Loss−1.00
Troy FranklinAnytime TDOver 0.5+900 BetOnline+27.3%No (raw sim)—Void—
Troy FranklinCatchesOver 0.5−189 BetOnline+11.8%No (raw sim)—Void—
Troy FranklinRec ydsOver 5.5−113 FanDuel+10.3%No (raw sim)—Void—

Official = the pick's final pre-kickoff version was priced on our market-blended fair probability. 'No (raw sim)' rows were logged before the site switched EV to fair probabilities (08:22 CT on Oct 4, 2026) and never re-logged; they are graded and shown here but are not part of the official record. A player who appears only in the play-by-play is graded as 0. Not betting advice. 21+.

Pick'em forecasts (Underdog and PrizePicks two-leg format, graded per leg), official: 0 won, 2 lost. Raw-sim rows, not in the official record: 18 won, 17 lost, 5 void.

Correction (Oct 4, 2026, 7:23 PM CT): actual FanDuel points in this recap now include FanDuel's +3 yardage bonuses and 2-point conversions, and count negative yardage (e.g. -6 rushing yards) instead of zero; the first version did not, which changed 1 player totals. Projections and prop results did not change.

How these numbers are made: methodology. The full graded log, every week, lives on the Track Record.

Get this in your inbox every week

Free weekly email: start/sit, the props our model rates as unders, and every graded result, wins and losses. 21+.

More from Game recaps

Model opinion, not advice. For entertainment and informational purposes only. 21+. Gambling problem? Call 1-800-GAMBLER. Methodology · Track record