<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: negative-ev</title>
    <description>The latest articles on DEV Community by negative-ev (@negativeev).</description>
    <link>https://dev.to/negativeev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4075302%2F8b02e364-8fe6-4f01-a291-3c2ed97e8545.png</url>
      <title>DEV Community: negative-ev</title>
      <link>https://dev.to/negativeev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/negativeev"/>
    <language>en</language>
    <item>
      <title>How much of a sportsbook board is Negative EV?</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/how-much-of-a-sportsbook-board-is-negative-ev-454j</link>
      <guid>https://dev.to/negativeev/how-much-of-a-sportsbook-board-is-negative-ev-454j</guid>
      <description>&lt;p&gt;Read this one differently from the other findings here. The rest grade prices against what really happened. This one grades the board against the simulator, which is a claim about what the model says over every price on offer rather than about realized results. It answers a narrower question: of everything a book puts up on a night, how much of it does an independent estimate call a bad price?&lt;/p&gt;

&lt;p&gt;Across 252 MLB games and 18 slates, 55.5% of the board came back Negative EV. Another 20.1% graded roughly fair, so three quarters of every price on offer had no edge in it either way. The split held on every single slate: the negative share never left the band from 53.1% to 58.1%, so it is not one strange night doing the work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Every selection on the board
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Negative EV&lt;/td&gt;
&lt;td&gt;55.5%&lt;/td&gt;
&lt;td&gt;the majority of what is on offer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roughly fair&lt;/td&gt;
&lt;td&gt;20.1%&lt;/td&gt;
&lt;td&gt;inside the app's own fair band&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Positive EV&lt;/td&gt;
&lt;td&gt;24.3%&lt;/td&gt;
&lt;td&gt;see the note below on what this is not&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No edge at all&lt;/td&gt;
&lt;td&gt;75.7%&lt;/td&gt;
&lt;td&gt;negative and fair together&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Counting each book's own quote separately instead of the best price anywhere makes it slightly worse, at 58.6% negative across 83,790 rows. That is the expected direction. Shopping for the best number strips out part of the margin, and most people do not shop.&lt;/p&gt;

&lt;h3&gt;
  
  
  By price, where it gets expensive
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Price band&lt;/th&gt;
&lt;th&gt;Negative EV&lt;/th&gt;
&lt;th&gt;No edge&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Longshots, +400 or longer&lt;/td&gt;
&lt;td&gt;71.0%&lt;/td&gt;
&lt;td&gt;80.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dogs, +200 to +399&lt;/td&gt;
&lt;td&gt;69.7%&lt;/td&gt;
&lt;td&gt;80.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modest dogs, +100 to +199&lt;/td&gt;
&lt;td&gt;55.7%&lt;/td&gt;
&lt;td&gt;77.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavy favorites, -200 or shorter&lt;/td&gt;
&lt;td&gt;55.6%&lt;/td&gt;
&lt;td&gt;81.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Favorites, -199 to -100&lt;/td&gt;
&lt;td&gt;48.1%&lt;/td&gt;
&lt;td&gt;70.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Seven in ten long prices grade out Negative EV. That is the shape behind the two things people buy most of, the cheap anytime home run and the long parlay, and it lines up with the one market here that has been graded against real outcomes rather than simulations: 18,468 anytime home run props came in around -23%.&lt;/p&gt;

&lt;p&gt;Split by market instead of by price, batter props were worst at 56.4% negative, then totals at 49.2%, pitcher props at 49.0%, spreads at 47.0% and moneylines at 46.5%. Props are worse than game lines, which is the direction to expect. The margin is thicker where the market is thinner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every MLB slate with both published odds and simulations over the window was taken whole: every player prop and team line, both sides, at the most-quoted point, with the best price across books, giving 23,059 distinct selections. Each one was graded by the production scoring code against that game's 5,000 pitch-by-pitch simulations, not by a reimplementation, and priced at the raw posted number with the vig still in it, because that is what a bettor actually pays. The verdict bands are the app's own: roughly fair when the edge is within 2 points and the relative expected value within 5%, otherwise the sign decides. Selections the scorer declined, where a player was not in the simulations or the market is unsupported, were counted separately and excluded rather than defaulted to a verdict. Tool: &lt;code&gt;board-ev-census&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;The 24.3% that graded positive is the simulator disagreeing with the market, and this measurement cannot say how much of that is real edge and how much is model error. Those are not separable without grading the same selections against outcomes, so nothing here treats that quarter of the board as profitable bets, and neither should anyone reading it. The negative-side figures do not depend on resolving it.&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>ATP match odds, graded against 19 seasons of results</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/atp-match-odds-graded-against-19-seasons-of-results-5b70</link>
      <guid>https://dev.to/negativeev/atp-match-odds-graded-against-19-seasons-of-results-5b70</guid>
      <description>&lt;p&gt;Backing every side quoted at 5.00 or longer - about +400 in American odds - returned about -26% per bet. Those sides were priced as though they win 13.5% of the time and won 10.4%, a 3.1 point gap at 7.7 sigma. Both the favorite and the underdog cut came out negative too, and all three cuts were negative in every one of the 19 seasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Realized EV per bet
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cut&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;th&gt;Standard error&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Back every favorite&lt;/td&gt;
&lt;td&gt;-4.86%&lt;/td&gt;
&lt;td&gt;± 0.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Back every underdog&lt;/td&gt;
&lt;td&gt;-12.15%&lt;/td&gt;
&lt;td&gt;± 0.86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Back every side at 5.00 or longer&lt;/td&gt;
&lt;td&gt;-26.29%&lt;/td&gt;
&lt;td&gt;± 2.78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean two-sided hold in the quotes&lt;/td&gt;
&lt;td&gt;6.20%&lt;/td&gt;
&lt;td&gt;± 0.01&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The two-sided hold is the book's margin baked into each quote, not the realized cost of a bet: those are separate numbers and the table keeps them separate. At 6.2% the ATP hold is well above the roughly 3.9% measured on an MLB game line, which is most of what the graded results reflect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Price ladder, all 35,346 matches
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Price implies&lt;/th&gt;
&lt;th&gt;91.3%&lt;/th&gt;
&lt;th&gt;75.5%&lt;/th&gt;
&lt;th&gt;60.5%&lt;/th&gt;
&lt;th&gt;42.8%&lt;/th&gt;
&lt;th&gt;28.0%&lt;/th&gt;
&lt;th&gt;13.5%&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Actually won&lt;/td&gt;
&lt;td&gt;88.8%&lt;/td&gt;
&lt;td&gt;72.8%&lt;/td&gt;
&lt;td&gt;56.0%&lt;/td&gt;
&lt;td&gt;40.7%&lt;/td&gt;
&lt;td&gt;24.2%&lt;/td&gt;
&lt;td&gt;10.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The ladder is monotone: every bucket underperformed its own price and the miss grows with the price. That is the longshot bias, and the recent-seasons cut reproduces it - 2024 through mid-2026, 6,183 matches, favorites at -3.25% ± 0.86 and underdogs at -10.49% ± 2.04.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every completed ATP match with a recorded Bet365 closing price is graded against the real winner, which sits in the same source row as the price, so there is no join to get wrong. Both sides of each match are graded at the recorded decimal close and expected value is reported per bet; standard errors are match-clustered. A single book is quoted rather than a blend of books. The census covers only the ~60% of source rows that resolve to known player ids, and the unresolved rows were checked against the resolved ones over 2024-26 - all-sides EV of -6.71% ± 0.65 against -6.81% ± 0.70 - so the selection does not move the headline. Tool: &lt;code&gt;atp_moneyline_realized_census.py&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;The favorite win rate is not quoted here. The player-id resolution tilts the tier mix enough to move it (67.3% unresolved against 69.5% resolved) while leaving expected value flat, so expected value is the figure the sample supports and win rate is not.&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>betting</category>
    </item>
    <item>
      <title>Pitcher strikeout props, both sides priced</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/pitcher-strikeout-props-both-sides-priced-4e92</link>
      <guid>https://dev.to/negativeev/pitcher-strikeout-props-both-sides-priced-4e92</guid>
      <description>&lt;h1&gt;
  
  
  Pitcher strikeout props, both sides priced
&lt;/h1&gt;

&lt;p&gt;Strikeout props are the closest thing to a fairly priced player prop measured so far. On 2,061 props the over side returned about -4.5% per bet, outside its noise floor for the first time - the sign and, narrowly, the size are supported; the ordering between lines still is not.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 2,061 pitcher strikeout props&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best posted price on each side&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realized EV per bet&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Over, all lines&lt;/td&gt;
&lt;td&gt;-4.5% (± 2.2, z = -2.1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over 3.5&lt;/td&gt;
&lt;td&gt;-4.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over 4.5&lt;/td&gt;
&lt;td&gt;-6.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over 5.5&lt;/td&gt;
&lt;td&gt;-6.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Under, all lines&lt;/td&gt;
&lt;td&gt;-3.6% (± 2.1)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 4.5 and 5.5 lines carry most of the board on a given night, and that is where the over came back worst. Each individual line cut still sits inside its own noise floor, and the thin 2.5 and 6.5 buckets bounce positive on samples too small to mean anything, so the ordering between lines is not established by this window either.&lt;/p&gt;

&lt;p&gt;Strikeout props sit near even money, outside the longshot band where margins run thickest, which is the structural difference between this market and anytime home run props at about -23% over the same window.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every archived pitcher strikeout prop is graded against the pitcher's real strikeout count in that game from the mapped play-by-play corpus, at the best posted price on each side, and reported as realized win rate and expected value per bet, overall and by line bucket. Props for games missing from the corpus are excluded rather than defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;One cut in this census clears its own noise floor. On 2,061 props the over across all lines is -4.5% ± 2.2 (z = -2.1), which separates from zero for the first time on this market. Nothing else here does: the per-line over cuts (-4.8% on the 3.5s, -6.0% on the 4.5s, -6.6% on the 5.5s) each sit inside their own floor and overlap each other, so the ranking between lines is not established, and the thin 2.5 and 6.5 buckets bounce positive on samples too small to read. The under side across all lines is -3.6% ± 2.1, which covers zero, so it is an estimate rather than a measured cost. The large-sample prop censuses - anytime home runs and batter total bases - remain the sharper measurements on this board.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/strikeout-props" rel="noopener noreferrer"&gt;https://negativeev.com/about/strikeout-props&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>betting</category>
    </item>
    <item>
      <title>Anytime home run props realized about -23%</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/anytime-home-run-props-realized-about-23-1c0f</link>
      <guid>https://dev.to/negativeev/anytime-home-run-props-realized-about-23-1c0f</guid>
      <description>&lt;h1&gt;
  
  
  Anytime home run props realized about -23%
&lt;/h1&gt;

&lt;p&gt;Anytime home run props are the worst-priced bet measured on an MLB board so far. Graded against real outcomes rather than against simulations, 18,468 of them returned -23.1% per bet at the best posted price.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 18,468 anytime home run props, from 1,104 games over 91 slates&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best posted price&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How much did anytime home run props return?
&lt;/h2&gt;

&lt;p&gt;-23.1% per bet, graded against what actually happened rather than estimated.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realized EV per bet, same pass&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anytime home run (n = 18,468)&lt;/td&gt;
&lt;td&gt;-23.1% (± 1.7, z = -13.3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Over 0.5 hits (n = 18,541)&lt;/td&gt;
&lt;td&gt;-5.1% (± 0.7)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pitcher strikeouts, over side (n = 2,061)&lt;/td&gt;
&lt;td&gt;-4.5% (± 2.2, z = -2.1)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The home run props implied a 14.8% chance of cashing on average and cashed 11.8% of the time: 2,170 of the 18,468 hit. About 94% of the props were priced above the realized rate of their own price bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are the three markets so far apart?
&lt;/h2&gt;

&lt;p&gt;The three markets were graded in one pass over the same window, which is what makes the spread readable: the label "player prop" covers an eighteen-point range. Home run props sit at +250 and longer, in the longshot band where the margin is thickest, while hits and strikeout lines sit near even money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Did this pass change a figure already published?
&lt;/h2&gt;

&lt;p&gt;Yes, one. The same pass measured the simulator against these realized numbers and revised a public figure: the strikeout claim had been -3.2% from simulation and came back -4.5% ± 2.2 against real outcomes. On 2,061 props that interval clears zero, so the strikeout side of the comparison is now a measured cost rather than an estimate - a small one, next to the home run figure. A blanket market claim gets validated against what actually happened, never against the simulator alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every archived anytime home run prop is graded against whether the batter actually homered in that game, from the mapped play-by-play corpus, and reported as the mean implied probability the price charged, the realized rate, and expected value per bet, bucketed by price. Props for games missing from the corpus are excluded rather than defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;All three rows clear their noise floor on this window. The home run figure is -23.1% ± 1.7 (z = -13.3) on 18,468 props, the hits figure is -5.1% ± 0.7 on 18,541, and the strikeout row is -4.5% ± 2.2 (z = -2.1) on 2,061 - the last of these only narrowly, and it is the one to read with the most caution. What the census establishes is the spread between home run props and the near-even-money markets, not any ordering inside the near-even-money group.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does this page not establish?
&lt;/h2&gt;

&lt;p&gt;Whether any single prop is priced well. These are market-wide averages over one fixed window, and an average that bad still contains fairly priced props; nothing here says which. The window also starts on 19 April, where the archived odds start, so the opening weeks of the season sit outside it.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/home-run-props" rel="noopener noreferrer"&gt;https://negativeev.com/about/home-run-props&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>betting</category>
      <category>data</category>
    </item>
    <item>
      <title>MLB moneylines, graded against real winners</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/mlb-moneylines-graded-against-real-winners-3mfd</link>
      <guid>https://dev.to/negativeev/mlb-moneylines-graded-against-real-winners-3mfd</guid>
      <description>&lt;h1&gt;
  
  
  MLB moneylines, graded against real winners
&lt;/h1&gt;

&lt;p&gt;Graded against the real winner at the best price on each side, 1,111 MLB games returned about -1.8% per bet, which on a sample that size is not far enough from zero to call a measured cost. Favorites came back -0.8% and underdogs -3.1%, and neither of those cuts separates from zero either.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 1,111 MLB games, 2,222 side bets&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best price across books on each side&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How much did MLB moneylines return?
&lt;/h2&gt;

&lt;p&gt;About -1.8% per bet across both sides, graded against the real winner rather than estimated from simulations.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realized EV per bet&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Every moneyline, both sides&lt;/td&gt;
&lt;td&gt;-1.8% (± 2.1, z = -0.9)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Favorites only (n = 1,210)&lt;/td&gt;
&lt;td&gt;-0.8% (± 2.5, z = -0.3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Underdogs only (n = 1,012)&lt;/td&gt;
&lt;td&gt;-3.1% (± 3.6, z = -0.9)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean per-book two-sided hold&lt;/td&gt;
&lt;td&gt;3.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why is the hold 3.9% when the realized figure is about -2%?
&lt;/h2&gt;

&lt;p&gt;Because taking the best price on each side removes much of the margin, and because the two numbers answer different questions in the first place. About 4% is the book's two-sided margin in the quotes; taking the best price on each side strips a good part of that out, and what is left over these 1,111 games is around -2%. Calling the -2% "the vig" would conflate the two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did favorites and underdogs return?
&lt;/h2&gt;

&lt;p&gt;Favorites -0.8% per bet and underdogs -3.1%, with neither cut far enough from zero on this sample to be read as a cost. The favorite-versus-underdog direction matches every larger census run since: the same longshot bias shows on ATP match odds across 35,346 matches and on the MLB prop board, where the longest prices are the worst priced.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every MLB moneyline held in the archived odds is graded against the real winner from the mapped play-by-play corpus, betting both sides at the best price across books, and reported as realized win rate and expected value per bet overall, favorites-only, underdogs-only and by price bucket. Games missing from the corpus are excluded rather than defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;None of the three cuts clears its own noise floor. On 1,111 games the overall figure is -1.8% ± 2.1 (z = -0.9), favorites are -0.8% ± 2.5 (z = -0.3) and underdogs are -3.1% ± 3.6 (z = -0.9), so every interval covers zero. The supported statement is that MLB moneylines at the best price are close enough to fair that a thousand games cannot separate them from fair, and that the direction of the favorite/underdog gap matches the larger censuses - not the decimals. The large-sample prop and ATP censuses are the sharper measurements.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does this page not establish?
&lt;/h2&gt;

&lt;p&gt;Whether any one moneyline on the board is priced well. These are averages over one fixed window, and a market that grades close to fair still holds prices that are not; nothing here says which. The decimals are estimates rather than measured costs, since every interval on this page covers zero, so what the census carries is a direction and a sample size. The window also starts on 19 April, where the archived odds start, so the opening weeks of the season sit outside it.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/favorites-underdogs" rel="noopener noreferrer"&gt;https://negativeev.com/about/favorites-underdogs&lt;/a&gt; Background: &lt;a href="https://negativeev.com/about/moneyline" rel="noopener noreferrer"&gt;picking a winner at a price&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>betting</category>
      <category>data</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Batter total bases: both sides lose</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/batter-total-bases-both-sides-lose-3311</link>
      <guid>https://dev.to/negativeev/batter-total-bases-both-sides-lose-3311</guid>
      <description>&lt;h1&gt;
  
  
  Batter total bases: both sides lose
&lt;/h1&gt;

&lt;p&gt;Batter total bases is the first market measured where neither side comes back near fair. Overs realized about -6.9% and unders about -3.5%, both outside their noise floor.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 1 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 19,320 over props and 18,950 unders, from 1,089 games over 88 slates&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best price across books on each side, at the consensus point&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-01&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;By side&lt;/th&gt;
&lt;th&gt;Priced at&lt;/th&gt;
&lt;th&gt;Hit&lt;/th&gt;
&lt;th&gt;Realized EV&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Over&lt;/td&gt;
&lt;td&gt;49.4%&lt;/td&gt;
&lt;td&gt;46.1%&lt;/td&gt;
&lt;td&gt;-6.9% (z = -8.1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Under&lt;/td&gt;
&lt;td&gt;55.4%&lt;/td&gt;
&lt;td&gt;53.6%&lt;/td&gt;
&lt;td&gt;-3.5% (z = -4.6)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The mean consensus line is 1.08, so the market is effectively the 0.5 and 1.5 rungs. Both rungs run in the same direction on both sides.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;By line&lt;/th&gt;
&lt;th&gt;Realized EV&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.5 over (n = 8,249)&lt;/td&gt;
&lt;td&gt;-6.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.5 under (n = 8,248)&lt;/td&gt;
&lt;td&gt;-4.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.5 over (n = 11,024)&lt;/td&gt;
&lt;td&gt;-7.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.5 under (n = 10,659)&lt;/td&gt;
&lt;td&gt;-2.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most of that cost is the price of the market rather than a wrong side. The average book's two-sided margin on these quotes was 6.99%, and taking the best available number on each side across books it was still 5.10%. The hold is the book's margin; the realized figures are what a graded bet actually returned. They are different numbers, and one side lands worse than the margin alone would explain while the other lands better.&lt;/p&gt;

&lt;p&gt;The over is negative in all four months of the window (-3.5, -7.7, -5.4, -8.0) and on both odds snapshots read, so the result is not one hot stretch or an artifact of when prices were captured. An under was archived at the same consensus point on 98% of props, so the under figure is graded on real quotes rather than inferred from the over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;Every archived batter total-bases prop is graded against the batter's real total bases in that game from the mapped play-by-play corpus (1B + 2x2B + 3x3B + 4xHR). For each prop the consensus point is taken, then the best over price and the best under price across books at that point - deliberately the most favorable framing available, so the figures are the floor of the cost rather than the ceiling. Two odds snapshots are read and de-duplicated, any snapshot taken after first pitch is dropped, and doubleheaders are resolved by game id order. Standard errors are reported iid, game-clustered and slate-clustered; all three land at 0.7-0.8 points. Batters with no plate appearance in that game and games missing from the corpus are excluded, never defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;Two figures from this census are deliberately not stated as results. The under's margin over what the hold alone would predict is inside its noise floor, so the publishable statement about the under is its realized EV and nothing more. The 2.5 line graded on about 45 props and is far too small to read in either direction.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/player-props" rel="noopener noreferrer"&gt;https://negativeev.com/about/player-props&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>data</category>
    </item>
    <item>
      <title>What the best price is worth on an MLB board</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/what-the-best-price-is-worth-on-an-mlb-board-2i16</link>
      <guid>https://dev.to/negativeev/what-the-best-price-is-worth-on-an-mlb-board-2i16</guid>
      <description>&lt;h1&gt;
  
  
  What the best price is worth on an MLB board
&lt;/h1&gt;

&lt;p&gt;Across 1,168 MLB games priced at close, the best of six mainstream US retail books beat a typical one by about 1.5% of stake per moneyline bet, and a better-than-typical price existed on 95.9% of sides. This is a price comparison rather than a graded record: no outcome is scored, only how far apart the books' numbers sat on the same bet.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 1,168 MLB games over 90 slates&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: every book's quote at close, a median of about five minutes before first pitch&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How much did the best price beat a typical one?
&lt;/h2&gt;

&lt;p&gt;About 1.5% of stake per moneyline bet, and about 3.1% against the worst of the six.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Moneyline, six mainstream retail books&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Best against a typical book&lt;/td&gt;
&lt;td&gt;+1.5% of stake per bet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best against the worst book&lt;/td&gt;
&lt;td&gt;+3.1% of stake per bet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two-sided hold, typical book&lt;/td&gt;
&lt;td&gt;4.53%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two-sided hold, best price each side&lt;/td&gt;
&lt;td&gt;2.93%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sides with a better-than-typical price&lt;/td&gt;
&lt;td&gt;95.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Shopping both sides of the moneyline to their best number cut the two-sided hold from 4.53% to 2.93%. A better-than-typical price existed on 95.9% of sides, so this is not a rare windfall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does the gap grow with more books?
&lt;/h2&gt;

&lt;p&gt;Yes, and the wider number is harder to use. Widening to all 11 books quoted in the same window raises the moneyline figure to about 2.1% of stake and drops the hold from 3.90% to 1.86%. That wider number leans on reduced-juice and offshore books most accounts do not have, so the retail figure is the one a normal account can realize.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do totals and run lines shop as well as the moneyline?
&lt;/h2&gt;

&lt;p&gt;Close to it, on the same all-books basis.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;All 11 books quoted, same window&lt;/th&gt;
&lt;th&gt;Best against a typical book&lt;/th&gt;
&lt;th&gt;Two-sided hold, typical to best each side&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Moneyline&lt;/td&gt;
&lt;td&gt;+2.1% of stake per bet&lt;/td&gt;
&lt;td&gt;3.90% to 1.86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Totals&lt;/td&gt;
&lt;td&gt;+2.0% of stake per bet&lt;/td&gt;
&lt;td&gt;4.66% to 2.56%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run lines&lt;/td&gt;
&lt;td&gt;+1.8% of stake per bet&lt;/td&gt;
&lt;td&gt;4.11% to 2.17%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Is one book reliably the cheapest?
&lt;/h2&gt;

&lt;p&gt;No. No single mainstream retail book supplied even four in ten of the best prices. The rest were spread across the others, and the best number moved game by game and market by market. Shopping is a habit rather than a choice of book.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is the hold the same as what a bet costs?
&lt;/h2&gt;

&lt;p&gt;No. Hold is the book's margin across both sides of a market, so both sides are needed to compute it. What a bet returns is a separate quantity, and it is measured by grading outcomes. No outcome is graded on this page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;For every game and side, the best, median, mean and worst decimal price across the books quoting it are computed from archived odds, and the gap is converted into a percentage of stake using the two-sided de-vigged fair probability. No outcome is graded, so the figures carry almost no sampling noise - they are a fact about prices, not a record of bets. Totals and run lines are compared only at the most-quoted total and the standard 1.5-run line, so both sides are the same bet at both books. Two-sided hold is reported for a typical book and for the best price on each side; hold is the book's margin, and it is a separate quantity from any bet's realized expected value.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does this page not establish?
&lt;/h2&gt;

&lt;p&gt;Whether any price on the board is a fair one. Nothing here is graded against a result, so the page says what the numbers were worth against each other and not what a bet returned. The prices are quotes at close, so the figures describe how far apart the books sat at that moment rather than a strategy of pricing in the morning and betting later. The window also starts on 19 April, where the archived odds start, so the opening weeks of the season sit outside it.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/line-shopping" rel="noopener noreferrer"&gt;https://negativeev.com/about/line-shopping&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>betting</category>
      <category>data</category>
    </item>
    <item>
      <title>MLB run lines: both sides close to fair, neither measurable</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/mlb-run-lines-both-sides-close-to-fair-neither-measurable-5a43</link>
      <guid>https://dev.to/negativeev/mlb-run-lines-both-sides-close-to-fair-neither-measurable-5a43</guid>
      <description>&lt;h1&gt;
  
  
  MLB run lines: both sides close to fair, neither measurable
&lt;/h1&gt;

&lt;p&gt;Over 753 games the home -1.5 came back about +3.8% and the road +1.5 about -5.4%. Neither figure separates from zero, and this is the third window of this market to order the two sides differently, so which side is dearer is not something it has answered.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 753 MLB games quoted at the standard line, 1,506 side bets&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best price across books on each side, at home -1.5 / road +1.5&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realized EV per bet&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Home -1.5&lt;/td&gt;
&lt;td&gt;+3.8% (± 4.6)&lt;/td&gt;
&lt;td&gt;won 40.9%, priced at 39.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Road +1.5&lt;/td&gt;
&lt;td&gt;-5.4% (± 2.9)&lt;/td&gt;
&lt;td&gt;won 59.1%, priced at 62.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean per-book two-sided hold&lt;/td&gt;
&lt;td&gt;4.1%&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The sample is games where books quoted the standard home -1.5 / road +1.5 pair, so the result is about those two literal sides. It does not generalize to favorites against underdogs, which is a different split measured separately on moneylines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;For each game the best price on each side at the standard 1.5-run point is taken across books, and both sides are graded against the real final margin from the mapped play-by-play corpus. Realized win rate and expected value per bet are reported for each side, along with the mean per-book two-sided hold - which is the book's margin in the quotes, a separate quantity from the realized figures beside it. Games missing from the corpus are excluded rather than defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;Neither side clears its own noise floor. On 753 games the home -1.5 is +3.8% ± 4.6 and the road +1.5 is -5.4% ± 2.9, and both intervals cover zero. Three windows of this market have now ordered the two sides three different ways: a 206-game pass put the home -1.5 at -0.9% ± 8.7 and the road +1.5 at -3.0% ± 5.5, a 245-game pass put them at -3.3% ± 7.9 and -1.1% ± 5.1, and the full archive reverses the ordering again. The decimals are estimates rather than measured costs, and three windows that disagree is what a market too close to fair to read looks like. The large-sample prop and ATP runs are the sharper measurements.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/run-lines" rel="noopener noreferrer"&gt;https://negativeev.com/about/run-lines&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>betting</category>
    </item>
    <item>
      <title>MLB totals: both sides close to fair, neither measurable</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/mlb-totals-both-sides-close-to-fair-neither-measurable-44k2</link>
      <guid>https://dev.to/negativeev/mlb-totals-both-sides-close-to-fair-neither-measurable-44k2</guid>
      <description>&lt;h1&gt;
  
  
  MLB totals: both sides close to fair, neither measurable
&lt;/h1&gt;

&lt;p&gt;Both sides of a totals bet pay close to even money and look symmetrical. Graded against real final scores over 1,067 games, the over came back about -4.4% per bet and the under about -0.7%, both inside their noise floor. The direction survives; the size does not.&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 2 August 2026.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sample: 1,067 MLB games, pushes excluded&lt;/li&gt;
&lt;li&gt;Window: 2026-04-19 to 2026-07-31&lt;/li&gt;
&lt;li&gt;Priced at: best price across books on each side, at the most-quoted total&lt;/li&gt;
&lt;li&gt;Measured: 2026-08-02&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Realized EV per bet&lt;/th&gt;
&lt;th&gt;Figure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Every over&lt;/td&gt;
&lt;td&gt;-4.4% (± 3.0, z = -1.5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every under&lt;/td&gt;
&lt;td&gt;-0.7% (± 3.0, z = -0.2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean per-book two-sided hold&lt;/td&gt;
&lt;td&gt;4.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;An earlier July-only pass over 342 games put the over at -10.6%, narrowly outside its noise floor, and that framing is retired: the full archive window pulls both sides back inside their floors. Overs still grade worse than unders, and that is all this census supports.&lt;/p&gt;

&lt;p&gt;The per-book hold of 4.7% is the margin in the quotes. It is not the realized cost of either side and the two should not be read as the same quantity - the sides came out at -4.4% and -0.7% around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;For each game the most-quoted total point is taken, then the best over price and best under price across books at that point, and both sides are graded against the real combined run total from the mapped play-by-play corpus. Pushes are excluded. Games missing from the corpus are excluded rather than defaulted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside the noise floor
&lt;/h2&gt;

&lt;p&gt;Neither side clears its own noise floor. On 1,067 games the over is -4.4% ± 3.0 (z = -1.5) and the under is -0.7% ± 3.0 (z = -0.2), and both intervals cover zero. Smaller windows of this same market have read differently: a 279-game pass put the over at -7.8% ± 5.8 and a 342-game pass at -10.6% ± 5.2, the one figure that did clear its floor and the one the full archive retires. The decimals are estimates rather than measured costs. The large-sample prop and ATP censuses remain the sharper measurements.&lt;/p&gt;

&lt;p&gt;Written up for readers: &lt;a href="https://negativeev.com/about/totals" rel="noopener noreferrer"&gt;https://negativeev.com/about/totals&lt;/a&gt; All findings: &lt;a href="https://negativeev.com/research" rel="noopener noreferrer"&gt;https://negativeev.com/research&lt;/a&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>betting</category>
    </item>
    <item>
      <title>How I built a pitch-by-pitch baseball simulator</title>
      <dc:creator>negative-ev</dc:creator>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/negativeev/how-i-built-a-pitch-by-pitch-baseball-simulator-12e</link>
      <guid>https://dev.to/negativeev/how-i-built-a-pitch-by-pitch-baseball-simulator-12e</guid>
      <description>&lt;h1&gt;
  
  
  How I Spent 6 Months Building a Pitch-by-Pitch Baseball Simulator
&lt;/h1&gt;

&lt;p&gt;Some lessons about never trusting anything and how beating the books is the only true test&lt;/p&gt;

&lt;p&gt;Written by Jesse, NegativeEV. Last updated 28 July 2026.&lt;/p&gt;

&lt;p&gt;I think it started 10 years ago. I built my first lineup in FanDuel for $2 and hit submit. Then I lost.&lt;/p&gt;

&lt;p&gt;I couldn't let it go. I was so fascinated to find out &lt;em&gt;why&lt;/em&gt; I lost. Why didn't I see the obvious flaws in these players that I picked that caused them to play so poorly? Why did others pick better players? It took a long time for me to learn that it was mostly luck and variance at work, but that was only after I saw there was very clearly something there to predict.&lt;/p&gt;

&lt;p&gt;My first simulators were very, very crude. I'd get some projections from RotoGrinder and pick out the floor, ceiling, and actual projection. Then I used those to generate a skewed normal distribution for each player, at which point I'd randomly grab a single value from the curve. That was his simulated score for the day. I'd do that for every player on the slate, and I would do it 10,000 times for the entire slate. From there it was a matter of solving for the optimal lineup given the simulated scores.&lt;/p&gt;

&lt;p&gt;This produced some interesting results. This was pre-AI. I didn't know what a Monte Carlo simulation was, but that's what I was doing. A friend of mine with a much higher risk tolerance than me ended up using it and winning three separate $100,000 prizes. Crazy, right?&lt;/p&gt;

&lt;p&gt;Eventually, of course, the market caught up and those wins turned into ties turned into second and third-place finishes. Others had built something better.&lt;/p&gt;

&lt;p&gt;The one thing that always drove me crazy with the crude simulator was the lack of correlation. Each player was "predicted" individually. So a quarterback could pass for 500 yards and each of his receivers could have less than 50. Made no sense. My friend had to a complicated post-process where he removed lineups like this.&lt;/p&gt;

&lt;p&gt;At this point it was obvious that the holy grail is a pure play-by-play simulator. But this seemed impossible. It seemed technically impossible and physically impossible: I only had one computer. But I couldn't let it go. It was too good of a challenge, and it became all-engrossing.&lt;/p&gt;

&lt;p&gt;I started with baseball. I don't know why. As it turns out, baseball is far and away the hardest sport to predict. But it also has the most data for training. So I banged my head against the wall over and over again, and I built it.&lt;/p&gt;

&lt;p&gt;I started with such insane ambition it's amazing I made it to the end. Well, actually I quit, twice. The first time is most memorable and was the most instructive. Remember my goal in building this was academic and, dare I say, ego-driven. So before even building the simulator, I built an extensive back testing suite that compared my simulations against over 60 days of historical odds data.&lt;/p&gt;

&lt;p&gt;That was always marker, odds. Anyone can say the built a "realistic" simulator. But the true test of the thing was always going to be if its results were more predictive than the market. And not even that I was going to use to gamble. It's just, that was the standard that, over and above, this thing had actual use.&lt;/p&gt;

&lt;p&gt;So on one of my earliest back tests I stared in disbelief at the numbers that printed out on the terminal. No way, I thought. +15% ROI. I think I even got up from my chair and did two fist pumps.&lt;/p&gt;

&lt;p&gt;But I'm a skeptical software developer. I'd built sprawling, critical systems for large companies as part of my day job. I settled back into my chair and went to work testing my back tester. Oof.&lt;/p&gt;

&lt;p&gt;Data leakage! I couldn't believe it. I had let post-pitch data into my training set. Of course it was going to be profitable. I hung my head in shame. I fixed the issue and stared listlessly at the resultant -22% ROI on the screen after the next test.&lt;/p&gt;

&lt;p&gt;I stopped working on it for a couple months. But then I got the itch again.&lt;/p&gt;

&lt;p&gt;You have to understand that I'd been going at this with a "no compromises" attitude. I wanted to make the best simulator on earth. That was my directive. Even though I had no access to any real compute (just my personal one), I made all architecture and design decisions as if I had a google-sized swarm. Back tests took hours. The fan from my computer would keep my kids up at night.&lt;/p&gt;

&lt;p&gt;One time my simulator showed profit over 10 days of back tests. I did a mini fist pump. I expanded it out to 15 days. Negative again. And so it went. For months, I kid you not.&lt;/p&gt;

&lt;p&gt;Okay Part 2 will have to be another post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check a bet now
&lt;/h2&gt;

&lt;p&gt;Open the checker: &lt;a href="https://negativeev.com/" rel="noopener noreferrer"&gt;https://negativeev.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Related reads: &lt;a href="https://negativeev.com/about/how-it-works" rel="noopener noreferrer"&gt;how a bet check works&lt;/a&gt; and &lt;a href="https://negativeev.com/about/sim-accuracy" rel="noopener noreferrer"&gt;how accurate betting simulators are&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
