Labs

Most consulting sites assert capability. These are the working artifacts instead: models built end to end on live data, validated the way they would have to be validated for a client, and published with their track records attached — including the parts where they are wrong.

Projects

Each of these runs on its own schedule, settles its own predictions against reality, and keeps a scorecard nobody edits after the fact.

Forecasting · Live

Model HQ — Bayesian sports forecasting

A run-differential model for Major League Baseball and a scoring-margin model for the NFL. Kalman filters carry a strength rating for every club that drifts between games and reverts between seasons; a Bayesian ridge turns those ratings and a per-game stat sheet into a predicted margin with an honest error bar; a calibration step checks that a stated 60% really happens 60% of the time. Every prediction is graded against a market price, and the model publicly says when it has no edge, which is most nights.

Built on 45,000 games of public data going back to 2008, refit nightly, published automatically. Nothing is for sale and no wagering is facilitated; the point is the method.

44,000+
games in training
7,289
held-out predictions graded
56–57%
winners picked, out of sample
±4.4
runs of honest uncertainty
Kalman filtering Bayesian regression Walk-forward validation Probability calibration Negative binomial GLM Python GitHub Actions
Open Model HQ →

Why these exist

The engagement habits on the Approach page are easy to claim and hard to demonstrate: baselines before complexity, methods named where they are used, the repetitive work automated so paid hours go to judgment. A live model is where those habits either hold up or do not.

So each project here starts by building the dumbest baseline that could work and refuses to advance until something beats it on held-out data. Where a model fails that test, the failure stays published. Sports are the test bed for the same reason they make a good interview question: the data is public, the predictions are falsifiable, and the answer arrives in three hours instead of three quarters.