Building us-racing
2026.JUL.31 · data · side-project · horse-racing
I built us-racing because I wanted to beat the toughest game in the world. It’s primarily for me for now, but I might sell it one day.
What it does
It’s a Bayesian handicapping workbench for US thoroughbred racing. The homepage sends you to today’s cards, where every race is scored by a speed-figure model that strips out the track variant, distance, pace, and connections, then a second model turns those figures into win probabilities you can compare to the betting board.
Each card has four views — Beginner, Intermediate, Expert, Quant — so you can move from a plain-English $100 wager plan down to the raw model primitives (α, σα, κJ, κT, model probability, edge, EV per $1, Kelly fraction). Same race, four lenses.
How it’s built
- Frontend: [fill in: Next.js / React / Astro / other, and version if relevant]
- Hosting: Vercel
- Data: [fill in: where the data comes from — Equibase, DRF, TrackMaster, scraped, public APIs, manual entry?]
- Refresh cadence: [fill in: live? nightly batch? on-demand?]
- Database / storage: [fill in: Postgres on Neon? Supabase? Vercel KV? CSV files?]
The most interesting piece technically is the speed figures. I’m building them with MCMC methods — a Bayesian approach to figuring out how fast a horse actually ran on a given day, after accounting for track condition, distance, and pace. It’s the same family of techniques used in a lot of modern sports analytics, and for a sport with this much variance per race it fits the problem unusually well.
What I’d do differently
[fill in: either the bug that still annoys you, the architecture choice you’d redo, or the feature you wish you’d built from day one. Even one sentence is enough.]
Live at us-racing.vercel.app. [fill in: source on GitHub at ___ if it’s open, otherwise delete this sentence.]