๐Ÿˆ Start free, 30 days โ†’
๐Ÿ“– The Method

What We Watch,
and How Fast You Hear It

Every live game on the board and every matching Kalshi market, at the same time, all night. This is the plain-English breakdown: what our MLB, NFL and NBA alerts measure, how one gets from a live game to your phone in about a second, what the number in it means and what it does not, and exactly how to read one. Our BTC signals work differently, on a timed trigger; that's at the end.

In This Guide

Model Versus Market

Kalshi runs live in-game markets on MLB and NBA games โ€” a contract on whether a given team wins, priced in cents that move as the game unfolds. You buy YES at, say, 62ยข and collect $1 if they win. The price is the market's live estimate of that team's win probability.

We run a second estimate alongside that price. When the game state changes โ€” a run scores, a team goes on a run โ€” our model's win probability jumps at once. The Kalshi price is a separate number, set by whoever happens to be trading. Often the two agree. When they disagree by more than our threshold, we detect it and send it, usually within seconds.

The difference between those two numbers is what an alert reports. It is arithmetic, not a forecast.

What we no longer claim

We used to describe this as a lag: the market being slow, then correcting toward the model. Our own order-book instrumentation does not support that. Taking snapshots every few seconds out to five minutes after an alert, the median move on the alerted side was 0.0000¢ at every horizon, the quoted spread stayed flat at 1.0¢, and top-of-book depth rose rather than thinned. No measured repricing, no gap closure, nobody front-running us. We have taken the claim off the rest of this site, and the full write-up is in the NFL study.

So what is actually here? Two things. Speed: the model recomputes the moment a discrete event lands, and the alert reaches your phone faster than you would have assembled the same read by hand. A record: every call we fire is published and graded at settlement, losses included, so you can check what our detections have been worth instead of taking our word for it.

What is not here is a claim that the model is right. Measured against settled outcomes our model runs optimistic: on the same game states it has claimed a lower loss rate than either a plain multi-season league table or the market price itself, and reality has landed closer to the market. Read the model number as one opinion and the price as another. BTC prediction-market windows run on a different, timed trigger, covered in section 10.


A Bet, Not a Hunch

DegenHedge isn't about hunches. Every alert is a number against a number: our model's live win probability on one side, the price the market is charging on the other.

If our model reads a team at 78% while the market is selling it at 62ยข, that is a 16-point difference between the model and the price. Not a feeling about the game โ€” just math versus market. It is also not 16 cents of value: our model runs optimistic, and where the two have disagreed the market has graded better than the model. When the price already matches the model, there is nothing to report.

Illustrative Example

Signal fires: model says the home team has an 80% chance to win; Kalshi is pricing them at $0.62. That is the shape of a signal โ€” a wide disagreement between two numbers โ€” and it is what we detect. It is not a discount, and we cannot tell you which of the two numbers is closer to the truth on any given night. Plenty of signals fire when the price already sits near the model's number. The prices in this paragraph are illustrative, not a past signal.

So what is the "hedge" in DegenHedge? Mostly the name. What you are buying is the detection and the public log, not protection and not an expected profit.

We don't chase long shots. We take high-probability positions on a fairly-priced market. On our published record those positions have graded close to what the price already implied, and after platform fees that is thin to none. To be clear: this is still wagering, and any single position can lose 100%. Section 07 is the unvarnished math.


How the MLB Alerts Work

MLB is our active focus this season. The model is a real-time win-probability engine compared against live Kalshi prices, built for baseball's discrete game structure. To see real signals walked end-to-end โ€” including how they settled โ€” read the MLB case studies.

The Model: Run Differential + Game State

Unlike basketball's continuous clock, baseball moves in discrete states. The model computes P(team wins) from three inputs:

It uses an empirical probability table of 2,232 game states (24 half-innings ร— 3 out-states ร— 31 run-differential buckets), calibrated to historical MLB run-scoring (home teams win ~54% of games, baked into the baseline). A 3-run lead in the 2nd inning is a very different thing from a 3-run lead in the 8th โ€” the table captures that precisely.

When You'll Get an Alert (V2.2 filters, live since April 26, 2026)

A signal fires when all six conditions are met at once:

  1. 3rd inning or later โ€” early innings have too much variance to differentiate from the pregame line
  2. Model win probability โ‰ฅ 85% โ€” one team must have at least an 85% chance to win (raised from 70% on April 26 to prioritize win rate over volume)
  3. Difference vs. Kalshi price โ‰ฅ 10 points โ€” the model must sit at least 10 points above the market price (raised from 8pp on April 26)
  4. Run differential โ‰ฅ 1 โ€” nothing to detect in a tied game
  5. Maximum difference โ‰ค 25 points โ€” an extreme disagreement usually means one of the two inputs is broken
  6. Kalshi price โ‰ค $0.90 โ€” no alerts once the market already has it above 90%

You'll also get a pregame alert ~10 minutes before first pitch with Kalshi odds and a deep link to the game's market page.

Alert cooldown: at most one alert per game every 15 minutes. You'll typically see 1โ€“3 alerts per qualifying game โ€” about 7โ€“9 per game-night across the league.

Team Filtering & Volume Control

Filter by team with /teams in @DegenHedgeMLBbot, and tune how many alerts you get with /signals (All Action / Balanced / Widest Divergence). That setting changes how wide a model-versus-market difference we require before alerting you, so it changes how many alerts you get. It is not a quality ranking: a wider difference is not a better bet, and it does not reduce the risk on any single bet.

โšพ Live Track Record โ€” V2.2 Era (since April 26, 2026)

After the V1 filter set produced a disappointing win rate (April 14โ€“25), thresholds were tightened on April 26 and the dataset reset for a clean read. Current live numbers under the V2.2 filters:

MetricValue
Resolved games949
Wins ยท Losses749 ยท 200
Win rate78.9% at the median entry price below
Median entry price80ยข (at that entry the record sits close to breakeven before fees; see the risk page)
Total signals fired1,382

Live numbers refresh every 30 seconds from /stats. Every signal is logged the moment it fires; the published win rate grades the first signal of each game, so total signals fired exceeds graded games.

Exclusions, disclosed: exhibition games (All-Star, spring training) and rows where the entry price failed to capture are flagged and shown in the public log โ€” not counted in the record, and never silently deleted.

Honest caveat: the empirical run-differential model is a fast state reader, not a forecaster. It does not account for pitcher quality, bullpen state, lineup, or park factors, and against settled outcomes it runs optimistic โ€” on the same game states the market's implied loss rate has been closer to what actually happened than the model's. The win rate reflects how often the called side won, not predictive skill, and it says nothing about whether the price you paid was good. Treat every signal as a probabilistic read on a fairly-priced market โ€” never a sure thing.


How the NBA Alerts Work

The NBA system is the same idea โ€” detect when the model and the Kalshi price disagree โ€” with a model built for basketball's continuous clock.

The Goldman-Stern Model

It computes P(home team wins) with a normal-CDF formula calibrated from 3,685 NBA games across 3 full seasons:

P(home wins | margin M, time T) = ฮฆ((M + home_adv ร— T/48) / (ฯƒ ร— โˆš(T/48)))

We do not publish an NBA accuracy or win rate, in backtest or live. The live NBA log holds 55 graded games from one stretch of one season, and the entry prices behind them are being re-derived from the live pipeline. A rate without the price you would have paid is not a number anyone should act on, so we publish neither. NBA alerts and the public NBA record open at tip-off in late October.

When You'll Get an Alert

A signal fires when all four conditions are met at once:

  1. 2nd quarter or later โ€” no 1st-quarter alerts (too early, model needs scoring data). If the quarter cannot be read, no alert.
  2. A live Kalshi price for the named side โ€” fetched at the moment of the alert; no price, no alert
  3. Model win probability โ‰ฅ 60% โ€” one team must have at least a 60% chance to win
  4. Difference vs. Kalshi price โ‰ฅ 8 points โ€” the model must sit at least 8 points above the market price
  5. Kalshi price โ‰ค $0.90 โ€” no alerts once the outcome is already priced in

You'll also get a pregame alert ~10 minutes before tip-off carrying both sides' Kalshi prices and the tip-off time. It does not call either side cheap, and it ranks neither. Cooldown: one alert per game every 12 minutes, at most 4 per game, none in the 1st quarter. Each game is graded on its first alert. Filter by team with /teams in @degenhedgeNBAbot.

MLB vs. NBA at a glance

MLB AlertsNBA Alerts
ModelEmpirical win-probability table (historical)Goldman-Stern normal CDF (analytical)
Key inputsRun differential + innings remaining + outsPoint margin + minutes remaining
Game length~3 hours (9 innings, no clock)~2.5 hours (48 minutes game time)
Alert cooldown15 minutes12 minutes
Score pollingEvery 30 secondsEvery 60 seconds
SeasonApril โ€“ OctoberOctober โ€“ April
MarketKalshi KXMLBGAMEKalshi KXNBAGAME
Telegram bot@DegenHedgeMLBbot@degenhedgeNBAbot
โš ๏ธ Live Track Record Still Building

The NBA engine launched April 2026. The Goldman-Stern model is well-studied in the literature, but a model being well-studied is not a record. We publish no NBA accuracy, win rate, streak or backtest figure of any kind, and we will not until the live log carries graded games with the entry price beside each one. NBA alerts and the public NBA record open at tip-off in late October.

This is not investment or betting advice. Sports wagering involves substantial risk. Bet only with money you can afford to lose.


How the NFL Alerts Work

Same idea as MLB and NBA, on the sport where it is most visible. Football is punctuated: nothing happens for forty seconds and then one snap moves a game's win probability by twenty or thirty points. A live win-probability model sees that within seconds of the play landing in the play-by-play feed, and the alert is on your phone before you could have assembled the same read by hand. What it reports is that two numbers disagree right now. It is not a claim that the price is wrong, or that it is about to move: our own order-book instrumentation measured a median move of 0.0000¢ on the alerted side after an alert fires.

The model

The primary input is ESPN's own per-play win probability, read from the game-summary endpoint once per live game per minute, alongside the live score, quarter and clock. That is deliberate: it is a number that exists in real time during a game, which an offline research model is not. When the feed's win probability goes stale for more than three minutes, the bot drops to a calibrated Gaussian fallback on margin and time remaining, tagged in the log as gauss_fallback so a reader can see exactly which rows used it.

fallback only: P(home wins) = Φ(margin / (σ × √(t_remaining / 60)))

When you'll get an alert

A signal fires only when all of these hold at once:

  1. Model minus market ≥ 0.12 on the called side
  2. Model probability ≥ 0.70 on the called side
  3. 2nd quarter or later — no Q1 signals
  4. Kalshi price ≤ $0.90 — nothing once the outcome is already priced in
  5. Difference ≤ 40 points and the called side priced ≥ $0.40 — when the market disagrees that hard, it usually knows something the model cannot see

Market: Kalshi KXNFLGAME. Scores poll every 30 seconds, Kalshi prices every 60. Cooldown: one alert per game per 15 minutes, plus a pregame heads-up about 10 minutes before kickoff. Filter by team with /teams in @DegenHedgeNFLbot.

⚠️ NFL’s live track record is still small

Week 1's opener produced no alert at all; the live record started with the first alert after it, and every graded signal since is in the public log, losses included: 35 games graded, 57.1% at a 63.4¢ average entry. A contract at that price has to win that often just to return the stake. It is still a small sample: read it as early, not settled.

Alongside it we publish a backtest, a full replay of the 2025-26 season on the live feed's own numbers with both the trigger and the entry price delayed to match how the bot actually polls. The row we cite is the two-minute one, because a subscriber cannot condition on the disagreement still being there a minute later, and it describes the gate above exactly as it now ships: 60.9% of 225 graded signals at a 62.5¢ average entry (228 fired, 225 graded, 137–88). Read those two numbers together. A 62.5¢ entry has to win 62.5% of the time just to return the stake, so that record lands 1.6 points below its own breakeven, before Kalshi fees, and further below after them. The backtest for the configuration we now run loses money, and we are publishing it anyway.

The one thing it is not is a cherry-pick. The sixteen-cell grid this row comes from has exactly one positive cell, at a model gate of 0.80 — and that is the cell we just left. What ships is one of the fifteen that were not positive, so the figure is worse and there is no flattering cell we picked out of a search. That is a backtest either way, not a result, and we will not sell it as a record. The full grid, the neighbouring cells and the method are in the NFL study.

This is not investment or betting advice. Any single signal can lose 100% of your stake. Bet only with money you can afford to lose.


Reading an Alert

Every alert contains the same information, formatted the same way. Here's what a live MLB signal looks like:

Example Telegram Alert
๐Ÿšจ SIGNAL: Yankees to win (MLB ยท KXMLBGAME)
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
๐Ÿ’ฐ Kalshi price (Yankees): $0.62
๐Ÿ“Š Model estimate: 86% (our estimate, historically optimistic)
๐ŸŸ๏ธ Bottom 5th ยท NYY +2
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Our model reads this game differently from the price. Check the live price before doing anything. Any signal can lose the whole stake. Logged and graded either way. ๐Ÿ‘‰ Open market on Kalshi.

Field by field:

SIGNAL โ€” which team: The team our model reads above the market price. On Kalshi you buy the YES contract for that team โ€” just tap the matching market.

Kalshi price: What that team's contract is trading at right now, and the first line of the alert. In the example, the Yankees are at $0.62, so the market implies a 62% chance.

Model estimate: Our model's live probability that team wins, from the current game state. 85% or higher (MLB) clears our threshold. It is our model's estimate, and it has historically run optimistic against settled outcomes, not a fact about the game. Those are two estimates that disagree, and on our record the market's has been the better-calibrated of the two.

No difference figure: The alert used to print the gap between those two numbers as a headline. It no longer does. The gap is arithmetic between two estimates, it is not value, expected profit, or cents you are owed, and a wider one has not graded better than a moderate one in our data.

Game state: Inning/quarter, score, and run differential (or margin), so you can sanity-check the signal against what you see on the broadcast.

Bottom-line message: The same short line on every alert: our model reads the game differently from the price, check the live price yourself, any signal can lose the whole stake, and the call is logged and graded either way. We never tell you to "skip" or "don't bet" โ€” that's your call, and the numbers above the line are what you'd use to make it.


What Our Win Rate Actually Means

We show you the live win rate. We tell you the model is well-calibrated. Both are true. Neither protects you on any individual bet. This is the section nobody likes to read, and the part you most need to understand before you risk real money.

The asymmetric P&L profile

A Kalshi contract is a $1 binary. When you buy one for less than $1, you're in an asymmetric trade:

Buy at WIN: you make LOSE: you lose Win rate to break even
$0.50$0.50 (100%)$0.5050%
$0.62$0.38 (61%)$0.6262%
$0.80$0.20 (25%)$0.8080%
$0.90$0.10 (11%)$0.9090%
$0.95$0.05 (5%)$0.9595%

The higher the price, the more often you have to be right just to break even. The price is the number that decides whether a win rate is worth anything, and it is the one number in the alert that is not an estimate.

What a High Win Rate Actually Means

Our MLB first-signal record is 78.9% over 949 graded games at a median entry of 80ยข, which is close to breakeven before fees.

It also means you will lose, on average, about 1 in every 5 bets you take.

The math doesn't care which 1-in-5 it is. Sometimes it's your first bet. Sometimes two or three in a row. Sometimes you win eight straight then drop two. Variance feels personal but it isn't โ€” each signal is independent. Two losses in a row at that record happens roughly 1 in every 25 bets; it's uncommon, not weird.

What discipline does (and doesn't) buy you

A high win rate is not the same as a profit. A win rate only says how often the called side won. What that was worth depends entirely on the price paid, and at our median MLB entry of 80ยข the price and the record sit close to breakeven before fees. There is no number of bets after which that arithmetic turns in your favour. What discipline buys you is narrower than that:

  1. You read the price on every alert. The price is the break-even win rate, so the same signal at 62ยข and at 85ยข are two different propositions.
  2. You size so a losing streak can't bust you. A run of losses will happen eventually. If your bankroll can't absorb one, the size is wrong.
  3. You bet the system, not your gut. Adding "but I think the other team is due" to the model's signal makes you worse than the model alone.

All three are damage control, not a return. Subscribers who hold to them give back the least; the ones who blow up usually fail on #2. None of it turns a fairly-priced market into a promise of profit.

โš ๏ธ The hard truth

The live numbers are honest and logged โ€” win rate and price, both shown. A price below the model's number is not a discount: our model runs optimistic against settled outcomes, and our order-book data shows the price does not move toward it. What you are getting is a fair-priced, high-hit-rate market, not a profit engine. We also have a product where you will lose 100% of an individual bet roughly 1 in 5 times, sometimes in clusters. If that frightens you more than the arithmetic interests you, this is not the right product for you โ€” and we'd rather you know that now.

This is not investment or betting advice. Past performance does not guarantee future results. Bet only with money you can afford to lose.


Bet Sizing & Break-Even Prices

This is the section most people skip โ€” and it's where bankrolls get hurt. Knowing when a signal fires is only half the picture. Knowing how much to bet โ€” and when the price makes a bet not worth taking โ€” is what protects you when the losing streaks come.

The rule is simple: the contract price is the break-even win rate. A contract at 62ยข has to win 62% of the time just to get your money back before fees; a contract at 85ยข has to win 85% of the time. That is arithmetic, not a forecast, and it is the whole reason we never show a win rate without the price it was entered at. Here is the same signal, one where the model reads a team at 80%, against different Kalshi prices:

Kalshi price Break-even win rate Gap to the model read Verdict
$0.5555%+25 ptsโœ“ Price below the model read
$0.6262%+18 ptsโœ“ Price below the model read
$0.7070%+10 ptsโ†’ Price below the model read
$0.7878%+2 ptsโ€” Effectively level
$0.8080%0 ptsโ€” Level. This is our median MLB entry
$0.85+85%+negativeโ€” Price above the model read: pass or tiny size
The Key Insight

The alert shows you a price and a difference, and the price is what the market already thinks. Neither number is a prediction about your account. Read the table the honest way round: most of our MLB alerts fire near the 80ยข row, where the price and the model read are level, which is why the risk page describes that record as close to breakeven before fees. Buying an 80%-read team at 85ยข means paying above the model read even though it will usually still win. The break-even win rate is just the price: a contract at P cents needs to win P% of the time to return your stake before fees.

We do not tell you how much to stake. That would be personalized advice, and we do not give it. The one thing we will say is what the risk page says: size so a losing streak can't bust you. If your bankroll can't absorb one, the size is wrong.

Read the price, not just the signal: the price sets your break-even, and a price above the model read is a pass. Every alert hands you both numbers so you don't have to do the math live. A wider difference is not a better bet: in our graded data the widest ones have not settled better than the moderate ones.

Don't chase losses: two or three losses in a row is normal at every win rate we publish, and the log shows they arrive in clusters rather than politely spaced out. Sizing up to win a loss back is how accounts end. If a run of five straight losses at your chosen size would hurt, the size is wrong.


Discipline: When to Pass

Not every alert demands action. Part of the method is your own judgment about when conditions aren't right โ€” even when the model's win probability is high. When you might choose to pass:

You can't get a fill. If the Kalshi market for that team is thin (little size available at the price shown), you'll move the price just by placing your order, and the price you actually pay is worse than the one in the alert. Pass.

Something just changed that the model can't see yet. A pitcher just got pulled, a star just left with an injury, a long rain delay โ€” game-changing context the win-probability table doesn't ingest. Treat the signal with skepticism.

The game already moved. Our model reads the state at signal time. If you open the broadcast and the score has already changed since the alert, the alert is describing a game that no longer exists โ€” trust your eyes and re-check the live number.

You can't act promptly. The alert is a snapshot of a live book. If it'll take you a few minutes to get to the right market, both the price and the game state may be different by the time you're there.

The Discipline Principle

Missing a winning signal stings a little. Betting into bad conditions can hurt a lot. Being selective is not the same as being scared. Signals come multiple times a night โ€” there's always another bus.


BTC Signals

Before the sports models, DegenHedge started with Bitcoin prediction-market signals โ€” and they're still live on Kalshi's 15-minute BTC up/down market. The trigger is different from the sports models: it is timed, not a model-versus-price disagreement.

About two minutes before each window closes (2 minutes 10 seconds), our Bayesian model forms its own read of the likely outcome from how far BTC has moved since the window opened on our own price feed, and the alert fires whenever that read leans one side at 60% or more. The contract price does not trigger it. The one price check is a filter: we skip the alert when our side costs under 50ยข and the model sits more than 12 points above that price. It is a timed read, not a prediction engine, and it is not a claim that the quote is wrong. These alerts fire at high prices, where the arithmetic is brutal โ€” see the figures below.

Two BTC-specific wrinkles

Razor-flat windows. When BTC has barely moved from the window open, the close comes down to settlement-source noise โ€” closer to a coin flip on direction. Alerts flag "โš ๏ธ Razor-flat window"; treat those as a much weaker setup and size down.

No gap in the alert. Earlier versions of the BTC alert printed a model-versus-price gap and labelled its zone. The alert no longer does, because the gap does not trigger it and has not graded as value: on Kalshi's BTC market very wide gaps have tended to mean the market knows something our model doesn't. We publish no win rate by gap zone: entry prices differ inside every zone, and a rate without the price you would have paid is not a number anyone should act on.

Lifetime, the Kalshi BTC signals run 91.2% across 12,160 priced signals, at a 91.7ยข average entry (96ยข median). Signals whose entry price never captured are excluded, which is why this count is smaller than the raw log. Read the two together: a contract bought at 91.7ยข has to win 91.7% of the time just to return the stake before fees, so that record sits below breakeven before fees, and further below after them. BTC is the fastest market we cover, not the best one, and we do not present it as an edge or an opportunity. The arithmetic is on the risk page. BTC signals are $4.99/mo with a 30-day free trial.

Ready to Put This Into Practice?

MLB, NFL or BTC, each free for 30 days, then $4.99 a month. NBA goes on sale at tip-off.

See Plans & Subscribe โ†’

Built by humans who can show you the math. No AI black box.