I built SharpLines because almost everything in sports prediction is sold on hype inflated, cherry picked win rates with no math behind them. As someone who loves both sports and machine learning, that bothered me. So I set out to build the opposite: a system that forecasts game outcomes honestly and shows its work.
What it does: predicts moneyline, spread, and over/under outcomes across 12 leagues (MLB, NHL, NFL, NBA, NCAAB, NCAAF, the top European soccer leagues, and MLS). Every prediction comes with a calibrated confidence level and a plain-English explanation of why the model leans the way it does.
Under the hood it's a 10 model ensemble Bayesian, Elo, Poisson, Monte Carlo, an LSTM and a neural net, plus market-sentiment and player impact models all combined by a meta learner. That's layered with no vig "fair" odds, line movement tracking, team rest and travel, home/away splits, weather, and historical matchups. It's a full product too: web app, native iOS and Android, live game data, tiered subscriptions. I build and run all of it myself.
Here's the part nobody advertises: generating a prediction is easy. Being honest about how confident to be is the hard part. Most of my recent work hasn't been on flashy new models it's been on calibration. Measuring expected calibration error, tracking closing line value, excluding any retroactive data from the metrics, and only ever displaying confidence the model can back up out of sample. The goal is 70%+ on the high confidence subset, measured honestly rather than cherry-picked and the gap between where the numbers are and where I want them is exactly what keeps me building.
Right now I'm focused on the reasoning layer: getting the model to explain its picks clearly enough that you understand the why, not just the number.
If you've built anything around probability calibration or model honesty, I'd love to hear how you handled it especially the tension between what's statistically honest and what users want to see.