I would start from the pregame rating as a prior. expected final margin = current lead + pregame edge scaled by time left, and the uncertainty shrinks as the clock runs.
football would needs possession and field position and hockey would need an goal-rate model like poisson on top.
i haven't built it so not sure if it would be the right way, but that's where i'd start.
the model behind "team a beats team b" fits on one line:
p(a wins) = 1 / (1 + e^-(rating a - rating b + home edge))
a gap of 0.5 is 62%. a gap of 1.0 is 73%. a gap of 2.0 is 88%.
i checked it on 23,406 games predicted before they were played. the curve holds within a few points.
https://t.co/uHMUoKSW9m
been improving bayesratings.
the site structure got reworked, so pages load a lot faster. team pages are rebuilt with player data.
new player pages for every player: game logs, injuries, depth roles, a recent form chart, home and road splits, and a share image.
player lab uses distributions fit to real data, and team lab got a cleanup.
also added futures simulations with postseason estimates for the nba, nhl and nfl. mlb goes live closer to spring training.
continuing to work on improvements to show more insight into teams and players.
https://t.co/uHMUoKSW9m
kalshi and polymarket fees can erase what looks like an edge. the displayed contract price isn’t the full cost of the trade.
the structure matters. taker fees depend on the contract price and number of contracts—not whether you make a profit. kalshi also has market-specific rates. polymarket international varies by category, while polymarket us has a separate volume-based schedule. maker and taker fees aren’t interchangeable, and placing a limit order doesn’t automatically make you a maker.
the fees can be substantial relative to the amount invested. under kalshi’s general taker formula, they run from 6.3% of the purchase cost at a 10¢ price to 0.7% at 90¢, before rounding. selling before settlement can add another execution fee.
that’s money missing from any calculation that compares a probability estimate with the displayed price alone. an apparent positive-EV play can be negative after fees.
cheat sheet below breaks down the formulas, when charges apply, and the all-in cost.
put together an explainer video this morning on one way to model sports.
give each team a rating. a logistic curve turns the rating gap between two teams into a win probability. then poisson and negative binomial distributions forecast the score itself.
ends with how a team's numbers update as the season goes.
bears at seahawks tonight on monday night football.
chicago is 5-2 but 10th in our power ratings. seattle is 4-3 and 2nd.
one record says the bears are the better team. the ratings say seattle has played better than its record. tonight is a good test of which one is right.
nhl games are tied after 60 minutes about 22% of the time.
that's why the 60-minute line is a 3-way bet, and why you can't just take a 2-way win chance and scale it down.
once games went past regulation, favorites won only 51% of them. overtime and shootouts are close to coin flips.
so a 60% favorite isn't 46.6% to win in regulation. it's closer to 48%.
@SCHADEDmusic I have limited data . But if you need more , just tell Claude to hit nflverse or sportsdataverse repos, you can pull NBA, NFL, MLB data going back to the 90s . Play by play data .
Made a couple other changes this morning.
sports-leader-mcp v0.5.0 is out
It adds 13 new tools for historical data going back to 2021 across MLB, NBA, NFL and NHL: games, box scores, player game logs, rosters, injuries, depth charts, lineups, weather and the daily bayesRatings team ratings.
https://t.co/m16feUHuLy
updates to sports-leader-mcp v0.4.0
4 new tools: rankings, power index, team stats, futures
Fixes to leaders, win probabilities, standings, scoreboards
https://t.co/BshO7Ubl7g
@SCHADEDmusic not really. It's built on top of the espn api. i backfilled historical data back to 2021 and host it so it's quick to pull, plus our published team ratings. no model or forecasts are in there.
made a few other changes.
sports-leader-mcp v0.5.0 is out It adds 13 new tools for historical data going back to 2021 across MLB, NBA, NFL and NHL: games, box scores, player game logs, rosters, injuries, depth charts, lineups, weather and the daily bayesRatings
updates to sports-leader-mcp v0.4.0
4 new tools: rankings, power index, team stats, futures
Fixes to leaders, win probabilities, standings, scoreboards
https://t.co/BshO7Ubl7g
i started working on this site to focus my boredom while waiting for trade setups. this past week, i did a full redesign that i think turned out really nice. still more work to go on the team and player labs. would like to allow for more input from the user when creating one ratings and simulations. but its really coming along. has been a fun project. https://t.co/uHMUoKSW9m
a z-score tells you where a number sits in its distribution.
z = (x - mean) / sd
0 is the middle.
+1 is one standard deviation above.
a .600 record:
nba: z = +0.67
mlb: z = +1.30
baseball records bunch tighter, so the same record stands out more.
by raw win%, the 2022 dodgers (.685) trail the 2024-25 thunder (.829).
by z, the dodgers sit further from their league's middle:
dodgers +2.41
thunder +2.19
check the shape before the percentile lookup.
mlb run margins past 3 sd:
actual: 0.72%
normal curve: 0.27%