Every number on LineHype is computed from public data. Here's exactly how — the model, the sources, and what's written by a human versus a machine. If you can't check our work, it isn't worth your trust.
This page exists because a model you can't inspect is just another hot take with decimal points bolted on. So here's the deal we make with you: everything on this site is built from data anyone can pull, using methods we'll explain in plain terms.
If we compute a number, we'll tell you how. If we're citing a number someone else computed, we'll say whose it is. And if a machine wrote the words you're reading, we'll say that too. No black boxes, no "trust the algorithm." Just the work, shown.
Our power ratings use Elo — the same rating system that ranks chess players, adapted for sports by FiveThirtyEight and others. The whole idea fits in a paragraph.
Every team starts at 1500, dead average. After each game the winner takes points from the loser. How many depends on two things: how surprising the result was (beating a great team earns more than beating a bad one), and the margin of victory (with a built-in dampener so a 15-run blowout by a heavy favorite doesn't wildly inflate their rating — a trick borrowed straight from 538). Over a season, every team's number settles into a fair read on how good they actually are, accounting for who they've played.
To turn two ratings into a win probability, we take the gap between them, add a bump for home field, and run it through a standard formula. That's the number you see on the model — and when it disagrees with the betting market by 5 points or more, we flag it as an edge.
| league | start rating | k-factor (sensitivity) | home edge |
|---|---|---|---|
| mlb | 1500 | 4 | +24 elo |
| nba | 1500 | 20 | +100 elo |
| nfl | 1500 | 20 | +48 elo |
| nhl | 1500 | 6 | +50 elo |
The k-factor is how much one game moves the needle — baseball plays 162 games so each matters little (4); football plays 17 so each matters a lot (20). These are the same orders of magnitude FiveThirtyEight published for each sport.
Every figure on the site traces back to one of these. The last column is the honest part — what we compute ourselves versus what we're reporting from someone else.
| source | powers | computed by |
|---|---|---|
| espn public api | scores, schedules, rosters, lines, basic stats | espn (live) |
| mlb statsapi | obp, slg, ops, advanced hitting | mlb (official) |
| baseball savant | statcast: velocity, spin, exit velo, xwOBA | mlb statcast |
| betting market | market implied probability | book line, de-vigged by us |
| linehype elo | power ratings, win probability, edges | us |
| war | total-value estimate | fangraphs / baseball-ref |
Live scores refresh every 60 seconds. Odds and the model recompute every 30 minutes. Definitions for any term above live in the glossary.
Here's exactly how it works. Our analysis is drafted by AI working only from the model's real, current outputs — the same Elo ratings, edges, and stats you can see for yourself on the site. The numbers are never invented. A person sets the direction and reads it before anything publishes.
We label it for two reasons: you deserve to know, and we think honesty beats the alternative. The data is real; some of the prose is machine-written. Both are held to the same line — if it isn't true, it doesn't ship.
The design, the code, the model, the glossary, even this page — all built with AI as the primary tool, by a team of one person and a machine. We're not hiding that, because we think it's the most interesting thing about LineHype.
What used to take a newsroom — a data team to build the model, engineers to ship the site, writers to fill it — one person can now assemble. The bar didn't drop to make that possible: the data is still real, the sources are still cited, the math still has to work. AI changed who can build a system like this. It didn't change what we owe you.