PRIME FC Mini League
PRIME FC Mini 4-a-side League 2026 — fixtures, results and live table.
Translation pending
Paper bets on NBA, NHL and NFL: does an AI analyst beat the betting market?
Sports & fitnessPython · JavaScriptGitHub @ryanwmerrickOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A paper-betting experiment on NBA, NHL and NFL games. It asks one question: does an AI analyst add anything beyond what the betting market already knows?
Four portfolios bet the same games at the same flat stake (shown as $10 on the dashboard), always using real prices from The Odds API:
| Portfolio | What it does |
|---|---|
market_ev | Line shopping: bets the best US-book price when its EV against Pinnacle's de-vigged fair line is at least 2.5%. No AI. |
ai_analyst | Gemini Flash adjusts the market's fair moneyline probability (by 5 points at most) using ESPN injury reports, records and back-to-backs. Code computes EV and bets when it's at least 3%. |
baseline_fav | Control: always bets the moneyline favorite. |
baseline_random | Control: bets a seeded coin-flip side. |
Results are scored on ROI, closing line value (CLV), and for the AI, a Brier score against the market's own probabilities.
| Workflow | When | What |
|---|---|---|
daily.yml | 9 overnight attempts; the first waits until 8:30 AM ET | Grades finished games from ESPN's scoreboard, snapshots odds for leagues playing that day, runs every portfolio, publishes the dashboard |
snapshot.yml | 9 daytime attempts; the first waits until 4:45 PM ET (and 12:30 PM Sundays) | Moneyline snapshot near game time for CLV, then publishes the dashboard |
grade.yml | :07 and :37 past each hour, 1pm-2:30am ET | Grades finished games from ESPN (no odds credits) and republishes when anything changed |
pages.yml | Push to web/ | Republishes the dashboard |
sportpredict (db/001_init.sql).web/ that reads data.json, which sportpredict.jobs.export writes on every run. Hosted on GitHub Pages..env): DATABASE_URL, ODDS_API_KEY, GEMINI_API_KEY.pip install -r requirements.txt
pytest -q tests
python -m sportpredict.jobs.daily # ~3 Odds API credits per league with games that day
python -m sportpredict.jobs.export site/data.json && cp web/* site/ && python -m http.server -d site
GitHub starts scheduled jobs anywhere from minutes to ~6 hours late, so picks and snapshots are scheduled many times. The first attempt to start waits (sportpredict/jobs/gate.py) until the target time and runs the job; the rest find it done and exit without spending credits. Run workflow starts a job immediately; tick force to repeat one that already ran.
The free tier gives 500 credits a month. Grading uses ESPN (free), and a free events check skips leagues with no games, so odds are only bought on game days: about 3 credits per league per game day, plus 1 per league for each CLV snapshot. NBA + NHL + NFL comes to roughly 300 a month.
predictions.runs.sportpredict/config.py. Give each setup 300 graded bets before judging it.