OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A college football prediction model and website. Every week it projects every FBS game's score, compares the projection with the betting line, and publishes the picks with the kickoff weather forecast and each team's starting-quarterback status.
Website: https://jono-bit-trade.github.io/jonos-picks/ (live once setup step 2 below is done)
CFBD_KEY. Value: the key CollegeFootballData emailed you. Never put the key in a file here.After that it runs on its own:
| When (Central time) | What happens |
|---|---|
| Sunday evening | Saturday's results are in: ratings rebuild and each game's early pick locks at the current line |
| Monday night | Full refresh, picks and the backtest |
| Wednesday to Saturday mornings | Latest lines, kickoff weather forecasts and quarterback status |
| Thursday and Friday nights, Saturday afternoon and night | Scores every 2 hours, so finished games show their results on the board |
The model checks whether each team's starting QB is out. Past games are figured out automatically from box scores. For this week's games, it reads data/qb_status.csv, which you update from the conference availability reports. Open the file on GitHub, click the pencil icon, add a line, and commit:
season,week,team,qb,status,note
2026,9,Texas,Arch Manning,questionable,ankle
status is one of: available, probable, questionable, doubtful, outout and doubtful are projected with the starter missing.questionable shows both projections on the site: if he plays and if he sits.The next morning's run picks it up, or click Run workflow to update right away.
There's no free source for betting splits (share of bets vs. share of money), so you add them from a service you use, such as DraftKings splits on VSiN or Action Network. Add a line per game to data/splits.csv; percentages are for the home team's spread and for the over:
season,week,home,away,bets_home_pct,money_home_pct,bets_over_pct,money_over_pct
2026,9,Texas,Ole Miss,38,61,70,52
The weekly board then flags:
Every logged split is saved with the pick, so the History page's "Sharp money and reverse line movement" table measures over time whether these signals win. The thresholds are SHARP_GAP, PUBLIC_MIN and RLM_MIN_MOVE in src/config.py.
| Step | File | What it does |
|---|---|---|
| Data | src/get_data.py | Downloads games, betting lines, efficiency stats, box scores, talent, returning production, recruiting, transfer portal, coaches and stadiums from CollegeFootballData |
| Ratings | src/ratings.py | Opponent-adjusted offense and defense ratings in points, starting each season from a roster-based preseason prior |
| Weather | src/weather.py | Free kickoff forecasts and past game-day weather from Open-Meteo |
| QB out | src/qb.py | Starting QB out flag: box scores for past games, data/qb_status.csv for this week |
| Features | src/features.py | Efficiency matchups, pace, turnovers, penalties, rest, travel, altitude, time zones, coaching changes, situations |
| Model | src/model.py | Gradient-boosted trees blended with the rating projection |
| Backtest | src/backtest.py | Replays past seasons week by week using only information available at the time |
| Site | src/predict.py, docs/ | Writes the week's picks, ratings and record for the website |
All tunable settings are in src/config.py. To test a change, edit a value and run the backtest (or ask Claude to). Keep a change only if it improves results across several seasons.
The History page grades every game since 2018 four ways, the way the sites it was modeled on do:
Filter by season, team or minimum edge. "Where the model is strongest" shows the spread record at each edge size and highlights any level that holds 60% or better over at least 50 games.
Past seasons are replayed walk-forward: each game uses only ratings and a model built from games before it, so the history isn't flattered by hindsight.
Run Actions → tune-model → Run workflow (20 to 60 minutes). It tries combinations of rating settings, feature groups and blend weights on the older seasons, picks the best, then finds the smallest edge where the spread record reached 60%. It then checks those choices on the 3 newest seasons, which played no part in choosing them; the How it works page shows that holdout result. The winning settings are saved to data/tuned.json and used for this week's predictions too, so upcoming picks and the History page always come from the same model.
A realistic target: 60%+ picking winners is normal; against the spread, every game, 53 to 56% is very good. 60% against the spread is only realistic on the subset of games with the biggest edges, and only if the holdout seasons confirm it.
Lines tend to move toward the side the model likes: in 2023-2025, lines moved toward the model's side about 70% of the time when it disagreed with the opener by 5+ points, and its picks went about 57% against the opening line, versus about 51% against the closing line. So the model's value is early in the week.
data/line_history.csv, so picks can later be graded at the line on a specific day, such as Wednesday.data/predictions_log.csv keeps the last projection made before each kickoff, and the Record page grades those. When the site first launches mid-season, earlier games of the season are filled in by replaying the model with only pre-game information, and the site labels them as backfilled.
The first download uses roughly 700 CollegeFootballData calls. After that, upkeep is about 80 calls a month. If your plan's monthly limit is lower than the first download needs, run the backfill in pieces: on your computer, python src/get_data.py --from-season 2019, or ask Claude to change the workflow.
pip install -r requirements.txt
echo YOUR_KEY > key.txt # key.txt is never uploaded (.gitignore)
python src/get_data.py
python src/predict.py
python src/backtest.py
cd docs && python -m http.server # then open http://localhost:8000
Tests (no key needed): python tests/test_parsers.py and bash tests/smoke_test.sh.
Projections are for entertainment and analysis, not betting advice.