BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Probably not but lets see if we can
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Probably not — but let's see. A Python-based sports betting tracker and modeling
system that snapshots bookmaker odds twice daily, tracks line movement across
sportsbooks, and trains models to pick winners (and covers) against the closing
line.
The season is graded and the books are in
(NFL/inventory/INVENTORY_2025.md,
NFL/Weeks.md). Over 4,350 out-of-sample games from 2010-2025,
walking the model forward one retrain per season:查看完整 README ↗Probably not — but let's see. A Python-based sports betting tracker and modeling system that snapshots bookmaker odds twice daily, tracks line movement across sportsbooks, and trains models to pick winners (and covers) against the closing line.
The season is graded and the books are in
(NFL/inventory/INVENTORY_2025.md,
NFL/Weeks.md). Over 4,350 out-of-sample games from 2010-2025,
walking the model forward one retrain per season:
| model | closing line | |
|---|---|---|
| straight up, 2010-2025 | 64.3% | 66.4% |
| straight up, 2025 only | 65.5% | 65.8% |
| ATS, 2010-2025 | 50.5% | — (52.4% needed) |
| totals, 2010-2025 | 49.5% | — (52.4% needed) |
Blending the model into the market makes the market worse out of sample (log loss 0.613 vs 0.610), which is the cleanest statement of the result: after the closing line has spoken, the model adds nothing. Flat-stake ROI is -4.9% on spreads and -4.5% on totals, both about what the vig costs.
That is the honest baseline every future change here gets measured against.
Details and the two places an edge might actually live are in
NFL/model/v2/README.md.
What each live model actually looks at, per sport:
docs/MODEL_FEATURES.md— the quick sheet (home Elo, away Elo and the sport-specific features, with the tuned parameters and which features are currently dormant).docs/MODEL_SOURCES.md— the same features with the upstream each one is pulled from, its measured worth, and the training window per model. Plus what an NBA board would need.
data/odds_api_data_*.csv)NFL/model/v2/; the older single-split v1 is kept in
NFL/model/ for provenance)NFL/inventory/)soccer/, spec in soccer/SPEC.md)soccer/clubs/, spec in soccer/clubs/SPEC.md)whosyurgoat.app/vegas/mlb
(mlb/daily/, writeup in reports/mlb_elo_stat_associations.md)git clone https://github.com/Hijodeagua/Can-Tre-Beat-Vegas.git
cd Can-Tre-Beat-Vegas
pip install -r requirements.txt
Python 3.11+ recommended.
Set your Odds API key (free tier: 500 requests/month at the-odds-api.com):
export ODDS_API_KEY=your_key_here
No key is needed to work with the committed odds snapshots in data/ —
the models and reports run entirely off those CSVs.
# Snapshot current NFL + NBA odds (h2h, spreads, totals)
python -m data_jobs.odds_api.fetch_odds --sport all
# Just one sport
python -m data_jobs.odds_api.fetch_odds --sport nfl
# from the repo root
python3 NFL/model/schedule.py --refresh # optional: pull latest nflverse schedule
python3 -m NFL.model.v2.train --target all --save # win + ATS + total, walk-forward
Saved models, per-season metrics, backtests, feature importances, and the full
out-of-sample prediction files land in NFL/model/v2/artifacts/.
python3 -m NFL.model.v2.predict --season 2026 --week 1 --write
Writes to data/predictions/.
python3 -m NFL.inventory.audit --season 2025 --write # data + Vegas report card
python3 -m NFL.inventory.grade_season --season 2025 --write # graded weekly ledger
python -m data_jobs.reports.simplified_daily_report
web/)A deployable Next.js 14 (App Router) static site — the next-48-hours
homepage. For every upcoming NFL and NBA game it shows the consensus line
(moneyline, spread, total), no-vig market win probability, line movement since
open, model picks with edge-vs-market when available, and an expandable
book-by-book odds table. It reads the static JSON in web/public/data/,
produced by the Python pipeline; it runs no Python server itself.
# 1. Regenerate the static JSON from the committed odds snapshots
python -m data_jobs.export_web_json
# 2. Build / run the front end
cd web
npm install
npm run dev # http://localhost:3000/vegas
npm run build # production build (static, prerendered)
The site is served under the /vegas base path (see web/next.config.mjs)
so it can be proxied at whosyurgoat.app/vegas by the
hub. The unified odds
workflow re-exports the JSON after every odds fetch, so a Vercel project
pointed at web/ redeploys with fresh lines 2x daily.
GitHub Actions keep the data flowing without manual pulls:
| Workflow | Schedule | What it does |
|---|---|---|
unified-odds.yml | 2x daily (10:00 / 22:00 UTC) | Fetches NFL + NBA odds snapshots, re-exports web JSON, commits |
daily-report.yml | daily (10:00 UTC) | MLB daily pipeline: pulls new box scores, updates Elo, sends the futures / slate / grade emails, commits site data (see mlb/daily/README.md) |
soccer-daily.yml | daily (10:00 UTC) | Club-soccer daily pipeline: refreshes top-5 league + UEFA results, regrades the ledger, predicts the slate, Monte Carlos the tables, commits site data (see soccer/clubs/daily/README.md) |
cfb-daily.yml | daily (10:00 UTC) | College-football daily pipeline: refreshes the season from cfbfastR-data, replays the FBS Elo, grades the ledger, predicts the slate, Monte Carlos the regular season, commits site data; Mon/Thu update email (see CFB/daily/README.md) |
nfl-daily.yml | daily (10:00 UTC) | NFL Elo daily pipeline: refreshes the nflverse schedule, replays the betting-blind Elo, grades the ledger, predicts the next week, Monte Carlos the season and the playoff bracket, commits site data; Tue/Thu update email (see NFL/daily/README.md) |
The 2x-daily cadence is deliberate — it captures a morning line and an evening line before games while conserving the free-tier API quota.
Can-Tre-Beat-Vegas/
├── data_jobs/ # Data ingestion + reporting
│ ├── odds_api/ # The Odds API client
│ │ ├── client.py # HTTP client + quota tracking
│ │ ├── config.py # Sports config, team metadata, stadium coords
│ │ ├── fetch_odds.py # CLI entry point (--sport nfl|nba|all)
│ │ └── processors.py # Raw API response → tidy CSV
│ ├── reports/ # Daily report generators
│ └── export_web_json.py # Next-48-hours slate → web/public/data/
├── NFL/
│ ├── elo/ # Betting-blind NFL Elo engine, tuner, tuned_params.json
│ ├── daily/ # Daily slate/grade/futures runner + email (see daily/README.md)
│ ├── model/ # v1 (superseded, kept for provenance)
│ │ ├── features.py # Rolling feature engineering (79 features)
│ │ ├── schedule.py # nflverse schedule loader
│ │ ├── line_movement.py # Open vs close aggregator (shared with v2)
│ │ ├── train.py # Single temporal split + LightGBM
│ │ └── v2/ # Current model
│ │ ├── elo.py # MOV-adjusted Elo, walk-forward
│ │ ├── dataset.py # 45 features off the nflverse schedule
│ │ ├── train.py # Season-by-season walk-forward + backtest
│ │ ├── predict.py # Score upcoming games → data/predictions/
│ │ └── artifacts/ # Models, metrics, backtests, OOS predictions
│ ├── inventory/ # End-of-season audit
│ │ ├── audit.py # Capture coverage + Vegas' report card
│ │ ├── grade_season.py # Writes the graded weekly ledger
│ │ └── INVENTORY_*.md # Generated season inventory
│ ├── Week_1/ ... Week_22/ # Weekly picks vs Vegas, graded (out of sample)
│ └── Weeks.md # Season-long results tally
├── soccer/ # World Cup / international soccer model
│ ├── SPEC.md # Model spec (Elo + squad-strength adjustments)
│ ├── data/ # International results 1872–present + fixtures
│ ├── model/ # Elo engine, training, fixture predictions
│ └── clubs/ # Top-5 European league club Elo (EPL, Bundesliga,
│ │ # La Liga, Serie A, Ligue 1) — see clubs/SPEC.md
│ ├── data/ # League + UEFA results, transfers, fixtures
│ ├── model/ # Per-league Elo, UEFA glue, outcome model
│ └── daily/ # Daily slate/grade/futures runner
├── CFB/ # College football — FBS Elo + daily pipeline
│ ├── data/ # cfbfastR-data fetcher, team aliases
│ ├── model/ # CfbEloEngine, tuner, tuned_params.json
│ └── daily/ # Daily slate/grade/futures runner + email
├── data/ # Odds snapshots + stats
│ ├── odds_api_data_*.csv # NFL odds snapshots (timestamped)
│ ├── nba/ # NBA odds snapshots + actual game results
│ ├── schedules/ # Cached nflverse games.csv
│ ├── models/ # Pickled model checkpoints
│ └── predictions/ # Model prediction outputs
├── web/ # Next.js front end (basePath /vegas)
│ ├── app/ # Slate homepage + methodology
│ └── public/data/ # Static JSON written by export_web_json.py
├── reports/ # Generated daily HTML reports + charts
└── .github/workflows/ # Automated odds fetch + report generation
The end state is a homepage for the next 48 hours of games — every NFL, NBA, and World Cup matchup coming up in the next two days, side by side with:
Steps to get there:
data_jobs/export_web_json.pyweb/, served at /vegas)web/ to Vercel and point the hub's /vegas rewrite at itsoccer/, see soccer/SPEC.md for the full roadmap)soccer/clubs/)CFB/), the third daily
model alongside MLB and club soccerNFL/elo/, NFL/daily/), the fourth daily
model — betting-blind, so its line can be held up against the booksamericanfootball_ncaaf in
data_jobs/odds_api/config.py) so the college model has a market to
lose to — ~180 credits/month in season on top of NFL's ~180, so it
needs the NBA gate or a one-snapshot-a-day cadence first (see
CFB/DATA_PULL_PLAN.md §7)soccer_epl, …) and club model picks on the
slate (quota permitting)soccer_fifa_world_cup to the Odds API
config) and soccer model picks on the slatedata/predictions/*.csv when dates match)python3 -m NFL.model.v2.predict --season 2026 --writeRanked by how much they'd move the answer, not by effort:
-110 / -110 but never -3.5, so the entire 2025 season has moneyline-only
line movement. The current schema fixed this; don't regress it.line_movement.py output in as a model feature (now that it
actually returns 2025 games)MIT
whosyurgoat.app/vegas/cfbCFB/CFB/README.mdwhosyurgoat.app/vegas/nfl and a Tue/Thu update email
(NFL/elo/, NFL/daily/, writeup in NFL/elo/README.md)whosyurgoat.app/vegas/models walks every model
from its data source to its graded pick, each step linking to the file that
does it (web/app/lib/modelDocs.ts); the club-soccer sides-vs-differences
study (four outcome models on this year's matches, with KPIs and feature
importances) is at reports/soccer/sides_vs_diffs_2026.html
(soccer/clubs/model/report_sides_2026.py)web/public/emails/<league>/ with a permalink footer (this
email, the previous one of its kind, the league's archive), indexed in
web/public/emails/index.json and browsable by league at
whosyurgoat.app/vegas/emails (data_jobs/email_archive.py); the weekly
models-check email draws its permutation / SHAP importances as email-safe
bar charts (data_jobs/reports/email_charts.py)reports/)NFL/Week_*/, running tally in NFL/Weeks.md)export_web_json.py