# Week 0 (2026) Analysis Log — Bookie

**Date:** 2026-08-15
**Author:** Bookie (Hermes bot profile)
**Project:** cfb-model-lab (~/repos/cfb-model-lab)
**Status:** Analysis complete. Zero picks — correct output by design.

---

## Summary

Week zero (Aug 27–30) has 76 games, only **8 FBS vs FBS**. The model projected all 8.
**All edges under the 3.0 threshold. No bets.** The market has priced every week-0 game
correctly; the model agrees with the market on 6 of 8, disagrees mildly on 2, and has
zero edge ≥ 3.0 anywhere. First real plays come week 1 (Sep 3–7): 16 picks, led by
Ohio State -50.25 (edge 10.05) and Rutgers -30.5 (edge 7.6).

---

## 1. Model projections vs market (live CFBD SP+, 2026-08-15 run)

Projection = SP+ rating diff + 2.5 HFA (preseason lane), **HFA dropped on neutral sites**.
Edge = projected_margin - (-spread). Edge > 0 picks home, edge < 0 picks away. Threshold = 3.0.

| Game | Model proj | Market line | Edge | Verdict |
|---|---|---|---|---|
| North Carolina @ TCU | TCU by 5.9 | TCU -7.5 | -1.6 | Pass — **NEUTRAL SITE (Aviva Stadium, Dublin)** — model correctly dropped HFA |
| San José State @ USC | USC by 35.9 | USC -36.8 | -0.8 | Pass |
| NC State @ Virginia | UVA by 4.9 | UVA -4.2 | +0.7 | Pass |
| Jacksonville St @ NDSU | NDSU by 8.5 | NDSU -8.5 | 0.0 | Pass — market nailed it |
| Sacramento St @ EMU | EMU by 9.8 | EMU -8.5 | +1.3 | Closest call — **MAC conference game** (Sac St joined MAC) |
| Hawai'i @ Stanford | Stanford by 2.8 | Stanford -4.0 | -1.2 | Pass |
| New Mexico St @ FSU | FSU by 30.1 | FSU -30.2 | -0.1 | Pass — market nailed it |
| Memphis @ UNLV | UNLV by 5.8 | UNLV -4.2 | +1.6 | Closest call |

Note: picks run used **live CFBD SP+** (preferred over CSV snapshot). CSV snapshot
values differ slightly (e.g., UNLV -4.25, FSU -30.25 in hand-calc).

**CORRECTION (2026-08-15 deep-dive):** NDSU and Sacramento State ARE FBS in 2026
(NDSU → Mountain West, Sac State → Mid-American). The 2025 EPA DB gap is because
they were FCS last season — SP+ covers them (138-team table). The model's neutral-site
handling is correct: UNC @ TCU got zero HFA (5.9 = pure SP+ diff), matching the
Dublin venue.

---

## 2. SP+ 2026 ratings (CSV snapshot, 138 teams)

| Team | SP+ | OFF (rk) | DEF (rk) | ST (rk) |
|---|---|---|---|---|
| USC | 16.8 | 37.7 (6) | 20.5 (29) | -0.3 (100) |
| TCU | 9.1 | 31.3 (31) | 21.9 (40) | -0.2 (87) |
| Florida State | 8.8 | 29.7 (45) | 20.6 (30) | -0.3 (94) |
| Virginia | 6.6 | 26.3 (63) | 19.9 (27) | 0.2 (58) |
| NC State | 4.9 | 30.7 (35) | 25.3 (64) | -0.4 (103) |
| North Carolina | 3.8 | 24.5 (80) | 21.1 (35) | 0.4 (32) |
| UNLV | 2.8 | 31.2 (33) | 28.4 (89) | 0.1 (66) |
| North Dakota State | -1.4 | 24.4 (82) | 25.8 (67) | 0.0 (76) |
| Stanford | -1.9 | 22.7 (97) | 24.0 (55) | -0.6 (128) |
| Hawai'i | -3.9 | 25.3 (69) | 29.8 (93) | 0.6 (8) |
| Memphis | -1.1 | 28.3 (56) | 30.0 (95) | 0.5 (18) |
| Jacksonville State | -7.7 | 24.8 (77) | 32.0 (107) | -0.5 (126) |
| Eastern Michigan | -15.0 | 17.8 (115) | 32.8 (112) | 0.0 (73) |
| San José State | -15.5 | 18.6 (114) | 33.6 (114) | -0.5 (120) |
| New Mexico State | -16.4 | 17.0 (118) | 33.4 (113) | -0.1 (80) |
| Sacramento State | -22.7 | 15.1 (127) | 37.9 (131) | 0.0 (76) |

---

## 3. Model's own 2025 opponent-adjusted EPA (last real data)

| Team | Adj EPA | Allowed | Net |
|---|---|---|---|
| USC | 0.33 | 0.12 | +0.21 |
| Florida State | 0.25 | 0.15 | +0.10 |
| TCU | 0.18 | 0.12 | +0.06 |
| Virginia | 0.14 | 0.09 | +0.05 |
| UNLV | 0.27 | 0.23 | +0.04 |
| Memphis | 0.23 | 0.19 | +0.04 |
| NC State | 0.23 | 0.20 | +0.03 |
| Eastern Michigan | 0.18 | 0.26 | -0.08 |
| San José State | 0.16 | 0.21 | -0.05 |
| Jacksonville State | 0.15 | 0.21 | -0.06 |
| Stanford | 0.10 | 0.16 | -0.05 |
| Hawai'i | 0.13 | 0.18 | -0.04 |
| North Carolina | 0.09 | 0.19 | -0.11 |
| New Mexico State | 0.04 | 0.14 | -0.11 |
| ND State | — | — | **No EPA — FCS, no model lane** |
| Sacramento State | — | — | **No EPA — FCS, no model lane** |

---

## 4. Talent + ELO (live CFBD, 2025)

| Team | Talent | ELO |
|---|---|---|
| USC | 848 | 1871 |
| Florida State | 828 | 1556 |
| North Carolina | 753 | 1320 |
| TCU | 745 | 1670 |
| UNLV | 701 | 1622 |
| NC State | 708 | 1605 |
| Stanford | 707 | 1335 |
| Virginia | 667 | 1637 |
| Memphis | 669 | 1540 |
| Eastern Michigan | 573 | 1239 |
| San José State | 523 | 1146 |
| Jacksonville State | 520 | 1491 |
| Hawai'i | 481 | 1459 |
| New Mexico State | 403 | 1172 |

**Read:** USC and FSU are the only elite-talent teams (848, 828). TCU has 745 talent
but ELO 1670 — overperforming. North Carolina has 753 talent but ELO 1320 —
**massively underperforming** — the fade signal of week 0.

---

## 5. Line movement (open → current, per book)

| Game | Book | Open | Now | Move | Model says |
|---|---|---|---|---|---|
| Memphis @ UNLV | Bovada | -3.0 | -5.5 | 2.5 → UNLV | UNLV by 5.8 |
| Jacksonville St @ NDSU | Bovada | -10.0 | -7.0 | 3.0 → JSU | NDSU by 8.5 |
| NC State @ Virginia | Bovada | -3.5 | -5.5 | 2.0 → UVA | UVA by 4.9 |
| Hawai'i @ Stanford | Bovada | -3.0 | -5.0 | 2.0 → Stan | Stanford by 2.8 |
| SJSU @ USC | Bovada | -35.5 | -38.0 | 2.5 → USC | USC by 35.9 |
| NMSU @ FSU | Bovada | -29.5 | -31.0 | 1.5 → FSU | FSU by 30.1 |
| UNC @ TCU | Bovada | -7.5 | -8.5 | 1.0 → TCU | TCU by 5.9 |
| Sacramento St @ EMU | both | -8.5 | -8.5 | 0 | EMU by 9.8 |

**Read:**
- Market moving TOWARD model: Memphis/UNLV, NC State/UVA, SJSU/USC, NMSU/FSU — confirmation, not edge.
- Market moving AWAY from model: Jacksonville St/NDSU (market fading NDSU hard, model still says NDSU by 8.5), Hawai'i/Stanford (market more confident than model).
- Only real disagreement: Jacksonville State @ NDSU — 3 points of drift against the model, and the model's edge there is exactly 0.0. No bet.

---

## 6. The model's receipts (why zero picks is correct)

- **Edge ≥ 12 is the only real signal**: 55.8% cover, 8/8 seasons, p=0.0039, OOS 7/7 p=0.0078. ~25 plays/season. **No week-0 game has edge ≥ 12.**
- **3-7 bucket is a coin flip** (51.1%, p=0.46). **7-14 bucket loses money** (48.3%).
- **Calibration destroys the signal** — shrinkage at the edges is load-bearing. Don't "fix" it.
- **Line drift is dead**: follow drift at close = 50.5% (n=3306, p=0.58). The 54.9% "open number" is hindsight, NOT bettable.
- **Totals are dead**: honest EPA + tempo rebuild = 46.2% in 14+ bucket. The 63.2% "breakthrough" was leakage.
- Bucket stats (picks_latest): 0-3: n=231 acc=0.5195; 3-7: n=170 acc=0.5118; 7-14: n=101 acc=0.4356; 14+: n=9 acc=0.7778.
- Calibrated walk-forward pooled: n=3440, ATS 0.4927. Buckets: 0-3 52.2% (n=1447), 3-7 51.1% (n=1271), 7-14 48.3% (n=645), 14-17 55.1% (n=49), 17-21 40% (n=20), 21+ 75% (n=8).
- 2025 model comparison: stacked ensemble best picker (74.2% vs market 73.5%); logistic best calibrated (Brier 0.183).

---

## 7. Data sources used in this analysis

| Source | What | Auth |
|---|---|---|
| CFBD API | SP+ (live), talent, ELO, lines, schedule | CFBD_API_KEY in .env |
| CFBD SP+ CSV | data/external/cfbd_2026/sp_plus_2026.csv (138 teams) | local |
| Model EPA DB | data/derived/cfb.db (2025 only, 1768 rows) | local |
| picks_latest.json | exports/picks_latest.json (2026-08-15 run, 16 picks) | local |
| Research exports | exports/*.md (edge hunt, walk-forward, line drift, totals) | local |
| Covers.com | MLB card (separate task) | cache |

---

## 8. Skills inventory (Bookie, 2026-08-15)

**Betting/CFB core:** college-football-research, cfb-betting-features, cfb-lab-development,
walk-forward-backtesting, find-stats (soccer).
**Research:** research-brief, grounded-citations, research-fallback-strategies,
financial-analysis, football-transfer-research.
**Web/verification:** web-verify, har-derived-api-client, blocked-page-recovery,
scraping-workaround-ladder, twitter-x-extraction.
**Ops:** hermes-agent + config/forensics/optimization, obsidian, deploy-to-vercel,
vercel-cli-with-tokens, local-llm-benchmarking, jupyter-live-kernel.

**Gaps identified:** no skill for line-movement analysis (open vs close as signal);
no skill for the weekly picks workflow (run picks → week split → movement check → report).

---

## 10. USER-PROVIDED MATERIALS — found in repo (2026-08-15 deep-dive)

Stephen's "Phil Steele previews, a bunch of other info" is IN the repo. Full inventory:

### Phil Steele 2026 Digital Magazine (data/external/phil_steele_2026/)
- `phil_steele_2026_data.json` (5.1MB) — structured: title, author (Learfield), hash,
  page_count=380, toc (760 entries), pages (380 with order/source_page/text)
- `phil_steele_2026_full_text.txt` (4.8MB, 1900 lines) — full magazine text with page markers
- `phil_steele_2026_pages.json` (4.9MB) — pages array with page/source_page/text
- All 16 week-0 team pages extracted (see section 11)

### Connelly SP+ 2026 Conference Previews (data/external/connelly_*_2026/)
- 10 conference dirs, 9 CSVs each: recaps, continuity, projections, top_transfers,
  coaches, qb_situations, injuries_concerns, prose_stats, key_games
- Master files: connelly_2026_all_projections.csv (138 teams), all_continuity.csv,
  all_qb_situations.csv, all_recaps.csv, connelly_2026_annotated.csv,
  connelly_2026_epa_comparison.csv, connelly_2026_win_model.csv (148 rows)
- Source: Bill Connelly ESPN+ (paywalled, private modeling use only)

### CFBD 2026 snapshots (data/external/cfbd_2026/)
- schedule_2026.csv (1638 rows, weeks 1-13+15), sp_plus_2026.csv (138 teams),
  rosters_2025_snapshot.csv (30072 rows), team_colors.json

### Historical lines (data/external/lines/)
- 189 JSON files, 2017-2025, 21 per season (regular 1-16 + postseason 1-5)

### Power rating snapshots (data/external/power_rating_snapshots/cfbd_lines/)
- 2016-2025, week_season/captured_*.json

### Script Ohio forensic data (data/external/script_ohio_2_0_2025/)
- training_data_2025_week01..postseason CSVs (previous project's snapshots)

### Season previews (exports/season_previews_2026/)
- 141 dirs (138 teams + extras), each with preview data JSON + HTML + PDF

### Other user locations found by hunt subagent
- ~/Documents/season_previews_2026/ (150+ files, Jul 29) — original source previews
- ~/Documents/betting-tracker/ (research folder, soccer + CFB materials)
- ~/01-Knowledge-Base-v2/10-Projects/Personal/Projects/Script Ohio Sports betting modeling/
- ~/repos/Script_Ohio_Model/ — predecessor model repo

---

## 11. Phil Steele team pages — week-0 teams (page numbers in 380-page magazine)

| Team | Page | Key QB note |
|---|---|---|
| USC | 102 | Maiava (#7 QB unit); RB room "best Riley has had" |
| Virginia | 146 | O-line "night and day" improved; DL added Alabama & Ohio St transfers |
| NC State | 150 | CJ Bailey "one of the ACC's best" |
| Florida State | 154 | Rebuilt O-line again (5 starters depart); DL strong (Desir twins) |
| North Carolina | 158 | QB battle: Billy Edwards (Maryland 2024 starter); Petrino offense |
| Stanford | 166 | Davis Warren off ACL; QB uncertainty |
| TCU | 184 | "Best OL in years" — most size/strength Dykes has had |
| Memphis | 224 | QB battle: Stokes (D2 POY) vs Air Noland; explosive RB history |
| UNLV | 264 | Rebuilt DL again (3 starters lost); Mullen run game |
| North Dakota State | 270 | Hayes replaces Payton; 5 straight NFL QBs at position |
| Hawaii | 273 | Schedule difficulty #128; road opener at Colorado St |
| San Jose State | 278 | QB battle: Weaver (Hawaii transfer) vs McDaniel vs Rolovich |
| Eastern Michigan | 322 | Kim 7th season; "best QB in MAC" per HC |
| Sacramento State | 338 | QB switch again; Conklin returns from Fresno |
| Jacksonville State | 347 | 0-6 SU/1-5 ATS non-conf road games since FBS move |
| New Mexico State | 354 | "Most improved group, best OL in 3 years" per HC |

### Connelly QB situations (2026) — week-0 teams
- USC: Maiava returning, highest Total QBR of returning Big Ten starters
- TCU: Jaden Craig (Harvard transfer, 5299 yds 48 TD 10 INT in 21 games)
- Virginia: Beau Pribula (Missouri transfer)
- NC State: CJ Bailey — best returning QB in conference per Total QBR
- Florida State: Ashton Daniels (Auburn transfer, exciting runner)
- North Carolina: Billy Edwards Jr (Wisconsin/Maryland, Petrino offense)
- UNLV: Jackson Arnold (Oklahoma/Auburn, former 5-star, broken internal clock)
- Memphis: Air Noland vs Marcus Stokes battle (floor vs ceiling)
- NDSU: Nathan Hayes (5th-year, solid floor, ceiling questionable)
- Stanford: Davis Warren (Michigan, 24yo, leadership over production)
- Hawaii: Micah Alejado (3106 yds 24 TD as RS freshman, if healthy special)
- SJSU: Luke Weaver vs Robert McDaniel battle
- EMU: Noah Kim (2817 yds 18 TD, excellent sack avoidance)
- NMSU: Adam Damante vs Trey Hedden battle
- Sac State: Carson Conklin (only 1 offensive starter returns)
- Jax State: Caden Creel (1514 pass / 1190 rush as sophomore)

### Connelly continuity (returning production %) — week-0 teams
USC 65 (#14), Stanford 60 (#33), Virginia 59 (#36), FSU 57 (#48), J'ville St 57 (#47),
NC State 54 (#58), NDSU 52 (#65), TCU 51 (#69), NMSU 51 (#73), UNC 44 (#103),
Hawaii 45 (#101), Memphis 42 (#111), UNLV 40 (#116), Sac State 32 (#131),
SJSU 24 (#137) — worst in FBS. EMU 62 (#24) — elite retention.

---

## 12. DEEP-DIVE CORRECTIONS (2026-08-15)

1. **NDSU and Sacramento State ARE FBS in 2026** — NDSU → Mountain West,
   Sac State → Mid-American (MAC). SP+ covers all 138. The 2025 EPA DB gap is
   because they were FCS last year — NOT "no model lane."
2. **UNC @ TCU is a NEUTRAL SITE** — Aviva Stadium, Dublin. Model correctly
   dropped the 2.5 HFA (projection 5.9 = pure SP+ diff). My earlier hand-calc
   that showed 7.8 with HFA was wrong for this game.
3. **Sac State @ EMU is a MAC CONFERENCE GAME** — Sac State joined the MAC.
4. **Scout's "CFBD v1 is dead" claim is WRONG** — verified live: v1 returns 200
   on /talent, /games, /ratings/sp with the repo's key. Corrected scout directly.
   Scout's CORE rating note (new CFBD rating, Aug 2026) is new and useful.

---

## 13. Model vs Phil Steele vs Connelly — week-0 cross-check (2026-08-15)

The model (SP+ diff), Connelly SP+, and Phil Steele agree on the big picture.
Talent-vs-results gap on UNC (753 talent, ELO 1320, SP+ 3.5) is the week's
strongest fade signal — Steele confirms: new QB (Edwards), 44% returning
production (#103), Petrino offense in year 1. Everything points down for UNC
despite the 20th-ranked roster talent.

---

## 9. Known issues

- **Deployed site is stale**: picks.json and matchup.json on Vercel are from 2026-08-06
  (10 picks, old SP+). Local run has 16 picks on fresh live SP+. Needs build_static.py
  + deploy to show current card.
- EPA DB only has 2025 — 2026 projection uses SP+ preseason lane by design.
- FCS teams (NDSU, Sacramento State) have no model lane — SP+ only.
