LIVE
loading live feed… loading live feed…
cat ./linehype/methodology --full // no black boxes

how it works.

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.

why_transparency

sports media asks you to trust its takes. we'd rather show you the math.

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.

And we don't just show the math — we grade it in the open. Every pick is scored against the market's closing line, its sharpest number of the day, win or lose, and the running record lives on the ledger. An edge you can't audit is a marketing claim; an edge measured against the close is a testable one — and we'd rather be caught wrong than sound right.

the_model

elo, explained.

glossary version

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.

// model_constants · 538-style, per sportmlb live · others when in season
leaguestart ratingk-factor (sensitivity)home edge
mlb15004+24 elo
nba150020+100 elo
nfl150020+48 elo
nhl15006+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.

the_sources

where the numbers come from.

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.

// data_sourcesall free · all public
sourcepowerscomputed by
espn public apiscores, schedules, rosters, lines, basic statsespn (live)
mlb statsapiobp, slg, ops, advanced hittingmlb (official)
baseball savantstatcast: velocity, spin, exit velo, xwOBAmlb statcast
betting marketmarket implied probabilitybook line, de-vigged by us
kalshi2nd market read (nfl/cfb) — regulated prediction-market pricingkalshi (live)
pinnacle (the odds api)sharp-book anchor + cross-book market width, per gamede-vigged by us
247sports compositecfb early-season talent prior (recruiting-class strength, last 4 classes)us, decayed out by us
linehype elopower ratings, win probability, edgesus
wartotal-value estimatefangraphs / 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.

One rule we hold hard: market data — the sportsbook line, the Pinnacle sharp anchor, and Kalshi — is used only to benchmark our predictions, never to train the model. If we let the market leak into training, "beating the market" would just mean the model learned to copy it. Elo learns from results alone; the market only ever shows up as a comparison, after the fact.

the_writing

our articles are written with ai. we'd rather tell you than hope you don't notice.

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_build

this whole site was built with ai. that's the point, not a secret.

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.

But building with AI is not the same as asking AI for an edge — and that distinction is the whole game. A language model is trained on the public past; a real edge, by definition, isn't in there yet. So AI wrote our code, but it did not hand us the model. The edge, such as it is, lives in the method: an Elo that learns only from results, a market used strictly as a benchmark and never as training, and a rule that no change ships until it's beaten that market on paper first. AI is the tool. The method is the edge — and the ledger is where we prove whether that edge is real.

the_fine_print

what this isn't.