Week 3 · Sunday 16:05
ARI
at
SF
Levi's Stadium · outdoors · grass · Division game
ARI moneyline+310
SF moneyline-395
SpreadSF -7.5
Total48.5
Arizona Cardinals at San Francisco 49ers
Every game this week on Leo’s Week 3 card →
This is a pre-game analysis page. Every stat above the Final result comes from games played before this one (through Week 2), and Leo’s numbers were frozen before kickoff. Market numbers are the closing line. Nothing here is a wager — the pick gate stays closed until Leo shows it can beat that line.
Leo’s read
What the model expected, frozen before kickoff (Sep 27, 8:07 AM ET). Each player projection is rate × volume × opponent adjustment — the columns show every input. None of this is a wager.
Leo win chanceSF 78%chance to win; information, not a pick
Leo total45points, both teams
Leo marginSF by 15.9expected winning margin
Passing yards
| Player | yds/att | att | opp adj | games | Leo |
|---|
| Brock Purdy SF QB1 |
8.2 | 29.8 | 1 | 2 |
234 |
| Jacoby Brissett ARI QB1 |
6.4 | 36.4 | 0.9 | 2 |
210 |
Rushing yards
| Player | yds/carry | car | opp adj | games | Leo |
|---|
| Christian McCaffrey SF RB2 |
4.2 | 14.1 | 1 | 2 |
64 |
| Kaelon Black SF RB1 |
4.1 | 10.5 | 1 | 2 |
47 |
| Jeremiyah Love ARI RB2 |
3.5 | 10 | 1 | 2 |
38 |
| Tyler Allgeier ARI RB1 |
3.2 | 9.7 | 1 | 2 |
34 |
Receiving yards
| Player | yds/tgt | tgt | opp adj | games | Leo |
|---|
| Mike Evans SF WR2 |
9.4 | 6.4 | 1 | 2 |
59 |
| Deebo Samuel Sr. SF WR1 |
7.3 | 6.9 | 1 | 2 |
49 |
| Michael Wilson ARI WR1 |
6.5 | 7.3 | 0.9 | 2 |
43 |
| Kendrick Bourne ARI WR2 |
8.3 | 4.8 | 0.9 | 2 |
36 |
| Marvin Harrison Jr. ARI WR3 |
7.1 | 4.6 | 0.9 | 2 |
29 |
| KhaDarel Hodge SF WR3 |
4.7 | 0.9 | 1 | 2 |
3 |
Get Leo’s NFL card by email
Every game, Leo’s winner and total, and the most likely touchdown scorers, before kickoff. Free. Unsubscribe anytime.
Leo ratings — head to head
Each rating is 0–100 against the league this season, built from efficiency rather than record: 50 is average, every 15 points is one standard deviation. These describe the teams — they are not used to price the game.
ARI
This season
SF
48
QuarterbackEPA, accuracy, giveaways
73
45
Offenseefficiency, explosives, ball security
66
43
DefenseEPA allowed, pressure, takeaways
42
44
Overall
54
QB 50 · OFF 47 · DEF 39
Last season
QB 63 · OFF 56 · DEF 35
The turnover battle
Interceptions thrown against interceptions caught, and the same for fumbles. Bold is the better side of each line.
ARI |
Per game, this season |
SF |
| 0.50 | Interceptions thrown | 0.50 |
| 0.50 | Interceptions caught | 0.50 |
| 0.00 | Fumbles lost | 0.00 |
| 1.50 | Fumbles forced | 1.50 |
| 2.00 | Takeaways | 2.00 |
| 0.50 | Giveaways | 0.50 |
| +1.5 | Net turnover margin | +1.5 |
Efficiency detail
The inputs behind the ratings above, shown raw so you can check the work.
ARI |
Offense |
SF |
| +0.009 | EPA per dropback | +0.268 |
| +0.9 | Completion % over expected | +7.1 |
| 1.6% | Interception rate | 2.6% |
| 7.0% | Sack rate taken | 3.0% |
| -0.090 | Rush EPA per carry | -0.007 |
| 4.1% | Explosive play rate | 5.0% |
ARI |
Defense |
SF |
| +0.045 | EPA allowed per play | +0.020 |
| 5.78 | Yards allowed per play | 5.53 |
| 3.0% | Sack rate | 2.5% |
| 0.9% | Interception rate forced | 0.6% |
Team comparison
Season totals on both sides of the ball. Left column is ARI, right is SF.
ARI |
This season |
SF |
| 2 | Games | 2 |
| 186 | Pass yards/g | 246 |
| 93 | Rush yards/g | 134.5 |
| 2 | Passing TD | 5 |
| 1 | Interceptions thrown | 1 |
| 222 | Pass yards allowed/g | 182.5 |
| 121.5 | Rush yards allowed/g | 112 |
| 1 | Interceptions forced | 1 |
ARI |
Last season |
SF |
| 256.1 | Pass yards/g | 250.2 |
| 93.1 | Rush yards/g | 105.3 |
| 29 | Passing TD | 36 |
| 11 | Interceptions thrown | 19 |
| 242.8 | Pass yards allowed/g | 231.7 |
| 126.9 | Rush yards allowed/g | 113.1 |
This season
Starting quarterback, lead backs and top receivers, by actual usage this season — games before this one only.
ARI
2026
Quarterback
Leo QB48
| Player | G | C/ATT | Comp% | Yards | Y/G | TD/INT | Y/A |
| Jacoby Brissett | 2 | 44/65 |
67.7% | 372 | 186 |
2 / 1 | 5.7 |
Running back
| Player | G | Car | Yards | Y/C | TD |
| Tyler Allgeier | 2 | 22 |
71 | 3.2 | 0 |
| Jeremiyah Love | 2 | 20 |
70 | 3.5 | 1 |
Receivers
| Player | G | Rec/Tgt | Catch% | Yards | Y/G | TD |
| Michael Wilson WR1 | 2 |
7/14 | 50% | 74 |
37 | 0 |
| Kendrick Bourne WR2 | 2 |
10/11 | 90.9% | 86 |
43 | 0 |
| Trey McBride TE | 2 |
17/23 | 73.9% | 136 |
68 | 2 |
SF
2026
Quarterback
Leo QB73
| Player | G | C/ATT | Comp% | Yards | Y/G | TD/INT | Y/A |
| Brock Purdy | 2 | 45/56 |
80.4% | 492 | 246 |
5 / 1 | 8.8 |
Running back
| Player | G | Car | Yards | Y/C | TD |
| Kaelon Black | 2 | 21 |
90 | 4.3 | 0 |
| Christian McCaffrey | 2 | 20 |
91 | 4.6 | 2 |
Receivers
| Player | G | Rec/Tgt | Catch% | Yards | Y/G | TD |
| Deebo Samuel Sr. WR1 | 2 |
9/11 | 81.8% | 79 |
39.5 | 1 |
| Mike Evans WR2 | 2 |
9/10 | 90% | 103 |
51.5 | 1 |
| George Kittle TE | 2 |
6/9 | 66.7% | 92 |
46 | 1 |
Last season
The same players' full prior season, for a baseline the early-season sample cannot give you.
ARI
2025
Quarterback
Leo QB50
| Player | G | C/ATT | Comp% | Yards | Y/G | TD/INT | Y/A |
| Jacoby Brissett | 14 | 315/485 |
64.9% | 3366 | 240.4 |
23 / 8 | 6.9 |
Running back
| Player | G | Car | Yards | Y/C | TD |
| Michael Carter | 13 | 92 |
333 | 3.6 | 1 |
| Bam Knight | 12 | 82 |
269 | 3.3 | 4 |
Receivers
| Player | G | Rec/Tgt | Catch% | Yards | Y/G | TD |
| Michael Wilson WR1 | 17 |
78/126 | 61.9% | 1006 |
59.2 | 7 |
| Marvin Harrison Jr. WR2 | 12 |
41/73 | 56.2% | 608 |
50.7 | 4 |
| Trey McBride TE | 17 |
126/169 | 74.6% | 1239 |
72.9 | 11 |
SF
2025
Quarterback
Leo QB63
| Player | G | C/ATT | Comp% | Yards | Y/G | TD/INT | Y/A |
| Brock Purdy | 11 | 230/342 |
67.3% | 2569 | 233.5 |
22 / 13 | 7.5 |
Running back
| Player | G | Car | Yards | Y/C | TD |
| Christian McCaffrey | 19 | 337 |
1285 | 3.8 | 10 |
| Brian Robinson | 19 | 95 |
404 | 4.3 | 2 |
Receivers
| Player | G | Rec/Tgt | Catch% | Yards | Y/G | TD |
| Jauan Jennings WR1 | 17 |
58/98 | 59.2% | 711 |
41.8 | 9 |
| Ricky Pearsall WR2 | 10 |
36/55 | 65.5% | 528 |
52.8 | 0 |
| George Kittle TE | 12 |
58/71 | 81.7% | 634 |
52.8 | 7 |
Touchdown props
Leo’s chance that each player scores a rushing or receiving touchdown in this game, the three most likely on each side, from its last read before kickoff.
Most likely to score: Christian McCaffrey (SF, 51%) and Jeremiyah Love (ARI, 34%). In 2023 to 2025, Leo’s top pick in a game scored 47% of the time, and at least one of its top two scored 69% of the time.
ARI
Leo’s chance
- Jeremiyah Love
RB2
34%
scored
- Tyler Allgeier
RB1
26%
no TD
- Michael Wilson
WR1
21%
scored
SF
Leo’s chance
- Christian McCaffrey
RB2
51%
scored
- Mike Evans
WR2
32%
scored
- Deebo Samuel Sr.
WR1
31%
scored
Final result
ARI 30
– 36 SF 
How the game was played
Quarterback, the backs who carried it and the receivers who caught it.
ARI
| Jacoby Brissett QB |
38/52 | 280 yds | 2 TD | 0 INT |
| Jeremiyah Love RB |
21 car | 90 yds | 0 TD | 5 rec, 19 yds |
| Tyler Allgeier RB |
2 car | -1 yds | 0 TD | 4 rec, 10 yds |
| Michael Wilson WR |
11/17 | 89 yds | 1 TD | |
| Trey McBride TE |
9/11 | 75 yds | 0 TD | |
| Marvin Harrison Jr. WR |
3/5 | 40 yds | 0 TD | |
SF
| Brock Purdy QB |
15/27 | 297 yds | 4 TD | 0 INT |
| Christian McCaffrey RB |
15 car | 75 yds | 1 TD | 4 rec, 41 yds |
| Kaelon Black RB |
4 car | 17 yds | 0 TD | |
| Deebo Samuel Sr. WR |
2 car | 14 yds | 0 TD | |
| George Kittle TE |
6/7 | 82 yds | 2 TD | |
| Jordan Watkins WR |
2/2 | 60 yds | 0 TD | |
| Christian McCaffrey RB |
4/5 | 41 yds | 0 TD | |
How Leo’s read held up
What Leo expected before kickoff, the posted number he was calling against, and what happened. A winner call is only made when one side is above 60%; a yardage or points call needs a real gap from the line before Leo takes a side.
| Market | Leo expected | Line | Actual | Leo’s side and result |
|---|
| Winner | SF 78% | — | SF won | RIGHT |
| Total points | 45 | 48.5 | 66 | UNDER · WRONG |
| Margin | SF by 15.9 | SF −7.5 | SF by 6 | SF −7.5 · WRONG |
“Main reason” names which of Leo’s two inputs was further off — how much the player was used, or how efficient he was when he was.
Passing yards
| Player | Line | Leo | Side | Actual | Off by | Main reason | Result |
|---|
| Jacoby Brissett ARI |
225.5 | 210 |
UNDER |
280 |
70 |
More attempts (52 vs 36.4 expected) |
WRONG |
| Brock Purdy SF |
242.5 | 234 |
no side |
297 |
63 |
More efficient (11 vs 8.2 yds/att) |
NO LEAN |
Rushing yards
| Player | Line | Leo | Side | Actual | Off by | Main reason | Result |
|---|
| Jeremiyah Love ARI |
41.5 | 38 |
UNDER |
90 |
52 |
More carries (21 vs 10 expected) |
WRONG |
| Tyler Allgeier ARI |
34.5 | 34 |
no side |
-1 |
35 |
Fewer carries (2 vs 9.7 expected) |
NO LEAN |
| Kaelon Black SF |
32.5 | 47 |
OVER |
17 |
30 |
Fewer carries (4 vs 10.5 expected) |
WRONG |
| Christian McCaffrey SF |
58.5 | 64 |
OVER |
75 |
11 |
More efficient (5 vs 4.2 yds/carry) |
RIGHT |
Receiving yards
| Player | Line | Leo | Side | Actual | Off by | Main reason | Result |
|---|
| Michael Wilson ARI |
47.5 | 43 |
UNDER |
89 |
46 |
More targets (17 vs 7.3 expected) |
WRONG |
| Deebo Samuel Sr. SF |
41.5 | 49 |
OVER |
80 |
31 |
|
RIGHT |
| Mike Evans SF |
55.5 | 59 |
OVER |
34 |
25 |
Less efficient (5.7 vs 9.4 yds/tgt) |
WRONG |
| Kendrick Bourne ARI |
23.5 | 36 |
OVER |
22 |
14 |
Fewer targets (3 vs 4.8 expected) |
WRONG |
| Marvin Harrison Jr. ARI |
32.5 | 29 |
UNDER |
40 |
11 |
More efficient (8 vs 7.1 yds/tgt) |
WRONG |
| KhaDarel Hodge SF |
— | 3 |
no side |
0 |
3 |
On target |
|
Player and team statistics from the open nflverse dataset. Roles assigned by actual usage — most attempts, carries and targets — not depth chart.