Active
JTW Handicapper
Password: Kentucky-Derby. A machine learning system for horse racing markets. Targets exotic and multi-race pools using XGBoost models trained on roughly 317,000 historical entries.
Machine Learning · XGBoost · Flask · Python · SQLite

Links
The JTW Handicapper is a Flask application I've been building and rebuilding for years. The current version uses XGBoost models with isotonic and Platt calibration, trained on a 19-table SQLite schema with around 317,000 historical race entries.
The project has gone through six iterations. The first five tried to beat the win market directly, and all five failed for the same reason: the win market is too efficient at the favorite end of the price distribution and too thin at the long-tail end to consistently capture edge. The current version targets exotic pools (exactas, trifectas, superfectas) and multi-race bets (Pick 3, Pick 4, Pick 6), where the combinatorial structure of the bet creates inefficiencies that survive even moderate sharp-money pressure. There's also a live adjustment system that updates predictions during the race day as morning lines, tote board prices, and scratches arrive.
It's not a serious commercial play. It's a project I keep returning to because the problem space is rich — a small, mostly-public-data world with adversarial pricing, structural inefficiencies, and a clean ground-truth signal at the end of every race. Most of what I've learned about applied ML, calibration, and feature engineering came from this project rather than from coursework.