Under the hood
Scrape, rate, forecast, publish. Every figure below is out-of-sample.
1.58Mboat-race rows
7,693regattas, 37 seasons
23,824sailors rated
212tests, CI on clean checkout
Pipeline
Accuracy
Squad model error (rating points, lower is better)
Singlehanded
Match race
Fitted before each season, tested on it. Exact driver named: 63% / 46%. Ratings are today's, so slightly optimistic.
Decisions
| Problem | Change | Evidence |
|---|---|---|
| Trainer stopped before converging | rating increments + first-race prior, retuned on week-ahead forecasts | 69.6 → 70.4% pairwise |
| Newcomers have no history | start at school debut median, not league mean | +3.5 pts on newcomer pairs |
| Races in a regatta are correlated | simulate with regatta effect, drift, same-boat effect | team totals checked at every championship |
| Most likely squad is a poor rating forecast | price a calibrated, probability-weighted rating | error 0.43 vs 0.55 (SH), 0.44 vs 0.55 (MR) |
| Strongest-event-first sent specialists to fleet | staff singlehanded / match race first | 0.9% of such drivers also sail fleet that week |
| Availability is uncertain | Monte Carlo weekend, one sailor per boat, 2,000 draws | 80% interval shown per entry |
| Scraped data vs source | re-scrape, compare boat by boat with Techscore | 0 dropped boats, all numeric fields match |
| Page and server must quote the same price | one snapping rule in Python and JS | unit test compares both |
Operations
Nightly pipelinegated deploy
Optional stagesfail soft
Page generatorsidempotent
Worker restartpkill lswsgi
Import-time threadsnone
Prices (Py = JS)tested
Limits
- Match-race results on Techscore are one final ranking: no round-robin data.
- ~5,400 singlehanded rows lack a class year, ~1,300 keelboat boats lack a skipper; neither feeds ratings.
- Discipline accuracy uses today's ratings. The play-money fantasy market is a research tool, not gambling.