Tennis League
Workplace tennis league scoring, scheduling, and standings.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
College football spread model tested against betting lines: pre-registered backtests and a live, graded track record
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A model that predicts college football point spreads and tests them against sportsbook lines, with an honest track record.
Site: https://mattrudy13.github.io/cfb-picks/
Status: model v3 passed its pre-registered backtest bar narrowly (55.3% at the opener on 172
picks, 2022–2025, but 49.1% at the close; see SPEC.md and the Backtest page), so its spread picks are
provisional. They become official only if, over 100+ live picks, lines move toward them by the close
by more than luck would explain (95% confidence). Earlier models (v1, v2) missed the bar; v2's week 7 picks are kept as a separate record.
Underdog moneylines were tracked through October 11, 2026, then stopped.
index.html): this week's picks and the record (win rate, ROI, line move).board.html): every FBS game with the model's line and win chance next to the market's.ratings.html): power ratings for every FBS team, plus the Elo, scoring, EPA and success-rate
ratings behind them; SP+ and FPI for comparison.team.html?team=<school>): a team's schedule, model and market lines, results and rating over time.backtest.html): how both models did on 2022–2025 and the go-live checklist.No server and no build step: GitHub Actions write JSON into data/, and Pages serves the HTML plus that JSON.
update-data.yml Sat noon–Sun 3 AM every 3 h, Sun/Mon/Wed 6 AM ET build-data → grade-picks
snapshot-odds.yml Sun 9 PM, Tue + Fri 10 AM, Sat 9 AM ET build-data → fetch-odds → record-picks
check-assets.yml on push stamp-assets --check
| File | What it is |
|---|---|
model.js | Ratings (Elo, opponent-adjusted margin, EPA and success rate), fitted preseason priors, blend. Shared by the scripts |
common.js, style.css | Browser helpers and styles for every page |
scripts/backtest.mjs, scripts/backtest-v2.mjs, scripts/backtest-v3.mjs | The v1, v2 and v3 backtests. v2 and v3 also write their model's settings (data/backtest-v*.json → live); build-data runs v3's if it passed its bar, else v2's |
scripts/build-data.mjs | Fetches this season from CFBD and writes data/<season>.json; also caches closing lines and weekly SP+/FPI snapshots in data/raw/ |
scripts/fetch-odds.mjs | The Odds API snapshot (US-licensed books only) → data/odds-<season>.json |
scripts/record-picks.mjs, scripts/grade-picks.mjs | Maintain data/picks-<season>.json; grading also measures each pick's line move to CFBD's closing line |
scripts/fetch-history.mjs | One-time CFBD history into data/raw/ (skips cached files) |
scripts/build-ledger.mjs | Research: every FBS game's model and book lines at each snapshot (from git history), CFBD open/close and result → data/ledger-<season>.json (gitignored) |
Secrets: CFBD_API_KEY (CollegeFootballData, free tier shared with h2h) and ODDS_API_KEY (this project's own key;
te-tracker has a separate one). Set with gh secret set <NAME> -R mattrudy13/cfb-picks.
node scripts/build-data.mjs --offline # rebuild from data/raw/ (no API calls)
python3 -m http.server 8000 # then open http://localhost:8000
node scripts/backtest-v3.mjs # rerun the live model's backtest (changes the live model's settings)
After editing common.js or style.css, run node scripts/stamp-assets.mjs before committing.
Test offline odds with node scripts/fetch-odds.mjs --fixture <file> in a scratch copy of the repo,
never in data/.