<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[nfosignal: Sport Analysis]]></title><description><![CDATA[Prediction markets, win probability models, technical analysis, and the SportChartz thesis. Where Wall Street tools meet live sports.]]></description><link>https://nfosignal.substack.com/s/sport-analysis</link><image><url>https://substackcdn.com/image/fetch/$s_!vTOf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fnfosignal.substack.com%2Fimg%2Fsubstack.png</url><title>nfosignal: Sport Analysis</title><link>https://nfosignal.substack.com/s/sport-analysis</link></image><generator>Substack</generator><lastBuildDate>Mon, 08 Jun 2026 04:12:32 GMT</lastBuildDate><atom:link href="https://nfosignal.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Neal Foster]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[nfosignal@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[nfosignal@substack.com]]></itunes:email><itunes:name><![CDATA[nfos]]></itunes:name></itunes:owner><itunes:author><![CDATA[nfos]]></itunes:author><googleplay:owner><![CDATA[nfosignal@substack.com]]></googleplay:owner><googleplay:email><![CDATA[nfosignal@substack.com]]></googleplay:email><googleplay:author><![CDATA[nfos]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Where the Models Break]]></title><description><![CDATA[The previous posts in this series covered how win probability models work across six sports - the Markov chains behind baseball and tennis, the Poisson framework for soccer and hockey, the random walk in basketball, and the machine learning approach forced by football&#8217;s enormous state space.]]></description><link>https://nfosignal.substack.com/p/where-the-models-break</link><guid isPermaLink="false">https://nfosignal.substack.com/p/where-the-models-break</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Mon, 08 Jun 2026 00:02:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!__uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!__uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!__uw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!__uw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!__uw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!__uw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!__uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9342483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192626125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!__uw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!__uw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!__uw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!__uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc724fe85-7226-4e34-a1e1-446e5e10189b_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The previous posts in this series covered how win probability models work across six sports - the Markov chains behind baseball and tennis, the Poisson framework for soccer and hockey, the random walk in basketball, and the machine learning approach forced by football&#8217;s enormous state space. Each sport&#8217;s model reflects the structure of its game, and within those structures, the models are remarkably good.</p><p>But every model has boundaries. Win probability estimates are displayed to millions of viewers as clean numbers - 73.2%, 41.8% - that suggest a precision the underlying models don&#8217;t actually possess. The numbers are estimates, not measurements. And in specific, identifiable situations, those estimates break down in ways that matter.</p><p>This post catalogs the cross-sport failure modes. Understanding where models break is as important as understanding how they work - particularly if, like SportChartz, you&#8217;re building systems that use win probability as an input to further analysis.</p><h2>The garbage time problem</h2><p>Every sport has garbage time - stretches of play where the outcome is effectively decided and the competitive dynamics that the model assumes no longer hold. The specifics vary by sport, but the pattern is universal.</p><h3>Basketball</h3><p>When one NBA team leads by 25+ points in the fourth quarter, the leading team clears its bench. Starters rest. Reserves who typically play 5 minutes per game are now playing extended minutes against the other team&#8217;s reserves. The scoring dynamics change completely: the per-possession expected points drop, the variance in shooting quality increases, and neither team is executing its real offensive or defensive scheme.</p><p>A standard win probability model trained on all game data treats these possessions identically to competitive possessions. The result is a model that correctly assigns 99%+ win probability to the leading team but slightly misestimates the shape of the remaining probability distribution.</p><h3>Football</h3><p>Football&#8217;s version of garbage time is more insidious because it starts earlier. When a team leads by 21+ points in the second half, the trailing team abandons its normal offensive approach. Run-heavy teams start passing on every down. Leading teams run the ball on every play to drain clock. The Expected Points framework, calibrated on competitive play, doesn&#8217;t capture these strategic shifts.</p><p>The practical consequence: win probability estimates during blowouts are approximately correct in magnitude (the leading team is going to win) but the specific numbers (99.2% vs. 98.7%) reflect dynamics that no longer exist.</p><h3>Why it matters</h3><p>Garbage time affects model calibration at the extremes. When evaluating a model&#8217;s Brier score or calibration curve, the extreme bins (&gt;95% and &lt;5% predicted probability) are populated partly by garbage-time observations. If the model says 97% and the actual rate is 96%, the miscalibration is partly driven by garbage time dynamics that the model wasn&#8217;t designed for.</p><p>For prediction market applications, garbage-time miscalibration is mostly harmless - the position is already decided. But for player evaluation metrics (EPA, WPA), garbage time creates noise that inflates or deflates individual players&#8217; contributions based on the context they played in rather than the quality of their play.</p><h2>The end-of-game strategy problem</h2><p>In basketball, football, and hockey, the final minutes of a game involve strategic behavior that fundamentally differs from the rest of the game. Models trained on full-game data apply assumptions of stationarity that break precisely when the stakes are highest.</p><h3>Basketball: intentional fouling</h3><p>The final 90-120 seconds of a close basketball game operate under a different protocol. Trailing teams foul intentionally to stop the clock. Leading teams may foul to prevent three-point attempts. The scoring process shifts from field goals (variable value, clock-consuming possessions) to free throws (fixed value, minimal time consumed).</p><p>FiveThirtyEight addressed this by building a separate decision-tree model for the endgame. Most other models don&#8217;t - they extrapolate the Brownian motion or logistic regression framework into a regime where its assumptions are violated. The result is systematic error in the most important moments of the game.</p><h3>Football: two-minute drill</h3><p>In the final two minutes of each half, offensive play selection, tempo, and clock management all change. The hurry-up offense compresses 30-second play gaps into 10-15 seconds. Timeout usage becomes strategic. The relative value of scoring (immediate) versus ball control (drain clock) shifts based on whether the team is leading or trailing.</p><p>Models like nflfastR handle this through the time-remaining variable, which the XGBoost trees can split on. But the training data for two-minute-drill situations is sparse relative to normal play, and the strategic interactions (timeout usage, onside kick decisions, spike-the-ball choices) create decision branches that the model may not have enough data to learn.</p><h3>Hockey: empty net</h3><p>The goalie pull in hockey&#8217;s final minutes creates a scoring-rate discontinuity - the trailing team&#8217;s offense gains an extra attacker while the leading team faces an empty net they can shoot at from anywhere. The Poisson model&#8217;s assumption of a constant scoring rate breaks completely.</p><p>The empirical success rate of goalie pulls is approximately 15% when trailing by one goal. But the optimal timing of the pull (mathematical models suggest around 5 minutes remaining, while coaches typically pull with 2-3 minutes remaining) represents a systematic strategic inefficiency that the model can quantify but most implementations don&#8217;t account for.</p><h2>The rare-state estimation problem</h2><p>Every model must make predictions for game states that occur infrequently. The less data a model has for a specific state, the more uncertain the estimate - but the displayed win probability rarely communicates this uncertainty.</p><h3>Football&#8217;s sparse states</h3><p>A 4th-and-8 from the opponent&#8217;s 37-yard line, trailing by 5, with 4:23 remaining in the third quarter, 2 timeouts for the offense and 1 for the defense. This is a completely plausible game state. It has probably occurred a handful of times in recorded NFL history. The model&#8217;s win probability estimate for this state is an interpolation from nearby states, not a direct observation.</p><p>XGBoost handles this through its tree structure - it generalizes from states with similar features. But the uncertainty around the estimate is much larger than for common states (1st-and-10 from your own 25, first quarter, tied game). The model provides a point estimate without confidence intervals, giving the false impression that all predictions carry the same precision.</p><h3>Baseball&#8217;s extreme states</h3><p>Baseball&#8217;s state space is small enough that most cells are well-populated. But extreme score differentials (10+ runs) with unusual base-out states in late innings are sparse. A team trailing by 11 runs in the bottom of the 8th with bases loaded and no outs is an unusual combination. The historical lookup may rely on a very small number of observations, making the 0.2% win probability estimate essentially a guess rather than a well-estimated probability.</p><h3>Tennis at deuce in the fifth set</h3><p>Tennis win probability models are exact given the input parameters, but they&#8217;re sensitive to the point-win probability estimate. In a fifth-set tiebreak (or no-tiebreak final set) between closely matched players, a 1-percentage-point difference in the assumed point-win probability can swing the match-win probability by 5-10 percentage points. The model&#8217;s output is precise but only as accurate as its single input parameter.The calibration problem</p><p>A calibration problem exists when a model&#8217;s predicted probabilities don&#8217;t match observed frequencies. Every model has calibration imperfections, but they&#8217;re often hidden in aggregate Brier scores.</p><h3>Home advantage miscalibration</h3><p>FiveThirtyEight&#8217;s RAPTOR basketball model systematically overestimates home team win probability - predicting home wins at ~70% when the actual rate is ~61%. This is a large systematic bias that compounds across every game in the season.</p><p>The source is likely in the RAPTOR player ratings, which may overweight home-court performance when projecting to game outcomes. But because the miscalibration is systematic rather than random, it&#8217;s detectable only by examining calibration curves, not aggregate accuracy metrics.</p><h3>The confidence gap</h3><p>Many models are overconfident at the extremes. A model that predicts 90% should be right 90% of the time. If it&#8217;s right 85% of the time for predictions in the 88-92% range, it&#8217;s overconfident. This pattern is common across sports:</p><ul><li><p>Football models tend to be slightly overconfident in early-game predictions because they overweight the current score when most of the game remains</p></li><li><p>Basketball models tend to be overconfident during the first half because the random walk hasn&#8217;t converged enough for the drift (team quality) to be distinguishable from noise</p></li><li><p>Soccer models tend to be underconfident on draws because the independent Poisson assumption underestimates draw probability</p></li></ul><p>These biases are correctable through post-hoc calibration (isotonic regression, Platt scaling), but many deployed models don&#8217;t apply these corrections.</p><h2>The independence assumption</h2><p>Multiple sports&#8217; models rely on an assumption of independence between events. This assumption is approximately true but generates systematic errors in specific situations.</p><h3>Momentum and serial correlation</h3><p>The Markov property - the future depends only on the present state, not the path taken to get there - is assumed by baseball&#8217;s transition matrices and tennis&#8217;s hierarchical model. If momentum exists (the probability of winning the next point or at-bat is affected by having won the previous one), the Markov assumption introduces error.</p><p>Klaassen and Magnus (2001) tested this directly in tennis and found small but statistically significant deviations from independence at break points and set points, consistent with a psychological pressure effect that slightly reduces the server&#8217;s point-win probability in high-leverage moments.</p><p>In basketball, Gabel and Redner (2012) found that the exponential distribution of inter-scoring intervals holds well - suggesting that short-run momentum in basketball scoring is weak or nonexistent at the aggregate level. But this finding applies to the overall scoring process; it doesn&#8217;t rule out momentum effects for specific players or specific situations within possessions.</p><p>The independence assumption is a reasonable approximation. But &#8220;reasonable approximation&#8221; means &#8220;systematically wrong in specific situations that may be identifiable.&#8221; For a platform applying technical analysis to win probability curves, these small serial correlations are exactly the kind of signal that might show up in the chart.</p><h3>Event clustering</h3><p>In soccer and hockey, goals sometimes cluster - a team that scores one goal is more likely to score another in the next few minutes than the baseline Poisson rate would predict. This may reflect psychological effects (deflation of the conceding team, momentum of the scoring team) or tactical effects (teams opening up after falling behind).</p><p>The independent Poisson model treats each goal as arriving independently. If goals cluster, the model will underestimate the probability of multiple-goal swings in short time windows - exactly the events that create the most dramatic win probability movements.</p><h2>The draw and overtime problem</h2><p>Soccer and hockey both force models to handle outcomes beyond simple win/loss, and both create structural challenges.</p><h3>Soccer draws</h3><p>The independent Poisson model systematically underestimates draw frequency by 2-4 percentage points. The Dixon-Coles correction and bivariate Poisson extensions reduce but don&#8217;t eliminate this bias. In leagues where 25-27% of matches end in draws, a 2-point miscalibration means roughly 8 additional misclassified matches per season in a 380-match league.</p><p>The draw is the hardest outcome to predict because it requires both teams to score exactly the same number of goals - a condition that sits on the thin diagonal of the scoreline probability matrix. Small errors in the estimated scoring rates for either team shift probability mass on and off this diagonal, creating draw-probability estimates that are inherently less stable than win-probability estimates.</p><h3>Hockey overtime and shootout</h3><p>The transition from regulation hockey (5-on-5, continuous play, Poisson-amenable) to overtime (3-on-3, sudden death, dramatically elevated scoring rate) to shootout (sequential 1-on-1 duels, Bernoulli trials) requires three separate sub-models joined at discontinuous boundaries.</p><p>The win probability curve exhibits visible jumps at these transition points. A team that was at 45% win probability with 30 seconds left in a tied regulation game might jump to 48% entering overtime (slightly above 50% if they have home ice or a quality advantage that manifests differently in 3-on-3 play) and then shift again entering the shootout based on goaltender quality and shooter depth.</p><p>No single model handles the full trajectory smoothly. The result is a win probability curve that&#8217;s well-estimated within each phase but potentially miscalibrated at the transitions.</p><h2>The uncertainty about uncertainty</h2><p>Perhaps the most fundamental problem across all sports is that win probability models report point estimates without uncertainty bands. A model that says 65% doesn&#8217;t tell you whether it&#8217;s confident that the true probability is between 63% and 67%, or whether it might plausibly be anywhere from 55% to 75%.</p><h3>Sources of uncertainty</h3><ol><li><p><strong>Parameter estimation uncertainty</strong>: The model&#8217;s coefficients (logistic regression) or tree structures (XGBoost) are estimated from finite data. Different training samples would produce slightly different models.</p></li><li><p><strong>Model specification uncertainty</strong>: The choice of model (logistic regression vs. XGBoost vs. Poisson) affects the output. Different modeling choices produce different probabilities for the same game state.</p></li><li><p><strong>State measurement uncertainty</strong>: In football, the exact yard line is measured imprecisely. In basketball, whether a team &#8220;has possession&#8221; during a loose ball is ambiguous. These state measurement errors propagate into win probability errors.</p></li><li><p><strong>Non-stationarity</strong>: Team quality changes within a game (fatigue, injuries, substitutions) and across a season. A model trained on early-season data may not apply to late-season games, and a model calibrated on regular-season data may not apply to playoffs.</p></li></ol><h3>A 2023 simulation study</h3><p>Gorman et al. (2023, arXiv:2406.16171) conducted a simulation study examining how difficult it is to estimate win probability accurately. They found that even with large amounts of data, the inherent randomness in sports outcomes means that win probability estimates carry substantial uncertainty. Two perfectly specified models can disagree by 5-10 percentage points on the same game state simply due to sampling variation in the training data.</p><p>This is not a flaw in any particular model. It&#8217;s a property of the problem. Win probability is an unobservable quantity - we never know the &#8220;true&#8221; probability that a team will win from a given state. We can only estimate it. And the estimation carries irreducible uncertainty that is rarely communicated to the audience.</p><h2>Cross-sport summary of failure modes</h2><p>Failure ModeBaseballBasketballFootballSoccerHockeyTennisGarbage timeMinimalSignificantSignificantModerateModerateN/AEnd-of-game strategyMinimalSevereSignificantModerateSignificant (empty net)MinimalRare state estimationLow (small state space)LowHighModerateModerateLow (exact model)Independence assumptionWeak violationWeak violationModerate violationModerate (goal clustering)Moderate (goal clustering)Weak violationDraw/overtimeN/A (extra innings)Overtime model gapOvertime model gapDraw underestimationOT/shootout discontinuityN/AHome advantage biasLowModerateModerateModerateModerateN/ACalibration at extremesLowModerateModerate-HighLow-ModerateLow-ModerateLowPitcher/goalie varianceSignificantN/AN/AModerateSignificantN/A</p><h2>Why this matters for SportChartz</h2><p>Win probability is the raw input to everything SportChartz does. The transformation from win probability to a price-like signal, the reindexing from clock time to game events, the technical indicators computed on the transformed data - all of it sits on top of a win probability curve that carries the imperfections described in this post.</p><p>This isn&#8217;t a reason to distrust the system. It&#8217;s a reason to understand what the system is built on. A technical indicator that detects a divergence between the signal and RSI is detecting a pattern in transformed win probability data. If the underlying win probability estimate is noisy or biased in the current game state - late-game fouling, garbage time, a rare state with sparse historical data - the indicator&#8217;s signal may reflect model noise rather than genuine game dynamics.</p><p>The CMTs who read the charts well understand this intuitively. They know that a Bollinger squeeze in the first quarter of a blowout means something different than a squeeze in the fourth quarter of a 2-point game. The game context informs how much to trust the chart, and the chart is only as trustworthy as the win probability model underneath it.</p><p>Building a multi-sport platform means understanding these failure modes across sports, because the same transformation applied to football win probability and basketball win probability will inherit different types of error. The chart looks the same. The confidence behind the data driving it is not the same.</p><p>That&#8217;s what this series was built to document.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p><p></p><p></p><h2>References</h2><p>Dixon, M.J. and Coles, S.G. (1997). &#8220;Modelling Association Football Scores and Inefficiencies in the Football Betting Market.&#8221; <em>Journal of the Royal Statistical Society: Series C</em>, 46(2), 265-280.</p><p>FiveThirtyEight. &#8220;How Our NBA Predictions Work.&#8221; https://fivethirtyeight.com/methodology/how-our-nba-predictions-work/</p><p>Gabel, A. and Redner, S. (2012). &#8220;Random Walk Picture of Basketball Scoring.&#8221; <em>Journal of Quantitative Analysis in Sports</em>, 8(1).</p><p>Gorman, E. et al. (2023). &#8220;Exploring the Difficulty of Estimating Win Probability: A Simulation Study.&#8221; arXiv:2406.16171.</p><p>Jamieson, K. and Goldblatt, N. (2024). &#8220;Blown Leads in the NFL.&#8221; Wharton Sports Analytics.</p><p>Klaassen, F.J.G.M. and Magnus, J.R. (2001). &#8220;On the Independence and Identical Distribution of Points in Tennis.&#8221; <em>Journal of the American Statistical Association</em>, 96(454), 500-509.</p><p>Stern, H.S. (1994). &#8220;A Brownian Motion Model for the Progress of Sports Scores.&#8221; <em>Journal of the American Statistical Association</em>, 89(427), 1128-1134.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Where Sportsbooks and Prediction Markets Fall Short for Sports Trading]]></title><description><![CDATA[Both models host trading today, but the structural gaps come from opposite directions. The architecture that closes them is starting to come into view.]]></description><link>https://nfosignal.substack.com/p/where-sportsbooks-and-prediction</link><guid isPermaLink="false">https://nfosignal.substack.com/p/where-sportsbooks-and-prediction</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Wed, 03 Jun 2026 04:21:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sLl2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sLl2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sLl2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sLl2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:335999,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nfosignal.substack.com/i/200399459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sLl2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sLl2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc739496-2e6c-490b-b954-8ef2c5c88bc3_1456x813.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can go to DraftKings right now, bet the Yankees to win, and cash out before the game ends. You can go to Kalshi, buy the same contract, and sell it before settlement. That&#8217;s a recognizable shape of trading. It isn&#8217;t what trading looks like once the architecture is right.</p><p>The sports wagering industry has spent the last six years arguing about state-by-state legalization, micro-betting bans, league integrity, and the rise of prediction markets. None of that gets at the actual issue. If you&#8217;re a trader who wants to take a real position, manage it, exit it, and do that at scale, neither sportsbooks nor prediction markets are fully built for the job. They fall short for opposite reasons, and once you put those gaps side by side, what&#8217;s missing becomes obvious.</p><p>This isn&#8217;t an argument that one model beats the other. Both leave real money on the table. Whatever closes the gaps isn&#8217;t going to look much like either of them.</p><h2><strong>Sportsbooks fall short on the economics</strong></h2><p>Sportsbooks weren&#8217;t designed as markets. They&#8217;re risk-management businesses that happen to look like markets. The architecture is built around one job: making sure the house has positive expected value on every transaction, every day.</p><p>The tool that gets that done is the vig, the margin baked into both sides of every line. When a book offers -160 on the favorite and +130 on the dog, the implied probabilities add up to roughly 105%. That extra 5% is a tax you pay regardless of which side you take. On a single straight bet, it&#8217;s small enough that most retail users don&#8217;t notice. Stack it into a six-leg parlay and the same mechanic compounds into a 25% effective hold. No other financial market would tolerate that.</p><p>The cash-out feature, marketed as flexibility, is really the same trick run a second time. The settlement offer is priced below live-odds fair value, with another margin layered on top. Karl Whelan&#8217;s analysis of English Premier League betting found that bookmaker margins jump 1.6 percentage points in the five-minute window after a game goes in-play and a cash-out is offered, and bettors&#8217; realized loss rates jump 1.9 points over the same window.<sup><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></sup> NBA and NFL markets show the same pattern at smaller magnitudes.</p><p>The other half of the sportsbook problem is operational. The minute a game gets interesting, late in a tight game, a team driving in the red zone, the book either suspends the market entirely or holds your bet in a &#8220;pending&#8221; state for several seconds while it checks whether something market-moving just happened. Massachusetts regulators have publicly debated these countdown timers and pressed operators on whether they could be eliminated by adjusting when in-play markets are offered.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Operators argue the timing is part of the live experience. That&#8217;s marketing. The real purpose is latency defense. The book is buying itself time against its own data feed.</p><p>That data feed is also the moat. Sportradar and Genius Sports between them control the official low-latency data for almost every major league. Sportradar holds the NBA, NHL, and MLB. Genius holds the NFL and the Premier League. Sportradar pulled north of $780M in 2022 revenue.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Genius did roughly $340M.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Individual league data contracts now run over $250M. You can&#8217;t challenge the sportsbook model on price without paying that toll, and no new entrant at the relevant scale can afford to.</p><p>That&#8217;s the sportsbook model. The house takes the other side, charges a margin in both directions, suspends the market whenever it gets nervous, and sits behind a data duopoly no challenger can afford. It&#8217;s a profitable business, and the gaps where a market would be are obvious.</p><h2><strong>Prediction markets fall short on the microstructure</strong></h2><p>The architectural response to all of that was the exchange model. Betfair internationally, Sporttrade and Novig and ProphetX domestically, plus event-contract platforms like Kalshi and Polymarket that began with broader event categories and have since moved into sports. The premise is sound: two-sided trading, no house, no built-in margin, a thin commission instead of a wide spread, real price discovery. In financial terms it&#8217;s just an order book. The execution, in sports, hasn&#8217;t worked.</p><p>The first reason is regulatory. The Federal Wire Act of 1961 prohibits the interstate transmission of sports wagering information.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> For a sportsbook this is an annoyance. You run separate servers in each state, but you&#8217;re still the only counterparty on every bet, so liquidity isn&#8217;t really a problem. For an exchange, where the entire economic model depends on a deep pool of buyers and sellers finding each other, the Wire Act is fatal. A buyer in New Jersey can&#8217;t match against a seller in Colorado. Each state&#8217;s liquidity sits on its own island. Spreads widen, depth disappears, and the whole reason to use the exchange goes with them. Sporttrade announced its full exit from state-licensed sports betting by June 2026, citing exactly this.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> State-by-state liquidity doesn&#8217;t math out.</p><p>The second reason is the prediction markets don&#8217;t actually do price discovery in sports the way they do in politics.</p><p>In a political prediction market the contract price reflects a real aggregation of dispersed information: polling errors, sentiment shifts, internal sourcing, judgment calls about how a candidate&#8217;s odds are moving. Different participants legitimately hold different views, and the market consensus is doing actual work. Sports doesn&#8217;t behave that way. A live game has a score, a clock, possession, field position, and a down. Feed those into a deterministic model and you get an implied win probability. The models aren&#8217;t perfect. Modelers disagree about player quality, fatigue, situational coefficients, and weather. But that disagreement is between people running different specifications of a known computation, not a market aggregating information no individual modeler has. There&#8217;s no wisdom-of-crowds magic happening. The answer is on the field.</p><p>What looks like price discovery in a sports prediction market is really a race to transcribe a known state change. The exchange isn&#8217;t finding a price, it&#8217;s lagging behind a computation that already exists. And because most retail participants watch the game through broadcast television, which trails the live feed by 10 to 30 seconds, that lag is systematically exploitable. Somebody at the stadium with a phone, or an institutional firm paying for stadium-direct data, can pick off the resting orders of retail liquidity providers who don&#8217;t yet know the touchdown happened.</p><p>The industry calls this courtsiding. It&#8217;s adverse selection by another name. Betfair patched the problem internationally with a 5-to-12 second mechanical delay on every in-play order, a &#8220;speed bump.&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> That mitigates the bleed but doesn&#8217;t fix it. It just adds friction and execution uncertainty for everyone, including the retail liquidity provider the delay was meant to protect. The continuous order book is the wrong tool for this market.</p><p>So that&#8217;s the prediction market story in sports. Thin commission instead of a wide margin, but liquidity fragmented by state borders, prices that follow rather than discover, and a one-way bleed from retail to fast traders that the order book can&#8217;t prevent. The premise is right. The plumbing hasn&#8217;t been built yet.</p><h2><strong>What the architecture actually needs</strong></h2><p>The good news is that the failures are concrete enough that the fixes are too. Four pieces, none of them invented for this conversation, all of them already running somewhere else in finance.</p><p><strong>Federal regulation.</strong> The Wire Act isn&#8217;t going to be repealed. The path around it is reclassification. If sports event contracts are treated as swaps under the Commodity Exchange Act, they fall under the Commodity Futures Trading Commission, the same federal agency that already regulates futures and options on CME, ICE, and elsewhere. A federally registered exchange can pool national liquidity into a single order book, the way Treasury futures and oil futures already do. The U.S. Court of Appeals for the Third Circuit affirmed this path for Kalshi in April 2026, holding that federal jurisdiction preempts state gaming law for these contracts.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> That isn&#8217;t the final word. A federal court in Maryland has gone the other way on the same question, declining to extend preemption and preserving the state&#8217;s authority to regulate event contracts under its gambling laws.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> The issue will probably end up at the Supreme Court before it settles. But operators aren&#8217;t waiting. Sporttrade, ProphetX, and Novig have all walked away from state licensing and filed with the CFTC.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a> That migration is already underway.</p><p><strong>Interval clearing. (</strong><em>aka:</em> <em>batch matching</em>, <em>frequent batch auction)</em> Even with federal liquidity, a continuous order book leaks value from retail to the fastest data feed. The fix is interval clearing. Instead of matching orders the instant they hit the book, the exchange collects every order that arrives in a short window, say 250 milliseconds, or one second, and matches them all simultaneously at a single uniform price. Inside the window, arrival order doesn&#8217;t matter. A trader whose data is two seconds faster has nothing to race against. Eric Budish, Peter Cramton, and John Shim formalized this approach in the academic literature as the frequent batch auction, and it cleans up the latency problem in a way speed bumps can&#8217;t.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a>The frequent batch auction isn&#8217;t plug-and-play, though. It changes the economics for market makers (in a continuous book they earn from fast two-sided quoting), and there are real design questions to work through for sports specifically: the right window length, how depth behaves inside the window, and whether market makers will keep providing liquidity once revision speed stops being an edge. The model is worth examining, not assumed solved. It is also the single biggest piece of the sports microstructure puzzle that nobody has shipped yet.</p><p><strong>Multi-source settlement data. </strong><em>(aka: decentralized data oracles)</em> The Sportradar/Genius duopoly exists because every operator and exchange currently needs a single, indemnified source of truth for settlement. That dependency is also why nobody can challenge them on price. The architectural answer is to settle from a panel of independent feeds: multiple data vendors, in-stadium captures, broadcast metadata, league APIs, all cross-checked against each other, with any disagreement triggering a defined resolution process. The model isn&#8217;t new. Crypto uses it for on-chain settlement. Mainstream finance uses it for benchmark rates. For an exchange, the practical effect is taking a $250M-per-league line item off the cost structure.</p><p><strong>Quote-driven composability.</strong> <em>(aka: request-for-quote pricing)</em> The product feature traders actually like about sportsbooks is the ability to build a complex correlated position, a same-game parlay or a multi-leg derivative, and get a single price for the whole thing. The exchange model has historically not delivered that. The mechanism that closes the gap is request-for-quote pricing. A participant submits a custom multi-leg position. Several market makers respond with prices. The participant takes the best one. It&#8217;s how block trades and exotic derivatives have always worked in traditional finance, and it gives you parlay-style composability without the sportsbook&#8217;s hidden 25% hold.</p><p>Why hasn&#8217;t this been built yet? A few things have held it back. Sportsbooks have the customers but no incentive to cannibalize a high-margin model with a low-commission exchange they would have to compete inside of. Exchanges have the architectural know-how but until the Third Circuit decision were operating without a regulatory path that supported nationwide liquidity. And two-sided markets are hard to bootstrap. Even a venue with the right design needs serious capital and patience to seed both sides of the book at once. Those conditions are only lining up now.</p><p>Those four pieces, federal liquidity, interval clearing, multi-source data, and quote-driven composability, are what&#8217;s needed. Every one of them already exists somewhere in finance. Nobody has assembled them end to end for sports.</p><h2><strong>The layer underneath the market</strong></h2><p>Whichever venue eventually wins this transition, whether that&#8217;s Kalshi, a CFTC-licensed Sporttrade, a FanDuel or DraftKings that adapts, or somebody not yet visible, one fact about sports holds regardless of market structure. The price of an in-game contract is downstream of a computation that doesn&#8217;t need the market to exist at all.</p><p>A football game&#8217;s state is fully observed. You have score, clock, possession, field position, and drive history. Those are the inputs. The output is an implied win probability. The same is true for basketball, baseball, hockey. Whatever market sits on top of the game is reflecting a number that&#8217;s already computable from the game itself. When the market is wide, lagged, or absent, and across every venue I just described it&#8217;s routinely all three, the underlying number doesn&#8217;t go away. It just stops being visible to anyone whose only view of the game is the order book.</p><p>This is the layer SportChartz works in. We don&#8217;t sit on top of any particular book or exchange. We compute implied win probability and a library of more than fifteen technical indicators, MACD, RSI, Bollinger Bands, and the rest of the equities toolkit, directly from live game state. The signals run as a charting platform for human traders and as an API for systems. We&#8217;re agnostic to whose order book the trade eventually executes against.</p><p>Traders are using that signal against the venues we have today. The structural problems described above still apply, the cash-out is still priced against you on the books and the book on the exchanges is still thin enough to be picked off. But the win probability model isn&#8217;t tied to any particular venue, and the signal it computes is the same wherever the trade executes.</p><p>When the federal-exchange architecture above is fully assembled and the noise of state-by-state fragmentation is gone, what trades on that venue is going to look very much like what we already chart.</p><p>In the meantime the books-versus-exchange debate keeps going, and the actual market that sports trading needs still doesn&#8217;t exist. The interesting question for industry insiders isn&#8217;t which incumbent wins. It&#8217;s who builds the architecture first, and what the analytical layer underneath it ends up looking like once they do.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Karl Whelan, "<a href="https://www.karlwhelan.com/Teaching/BettingMarkets/15.InplayandCashout.pdf">In-Play Bets and Cash Out</a>," Economics of Betting Markets course materials, University College Dublin, Spring 2026. The broader empirical framework on overround vs. realized loss rates is developed in Karl Whelan and Tadgh Hegarty, "<a href="https://www.karlwhelan.com/sports-betting-margin-versus-loss-rate/">Estimating Expected Loss Rates in Betting Markets: Theory and Evidence</a>," <em>Applied Economics</em>, 2025.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>"<a href="https://igamingbusiness.com/sports-betting/massachusetts-bet-limits-discussion/">Bet limits discussion in Massachusetts reveals disconnect between regulator, operators</a>," iGaming Business, September 2024</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>"<a href="https://investors.sportradar.com/news-releases/news-release-details/sportradar-reports-fourth-quarter-and-full-year-2022-results">Sportradar Reports Fourth Quarter and Full Year 2022 Results</a>," Sportradar investor relations; "<a href="https://www.covers.com/industry/sportradar-reported-781-million-in-2022-sports-betting-revenue">Sportradar Reported $781M in Revenue in 2022</a>," Covers.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>"<a href="https://www.covers.com/industry/genius-sports-betting-reported-341-million-in-2022-revenue">Genius Sports Reported $341 Million in 2022 Revenue</a>," Covers.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>"<a href="https://www.law.cornell.edu/uscode/text/18/1084">18 U.S. Code &#167; 1084 &#8212; Transmission of wagering information</a>," Cornell Law / Legal Information Institute.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>"<a href="https://www.legalsportsreport.com/263660/sporttrade-exits-betting-with-predictions-applications-pending/">Sporttrade Exits Betting With Predictions Applications Pending</a>," Legal Sports Report, May 2026; "<a href="https://www.sportico.com/business/sports-betting/2026/sporttrade-prediction-market-regulation-state-cftc-1234882662/">Sporttrade Tries to Undo the Damage of One Bad Bet</a>," Sportico.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>"<a href="https://support.developer.betfair.com/hc/en-us/articles/360002825652-Why-do-you-have-a-delay-on-placing-bets-on-a-market-that-is-in-play">Why do you have a delay on placing bets on a market that is 'in-play'</a>," Betfair Developer Support.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>"<a href="https://www.skadden.com/insights/publications/2026/04/third-circuit-affirms-kalshis-preliminary-injunction">Third Circuit Affirms Kalshi's Preliminary Injunction</a>," Skadden, Arps, Slate, Meagher &amp; Flom LLP, April 2026; "<a href="https://www.sportico.com/law/analysis/2026/kalshi-third-circuit-new-jersey-scotus-1234889561/">Kalshi Third Circuit Win Could Set Table for SCOTUS Review</a>," Sportico.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>"<a href="https://natlawreview.com/article/place-your-bets-us-district-courts-are-split-whether-commodity-exchange-act">Place Your Bets: US District Courts Are Split on Whether the Commodity Exchange Act Preempts State Gaming Laws with Respect to Sports Event Contracts</a>," National Law Review; "<a href="https://www.joneswalker.com/en/insights/blogs/perspectives/kalshi-acts-swiftly-across-pending-litigation-after-adverse-maryland-ruling.html?id=102kz4e">Kalshi Acts Swiftly Across Pending Litigation After Adverse Maryland Ruling</a>," Jones Walker.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>"<a href="https://www.sportico.com/business/sports-betting/2025/prophetx-prediction-market-cftc-sweepstakes-1234876170/">ProphetX Applies for CFTC Approval, Expects to Ditch Sweepstakes</a>," Sportico, November 2025; "<a href="https://defirate.com/news/novig-linked-ludlow-exchange-enters-cftc-portal-with-dcm-application/">Novig-Linked Ludlow Exchange Enters CFTC Portal With DCM Application</a>," DeFi Rate; live filings tracked at the <a href="https://www.cftc.gov/IndustryOversight/IndustryFilings/TradingOrganizations">CFTC industry filings portal</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>Eric Budish, Peter Cramton, and John Shim, "<a href="https://ericbudish.org/publication/the-high-frequency-trading-arms-race-frequent-batch-auctions-as-a-market-design-response/">The High-Frequency Trading Arms Race: Frequent Batch Auctions as a Market Design Response</a>," <em>Quarterly Journal of Economics</em> 130, no. 4 (2015): 1547&#8211;1621.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Dynamic Tournament Win Probability: The Integration Layer]]></title><description><![CDATA[The previous two posts described tournament-level win probability for Grand Slams and the World Cup as separate problems.]]></description><link>https://nfosignal.substack.com/p/dynamic-tournament-win-probability</link><guid isPermaLink="false">https://nfosignal.substack.com/p/dynamic-tournament-win-probability</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Wed, 27 May 2026 16:10:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!h8-y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h8-y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h8-y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 424w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 848w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h8-y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7703833,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192628298?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h8-y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 424w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 848w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!h8-y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d4915ea-46dc-4b42-ad7c-5d77c3bf6ea7_2750x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The previous two posts described tournament-level win probability for Grand Slams and the World Cup as separate problems. This post unifies them. The underlying math is the same regardless of the sport or tournament format: you have a match-level model, a tournament structure, and a propagation mechanism that translates live match states into updated tournament probabilities.</p><p>What makes this interesting is the integration layer. Match-level win probability updates on every play. Tournament-level win probability updates through a chain of conditional probabilities that connects the current point, goal, or down to the probability of winning a championship that might be weeks away. Building this in real time, across multiple simultaneous matches that all affect the same bracket, is an engineering problem as much as a mathematical one.</p><h2>The general framework</h2><p>For any elimination tournament, the probability that team A wins the championship given the current state of all live matches can be expressed as:</p><p><strong>P(A wins tournament | S) = &#931; over all paths &#215; P(path | S)</strong></p><p>where S is the vector of current states across all matches in progress, and each &#8220;path&#8221; is a specific combination of results for every remaining match in the tournament.</p><p>This is computationally intractable for the full sum, so the standard approach decomposes it into rounds:</p><p><strong>P(A wins tournament | S) = P(A wins current match | S_current) &#215; &#931; P(A wins remaining rounds | bracket after current round)</strong></p><p>The first term comes from the sport-specific within-match model. The second term comes from the tournament simulation conditioned on the current round&#8217;s results. The key insight: the second term can be pre-computed for every possible bracket configuration that might emerge from the current round.</p><h2>Pre-computation strategy</h2><p>Consider the NCAA March Madness tournament (68 teams, 6 rounds). Before the tournament starts, you can pre-compute:</p><p>For each team A, for each possible bracket position A could occupy after the current round, compute P(A wins tournament from here). Store these as a lookup table indexed by (team, round, bracket_state).</p><p>The bracket state after round R is determined by which teams advanced in all matches through round R. For a 64-team bracket, the state after round 1 is a vector of 32 winners. There are 2^32 possible states in theory, but many are irrelevant because only certain matchups are possible (team 1 can only face team 2 or team 3 in round 2, depending on the results of specific round 1 games).</p><p>For practical purposes: pre-compute P(A wins tournament | A advances, opponent configuration in A&#8217;s bracket region). The &#8220;bracket region&#8221; shrinks as rounds progress. In the first round, only A&#8217;s immediate opponent matters. By the quarterfinals, A&#8217;s remaining path depends on which teams survived in A&#8217;s half of the bracket.</p><h2>Multi-match simultaneous updates</h2><p>In most tournament settings, multiple matches happen simultaneously. March Madness plays 16 games on opening day. The World Cup group stage has matches kicking off at the same time. Grand Slams run matches on multiple courts.</p><p>When matches overlap, the tournament win probability depends on the joint state of all live matches. This creates correlation between updates:</p><p><strong>P(A wins tournament | S&#8321;, S&#8322;, ..., S&#8345;) &#8800; P(A wins tournament | S&#8321;) averaged over S&#8322;...S&#8345;</strong></p><p>because the outcomes of other live matches determine A&#8217;s future opponents. If A is in the top half and two potential quarterfinal opponents are playing each other right now, the result of that match directly affects A&#8217;s probability.</p><p>The correct approach: re-run the bracket simulation conditioning on the current state of all live matches simultaneously. In practice, this means the simulation takes the current within-match win probabilities for all live matches as inputs and propagates all of them through the bracket.</p><p>For real-time updates, this is computationally feasible with pre-computation. Cache the bracket simulation results by round outcome. When a live match state changes, update the within-match win probability, re-weight the cached bracket outcomes by the new match probabilities, and sum.The information cascade</p><p>Tournament win probability exhibits information cascade effects. Early results change the distribution of possible future matchups, which changes the value of being in certain bracket positions, which retroactively changes the &#8220;quality&#8221; of a team&#8217;s draw.</p><p>Example: In a 16-team bracket, Team A is in the same quarter as the No. 1 seed. Before the tournament, Team A&#8217;s win probability is suppressed because they likely face the No. 1 seed in the quarterfinals. If the No. 1 seed loses in the first round, Team A&#8217;s tournament win probability immediately jumps - not because A played better, but because their projected path just became dramatically easier.</p><p>This cascade effect is strongest in formats with strong seeding (Grand Slams, March Madness) where top seeds are placed to avoid each other until late rounds. An early upset of a top seed creates asymmetric probability shifts: every team on that seed&#8217;s side of the bracket benefits, while teams on the other side are largely unaffected.</p><p>Quantifying this: in a typical March Madness simulation, a No. 1 seed&#8217;s first-round loss increases the tournament win probability of the No. 2 seed in the same region by roughly 40-60% relative to their pre-tournament probability. The effect on the No. 3 and No. 4 seeds in that region is smaller but still meaningful.</p><h2>Group stage dynamics</h2><p>Group stages (World Cup, UEFA Champions League) add another layer of complexity. Unlike elimination brackets where the only outcome that matters is advancing, group stages create incentives around final standings (group winner vs. second place affects knockout bracket placement) and goal difference tiebreakers.</p><h3>Strategic dead-rubber effects</h3><p>When a team has already secured advancement (or elimination) before their final group match, the dynamics change. The team that&#8217;s already through may rest players. The team that&#8217;s already eliminated may play freely without pressure. These strategic considerations are not captured by a model that treats every match identically.</p><p>The infamous 1982 World Cup &#8220;Disgrace of Gij&#243;n&#8221; (West Germany vs. Austria) demonstrated the extreme case: both teams knew the exact score that would advance both of them, and appeared to play accordingly after an early goal. The subsequent rule change (final group matches played simultaneously) eliminated the information advantage but not all strategic incentives.</p><h3>Cross-group dependencies</h3><p>In formats where third-place finishers can advance (2026 World Cup, UEFA European Championship), the probability of advancement for a third-place team depends on results in other groups. This creates dependencies across the entire tournament that don&#8217;t exist in simple bracket structures.</p><p>A third-place team&#8217;s advancement probability requires modeling not just their own group results but the likely third-place finishes in all other groups, then comparing across groups. The simulation handles this naturally (simulate all groups, compare third-place records, advance the best ones), but the resulting probability updates are harder to attribute to any single match.</p><h2>March Madness: the most analyzed bracket</h2><p>The NCAA Tournament has the richest ecosystem of bracket prediction models, driven in part by the ESPN bracket challenge (millions of participants) and the Kaggle March Machine Learning Mania competition.</p><h3>Pool-specific optimal strategy</h3><p>An interesting extension: the optimal bracket for a prediction pool depends on the pool size. In a small pool (10 people), picking mostly favorites and differentiating on one or two upsets is optimal. In a large pool (millions), picking favorites guarantees a middling finish because millions of other brackets look the same. Optimal large-pool strategy requires calculated contrarian picks - upsets that the model believes are more likely than the consensus, creating differentiation if they hit.</p><p>This is a portfolio optimization problem: maximize expected bracket score subject to a uniqueness constraint. The tournament win probability model provides the probabilities; the pool strategy layer decides how to trade off expected value against differentiation.</p><h3>Live bracket probability</h3><p>During the tournament, millions of brackets are being tracked against live results. A bracket&#8217;s probability of winning a pool can be computed as:</p><p><strong>P(bracket wins pool | current results) = P(bracket is correct on remaining games) &#215; P(no other bracket does better)</strong></p><p>The first term comes from the tournament model. The second requires modeling the distribution of competing brackets in the pool. For public pools (ESPN), the aggregate bracket distribution is published and can be used directly. For private pools, the distribution must be estimated.Real-time architecture</p><p>Building dynamic tournament win probability in a production system requires careful architecture. The requirements are:</p><p><strong>Low latency</strong>: match-level updates happen on every play (every pitch in baseball, every point in tennis, every play in football). Tournament probability should update within seconds.</p><p><strong>Consistency</strong>: all tournament probabilities should sum correctly. If there are 16 remaining teams, their tournament win probabilities should sum to 1. Rounding errors in simulation can violate this, so normalization is needed.</p><p><strong>Historical</strong>: the system should store the full time series of tournament probabilities for each team, enabling after-the-fact analysis of probability swings.</p><h3>Implementation pattern</h3><p>The architecture that handles this efficiently:</p><p>1. <strong>Match probability service</strong>: independently computes within-match win probability for each live match using the sport-specific model. Emits updates on every state change.</p><p>2. <strong>Bracket state service</strong>: maintains the current bracket, including which matches are complete, which are live, and which are future. Updates when matches conclude.</p><p>3. <strong>Tournament simulation cache</strong>: pre-computes tournament win probabilities for each possible combination of live match outcomes in the current round. Re-generates the cache when a round completes and new matchups are set.</p><p>4. <strong>Aggregation layer</strong>: combines live match probabilities with the cached tournament simulations to produce current tournament win probabilities. This is the real-time computation: for each team, sum over possible current-round outcomes, weighted by live match probabilities.</p><p>The cache is the key to performance. Pre-computing tournament simulations for all possible current-round outcomes (2^n for n live matches, bounded by the number of matches in the current round) means the real-time update is just a weighted sum, not a full simulation.</p><p>For March Madness with 8 simultaneous first-round games, the cache has 2^8 = 256 entries. Each entry contains the tournament win probability for every remaining team given that specific combination of first-round results. When a live game state changes, update the match probability, re-weight the 256 cached scenarios, and emit the new tournament probabilities. This runs in milliseconds.</p><h2>The compound drama effect</h2><p>The most compelling property of dynamic tournament win probability is the compound drama effect. A single play in a single match can shift the tournament win probability for a team that isn&#8217;t even playing right now.</p><p>Consider a March Madness scenario: Duke is trailing by 1 with 10 seconds left in a second-round game. UNC, in the opposite side of the bracket, has already advanced and is watching. A Duke loss means UNC avoids a potential Duke matchup in the Final Four. Duke&#8217;s probability of making that shot affects UNC&#8217;s tournament win probability - even though UNC isn&#8217;t on the court.</p><p>This cascading effect is what makes tournament prediction more than an academic exercise. The probability surfaces are interconnected in ways that single-match models can&#8217;t capture. For a platform like SportChartz, where the charting layer visualizes probability in real time, the tournament view adds a second axis of time: the within-match progression and the across-tournament progression happening simultaneously.</p><p>The match chart shows the probability curve for the current game. The tournament chart shows how that curve feeds into the broader probability surface. One is the microscope. The other is the map.</p><h2>References</h2><p>Boulier, B.L. &amp; Stekler, H.O. (1999). &#8220;Are sports seedings good predictors? An evaluation.&#8221; International Journal of Forecasting, 15(1), 83-91.</p><p>Breiter, D.J. &amp; Carlin, B.P. (1997). &#8220;How to play office pools if you must.&#8221; Chance, 10(1), 5-11.</p><p>Clair, B. &amp; Letscher, D. (2007). &#8220;Optimal strategies for sports betting pools.&#8221; Operations Research, 55(6), 1163-1177.</p><p>Glickman, M.E. &amp; Stern, H.S. (2017). &#8220;Estimating team strength in the NFL.&#8221; In Handbook of Statistical Methods and Analyses in Sports. Chapman and Hall/CRC.</p><p>Jacobson, S.H. &amp; King, D.M. (2009). &#8220;Seeding in the NCAA men&#8217;s basketball tournament: when is a higher seed better?&#8221; Journal of Gambling Business and Economics, 3(2), 63-87.</p><p>Lopez, M.J. &amp; Matthews, G.J. (2015). &#8220;Building an NCAA men&#8217;s basketball predictive model and quantifying its success.&#8221; Journal of Quantitative Analysis in Sports, 11(1), 5-12.</p><p>Ruiz, F.J.R. &amp; Perez-Cruz, F. (2015). &#8220;A generative model for predicting outcomes in college basketball.&#8221; Journal of Quantitative Analysis in Sports, 11(1), 39-52.</p><p>West, B.T. &amp; Lamsal, M. (2008). &#8220;A new application of linear modeling in the prediction of college football bowl outcomes and the development of team ratings.&#8221; Journal of Quantitative Analysis in Sports, 4(3).</p>]]></content:encoded></item><item><title><![CDATA[Thinking Through Win Probability at the Grand Slams]]></title><description><![CDATA[The tennis win probability model described earlier in this series operates at the match level.]]></description><link>https://nfosignal.substack.com/p/thinking-through-win-probability</link><guid isPermaLink="false">https://nfosignal.substack.com/p/thinking-through-win-probability</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Fri, 22 May 2026 02:58:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8rr_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8rr_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8rr_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8rr_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg" width="1352" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1352,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tennis Grand Slam Tournament: Know the Differences!&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tennis Grand Slam Tournament: Know the Differences!" title="Tennis Grand Slam Tournament: Know the Differences!" srcset="https://substackcdn.com/image/fetch/$s_!8rr_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8rr_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54420daa-7c9c-4d35-bb23-be1ff8b28586_1352x900.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The tennis win probability model described earlier in this series operates at the match level. Given two players&#8217; serve-win probabilities, the hierarchical Markov chain recurses through points, games, sets, and the match to produce a win probability at any game state. That model is well-understood and well-documented in the literature.</p><p>Tournament prediction is a different problem. It asks: before the draw is made or after the first round is set, what is the probability that Player A wins the entire tournament? And as results come in, how does that probability update?</p><p>We haven&#8217;t built this. But walking through how it would work is worth the exercise, because the structure of Grand Slam tennis makes it one of the cleanest tournament prediction problems in sports. The bracket is fixed. The match-level model is mathematically exact. And the data exists to parameterize everything.</p><h2>What a bracket simulation would need</h2><p>A Grand Slam draw has 128 players in a single elimination bracket. The tournament winner plays seven matches. The prediction problem: given estimates of every possible head-to-head matchup, compute the probability that each player wins the tournament.</p><p>The direct computation is combinatorially large. Player A&#8217;s probability of winning the tournament requires summing over all possible paths through the bracket - every combination of opponents they could face in each round, weighted by the probability of each opponent reaching that round. For 128 players and 7 rounds, the number of paths is enormous.</p><p>The standard approach in the literature is Monte Carlo simulation. Simulate the entire bracket thousands of times, drawing match results from the match-level win probability model, and count how often each player wins. Barnett and Clarke (2005) and Knottenbelt et al. (2012) both take variations of this approach.</p><h3>Match probability inputs</h3><p>For each potential matchup between Player i and Player j, you&#8217;d need P(i beats j). The match-level Markov chain computes this from serve-win probabilities:</p><p><strong>P(i beats j) = f(p&#7522;_serve, p&#11388;_serve, format)</strong></p><p>where p&#7522;_serve is Player i&#8217;s probability of winning a point on serve against Player j, p&#11388;_serve is Player j&#8217;s probability of winning a point on serve against Player i, and format is best-of-3 or best-of-5.</p><p>The serve-win probabilities aren&#8217;t constants. They depend on the matchup. A player with a dominant serve but weak return game has different serve-win rates against a strong returner vs. a weak returner. The simplest approach uses each player&#8217;s aggregate serve-win and return-win rates and combines them additively:</p><p><strong>p&#7522;_serve_vs_j = p&#7522;_serve_general + (1 - p&#11388;_return_general) - league_average</strong></p><p>This assumes serve and return skills combine independently. Klaassen and Magnus (2001) and Knottenbelt et al. (2012) use Elo-like rating systems that can capture head-to-head effects and surface-specific performance, which is more realistic but requires more data.</p><h3>The surface question</h3><p>Grand Slam results vary dramatically by surface. Nadal&#8217;s career win rate on clay was roughly 92% vs. 75% on hard courts and 68% on grass. Any serious tournament model would need surface-specific serve-win probabilities - clay-court data for Roland Garros, grass for Wimbledon, hard court for the Australian and US Opens.</p><p>The complication is sample size. Many players have limited matches on a given surface in a given year. Hierarchical models handle this by shrinking surface-specific estimates toward a player&#8217;s overall ability when data is sparse. This is a standard statistical technique but adds a layer of estimation uncertainty that propagates through the bracket simulation.</p><h3>The best-of-5 amplification</h3><p>Grand Slam men&#8217;s matches are best-of-5 sets, while most other tournaments are best-of-3. The longer format amplifies the skill difference between players. As the earlier tennis post showed, a player with a 52% point-win rate on serve wins roughly 60% of best-of-3 matches but 65% of best-of-5 matches against an equal opponent.</p><p>This amplification would compound across a seven-match tournament. The favorite in each round is slightly more favored than in a best-of-3 event, and that advantage compounds over seven rounds. The implication: Grand Slam tournament predictions should be more concentrated on top seeds than ATP 1000 predictions, even when using the same underlying player ratings.</p><p>Women&#8217;s Grand Slam matches are best-of-3, matching the rest of the WTA tour. The tournament-level concentration would therefore be lower, and upsets should propagate more easily through the bracket. This matches what we actually observe - the WTA has seen far more unique Grand Slam champions in recent decades than the ATP. The math predicts the pattern.How dynamic updating would work</p><p>Before the tournament starts, the simulation would produce a set of pre-tournament win probabilities. Once play begins, those probabilities would update based on results.</p><h3>Round-by-round</h3><p>After each round, the update is structural: players who lost are removed from the bracket, and the simulation re-runs using only the surviving players in their actual positions. A first-round upset by a low seed doesn&#8217;t just affect that player&#8217;s draw - it changes the projected opponent difficulty for everyone in that quarter.</p><p>If the No. 1 seed loses in the first round, every other player in that quarter immediately sees their tournament win probability increase, because their projected path just got easier. Players in other quarters are largely unaffected, because the bracket structure ensures they wouldn&#8217;t face the No. 1 seed until the semifinals or later. The bracket creates local probability neighborhoods.</p><h3>Within-match</h3><p>The match-level Markov chain produces point-by-point win probabilities. During a live match, the tournament win probability would update continuously:</p><p><strong>P(A wins tournament | match state) = P(A wins current match | match state) &#215; P(A wins tournament | A wins current match)</strong></p><p>The second term comes from the bracket simulation conditioned on A advancing. This is pre-computable for each round - run the simulation assuming A wins the current match and compute A&#8217;s probability of winning the remaining rounds.</p><p>The result would be a tournament win probability that responds to every point. When a top seed goes down two sets to love in the first round, their tournament win probability drops not just because the match win probability dropped, but because the remaining path still includes six more matches even if they come back. The compound effect would be dramatic.</p><p>This is where the idea connects to what we&#8217;re building at SportChartz. The charting layer already handles match-level probability curves. Layering a tournament probability curve on top - one that responds to live match state but also reflects the bracket structure - would add a second dimension to the visualization. The match chart is the microscope. The tournament chart would be the map.</p><h2>The validation problem</h2><p>Tournament prediction models are notoriously difficult to evaluate. There are four Grand Slams per year. Even with 20 years of data, that&#8217;s only 80 tournaments - and the player pool changes substantially over that period.</p><p>Match-level evaluation is more tractable: 127 matches per tournament, roughly 500 per year across four Grand Slams. Log loss on pre-match win probabilities gives a proper scoring rule evaluation with a reasonable sample size. But this evaluates the match-level model, not the tournament prediction. A model could produce well-calibrated match probabilities but poor tournament predictions if the match probabilities are slightly miscalibrated in ways that compound over seven rounds.</p><p>Betting markets provide pre-tournament odds for all Grand Slam events. Comparing a model&#8217;s pre-tournament win probabilities against the implied market probabilities (after removing the vig) would be the most practical benchmark. The market aggregates information from thousands of participants and represents a strong prior.</p><h2>What would be missing</h2><p>Even a well-built bracket simulation would miss several things that matter:</p><p><strong>Tactical matchup effects.</strong> Some players consistently perform better against left-handers, or against particular playing styles. An aggregate serve/return model doesn&#8217;t capture these interactions. You&#8217;d need head-to-head history, which is sparse for most pairings.</p><p><strong>Fatigue and scheduling.</strong> A player who goes to five sets in the first three rounds may be physically compromised for the quarterfinals. Grand Slam scheduling (day vs. night, heat, rain delays) affects performance in ways no serve-win probability model captures.</p><p><strong>Momentum and form.</strong> A player on a 15-match winning streak may play differently than one who barely qualified. Current form is partially captured by using recent serve-win rates, but the psychological component isn&#8217;t modeled.</p><p>These are the same kinds of omissions that affect every win probability model in this series. Models capture the structure of the competition. They don&#8217;t capture everything that happens within it. The question is whether the structure alone carries enough predictive power to be useful - and for Grand Slam tennis, with its clean bracket, exact match-level math, and strong seeding effects, the answer is probably yes.</p><h2>References</h2><p>Barnett, T. &amp; Clarke, S.R. (2005). &#8220;Combining player statistics to predict outcomes of tennis matches.&#8221; IMA Journal of Management Mathematics, 16(2), 113-120.</p><p>Boulier, B.L. &amp; Stekler, H.O. (1999). &#8220;Are sports seedings good predictors? An evaluation.&#8221; International Journal of Forecasting, 15(1), 83-91.</p><p>Klaassen, F.J.G.M. &amp; Magnus, J.R. (2001). &#8220;On the probability of winning a tennis match.&#8221; In Advances in the Statistical Sciences, Vol. V: Stochastic Musings, 241-249.</p><p>Knottenbelt, W.J., Sherr, D., Maybury, G. &amp; Sherr, L. (2012). &#8220;A common-opponent stochastic model for predicting the outcome of professional tennis matches.&#8221; Computers and Mathematics with Applications, 64(12), 3820-3827.</p><p>McHale, I. &amp; Morton, A. (2011). &#8220;A Bradley-Terry type model for forecasting tennis match results.&#8221; International Journal of Forecasting, 27(2), 619-630.</p><p>Sackmann, J. (2011). &#8220;TennisAbstract Match Charting Project.&#8221; GitHub repository: github.com/JeffSackmann/tennis_MatchChartingProject.</p>]]></content:encoded></item><item><title><![CDATA[Win Probability at the World Cup]]></title><description><![CDATA[The 2026 FIFA World Cup kicks off June 11 in North America.]]></description><link>https://nfosignal.substack.com/p/win-probability-at-the-world-cup</link><guid isPermaLink="false">https://nfosignal.substack.com/p/win-probability-at-the-world-cup</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Sun, 17 May 2026 21:11:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k7dN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k7dN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k7dN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 424w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 848w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 1272w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k7dN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png" width="1238" height="636" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:636,&quot;width&quot;:1238,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126957,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192627841?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k7dN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 424w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 848w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 1272w, https://substackcdn.com/image/fetch/$s_!k7dN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70c6dcb-a97d-4728-80d8-5dedab1998f1_1238x636.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The 2026 FIFA World Cup kicks off June 11 in North America. 48 teams, a new format, three host countries. It&#8217;s the largest World Cup ever staged, and there is no historical data for this tournament structure.</p><p>The soccer win probability model described earlier in this series - Dixon-Coles, bivariate Poisson, xG-driven intensity - provides the match-level foundation. Extending it to a 48-team tournament prediction is a different problem. The group stage introduces a three-outcome model. National teams aren&#8217;t persistent entities the way club teams are. And the expanded format means nobody can calibrate against prior tournaments because none existed in this shape.</p><p>We haven&#8217;t built a World Cup prediction model. But the tournament is ten weeks away, the tools exist, and the exercise of thinking through what it would take is useful - both as a reference and as something we might actually attempt.</p><h2>The structural complexity</h2><h3>Group stage</h3><p>The World Cup begins with a round-robin group stage. In the 32-team format (used through 2022), eight groups of four teams each play a complete round-robin (three matches per team). The top two teams from each group advance to a 16-team knockout bracket. The 2026 expansion to 48 teams changes the structure: twelve groups of four, with the top two teams and eight best third-place finishers advancing to a 32-team knockout.</p><p>The group stage is what makes this fundamentally different from Grand Slam prediction. In tennis, the bracket is fixed and every match is single-elimination. The World Cup group stage introduces three complications: the possibility of strategic play in the final group match, the dependence of knockout-round seeding on group-stage performance, and the three-outcome problem (win, draw, loss) that doesn&#8217;t exist in tennis.</p><h3>Three outcomes per match</h3><p>Soccer matches in group play can end in a draw. Points are awarded: 3 for a win, 1 for a draw, 0 for a loss. A match-level model would need to produce three probabilities (home win, draw, away win) rather than two. Dixon-Coles handles this naturally through the bivariate Poisson framework - the probability of a draw is the sum of P(0-0) + P(1-1) + P(2-2) + ... across the goal probability matrix.</p><p>Knockout matches can&#8217;t end in a draw (extra time and penalty shootouts resolve ties), so you&#8217;d need two modes: a three-outcome mode for group play and a two-outcome mode for knockout rounds. The two-outcome mode would extend the regulation-time model with conditional probabilities for extra time and shootouts.</p><h2>The team strength problem</h2><h3>Elo as starting point</h3><p>The most common approach to estimating team strength across national teams is some variant of Elo. FIFA&#8217;s own ranking system was overhauled in 2018 to use an Elo-based formula after years of criticism of the previous points-based system.</p><p>The core Elo update after each match:</p><p><strong>R_new = R_old + K &#215; (S - E)</strong></p><p>where S is the actual result (1, 0.5, or 0 for win, draw, loss), E is the expected result based on rating difference, and K is a weighting factor that varies by match importance.</p><p>For World Cup prediction specifically, the K-factor for competitive matches would be higher than for friendlies, reflecting the information content of each match type. World Cup matches themselves carry the highest K-factor, which creates an interesting dynamic: the model&#8217;s ratings would be most rapidly updated during the tournament it&#8217;s trying to predict.</p><p>FiveThirtyEight&#8217;s Soccer Power Index extended Elo with adjustments for goal difference, home advantage (including continent-specific effects), and separate offensive/defensive ratings. Lars Schiefler&#8217;s World Football Elo Ratings provide a long historical series. Groll, Schauberger, and Tutz (2015) took a different approach entirely, using team-specific regularized Poisson regression for the 2014 tournament.</p><h3>The squad problem</h3><p>This is the piece that makes national team prediction fundamentally different from club prediction. National teams are not persistent entities. The roster changes between every tournament window. The 2022 France World Cup squad was meaningfully different from the 2018 squad that won the tournament. Rating the &#8220;team&#8221; as a continuous entity misses these composition changes.</p><p>More sophisticated approaches would rate individual players and compose team strength from the expected starting eleven. This requires projecting which players will be called up, who will start, and how the formation and tactical setup translate individual ratings into team performance. The complexity grows quickly, and the data for international team tactical setups is sparse compared to club football.</p><p>In practice, the Elo approach - treating the national team as the unit - works reasonably well for major footballing nations with deep player pools. It struggles more for smaller nations where one or two players represent most of the team&#8217;s quality. Iceland at the 2018 World Cup, with a population of 360,000, was qualitatively different from the France squad, but simple Elo captures this difference adequately through match results. The question is whether you can do better, and how much the additional complexity buys you.How a group stage simulation would work</p><p>Given pairwise match probabilities for every team pairing, the group stage simulation would compute the probability of each team finishing in each position within their group.</p><h3>Exact computation</h3><p>For a group of four teams playing three matches each, the total number of group outcome combinations across all six matches is 3^6 = 729 (each match is win, draw, or loss). Each outcome combination produces a points table. This is small enough to enumerate exactly.</p><p>For each of the 729 outcomes, you&#8217;d compute the probability of that specific outcome combination (product of the six match probabilities), determine the points table, apply tiebreakers (goal difference, goals scored, head-to-head), and assign that probability to the resulting standings.</p><p>The tiebreaker step is where exact computation gets tricky. Goal difference tiebreakers require modeling the joint distribution of goal differences across matches, not just win/draw/loss. A practical simplification: for each win/draw/loss outcome, simulate the scoreline from the underlying Poisson model to resolve tiebreakers probabilistically.</p><h3>Monte Carlo at scale</h3><p>For the 48-team format with 12 groups, or when incorporating goal-difference tiebreakers, Monte Carlo simulation would be more practical. Simulate each match using the Dixon-Coles model (drawing scorelines from the bivariate Poisson distribution), compute the group tables, apply tiebreakers, and advance teams to the knockout bracket. Run 10,000-100,000 simulations and tabulate frequencies. Suzuki et al. (2010) used a Bayesian approach along these lines for the 2006 tournament.</p><h2>The knockout complications</h2><p>Once teams are placed in the knockout bracket, the simulation would proceed like the Grand Slam model from the previous post: for each match, draw a result and advance the winner, continuing until a champion is determined.</p><p>The complications are extra time and penalty shootouts:</p><p><strong>P(Team A advances) = P(A wins in regulation) + P(draw in regulation) &#215; P(A wins in extra time or shootouts)</strong></p><h3>Extra time</h3><p>Extra time is 30 minutes of additional play. Goal-scoring rates in extra time are generally lower than in regulation - teams are fatigued, more cautious, and the stakes are higher. Empirical extra-time scoring rates are roughly 60-70% of the regulation per-minute rate.</p><p>A model for extra time could use the same Poisson framework with a reduced intensity parameter:</p><p><strong>lambda_extra = lambda_regulation &#215; (30/90) &#215; fatigue_factor</strong></p><p>where fatigue_factor is typically estimated at 0.6-0.7 from historical data.</p><h3>Penalty shootouts</h3><p>Penalty shootouts are approximately coin flips, but not exactly. Historical World Cup shootout data shows a slight advantage for the team shooting first (roughly 55/45, though this varies across studies). Individual penalty conversion rates average around 75%, with variance based on player skill, goalkeeper ability, and the pressure state.</p><p>The simplest model treats shootouts as a 55/45 coin flip in favor of the team shooting first. More detailed models simulate individual penalties using player-specific conversion rates, though this level of detail is rarely justified given the noise in the data. Shootouts are inherently high-variance events, and modeling them precisely may be overfitting signal that isn&#8217;t there.</p><h2>How dynamic updating would work</h2><h3>Pre-tournament</h3><p>Before the tournament begins, a full simulation would produce a tournament win probability for each team. These probabilities would reflect the team&#8217;s strength (Elo rating), their group draw (easier groups produce higher advancement probabilities), and their knockout bracket position (which side of the bracket the potential semifinal and final opponents are on).</p><p>Draw difficulty matters more than most people realize. A team in a group with three other strong teams has a lower advancement probability regardless of their own strength. And if the bracket structure places the two strongest teams on the same side, one of them is guaranteed to be eliminated before the final.</p><h3>During the group stage</h3><p>After each group match, the simulation would update by replacing uncertain match outcomes with known results. A team that wins its first match sees its probability of advancing increase both because they&#8217;ve banked three points and because they&#8217;ve provided new information about their current form.</p><h3>During knockout matches</h3><p>Within a live knockout match, the tournament win probability would update continuously:</p><p><strong>P(A wins tournament | match state) = P(A advances | match state) &#215; P(A wins tournament | A advances)</strong></p><p>The first term would come from the within-match soccer win probability model (xG-adjusted Poisson with current score, time remaining, and red cards). The second term from the bracket simulation conditioned on A advancing.The host effect</p><p>World Cup host nations historically outperform their ratings. This isn&#8217;t just the direct home advantage of playing at home - it includes crowd support, no travel, climate familiarity, and potentially favorable referee decisions (documented in Sutter and Kocher, 2004).</p><p>South Korea reached the semifinals in 2002, a result far beyond their Elo rating. Quantifying the host effect varies across studies, with estimates ranging from 50-100 Elo points of additional strength for the host nation. The 2026 World Cup, hosted across three countries (USA, Canada, Mexico), would complicate this further: each host nation would have &#8220;home&#8221; matches but also neutral-site matches within the tournament. How you model that split matters.</p><h2>The 2026 format question</h2><p>The expansion to 48 teams for 2026 creates a genuinely novel modeling challenge. Twelve groups of four (instead of eight groups of four) means more third-place finishers advancing, which changes the tiebreaker dynamics. Some groups will be dramatically weaker than others given the expanded pool.</p><p>No historical data exists for this format. A simulation framework would need to be adapted from first principles rather than calibrated on past tournaments. This is actually a case where the modeling approach has an advantage over intuition - you can simulate 48-team tournaments with current ratings thousands of times and observe the distributional properties, even without historical precedent.</p><h2>The validation wall</h2><p>This is the fundamental challenge with World Cup prediction. The tournament happens every four years. Even with data back to 1930, there are only 22 completed tournaments. Pre-tournament win probability assessments for 22 events, with 32 teams each, yield roughly 700 pre-tournament probabilities to evaluate. That&#8217;s not nothing, but it&#8217;s thin for rigorous calibration analysis.</p><p>The practical workaround: evaluate the match-level model on all competitive international matches (World Cup qualifiers, continental championships, Nations League). The match-level model can be validated on thousands of matches. The tournament structure is then a deterministic function of those match probabilities, so if the match model is well-calibrated, the tournament model should inherit that property. &#8220;Should&#8221; is doing some work there, but it&#8217;s the best available approach.</p><p>Betting markets provide pre-tournament odds for every World Cup. Comparing a model&#8217;s pre-tournament win probabilities against the implied market probabilities (after removing the vig) would be the most practical benchmark. Leitner, Zeileis, and Hornik (2010) did exactly this for the 2008 European Championship and found that Elo-based models performed comparably to bookmaker odds.How we could actually build this for 2026</p><p>The tournament is June 11. The draw is done. The groups are set. Here&#8217;s what a practical build would look like.</p><h3>Step 1: Team strength ratings</h3><p>Start with the World Football Elo Ratings (eloratings.net), which are public and updated after every international match. These give you a single strength number per team going into the tournament. You could also pull FIFA&#8217;s official rankings, which use their own Elo variant since 2018.</p><p>For a more sophisticated version, use the penaltyblog Python package (covered in the implementation post) to fit a Dixon-Coles model on recent international results. Two to three years of competitive matches (World Cup qualifiers, continental championships, Nations League) gives you attack and defense strength parameters per team, which is richer than a single Elo number.</p><pre><code><code>import pandas as pd
from penaltyblog import footballdata

# Pull international match results
# Filter to competitive matches (not friendlies) from 2023-2026
# Fit Dixon-Coles with team-specific attack/defense parameters

# The output: for any Team A vs Team B matchup,
# you get P(home_win), P(draw), P(away_win) and
# the full scoreline probability matrix</code></code></pre><p>The host advantage adjustment is the open question. Historical estimates suggest 50-100 Elo points for the host nation. With three hosts in 2026, you&#8217;d want to apply a reduced home boost (maybe 30-50 points) for matches played in a host&#8217;s own country, and a smaller neutral-venue adjustment for matches in the other two host countries. This is a judgment call, not a precisely calibrated parameter.</p><h3>Step 2: Group stage simulation</h3><p>With the actual 2026 groups and the pairwise match probabilities from Step 1, simulate every group.</p><pre><code><code>import numpy as np
from scipy.stats import poisson

def simulate_match(lambda_home, lambda_away):
    """Draw a scoreline from bivariate Poisson."""
    home_goals = poisson.rvs(lambda_home)
    away_goals = poisson.rvs(lambda_away)
    return home_goals, away_goals

def simulate_group(teams, match_lambdas, n_sims=50000):
    """
    teams: list of 4 team names
    match_lambdas: dict of (team_a, team_b) -&gt; (lambda_a, lambda_b)
    Returns: dict of team -&gt; [P(1st), P(2nd), P(3rd), P(4th)]
    """
    finishes = {t: [0, 0, 0, 0] for t in teams}

    for _ in range(n_sims):
        points = {t: 0 for t in teams}
        gd = {t: 0 for t in teams}
        gf = {t: 0 for t in teams}

        # Play all 6 matches in the group
        for i in range(len(teams)):
            for j in range(i+1, len(teams)):
                lam_i, lam_j = match_lambdas[(teams[i], teams[j])]
                gi, gj = simulate_match(lam_i, lam_j)

                gf[teams[i]] += gi
                gf[teams[j]] += gj
                gd[teams[i]] += gi - gj
                gd[teams[j]] += gj - gi

                if gi &gt; gj:
                    points[teams[i]] += 3
                elif gi == gj:
                    points[teams[i]] += 1
                    points[teams[j]] += 1
                else:
                    points[teams[j]] += 3

        # Sort by points, then goal difference, then goals for
        ranking = sorted(teams, key=lambda t: (points[t], gd[t], gf[t]), reverse=True)
        for pos, t in enumerate(ranking):
            finishes[t][pos] += 1

    # Convert to probabilities
    for t in teams:
        finishes[t] = [x / n_sims for x in finishes[t]]

    return finishes</code></code></pre><p>Run this for all 12 groups. The output: each team&#8217;s probability of finishing 1st, 2nd, 3rd, or 4th in their group. First and second advance automatically. The eight best third-place finishers also advance, which requires comparing third-place records across groups.Step 3: Full tournament simulation</p><p>Chain the group stage into the knockout bracket.</p><pre><code><code>def simulate_tournament(groups, match_lambdas, n_sims=50000):
    """
    Full tournament: group stage -&gt; knockout bracket.
    Returns: dict of team -&gt; P(winning the tournament)
    """
    wins = {team: 0 for group in groups.values() for team in group}

    for _ in range(n_sims):
        # 1. Simulate all groups
        group_results = {}
        third_place = []
        for group_name, teams in groups.items():
            # simulate group, get final standings
            standings = simulate_group_once(teams, match_lambdas)
            group_results[group_name] = standings
            third_place.append((standings[2], group_name))  # 3rd place team

        # 2. Determine best 8 third-place finishers
        # Sort by points, GD, GF from the group stage sim
        advancing_third = select_best_third(third_place)

        # 3. Build knockout bracket per FIFA 2026 rules
        bracket = build_bracket(group_results, advancing_third)

        # 4. Simulate knockout rounds
        champion = simulate_knockout(bracket, match_lambdas)
        wins[champion] += 1

    return {t: w / n_sims for t, w in wins.items()}</code></code></pre><p>The knockout simulation needs the extra time and shootout logic described earlier. For a first pass, treat knockout matches that end in a draw after regulation as a coin flip with slight first-mover advantage (55/45). Refine later if the model warrants it.</p><h3>Step 4: What you&#8217;d learn</h3><p>50,000 simulations produce a tournament win probability for each of the 48 teams. But the interesting outputs aren&#8217;t just the top-line numbers. You&#8217;d see:</p><p><strong>Group difficulty asymmetry.</strong> Some groups are dramatically easier than others in the 48-team format. The simulation quantifies this: a team with a 95% chance of advancing from a weak group vs. 60% from a strong group, even at the same Elo rating.</p><p><strong>Bracket path effects.</strong> Which side of the bracket is weaker? Which path to the final avoids the most dangerous opponents? The draw creates structural advantages that aren&#8217;t obvious from looking at individual matchups.</p><p><strong>Third-place volatility.</strong> The eight best third-place finishers rule adds variance that didn&#8217;t exist in the 32-team format. A team&#8217;s advancement probability depends on results in other groups they don&#8217;t play in.</p><p><strong>Host nation boost sensitivity.</strong> Run the simulation with and without the host advantage adjustment. How much does a 50-point Elo boost change the USA&#8217;s, Mexico&#8217;s, or Canada&#8217;s tournament win probability? This tells you how much the host effect assumption matters relative to the base strength estimate.</p><h3>Step 5: Live updating during the tournament</h3><p>Once play begins, the simulation re-runs after every match with known results replacing simulated ones. The code structure supports this naturally: lock in completed group matches, resimulate the remaining ones, and propagate through the bracket.</p><p>This is where it connects to SportChartz. The match-level win probability model already runs in real time. Layering the tournament simulation on top means every goal in a group stage match ripples through to update every team&#8217;s tournament win probability, including teams that aren&#8217;t playing that day. A surprise result in Group A changes the third-place calculus for Group F. The simulation captures this. A human watching on TV doesn&#8217;t.</p><h3>What this doesn&#8217;t solve</h3><p>This approach uses team-level Elo or Dixon-Coles parameters. It doesn&#8217;t account for individual player availability (injuries, suspensions), tactical matchup effects, or within-tournament form. The squad problem described above remains. You&#8217;re modeling &#8220;France the entity&#8221; rather than &#8220;this specific France squad with Mbappe but without Kante.&#8221;</p><p>For the 2026 format specifically, there&#8217;s no way to validate the group-to-knockout transition rules against historical data because no prior tournament used them. The simulation is internally consistent - the math works - but it&#8217;s never been tested against reality in this configuration. That&#8217;s the honest limitation.</p><p>The tools exist. The data is accessible. The open question is whether the prediction adds value beyond what the betting markets already price in. Leitner et al. (2010) found Elo-based models performed comparably to bookmaker odds for the 2008 Euros. Comparable isn&#8217;t &#8220;better than.&#8221; But comparable with a transparent methodology that updates in real time during the tournament - that&#8217;s something the markets don&#8217;t provide in the same way.</p><h2>References</h2><p>Cea, S., Duran, G., Guajardo, M. &amp; Saure, D. (2020). &#8220;An analytical approach to the FIFA ranking procedure and the World Cup.&#8221; Annals of Operations Research, 286(1), 357-387.</p><p>Dixon, M.J. &amp; Coles, S.G. (1997). &#8220;Modelling association football scores and inefficiencies in the football betting market.&#8221; Journal of the Royal Statistical Society: Series C, 46(2), 265-280.</p><p>Groll, A., Schauberger, G. &amp; Tutz, G. (2015). &#8220;Prediction of major international soccer tournaments based on team-specific regularized Poisson regression.&#8221; Journal of Quantitative Analysis in Sports, 11(2), 97-115.</p><p>Leitner, C., Zeileis, A. &amp; Hornik, K. (2010). &#8220;Forecasting sports tournaments by ratings of (prob)abilities: A comparison for the EURO 2008.&#8221; International Journal of Forecasting, 26(3), 471-481.</p><p>Silver, N. (2018). &#8220;How our 2018 World Cup predictions work.&#8221; FiveThirtyEight methodology.</p><p>Sutter, M. &amp; Kocher, M.G. (2004). &#8220;Favoritism of agents &#8211; the case of referees&#8217; home bias.&#8221; Journal of Economic Psychology, 25(4), 461-469.</p><p>Suzuki, A.K., Salasar, L.E.B. &amp; Leite, J.G. (2010). &#8220;A Bayesian approach for predicting match outcomes: The 2006 (Association) Football World Cup.&#8221; Journal of the Operational Research Society, 61, 1530-1539.</p>]]></content:encoded></item><item><title><![CDATA[Soccer and Hockey: The Poisson Sports]]></title><description><![CDATA[Soccer and hockey share a structural property that separates them from basketball and football: goals are rare.]]></description><link>https://nfosignal.substack.com/p/soccer-and-hockey-the-poisson-sports</link><guid isPermaLink="false">https://nfosignal.substack.com/p/soccer-and-hockey-the-poisson-sports</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Sun, 17 May 2026 21:10:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nd0E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nd0E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nd0E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 424w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 848w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nd0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png" width="1000" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Once and For All: What's Better? Hockey or Soccer?&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Once and For All: What's Better? Hockey or Soccer?" title="Once and For All: What's Better? Hockey or Soccer?" srcset="https://substackcdn.com/image/fetch/$s_!nd0E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 424w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 848w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nd0E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18aaaf0c-d005-4494-a33c-34665f59385e_1000x500.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Soccer and hockey share a structural property that separates them from basketball and football: goals are rare. A typical soccer match produces roughly 2.5 goals across both teams. An NHL game produces roughly 6. Compare that to an NBA game averaging 220 points or an NFL game averaging 45.</p><p>When scoring events are rare, the Poisson distribution becomes the natural modeling framework. This isn&#8217;t an arbitrary choice - it follows from the mathematical properties of processes that generate infrequent events at approximately constant rates. Both sports have built their win probability infrastructure on this foundation, though with sport-specific modifications that reflect the structural differences between them.</p><h2>The Poisson framework for goal-scoring</h2><p>The Poisson distribution gives the probability of observing <em>k</em> events in a fixed time interval, given an average rate &#955;:</p><p><strong>P(X = k) = (&#955;&#7503; &#183; e^(-&#955;)) / k!</strong></p><p>For soccer, &#955; represents the expected number of goals scored by a team in a match. For a team with &#955; = 1.3 (roughly average for a home team in a top European league), the probability distribution over goals scored is:</p><p>GoalsProbability00.27310.35420.23030.10040.0325+0.011</p><p>The most likely outcome for this team is exactly 1 goal. There is a 27.3% chance of scoring zero. Only 4.3% of the time will they score 4 or more. This captures the empirical reality of soccer: most matches feature very few goals, and each goal is enormously consequential.</p><p>The key Poisson assumption is that goals arrive independently at a constant rate - the probability of scoring in any given minute is the same regardless of what happened in the previous minute. This is approximately true in both sports, though deviations exist (momentum effects, tactical changes after goals, fatigue).</p><h2>Maher (1982): the foundational soccer model</h2><p>M.J. Maher&#8217;s 1982 paper &#8220;Modelling Association Football Scores&#8221; in <em>Statistica Neerlandica</em> established the framework that all subsequent soccer models build upon. The model treats home and away goals as independent Poisson random variables:</p><p><strong>Home goals ~ Poisson(&#955;_home)</strong> where <strong>&#955;_home = &#945;_i &#183; &#946;_j &#183; &#947;</strong></p><p><strong>Away goals ~ Poisson(&#955;_away)</strong> where <strong>&#955;_away = &#945;_j &#183; &#946;_i</strong></p><p>where:</p><ul><li><p><strong>&#945;_i</strong> is the attacking strength of team <em>i</em></p></li><li><p><strong>&#946;_j</strong> is the defensive weakness of team <em>j</em> (higher means easier to score against)</p></li><li><p><strong>&#947;</strong> is the home advantage parameter</p></li></ul><p>The parameters &#945;, &#946;, and &#947; are estimated from historical match results using maximum likelihood. The joint probability of a specific scoreline (home scores <em>x</em>, away scores <em>y</em>) is:</p><p><strong>P(x, y) = P_Poisson(x; &#955;_home) &#183; P_Poisson(y; &#955;_away)</strong></p><p>under the independence assumption.</p><p>Maher showed that this model provides a reasonable fit to observed football scores. The independence assumption is approximately satisfied - knowing the home team scored 2 goals doesn&#8217;t dramatically change your estimate of how many the away team scored. But there are systematic deviations, particularly at low-scoring outcomes where draws cluster more than the independent model predicts.</p><h2>Dixon-Coles (1997): fixing the draw problem</h2><p>The independent Poisson model systematically underpredicts draws, particularly 0-0 and 1-1 scorelines. Dixon and Coles (1997) proposed an elegant fix: a correction factor &#964; applied to low-scoring outcomes, along with a time-decay weighting scheme for parameter estimation.</p><p>The correction factor introduces a dependency parameter &#961; that adjusts the joint probability for four specific scorelines:</p><p><strong>For (0, 0): &#964; = 1 - &#955;_home &#183; &#955;_away &#183; &#961;</strong></p><p><strong>For (1, 0): &#964; = 1 + &#955;_away &#183; &#961;</strong></p><p><strong>For (0, 1): &#964; = 1 + &#955;_home &#183; &#961;</strong></p><p><strong>For (1, 1): &#964; = 1 - &#961;</strong></p><p><strong>For all other scorelines: &#964; = 1</strong> (no correction)</p><p>The modified joint probability becomes:</p><p><strong>P(x, y) = &#964;(x, y, &#955;_home, &#955;_away, &#961;) &#183; P_Poisson(x; &#955;_home) &#183; P_Poisson(y; &#955;_away)</strong></p><p>The parameter &#961; is estimated from data alongside the team-specific parameters. Empirically, &#961; is typically between -0.10 and -0.15, indicating that low-scoring scorelines occur more frequently than the independent model predicts. A &#961; of -0.10 increases the predicted frequency of draws by approximately 3.3% relative to the uncorrected model.</p><p>The interpretation is that in close, low-scoring matches, teams tend to adopt more cautious approaches - both suppressing their own attacking output and reducing the opponent&#8217;s. This creates a negative correlation between the two teams&#8217; goal counts that the independent model misses.</p><h3>Time-decay weighting</h3><p>Dixon-Coles also introduced exponential time-decay weighting for parameter estimation. More recent matches receive higher weight:</p><p><strong>w(t) = e^(-&#958; &#183; (T - t))</strong></p><p>where <em>T</em> is the current date, <em>t</em> is the match date, and &#958; is the decay rate. This allows the model to track changes in team quality over time - a team that was strong two years ago but has declined since will have its older, higher-performance matches downweighted.</p><h2>The three-outcome problem</h2><p>Soccer differs from every American sport by admitting three possible match outcomes: home win, draw, away win. This creates a modeling challenge that doesn&#8217;t exist when outcomes are binary.</p><p>The Poisson framework handles this naturally. Given the parameters &#955;_home and &#955;_away, the three outcome probabilities are:</p><p><strong>P(home win) = &#931;_{x&gt;y} P(x, y) = &#931;_{x=1}^{&#8734;} &#931;_{y=0}^{x-1} P(x, y)</strong></p><p><strong>P(draw) = &#931;_{x=y} P(x, y) = &#931;_{x=0}^{&#8734;} P(x, x)</strong></p><p><strong>P(away win) = &#931;_{y&gt;x} P(x, y) = &#931;_{y=1}^{&#8734;} &#931;_{x=0}^{y-1} P(x, y)</strong></p><p>In practice, these sums are truncated at some maximum goal count (typically 8-10, since the probability of more goals is negligible).</p><p>The draw probability is particularly sensitive to model specification. In the independent Poisson model, the draw probability is:</p><p><strong>P(draw) = &#931;_{k=0}^{&#8734;} P_Poisson(k; &#955;_home) &#183; P_Poisson(k; &#955;_away) = e^{-(&#955;_home + &#955;_away)} &#183; &#931;_{k=0}^{&#8734;} (&#955;_home &#183; &#955;_away)^k / (k!)&#178;</strong></p><p>This sum is related to the modified Bessel function of the first kind, I&#8320;:</p><p><strong>P(draw) = e^{-(&#955;_home + &#955;_away)} &#183; I&#8320;(2&#8730;(&#955;_home &#183; &#955;_away))</strong></p><p>The draw is the hardest outcome to predict accurately. Empirically, draws occur roughly 25-27% of the time in top European leagues. The independent Poisson model typically predicts 22-24%, underpredicting by 2-4 percentage points. The Dixon-Coles correction closes much of this gap.Evaluating three-outcome models: Ranked Probability Score</p><p>When models produce three probabilities (win, draw, loss), the standard metric for evaluation is the <strong>Ranked Probability Score</strong> (RPS), which gives partial credit for being close:</p><p><strong>RPS = (1/2) &#931;_{j=1}^{2} (&#931;_{i=1}^{j} p_i - &#931;_{i=1}^{j} o_i)&#178;</strong></p><p>where the three outcomes are ordered (win &gt; draw &gt; loss), <em>p_i</em> are the predicted cumulative probabilities, and <em>o_i</em> are the observed cumulative indicators.</p><p>RPS ranges from 0 (perfect) to 1 (worst). It penalizes a model less for predicting &#8220;draw&#8221; when &#8220;win&#8221; occurs than for predicting &#8220;loss&#8221; when &#8220;win&#8221; occurs, reflecting the ordinal nature of the outcomes.</p><h2>Bivariate Poisson: modeling dependence directly</h2><p>While Dixon-Coles patches the independence assumption with correction factors for specific scorelines, the bivariate Poisson distribution models the dependence between team goal-scoring directly.</p><p>Karlis and Ntzoufras (2003) developed the framework. The bivariate Poisson distribution has three parameters:</p><p><strong>X = X&#8321; + X&#8323;</strong> (home goals)<br><strong>Y = X&#8322; + X&#8323;</strong> (away goals)</p><p>where X&#8321; ~ Poisson(&#955;&#8321;), X&#8322; ~ Poisson(&#955;&#8322;), X&#8323; ~ Poisson(&#955;&#8323;) are independent.</p><p>The common component X&#8323; introduces positive covariance between the two teams&#8217; goal counts. When &#955;&#8323; &gt; 0, the probability of both teams scoring more (or fewer) goals than expected increases.</p><p>The joint probability mass function is:</p><p><strong>P(X = x, Y = y) = e^{-(&#955;&#8321; + &#955;&#8322; + &#955;&#8323;)} &#183; (&#955;&#8321;^x / x!) &#183; (&#955;&#8322;^y / y!) &#183; &#931;_{k=0}^{min(x,y)} C(x,k) &#183; C(y,k) &#183; k! &#183; (&#955;&#8323; / (&#955;&#8321; &#183; &#955;&#8322;))^k</strong></p><p>When &#955;&#8323; = 0, this reduces to the independent Poisson model. Empirically, small positive values of &#955;&#8323; improve the model&#8217;s ability to predict draws and low-scoring outcomes.</p><p>Karlis and Ntzoufras further extended this to the <strong>diagonal-inflated bivariate Poisson</strong>, which adds extra probability mass along the diagonal (draws) beyond what the covariance parameter alone can capture. They demonstrated superior performance on Premier League data, with improved calibration of draw probabilities and reduced Ranked Probability Scores.</p><h2>Expected goals (xG): the modern foundation</h2><p>Expected goals has transformed how both soccer and hockey model scoring, and by extension, win probability. The concept is simple: each shot is assigned a probability of being scored based on its characteristics, independent of whether it actually went in.</p><h3>What xG measures</h3><p>An xG model assigns a value between 0 and 1 to every shot attempt. A penalty kick might have xG &#8776; 0.76. A header from a cross at the edge of the 18-yard box might have xG &#8776; 0.03. A one-on-one with the keeper from 8 yards might have xG &#8776; 0.35.</p><p>The key variables in a modern xG model include:</p><p><strong>Shot characteristics</strong>: Distance to goal (most predictive single variable), angle to goal, body part (foot vs. head), shot type (placed, driven, chip)</p><p><strong>Build-up context</strong>: Type of assist (through-ball, cross, ground pass, cutback), number of dribbles before shot, speed of the attacking move</p><p><strong>Defensive context</strong>: Number of defenders between shooter and goal, goalkeeper position, time pressure on the shooter</p><p><strong>Game state</strong>: Score at the time of the shot, time remaining, home/away</p><p>Major xG providers (StatsBomb, Opta, Understat) differ in their feature sets and model architectures. StatsBomb uses freeze-frame data capturing all player positions at the moment of the shot. Understat uses neural networks on 100,000+ shots with 10+ features. Across providers, correlation with actual goals is high (r &gt; 0.80 by matchweek 10 of a league season), though individual shot-level predictions diverge more than aggregate team-level estimates.</p><h3>xG as Poisson intensity</h3><p>The connection between xG and win probability runs through the Poisson framework. The cumulative xG a team generates in a match represents an estimate of their &#8220;deserved&#8221; scoring rate:</p><p><strong>&#955;&#770;_home = xG_home(t) &#183; (T / t)</strong></p><p>where xG_home(t) is the cumulative xG generated through time <em>t</em>, and the scaling factor (T/t) projects the current rate over the full match duration.</p><p>This replaces the historical team-level &#955; estimates in the Maher/Dixon-Coles framework with real-time, shot-quality-adjusted estimates. A team generating high xG (many good chances) is modeled with a higher &#955; than a team generating low xG, regardless of the actual score.</p><p>The in-game win probability at time <em>t</em> becomes:</p><p><strong>P(home win at time t) = &#931;_{x &gt; y} P_Poisson(remaining_home_goals = x; &#955;&#770;_home &#183; (T-t)/T) &#183; P_Poisson(remaining_away_goals = y; &#955;&#770;_away &#183; (T-t)/T)</strong></p><p>adjusted for the current score.</p><p>This is why xG-based win probability can diverge from the scoreboard. A team that&#8217;s winning 1-0 but has generated only 0.3 xG while conceding 2.1 xG is in a more precarious position than the score suggests. The model knows the underlying dynamics favor the trailing team, even though the actual goals don&#8217;t reflect it yet.Hockey: Poisson with game state complexity</p><p>Hockey uses the same Poisson foundation as soccer but with significant structural modifications driven by the sport&#8217;s rules.</p><h3>The origin of xG in hockey</h3><p>The expected goals concept was formalized for hockey before it became widespread in soccer. Alan Ryder developed the first rigorous xG methodology for hockey in 2004. Brian McDonald presented a logistic regression-based xG model at the 2012 MIT Sloan Sports Analytics Conference, establishing the framework that modern hockey analytics builds upon.</p><p>The general concept traces back even further - Carter and Machol (1971) introduced &#8220;expected goals&#8221; to quantify the expected scoring value of possessions, though in a football context. But the sport-specific, shot-level xG that drives modern win probability was a hockey analytics innovation.</p><h3>MoneyPuck and Evolving Hockey</h3><p>The two most prominent public hockey analytics platforms take similar approaches:</p><p><strong>MoneyPuck</strong> (Peter Tanner) uses gradient boosted machines (GBM) rather than logistic regression for xG estimation. Key innovations include a &#8220;flurry adjustment&#8221; that prevents excess xG from rebound shots (a shot immediately following a save shouldn&#8217;t receive full xG credit because the scoring opportunity is partially dependent on the first shot). The model uses prior-event features (shot type, previous action) rather than binary rebound/rush classifiers.</p><p>MoneyPuck&#8217;s win probability model incorporates: score differential, time remaining, penalty situation, and pre-game team statistics (expected goals for/against, team save percentage, team shooting percentage).</p><p><strong>Evolving Hockey</strong> also uses gradient boosting, drawing on and extending MoneyPuck&#8217;s methodology. Both outperform logistic regression and random forest approaches on out-of-sample prediction.</p><h3>Power plays: unequal game states</h3><p>The most significant structural difference between hockey and soccer is the power play. When a player commits a penalty, the offending team plays short-handed (typically 5-on-4, sometimes 5-on-3) for two to five minutes. This creates fundamentally different scoring dynamics:</p><p>Game StateGoals per 60 minutes5-on-5 (even strength)~2.75-on-4 (power play)~6.05-on-3 (double advantage)~10+4-on-5 (penalty kill)~0.8-1.2</p><p>The scoring rate more than doubles on a power play. A win probability model that uses a single Poisson intensity parameter for the entire game will systematically misestimate probability during special teams situations. The model needs conditional scoring rates that switch based on the manpower state.</p><p>Formally, the win probability at time <em>t</em> with manpower state <em>m</em> is:</p><p><strong>WP(t, score, m) = &#931;_paths P(path) &#183; P(win | path terminal state)</strong></p><p>where the sum is over all possible future paths of goals and penalty expirations, with scoring rates conditioned on the manpower state at each moment along the path.</p><p>This is computationally more complex than the soccer case because the manpower state changes frequently (penalties start and expire throughout the game) and the effect on scoring is large. A team on a 5-on-3 power play with 1:45 remaining in the penalties has a dramatically different expected scoring rate than the same team at even strength.</p><p>Modern implementations handle this either through simulation (sampling paths through remaining game time with state-dependent scoring rates) or through pre-computed lookup tables that enumerate the most common penalty scenarios.</p><h3>Goaltender variance</h3><p>Goaltender performance introduces a source of variance that has no analog in soccer (where goalkeeper quality affects xG but is less variable game-to-game).</p><p>Save percentage (SV%) in hockey requires 800-1,000+ shots to stabilize. A goaltender with 40 games and 1,000 even-strength shots at .925 SV% has approximately a 30% probability that their true talent is actually league-average or worse. The small-sample problem is severe.</p><p>This variance affects win probability modeling in two ways:</p><ol><li><p><strong>Pre-game</strong>: The model&#8217;s estimate of expected goals against depends on goaltender quality. Using a single-season save percentage introduces substantial noise.</p></li><li><p><strong>In-game</strong>: A goaltender having an unusually good or bad night shifts the effective scoring rates from what the pre-game model expected. A model that doesn&#8217;t update for in-game goaltender performance will misprice win probability after anomalous sequences of saves or goals.</p></li></ol><p>xG-based approaches partially sidestep this by modeling shot quality rather than conversion rate, but the goaltender still determines which xG converts into actual goals.</p><h3>Overtime and shootout: the discontinuity</h3><p>Tied games in the NHL enter a sudden-death 3-on-3 overtime period, followed by a shootout if overtime is scoreless. This creates a structural discontinuity that Poisson models struggle with.</p><p>At the end of regulation in a tied game:</p><ul><li><p>Win probability &#8776; 50% for each team (modulo home ice and team quality)</p></li><li><p>The scoring rate immediately increases approximately 3-4x due to 3-on-3 play</p></li><li><p>If overtime is scoreless, the game enters a shootout - an entirely different competition</p></li></ul><p>The shootout is not a Poisson process. It&#8217;s a sequence of 1-on-1 duels between a shooter and a goaltender, with the team shooting first winning approximately 55-60% of the time. The historical conversion rate on shootout attempts is roughly 32-33%.</p><p>Modeling the transition from Poisson (regular play) to conditional probability (overtime) to Bernoulli trials (shootout) requires separate sub-models for each phase. The win probability curve exhibits discrete jumps at the regulation-overtime boundary and the overtime-shootout boundary.</p><h3>Corsi and Fenwick: possession proxies</h3><p>Before xG became standard, hockey analytics relied heavily on shot-attempt-based possession metrics:</p><p><strong>Corsi</strong>: All shot attempts (on goal + missed + blocked) for and against. Corsi For percentage (CF%) = team&#8217;s shot attempts / total shot attempts.</p><p><strong>Fenwick</strong>: Shot attempts excluding blocked shots. Considered more reflective of actual scoring chances because blocked shots never reach the goaltender.</p><p>These metrics correlate strongly with season-long success and serve as features in win probability models. But they are not standalone predictors of in-game outcomes - in fact, the home team with a higher Corsi in a given game has been shown to actually lose more often than expected, likely due to confounding from game script (trailing teams attempt more shots).</p><p>Modern models use Corsi and Fenwick as inputs alongside xG, power play information, and score differential, rather than as primary win probability drivers.</p><h3>Empty net: the final-minute discontinuity</h3><p>When trailing late in a game, teams pull their goaltender for an extra attacker, creating a 6-on-5 situation. The success rate is low - approximately 15% when trailing by one goal, roughly 1% when trailing by two.</p><p>Optimal goalie-pull timing, according to mathematical analysis, is earlier than most coaches practice - around the 5-minute mark when trailing by one, rather than the typical 2-3 minutes. This represents a systematic strategic inefficiency that win probability models can quantify.</p><p>The empty-net situation creates another discontinuity in the Poisson model: the scoring rate for the opposing team (shooting at an empty net) jumps dramatically while the trailing team&#8217;s rate increases modestly from the extra attacker. Models must account for this asymmetric rate change in the final minutes.</p><h2>The common thread: rare events and Poisson foundations</h2><p>Soccer and hockey both derive their win probability frameworks from the same mathematical foundation: goal-scoring as a Poisson process, parameterized by team-specific attack and defense qualities, with xG providing real-time updates to the intensity parameters.</p><p>The differences between them are driven by rules:</p><ul><li><p>Soccer has the draw as a third outcome; hockey&#8217;s overtime and shootout force a winner</p></li><li><p>Hockey has power plays creating frequent state changes; soccer&#8217;s equivalent (red cards) is rarer and permanent</p></li><li><p>Hockey has higher total scoring rates (~6 goals/game vs. ~2.5), making the Poisson approximation slightly better (larger &#955; means the distribution is better approximated by the normal)</p></li><li><p>Soccer has extra time and penalty shootouts in knockout formats; hockey has overtime and shootouts in every tied game</p></li></ul><p>Both sports face the fundamental challenge of all Poisson-based models: the assumption of a constant scoring rate is violated when teams change tactics in response to the score, the clock, and the game state. A team trailing 2-0 in the 80th minute of a soccer match does not generate shots at the same rate as the same team at 0-0 in the 10th minute. The xG framework helps by updating the intensity parameter in real time, but the tactical and motivational shifts that accompany different game states remain difficult to model formally.</p><h2>References</h2><p>Dixon, M.J. and Coles, S.G. (1997). &#8220;Modelling Association Football Scores and Inefficiencies in the Football Betting Market.&#8221; <em>Journal of the Royal Statistical Society: Series C</em>, 46(2), 265-280.</p><p>Karlis, D. and Ntzoufras, I. (2003). &#8220;Analysis of Sports Data by Using Bivariate Poisson Models.&#8221; <em>Journal of the Royal Statistical Society: Series D</em>, 52(3), 381-393.</p><p>Maher, M.J. (1982). &#8220;Modelling Association Football Scores.&#8221; <em>Statistica Neerlandica</em>, 36(3), 109-118.</p><p>McDonald, B. (2012). &#8220;An Expected Goals Model for Evaluating NHL Teams and Players.&#8221; <em>MIT Sloan Sports Analytics Conference</em>.</p><p>Rue, H. and Salvesen, O. (2000). &#8220;Prediction and Retrospective Analysis of Soccer Matches in a League.&#8221; <em>The Statistician</em>, 49(3), 399-418.</p><p>Ryder, A. (2004). &#8220;Shot Quality.&#8221; Hockey Analytics.</p><p>Tanner, P. &#8220;MoneyPuck.com: About and How It Works.&#8221; https://moneypuck.com/about.htm</p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Perception Problem]]></title><description><![CDATA[A mutual friend recently introduced me to a wealth advisor.]]></description><link>https://nfosignal.substack.com/p/the-perception-problem</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-perception-problem</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Sun, 10 May 2026 15:03:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_rv7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_rv7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_rv7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 424w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 848w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 1272w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_rv7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png" width="1040" height="482" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:1040,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:466120,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192621120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_rv7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 424w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 848w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 1272w, https://substackcdn.com/image/fetch/$s_!_rv7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6ddcdb-9a39-4201-b44e-5fd905f22938_1040x482.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A mutual friend recently introduced me to a wealth advisor. Former equity analyst at a major firm. Runs his own practice now. Exactly the kind of person I want evaluating what we&#8217;re building at SportChartz.</p><p>His response, paraphrased: I understand why technical analysis works on stocks. Human psychology creates predictable patterns, and those patterns can become self-fulfilling. But I&#8217;m staunchly opposed to sports gambling, and I don&#8217;t see how technical analysis applies to something as random as sports. There&#8217;s also the inherent loss from the vig.</p><p>Then he apologized for being snarky.</p><p>He wasn&#8217;t being snarky. He was being honest. And his objections are ones I hear constantly from exactly the people who should understand what we&#8217;re doing. Finance professionals. Traders. Analysts. People who use technical analysis every day on equities but short-circuit the moment someone says the word &#8220;sports.&#8221;</p><p>The objections come in two flavors, and they&#8217;re both worth taking apart.</p><h2>&#8220;It&#8217;s gambling&#8221;</h2><p>This is the first wall. The word &#8220;sports&#8221; triggers an association with sportsbooks, point spreads, parlays, the whole ecosystem of betting where the house takes a cut and most people lose. That association is earned. Sportsbooks are structured so the house wins. The vig (the commission baked into every line) guarantees it. Over time, the math works against you.</p><p>Prediction markets are a different structure. On a prediction market, you&#8217;re not betting against a house. You&#8217;re trading against other participants on an exchange. There is no vig. The platform takes a transaction fee the same way a stock exchange does, but there&#8217;s no built-in edge working against you on every position. The mechanics are closer to buying and selling shares than placing a bet.</p><p>This isn&#8217;t a semantic distinction. It changes the math entirely. On a sportsbook, you need to win roughly 52.4% of the time just to break even because the house is extracting value on every transaction. On an exchange, the breakeven is 50%. That 2.4% gap is the difference between a game rigged against you and a market that&#8217;s structurally neutral.</p><p>The wealth advisor in that text thread understood this distinction perfectly for equities. Nobody calls stock trading &#8220;gambling&#8221; even though the underlying asset is just as uncertain. The structure of the market is what separates trading from betting. Prediction markets have that structure. Sportsbooks don&#8217;t.</p><h2>&#8220;Sports are random, so TA can&#8217;t work&#8221;</h2><p>This is the second wall, and it&#8217;s the more interesting one because it reveals a misunderstanding about what technical analysis actually does.</p><p>Technical analysis doesn&#8217;t predict what will happen. It reads what the market is doing. When a CMT draws a support line on a stock chart, they&#8217;re not predicting the company&#8217;s next earnings report. They&#8217;re reading the collective behavior of every participant in that market. Where are people buying? Where are they selling? Where does conviction break down?</p><p>The underlying asset&#8217;s fundamentals matter, but they matter because they influence market behavior, not because TA is modeling them directly. A stock can be fundamentally strong and still have a chart pattern that signals a pullback, because the market participants are taking profits, rebalancing, or reacting to unrelated macro news. The chart reads the crowd, not the company.</p><p>Sports markets work the same way. The game itself is unpredictable. A fumble, a red card, a three-pointer at the buzzer. Nobody is claiming to predict those events. But the market&#8217;s reaction to those events follows patterns because the participants are human. They overreact to momentum. They anchor to pre-game expectations. They panic when a favorite falls behind early. They get euphoric when the underdog takes a lead.</p><p>Win probability during a live game is a price curve. It moves on events the same way a stock price moves on news. And the participants trading around that curve exhibit the same behavioral patterns that make technical analysis useful in equities. Mean reversion after sharp moves. Support and resistance at psychologically significant levels. Volume spikes at inflection points.</p><p>The game is random. The market around the game is not. That distinction is the whole point.</p><h2>The real objection</h2><p>What I&#8217;ve noticed in these conversations is that the stated objections (it&#8217;s gambling, sports are random) aren&#8217;t usually the actual objection. The actual objection is social. Finance professionals don&#8217;t want to be associated with sports betting. It carries a stigma that equity trading doesn&#8217;t, even though the underlying mechanics can be identical.</p><p>A portfolio manager who uses RSI divergence to time entries on tech stocks is practicing the same discipline as someone using RSI divergence on win probability during a live NFL game. The math is the same. The behavioral patterns are the same. The tools are the same. But one carries professional credibility and the other carries a stigma.</p><p>This is what I mean by the perception problem. The resistance isn&#8217;t analytical. The wealth advisor in that text thread proved it himself. He acknowledged TA works on stocks because of human psychology. He just couldn&#8217;t make the jump to applying the same logic one market over. Not because the logic fails, but because the framing changes.</p><h2>Where this is going</h2><p>The prediction market space is growing fast. Kalshi, Polymarket, PredictIt (before its shutdown), and a growing number of platforms are creating exchange-traded markets on real-world events. Sports is the largest and most liquid category. The volume is real and the participants are sophisticated.</p><p>The tools haven&#8217;t caught up. Most prediction market interfaces look like sportsbooks because that&#8217;s the mental model the industry inherited. Charts, when they exist, are basic. Technical indicators are absent. The analytical infrastructure that equity traders take for granted doesn&#8217;t exist yet for prediction markets.</p><p>That&#8217;s what we&#8217;re building. SportChartz models the UX after StockCharts.com and TradeStation because the analytical approach is the same. We&#8217;re not building a sportsbook. We&#8217;re building a charting platform for a market that happens to be priced on sports outcomes.</p><p>The wealth advisor&#8217;s response ended with &#8220;Touche&#8221; after I pointed out that if he understands why TA works for stocks, he can understand how it works for games. The logic transfer isn&#8217;t hard. The perception transfer is. That&#8217;s the problem worth solving.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[Baseball and Tennis: The Discrete State Sports]]></title><description><![CDATA[Baseball and tennis share a structural property that separates them from every other major sport: the game state at any moment is fully described by a finite, enumerable set of discrete variables.]]></description><link>https://nfosignal.substack.com/p/baseball-and-tennis-the-discrete</link><guid isPermaLink="false">https://nfosignal.substack.com/p/baseball-and-tennis-the-discrete</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Sun, 10 May 2026 15:02:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sozZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sozZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sozZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sozZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8507223,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192624321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sozZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sozZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21c09d80-202f-4989-bb8f-cb1c53003898_2752x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Baseball and tennis share a structural property that separates them from every other major sport: the game state at any moment is fully described by a finite, enumerable set of discrete variables. There is no ambiguity about the state. There is no continuous clock creating gray areas. The game moves from one well-defined state to another through discrete events, and the probability of winning can be computed exactly from the current state.</p><p>This makes both sports natural candidates for Markov chain modeling. The math is clean. The models are among the oldest in sports analytics. And the results are remarkably robust.</p><h2>Baseball: the 24-state machine</h2><h3>The state space</h3><p>At any point during a half-inning of baseball, the game state is defined by:</p><ul><li><p><strong>Outs</strong>: 0, 1, or 2 (3 outs ends the half-inning)</p></li><li><p><strong>Baserunners</strong>: 8 possible configurations (empty, 1st, 2nd, 3rd, 1st-2nd, 1st-3rd, 2nd-3rd, bases loaded)</p></li></ul><p>This produces 3 &#215; 8 = <strong>24 base-out states</strong> within a half-inning, plus an absorbing state (3 outs, half-inning over).</p><p>The full game state adds inning (1-9 plus extras), half-inning (top or bottom), and score differential (typically modeled from -11 to +11). The total state space is approximately <strong>9,936 states</strong>.</p><h3>Run expectancy: the foundation layer</h3><p>Before computing win probability, baseball models compute <strong>run expectancy</strong> (RE) - the expected number of additional runs that will score in the current half-inning given the base-out state.</p><p>For each of the 24 base-out states, run expectancy is calculated from historical play-by-play data:</p><p><strong>RE(state) = E[runs scored from state to end of half-inning]</strong></p><p>These values encode decades of empirical evidence about how baseball innings unfold. A bases-loaded, no-out situation produces an average of 2.26 additional runs, not because of any model&#8217;s assumptions, but because that&#8217;s what has actually happened across hundreds of thousands of innings.</p><h3>From run expectancy to win probability</h3><p>Win probability is computed recursively using run expectancy as the building block:</p><ol><li><p>In the current half-inning, use the run expectancy distribution (not just the mean - the full distribution of possible runs scored) to enumerate the possible score states at the end of the half-inning</p></li><li><p>Given the runs scored, update the score differential</p></li><li><p>Move to the next half-inning and repeat</p></li><li><p>Continue until the game ends (bottom of the 9th or later, with the home team leading)</p></li></ol><p>Formally, for a game state at the top of inning <em>n</em> with score differential <em>d</em>:</p><p><strong>WP(n, d) = &#931;&#8342; P(visiting team scores k runs in top of n) &#183; WP_bottom(n, d - k)</strong></p><h3>The historical frequency approach</h3><p>In practice, most baseball win probability systems bypass the recursive computation entirely and use <strong>direct historical frequency</strong>. For each of the ~10,000 game states, they look up the historical winning percentage of teams in that exact situation across all available play-by-play data.</p><p>Greg Stoll&#8217;s Win Expectancy Finder, built from Retrosheet data covering 193,305 MLB games from 1903-2024, is the most comprehensive public implementation.</p><p>The direct lookup approach works for baseball because the state space is small enough that every cell has adequate sample size, the Markov property holds well, and the game structure has been stable enough over time that historical frequencies are meaningful.</p><h3>Transition probability matrix</h3><p>The Markov chain formulation uses a <strong>25 &#215; 25 transition probability matrix</strong> for within-inning transitions (24 base-out states plus the absorbing &#8220;3 outs&#8221; state). Each entry <em>P&#7522;&#11388;</em> represents the probability of moving from state <em>i</em> to state <em>j</em> on a single plate appearance.</p><p>These probabilities are estimated from league-wide historical data, though they can be adjusted for specific batter-pitcher matchup quality, park effects, and run environment.</p><h3>Run environment adjustments</h3><p>The run expectancy and win probability tables depend on the overall scoring environment. FanGraphs produces tables for run environments ranging from 3.0 to 6.0 runs per 27 outs. In a high-scoring environment, the expected runs from any base-out state are higher, which changes the win probability.</p><h3>Win Probability Added (WPA)</h3><p>A direct application of win probability in baseball is <strong>Win Probability Added</strong> (WPA), which measures the change in win probability on each play:</p><p><strong>WPA = WP(after play) - WP(before play)</strong></p><p>WPA was first conceived by the Mills brothers in 1970 as &#8220;Player Win Average.&#8221; It remains the most direct measure of individual contribution to winning.</p><h3>Leverage Index</h3><p>Tom Tango&#8217;s <strong>Leverage Index</strong> (LI) quantifies the importance of the current game situation based on how much win probability could swing on the next play:</p><p><strong>LI = (WPmax - WPmin) / (average of WPmax - WPmin across all situations)</strong></p><p>LI is normalized so the average game situation has LI = 1.0. Values above 2.0 are high-leverage. Values below 0.5 are low-leverage.</p><h3>Known limitations in baseball</h3><p><strong>Pitcher quality</strong>: Standard win probability tables assume league-average pitching for the remainder of the game. Recent work explores hierarchical Bayesian models that incorporate pitcher-specific performance.</p><p><strong>Bullpen state</strong>: Whether a team&#8217;s best relievers are available affects the probability of scoring and being scored upon in future innings.</p><p><strong>Extra innings</strong>: Post-2020 MLB rules place a runner on second base to start each extra inning, creating a unique game state that requires special handling.</p><p><strong>College baseball</strong>: Division I college baseball lacks the data infrastructure for reliable win probability. No free source of play-by-play data with baserunner locations exists.Tennis: exact computation from a single parameter</p><h3>The hierarchical structure</h3><p>Tennis scoring is hierarchical: points compose into games, games compose into sets, and sets compose into a match. At each level, the rules define exactly how outcomes at the lower level aggregate into outcomes at the higher level.</p><p>This means that if you know the probability of winning a point, you can compute the exact probability of winning the match. No simulation. No historical lookup. The computation is closed-form.</p><h3>Point-level: the foundation</h3><p>Let <em>p</em> = probability of winning a point on serve and <em>q = 1 - p</em>.</p><p>The probability of winning a game on serve, before deuce:</p><p><strong>P(game | serve) = p&#8308; + 4p&#8308;q + 10p&#8308;q&#178; + 20p&#179;q&#179; &#183; P(game | deuce)</strong></p><p>At deuce, the server must win 2 consecutive points:</p><p><strong>P(game | deuce) = p&#178; / (p&#178; + q&#178;)</strong></p><p>Combining:</p><p><strong>P(game | serve) = p&#8308;(1 + 4q + 10q&#178;) + 20p&#179;q&#179; &#183; p&#178; / (p&#178; + q&#178;)</strong></p><p>For a player with <em>p = 0.65</em> (typical for a strong server on ATP tour): P(game | serve) &#8776; 0.829.</p><h3>Set-level: games composing into sets</h3><p>A set consists of games, alternating serve. First to 6 games wins, with a tiebreak at 6-6. Let <em>g</em> = probability of winning a game on serve and <em>h</em> = probability of winning a game on return (breaking serve).</p><p>The probability of winning a set can be computed by enumerating all possible paths through the set, using recursion:</p><ul><li><p>If serving: <strong>P(i,j) = g &#183; P(i+1, j, receiving) + (1-g) &#183; P(i, j+1, receiving)</strong></p></li><li><p>If receiving: <strong>P(i,j) = h &#183; P(i+1, j, serving) + (1-h) &#183; P(i, j+1, serving)</strong></p></li></ul><h3>Match-level: sets composing into matches</h3><p>For a best-of-three match, let <em>s</em> = probability of winning a set:</p><p><strong>P(match | best of 3) = s&#178;(3 - 2s)</strong></p><p>For a best-of-five match:</p><p><strong>P(match | best of 5) = s&#179;(10 - 15s + 6s&#178;)</strong></p><h3>The skill amplification effect</h3><p>The hierarchical scoring structure produces a remarkable amplification of small skill advantages. Consider a player who wins 52% of points on serve - barely above a coin flip. Working through the recursion, their match win probability (best of 5) is approximately 0.570.</p><p>A player who wins 55% of points on serve reaches a match win probability of approximately 0.690. And a player who wins 60% on serve reaches approximately 0.890.</p><p>A 10-percentage-point difference in point-winning ability (50% to 60%) maps to a roughly 40-percentage-point difference in match-winning ability. The hierarchical structure acts as a nonlinear amplifier, which is why the top players in tennis are so dominant despite winning only slightly more points than their opponents.</p><p>Newton and Keller (2005) proved this mathematically and showed that the amplification depends on the number of levels in the hierarchy and the length of competition at each level.</p><h3>Klaassen-Magnus: testing the independence assumption</h3><p>The entire hierarchical model rests on the assumption that points are independent and identically distributed (i.i.d.). Klaassen and Magnus (2001) tested this assumption empirically using point-by-point data from Wimbledon and found:</p><ol><li><p><strong>Independence largely holds</strong>: The probability of winning the current point is not significantly affected by the outcome of the previous point in most situations</p></li><li><p><strong>Small but significant deviations</strong>: At break points and set points, the server&#8217;s win probability tends to drop slightly (possibly due to pressure)</p></li><li><p><strong>Surface effects</strong>: The point-win probability on serve varies by surface</p></li><li><p><strong>Fatigue and momentum</strong>: Over the course of a long match, the point-win probability may drift</p></li></ol><p>These deviations are small enough that the i.i.d. model remains an excellent approximation.</p><h3>In-game win probability updates</h3><p>During a live tennis match, the win probability updates after every point. The computation propagates up through the hierarchical recursion from the current match state. Each point creates a new state, and the win probability is recalculated exactly. There is no approximation error.</p><p>The volatility of in-match win probability depends on the current state&#8217;s leverage. A break point in the third set of a best-of-five match can swing match win probability by 10-15 percentage points. A routine point at 40-0 in the first game changes it by a fraction of a percent.</p><h2>The common thread</h2><p>Baseball and tennis are the two sports where win probability modeling is closest to an exact science rather than a statistical estimation exercise. In both cases:</p><ol><li><p><strong>The state space is enumerable</strong>: You can list every possible game state</p></li><li><p><strong>The Markov property holds</strong>: The future depends only on the current state</p></li><li><p><strong>Transition probabilities can be estimated cleanly</strong>: From historical data (baseball) or from a single parameter (tennis)</p></li><li><p><strong>The computation is exact or near-exact</strong>: No simulation required for the core model</p></li></ol><p>Every other sport has continuous elements that require approximation, estimation, and modeling assumptions that introduce uncertainty beyond the inherent randomness of the game itself.</p><p>But when the data is available and the parameters are well-estimated, these are the most trustworthy win probability numbers in sports.</p><h2>References</h2><p>FanGraphs Sabermetrics Library. &#8220;Win Expectancy (WE).&#8221;</p><p>Klaassen, F.J.G.M. and Magnus, J.R. (2001). &#8220;On the Independence and Identical Distribution of Points in Tennis.&#8221; <em>Journal of the American Statistical Association</em>, 96(454), 500-509.</p><p>Mills, E.G. and Mills, H.D. (1970). <em>Player Win Averages: A Computer Guide to Winning Baseball Players</em>. A.S. Barnes.</p><p>Newton, P.K. and Keller, J.B. (2005). &#8220;Probability of Winning at Tennis I. Theory and Data.&#8221; <em>Studies in Applied Mathematics</em>, 114(3), 241-269.</p><p>Stoll, G. &#8220;Win Expectancy Finder.&#8221; (Based on Retrosheet data, 1903-2024, 193,305 games.)</p><p>Tango, T.M., Lichtman, M.G., and Dolphin, A.E. (2006). <em>The Book: Playing the Percentages in Baseball</em>. Potomac Books.</p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[Basketball: The Random Walk]]></title><description><![CDATA[Basketball produces more scoring events per game than any other major sport.]]></description><link>https://nfosignal.substack.com/p/basketball-the-random-walk</link><guid isPermaLink="false">https://nfosignal.substack.com/p/basketball-the-random-walk</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Wed, 06 May 2026 02:43:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YeOL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YeOL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YeOL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YeOL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg" width="686" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:686,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The NCAA is beating the NBA&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The NCAA is beating the NBA" title="The NCAA is beating the NBA" srcset="https://substackcdn.com/image/fetch/$s_!YeOL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YeOL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb11eb2f7-4ac8-4506-989d-c01c99b75cce_686x386.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Basketball produces more scoring events per game than any other major sport. An NBA game averages roughly 200 possessions and 220 total points. A college game, with its longer shot clock, averages fewer possessions but still produces 130-150 points. Every possession is a potential scoring event, and the gaps between scores are measured in seconds, not minutes.</p><p>This density of scoring is what makes basketball mathematically distinct. The score differential doesn&#8217;t jump between discrete states the way baseball does, and it doesn&#8217;t sit at low integers the way soccer and hockey do. It evolves continuously, like a stock price, which is why the natural mathematical framework for basketball win probability is the random walk.</p><h2>Stern (1994): Brownian motion and score progressions</h2><p>Hal Stern&#8217;s 1994 paper in the <em>Journal of the American Statistical Association</em> established the foundational framework. He modeled the score differential in a basketball game as a Brownian motion process with drift:</p><p><strong>X(t) = &#956;t + &#963;B(t)</strong></p><p>where:</p><ul><li><p><strong>X(t)</strong> is the score differential at time <em>t</em> (positive means the home team leads)</p></li><li><p><strong>&#956;</strong> is the drift parameter, encoding the difference in team quality. If the home team is better, &#956; &gt; 0 and the score differential tends to grow in their favor over time</p></li><li><p><strong>&#963;</strong> is the diffusion parameter, encoding the randomness of scoring. Higher &#963; means more volatility in the score differential</p></li><li><p><strong>B(t)</strong> is standard Brownian motion - a continuous-time stochastic process with independent, normally distributed increments</p></li></ul><p>At any time <em>t</em>, the score differential is normally distributed:</p><p><strong>X(t) ~ N(&#956;t, &#963;&#178;t)</strong></p><p>The variance grows linearly with time. This means the range of plausible score differentials widens as the game progresses - consistent with the empirical observation that blowouts develop gradually, not instantly.</p><h3>Win probability from Brownian motion</h3><p>Given a current score differential <em>d</em> at time <em>t</em> in a game of total duration <em>T</em>, the probability that the home team wins is:</p><p><strong>P(win | d, t) = &#934;((d + &#956;(T - t)) / (&#963;&#8730;(T - t)))</strong></p><p>where &#934; is the standard normal cumulative distribution function.</p><p>This formula has an intuitive structure:</p><ul><li><p>The numerator <em>d + &#956;(T - t)</em> is the expected final score differential: the current lead <em>d</em> plus the expected additional drift <em>&#956;(T - t)</em> over the remaining time</p></li><li><p>The denominator <em>&#963;&#8730;(T - t)</em> is the standard deviation of the remaining score differential - how much randomness is left</p></li><li><p>The ratio is a z-score: how many standard deviations the expected final lead is above zero</p></li></ul><p>When the game is nearly over (T - t &#8594; 0), the denominator shrinks toward zero. If the leading team has any lead at all (d &gt; 0), the z-score goes to infinity and win probability approaches 1. This captures the intuition that a lead becomes more secure as time expires.</p><p>When the game is just starting (t &#8594; 0), the large denominator means the current score provides little information - win probability is dominated by the drift parameter &#956; (pre-game team quality).</p><h3>Empirical validation</h3><p>Stern tested the Brownian motion model on 493 NBA games from the 1991-92 season. The key findings:</p><ol><li><p><strong>Score differential variance is approximately linear in time</strong>: The spread of halftime score differentials was consistent with &#963;&#178;&#183;(T/2), supporting the Brownian assumption</p></li><li><p><strong>The model fit was good but not perfect</strong>: Deviations appeared in the final minutes, consistent with strategic behavior changes (fouling, clock management) that violate the stationarity assumption</p></li><li><p><strong>Team quality heterogeneity matters</strong>: When &#956; was allowed to vary by matchup (using point spreads as a proxy for team quality), the model fit improved significantly</p></li></ol><h2>Gabel and Redner (2012): the random walk confirmed</h2><p>Gabel and Redner extended Stern&#8217;s work with a much larger dataset - 6,087 NBA games from the 2006-2010 seasons - and confirmed the random walk characterization with additional detail.</p><p>Their key finding: <strong>basketball scoring is best described as a weakly-biased continuous-time random walk</strong>.</p><h3>Scoring intervals are exponential</h3><p>The time between successive scoring events in an NBA game follows an exponential distribution. This is the hallmark of a Poisson process - the scoring events themselves arrive at a constant rate, and the time between them has the memoryless property. Whether a team scored 5 seconds ago or 50 seconds ago does not affect the probability of scoring in the next 5 seconds.</p><p>Formally, if <em>&#964;</em> is the time between consecutive scoring events:</p><p><strong>P(&#964; &gt; t) = e^(-&#955;t)</strong></p><p>where &#955; is the scoring rate. For a typical NBA game, &#955; &#8776; 1 scoring event every 25-30 seconds of game clock.</p><h3>The Peclet number</h3><p>Gabel and Redner introduced the Peclet number to basketball analytics as a dimensionless quantity characterizing the competition between team quality (bias) and randomness (diffusion):</p><p><strong>Pe = v&#178;t / (2D)</strong></p><p>where <em>v</em> is the effective scoring bias (related to &#956;) and <em>D</em> is the diffusion coefficient (related to &#963;&#178;).</p><p>When Pe &lt;&lt; 1, randomness dominates - the better team&#8217;s advantage is masked by scoring fluctuations. This is the regime for most of the first half: the game is too young for team quality to have reliably asserted itself.</p><p>When Pe &gt;&gt; 1, team quality dominates - the game has gone on long enough that the better team&#8217;s systematic advantage has accumulated beyond what random fluctuations can reverse. This is the regime for blowouts in the fourth quarter.</p><p>The transition between regimes explains why leads in basketball feel unstable early but become progressively more secure as the game progresses. It&#8217;s not just that there&#8217;s less time left - it&#8217;s that the signal-to-noise ratio in the score differential increases with time.</p><h3>Lead changes and the arc-sine law</h3><p>A mathematical consequence of the random walk model is the <strong>arc-sine law for last lead change</strong>. In a symmetric random walk (equally matched teams), the last lead change is much more likely to occur near the beginning or end of the game than in the middle. This counterintuitive result means that many games appear to be &#8220;decided&#8221; early, with one team leading for most of the contest, even between evenly matched opponents.</p><p>Gabel and Redner showed that by including team strength heterogeneity (allowing &#956; to vary across matchups), the model explains essentially all statistical features of NBA game scoring, including the distribution of final score differentials, the fraction of time the home team leads, and the frequency of lead changes.</p><h2>The logistic regression approach</h2><p>While the Brownian motion framework provides theoretical elegance, most practical win probability implementations for basketball use logistic regression, which is more flexible in handling game-specific features.</p><h3>Core variables</h3><p>The minimal logistic regression model for basketball win probability uses:</p><p><strong>z = &#946;&#8320; + &#946;&#8321;(score_diff) + &#946;&#8322;(time_remaining) + &#946;&#8323;(possession) + &#946;&#8324;(score_diff &#215; time_remaining)</strong></p><p>The interaction term is essential. Without it, the model treats a point of score differential as equally important at all times. With it, the model learns that score differential matters more as time decreases.</p><h3>Beuoy&#8217;s Inpredictable model</h3><p>Mike Beuoy&#8217;s Inpredictable model (2013) demonstrated that a relatively straightforward locally weighted logistic regression could outperform ESPN&#8217;s proprietary model. The key innovations:</p><ol><li><p><strong>Locally weighted regression</strong>: Rather than fitting one global logistic regression, fit a separate regression at each prediction point, weighting nearby game states more heavily. This allows the relationship between score differential and win probability to change smoothly over the course of the game.</p></li><li><p><strong>Vegas spread as a feature</strong>: Incorporating the pregame point spread dramatically improves early-game predictions. A team trailing by 5 in the first quarter that was a 12-point favorite has a very different win probability than a team trailing by 5 that was a 12-point underdog. Without the spread, both are mapped to the same probability.</p></li><li><p><strong>Possession as an explicit variable</strong>: Having the ball in basketball is worth approximately 1 point of expected value (roughly half the expected points per possession). Including possession as a binary variable captures this.</p></li></ol><h3>Burke&#8217;s segmented approach</h3><p>Brian Burke&#8217;s approach for college basketball segments the game into time intervals and fits a separate logistic regression within each:</p><ul><li><p>One regression per 10-second interval from 40 to 1 minutes remaining</p></li><li><p>One per 2-second interval from 60 to 30 seconds remaining</p></li><li><p>One per 1-second interval for the final 30 seconds</p></li></ul><p>This discretized approach approximates the continuously varying relationship that locally weighted regression captures, with the advantage of being simpler to implement and more interpretable (you can examine the coefficients at each time segment independently).</p><p>The increasing granularity near the end of the game reflects the reality that win probability changes most rapidly in the final seconds - a single possession can swing the outcome.KenPom and college basketball</p><p>Ken Pomeroy&#8217;s college basketball rating system (KenPom, launched 2002) provides the foundation for much of college basketball win probability modeling. The core metrics:</p><p><strong>Adjusted Offensive Efficiency (AdjOE)</strong>: Points scored per 100 possessions, adjusted for opponent strength<br><strong>Adjusted Defensive Efficiency (AdjDE)</strong>: Points allowed per 100 possessions, adjusted for opponent strength<br><strong>Adjusted Tempo</strong>: Possessions per 40 minutes, adjusted for opponent</p><p>Pre-game win probability is derived from the Pythagorean expectation adapted for basketball:</p><p><strong>Win% = (AdjOE)^n / ((AdjOE)^n + (AdjDE)^n)</strong></p><p>where <em>n</em> is a tuning parameter (approximately 10-11 for college basketball, compared to the original Pythagorean exponent of 2 from baseball and James&#8217; later adjustment to 1.83).</p><h3>Pace as a variable</h3><p>The shot clock difference between NBA (24 seconds) and college (30 seconds) affects win probability modeling in a specific way: fewer possessions means higher variance per game.</p><p>Expected possessions in a game:</p><p><strong>NBA</strong>: ~100 possessions per team &#8594; ~200 total scoring opportunities<br><strong>College</strong>: ~65-70 possessions per team &#8594; ~130-140 total scoring opportunities</p><p>With fewer possessions, each individual possession represents a larger fraction of the total. This means:</p><ul><li><p>Upsets are more likely in college basketball (less regression to the mean within a game)</p></li><li><p>Score differential carries slightly different information (a 10-point lead over 50 possessions is more significant than a 10-point lead over 30 possessions)</p></li><li><p>The diffusion parameter &#963; in the Brownian motion model is effectively larger relative to the drift &#956;</p></li></ul><p>This is one reason college basketball tournament brackets are harder to predict than NBA playoff series. The single-elimination format, combined with fewer possessions per game, amplifies randomness.</p><h2>Expected Possession Value (EPV)</h2><p>Cervone, D&#8217;Amour, Bornn, and Goldsberry (2014) introduced Expected Possession Value at the MIT Sloan Sports Analytics Conference, representing the frontier of basketball analytics. EPV uses player-tracking data recorded 25 times per second to assign a point value to every moment of a possession.</p><h3>How EPV works</h3><p>At any instant during a possession, the ball handler has options: shoot, pass, dribble. EPV computes the expected points that will result from the remaining portion of the possession, given the current spatial configuration of all 10 players on the court.</p><p><strong>EPV(t) = E[points scored this possession | spatial configuration at time t]</strong></p><p>The computation requires:</p><ol><li><p>A model of the probability distribution over the ball handler&#8217;s next action (shoot with probability p_s, pass to player j with probability p_j, dribble with probability p_d)</p></li><li><p>For each action, a model of the resulting spatial configuration</p></li><li><p>Recursive computation of expected points given each subsequent configuration</p></li></ol><p>The result is a continuous curve of expected value over the course of a possession. When a player makes a good decision (passes to an open teammate in a high-value position), EPV increases. When they make a poor decision (take a contested long two), EPV decreases.</p><h3>EPV and win probability</h3><p>EPV doesn&#8217;t directly compute win probability, but it feeds into it. If you can estimate each team&#8217;s expected points per possession with EPV-level granularity, you can project the expected score at any future time and derive win probability:</p><p><strong>E[final score differential] = current differential + (EPV_home - EPV_away) &#215; remaining possessions</strong></p><p>The variance around this expectation, combined with the Brownian motion or logistic regression framework, gives the win probability distribution.</p><p>EPV represents the state of the art in basketball scoring modeling, but it requires player-tracking infrastructure that only the NBA (via Second Spectrum) provides. College basketball and international leagues lack the data for EPV computation.</p><h2>The end-of-game problem</h2><p>Every basketball win probability model faces the same challenge: the final 90-120 seconds of a close game operate under fundamentally different dynamics than the rest of the game.</p><h3>What changes</h3><p>When a team trails in the final minutes, the standard rules of basketball strategy are replaced by a specific protocol:</p><ol><li><p><strong>Intentional fouling</strong>: The trailing team fouls immediately to stop the clock and send the opponent to the free throw line. This converts a running-clock possession (where the leading team can drain time) into a stopped-clock event (two free throws, then the trailing team gets the ball back).</p></li><li><p><strong>Free throw mathematics</strong>: The expected points from two free throws (~1.55 for an average NBA shooter at 77.5%) is lower than the expected points from a normal possession (~1.12). The trailing team is deliberately accepting this tradeoff to buy additional possessions before time expires.</p></li><li><p><strong>Three-point shooting</strong>: When trailing by 3, the trailing team explicitly seeks three-point shots. The expected value of a three-point attempt is lower than a normal possession, but the variance is higher - and the trailing team needs variance, not expected value.</p></li><li><p><strong>Clock management</strong>: The leading team may foul intentionally to prevent three-point attempts (foul the inbounder, foul before the shot) when up by 3. Both teams&#8217; strategies become conditional on the score differential and time remaining in ways that standard models don&#8217;t capture.</p></li></ol><h3>Why standard models break</h3><p>The Brownian motion model assumes stationary drift and diffusion parameters. The logistic regression model assumes the relationship between score differential and win probability is smooth. Both assumptions fail when:</p><ul><li><p>Scoring events become discrete and strategic (free throws vs. field goals)</p></li><li><p>The probability of scoring depends on the specific score differential (trailing by 3 means only three-point attempts; trailing by 2 means normal play)</p></li><li><p>Time management becomes a first-order consideration (who has timeouts, how much time per possession)</p></li></ul><h3>FiveThirtyEight&#8217;s solution: the endgame tree</h3><p>FiveThirtyEight addressed this by running two separate models:</p><ol><li><p><strong>Main model (&gt;90 seconds remaining)</strong>: Poisson-based projection using RAPTOR player ratings, estimating expected points per remaining possession for each team and computing win probability from the resulting score distributions.</p></li><li><p><strong>Endgame model (&lt;90 seconds remaining)</strong>: A decision tree that enumerates all possible sequences of possessions. For each remaining possession, the model assigns probabilities based on historical data: probability of 0, 1, 2, or 3 points, time consumed per possession, and whether the sequence involves free throws (triggered by fouls) or field goals.</p></li></ol><p>Between 90 and 60 seconds, FiveThirtyEight blends the two models. Below 60 seconds, the tree model dominates.</p><p>The tree approach works because the number of remaining possessions is small enough to enumerate. With 60 seconds left and approximately 2-3 possessions per team remaining, the tree has manageable depth. The same approach would be computationally intractable for the full game, where 100+ possessions per team create an impossibly large tree.</p><h3>An unsolved problem</h3><p>The endgame model is an engineering solution, not a mathematical one. It handles the most common late-game scenarios well but struggles with unusual situations:</p><ul><li><p><strong>Intentional fouls of poor free throw shooters</strong> (&#8221;Hack-a-Shaq&#8221;): The model needs player-specific free throw percentages, which vary dramatically (from 40% to 95%)</p></li><li><p><strong>Technical fouls and flagrant fouls</strong>: These create free throw plus possession situations that break the standard possession model</p></li><li><p><strong>Overtime</strong>: Models trained on regulation data don&#8217;t transfer well to overtime, where rotations differ, strategy changes, and the psychological context is different</p></li></ul><p>No existing model handles all of these situations in a unified framework. The endgame remains the hardest part of basketball win probability to get right.</p><h2>Known limitations</h2><h3>Garbage time</h3><p>When one team leads by 25+ points in the fourth quarter, both teams clear their benches. The scoring dynamics change completely - backups play extended minutes, starters rest, and neither team&#8217;s intensity reflects their true quality. Standard models treat these possessions the same as any other, which creates calibration issues:</p><p>A model might assign a team a 99.5% win probability when up 28 with 5 minutes left. This is approximately correct - but the remaining 0.5% implied comeback probability is driven by the model&#8217;s estimate of scoring dynamics that no longer reflect reality (the leading team&#8217;s starters aren&#8217;t playing).</p><p>Garbage time constitutes a small fraction of total game minutes but affects model calibration at the extremes, exactly where accuracy matters most for applications like prediction market pricing.</p><h3>Home court advantage calibration</h3><p>FiveThirtyEight&#8217;s RAPTOR model has a documented calibration issue: it predicts home teams winning approximately 70% of the time, while the actual home-win rate in the NBA is approximately 61%. This systematic bias suggests either an overweighted home court advantage parameter or compounding errors in the RAPTOR player-level projections when aggregated to game-level predictions.</p><h3>College vs. NBA model transfer</h3><p>Models built on NBA data don&#8217;t transfer directly to college basketball due to:</p><ul><li><p><strong>Shot clock</strong>: 24 seconds (NBA) vs. 30 seconds (college) changes pace, possession count, and scoring dynamics</p></li><li><p><strong>Talent distribution</strong>: NBA teams are relatively balanced; college teams range from dominant to dramatically overmatched</p></li><li><p><strong>Three-point line distance</strong>: NBA three-point line is further, affecting shot selection and expected points per possession</p></li><li><p><strong>Game length</strong>: 48 minutes (NBA) vs. 40 minutes (college)</p></li><li><p><strong>Foul rules</strong>: Different bonus structures (college one-and-one vs. NBA bonus) affect late-game free throw mathematics</p></li></ul><p>Separate models must be built and calibrated for each level. College basketball models (KenPom, Bart Torvik&#8217;s T-Rank, Yale&#8217;s model) achieve 71-78% accuracy, lower than the best NBA models (75-92%) due to greater team quality variance and smaller per-team sample sizes.</p><h2>The mathematical character of basketball</h2><p>Basketball&#8217;s win probability is mathematically the most intuitive of the major sports because the random walk framework maps to how fans experience the game. A lead grows, shrinks, fluctuates. Momentum shifts feel real because the scoring process is continuous enough to generate visible trends over short windows. The score differential wanders, and the win probability rides on top of that wandering.</p><p>The challenge is that this intuitive simplicity breaks at the extremes - the endgame, garbage time, overtime - where the stationarity assumptions that make the random walk work no longer hold. The next generation of basketball win probability models will need to handle these regime changes more gracefully than the current approach of bolting separate models together at the boundaries.</p><h2>References</h2><p>Beuoy, M. (2013). &#8220;Updated NBA Win Probability Calculator.&#8221; Inpredictable.com.</p><p>Cervone, D., D&#8217;Amour, A., Bornn, L., and Goldsberry, K. (2014). &#8220;Predicting Points and Valuing Decisions in Real Time with NBA Optical Tracking Data.&#8221; <em>MIT Sloan Sports Analytics Conference</em>.</p><p>FiveThirtyEight. &#8220;How Our NBA Predictions Work.&#8221; https://fivethirtyeight.com/methodology/how-our-nba-predictions-work/</p><p>Gabel, A. and Redner, S. (2012). &#8220;Random Walk Picture of Basketball Scoring.&#8221; <em>Journal of Quantitative Analysis in Sports</em>, 8(1).</p><p>Kvam, P. and Sokol, J.S. &#8220;A Logistic Regression/Markov Chain Model for NCAA Basketball.&#8221; <em>Georgia Institute of Technology</em>.</p><p>Pomeroy, K. &#8220;KenPom College Basketball Ratings.&#8221; https://kenpom.com/</p><p>Stern, H.S. (1994). &#8220;A Brownian Motion Model for the Progress of Sports Scores.&#8221; <em>Journal of the American Statistical Association</em>, 89(427), 1128-1134.</p><p></p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Math Behind Win Probability]]></title><description><![CDATA[The previous post mapped the landscape - which sports use which approaches and why.]]></description><link>https://nfosignal.substack.com/p/the-math-behind-win-probability</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-math-behind-win-probability</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Thu, 30 Apr 2026 12:32:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2_Ge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2_Ge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2_Ge!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2_Ge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7984701,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192623741?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2_Ge!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!2_Ge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab06cfa-bade-4f72-889b-50866530a43f_2752x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The previous post mapped the landscape - which sports use which approaches and why. This post goes one level deeper into the mathematical foundations that underlie all win probability models. The methods described here are not sport-specific. They are the building blocks that get adapted, extended, and combined differently depending on the game structure.</p><h2>Logistic regression: the universal starting point</h2><p>Nearly every win probability model either uses logistic regression directly or builds on top of it. The reason is straightforward: win probability is a binary outcome (win or lose), and logistic regression is the standard method for modeling binary outcomes as a function of continuous predictors.</p><p>The logistic function maps any real-valued input to a probability between 0 and 1:</p><p><strong>P(win) = 1 / (1 + e^(-z))</strong></p><p>where <em>z</em> is a linear combination of predictor variables:</p><p><strong>z = &#946;&#8320; + &#946;&#8321;x&#8321; + &#946;&#8322;x&#8322; + ... + &#946;&#8342;x&#8342;</strong></p><p>In a win probability context, the predictors typically include score differential, time remaining, and sport-specific state variables. The coefficients &#946;&#8321; through &#946;&#8342; are estimated from historical play-by-play data using maximum likelihood estimation.</p><p>For example, a minimal basketball win probability model might use:</p><p><strong>z = &#946;&#8320; + &#946;&#8321;(score_diff) + &#946;&#8322;(time_remaining) + &#946;&#8323;(possession) + &#946;&#8324;(score_diff &#215; time_remaining)</strong></p><p>The interaction term &#946;&#8324;(score_diff &#215; time_remaining) is critical. A 10-point lead means something very different with 30 minutes remaining than with 30 seconds remaining. Without the interaction, the model treats a point of score differential as equally important regardless of when it occurs.</p><h3>Locally weighted logistic regression</h3><p>Standard logistic regression assumes the relationship between predictors and outcome is the same across the entire dataset. This is a poor assumption for win probability, where the dynamics change dramatically as the game progresses.</p><p>Mike Beuoy&#8217;s Inpredictable model addressed this by using locally weighted logistic regression (LOESS applied to a logistic framework). Rather than fitting a single model to all game states, the approach fits a separate logistic regression for each prediction point, weighting nearby observations more heavily.</p><p>For a target game state <strong>s*</strong>, the weight assigned to training observation <em>i</em> with state <strong>s&#7522;</strong> is:</p><p><strong>w&#7522; = K(d(s*, s&#7522;) / h)</strong></p><p>where <em>K</em> is a kernel function (typically tricube), <em>d</em> is a distance metric in the state space, and <em>h</em> is the bandwidth parameter controlling the locality of the fit. The logistic regression is then fit with these weights applied to the likelihood function.</p><p>Brian Burke took a related but different approach for college basketball: fitting separate logistic regressions for fixed time intervals - one per 10-second interval from 1-40 minutes remaining, one per 2-second interval from 30-60 seconds, and one per 1-second interval for the final 30 seconds. This segmentation approximates the continuous adaptation of locally weighted regression with discrete bins.</p><p>Both approaches address the same problem: the logistic regression coefficients are not constant over the course of a game.</p><h3>Incorporating prior information: Vegas spreads</h3><p>One of Beuoy&#8217;s key innovations was incorporating the pregame Vegas point spread as a predictor variable. The spread encodes the market&#8217;s assessment of the relative team quality before the game begins. Adding it to the model:</p><p><strong>z = &#946;&#8320; + &#946;&#8321;(score_diff) + &#946;&#8322;(time_remaining) + &#946;&#8323;(possession) + &#946;&#8324;(spread) + ...</strong></p><p>This significantly improves predictions, particularly early in the game when the score provides limited information about which team is better. A team trailing by 3 points in the first quarter of a game where they were favored by 10 is in a very different position than a team trailing by 3 that was a 10-point underdog. Without the spread, both states map to the same win probability.</p><h2>Markov chains: modeling discrete state transitions</h2><p>A Markov chain is a stochastic process where the probability of transitioning to the next state depends only on the current state, not on the sequence of states that preceded it. This property - the Markov property - is formally stated as:</p><p><strong>P(S&#8345;&#8330;&#8321; = s&#11388; | S&#8345; = s&#7522;, S&#8345;&#8331;&#8321; = s&#8345;&#8331;&#8321;, ..., S&#8320; = s&#8320;) = P(S&#8345;&#8330;&#8321; = s&#11388; | S&#8345; = s&#7522;)</strong></p><p>In sports, the Markov property holds when the current game state contains all the information needed to predict future states. Baseball satisfies this almost perfectly: given the inning, outs, baserunners, and score, the history of how we got to this state is irrelevant to the probability of winning.</p><h3>Transition probability matrices</h3><p>For a sport with <em>n</em> discrete states, the Markov chain is defined by an <em>n &#215; n</em> transition probability matrix <strong>P</strong>, where entry <em>P&#7522;&#11388;</em> is the probability of transitioning from state <em>i</em> to state <em>j</em>:</p><p><strong>P = [P&#7522;&#11388;]</strong> where <strong>P&#7522;&#11388; = P(S&#8345;&#8330;&#8321; = j | S&#8345; = i)</strong></p><p>Each row sums to 1. In baseball, the states are the 24 base-out combinations within a half-inning (plus the absorbing state of 3 outs), and the transitions correspond to the outcomes of plate appearances - single, double, strikeout, fly out, etc.</p><p>The transition probabilities are estimated from historical data. Given a large enough dataset of play-by-play records, you count the frequency of each transition and normalize:</p><p><strong>P&#770;&#7522;&#11388; = (number of transitions from i to j) / (total transitions from i)</strong></p><h3>Absorbing states and win probability computation</h3><p>Win probability from a Markov chain is computed by propagating forward through the transition matrix. Some states are absorbing - once the game enters them, it stays there. The end of a baseball half-inning (3 outs recorded) is an absorbing state within the half-inning Markov chain.</p><p>For the full game, the computation proceeds recursively:</p><ol><li><p>In the current half-inning, use the transition matrix to compute the probability distribution over runs scored before 3 outs</p></li><li><p>Given the runs scored, update the score differential</p></li><li><p>Move to the next half-inning and repeat</p></li><li><p>Continue until the game ends (bottom of the 9th or later, with the home team leading)</p></li></ol><p>The win probability at any state is the sum over all future paths of the probability of reaching a winning terminal state:</p><p><strong>WP(s&#7522;) = &#931;&#11388; P&#7522;&#11388; &#183; WP(s&#11388;)</strong></p><p>This recursion terminates at the absorbing states (game over, team A wins or team B wins).</p><h3>Hierarchical Markov chains: tennis</h3><p>Tennis extends the Markov framework to a hierarchical structure. The match is modeled as nested Markov chains operating at different levels:</p><p><strong>Point level</strong>: Given the probability <em>p</em> that the server wins a point, the probability of winning a game on serve is computed from the deuce structure. Before deuce, the game follows a finite sequence. At deuce, the game enters a recursive state where the server needs to win two consecutive points. The closed-form solution for the probability of winning a game on serve is:</p><p><strong>P(game | serve) = p&#8308;(1 + 4q + 10q&#178;) + 20p&#179;q&#179; &#183; [p&#178; / (p&#178; + q&#178;)]</strong></p><p>where <em>q = 1 - p</em>.</p><p><strong>Game level</strong>: Given game-win probabilities on serve and return, the probability of winning a set follows a similar recursion through the games within a set, including the tiebreak at 6-6 (in most formats).</p><p><strong>Set level</strong>: Given set-win probabilities, the match-win probability follows from the best-of-three or best-of-five format.</p><p>Each level is a separate Markov chain, and the levels compose: the output of the lower level (point-win probability) feeds into the input of the next level (game-win probability), and so on upward.Brownian motion: continuous-time stochastic processes</p><p>While Markov chains model discrete state transitions, Brownian motion models continuous evolution. It was introduced to sports scoring by Stern (1994), who showed that the score differential in a basketball game evolves approximately as:</p><p><strong>X(t) = &#956;t + &#963;B(t)</strong></p><p>where:</p><ul><li><p><strong>X(t)</strong> is the score differential at time <em>t</em> (positive means the home team leads)</p></li><li><p><strong>&#956;</strong> is the drift parameter, reflecting the difference in team quality (positive &#956; means the home team is better)</p></li><li><p><strong>&#963;</strong> is the diffusion parameter, reflecting the randomness in scoring</p></li><li><p><strong>B(t)</strong> is standard Brownian motion (a continuous-time stochastic process with normally distributed increments)</p></li></ul><p>The score differential at time <em>t</em> follows a normal distribution:</p><p><strong>X(t) ~ N(&#956;t, &#963;&#178;t)</strong></p><p>Given a current score differential <em>d</em> at time <em>t</em> in a game of total duration <em>T</em>, the win probability for the leading team is:</p><p><strong>P(win | d, t) = &#934;((d + &#956;(T - t)) / (&#963;&#8730;(T - t)))</strong></p><p>where &#934; is the standard normal CDF.</p><h3>Practical implications</h3><p>The Brownian motion model captures several empirical features of basketball scoring:</p><ol><li><p><strong>Score differential variance grows linearly with time</strong>: The spread of possible score differentials widens as the game progresses, consistent with &#963;&#178;t</p></li><li><p><strong>Lead changes follow predictable patterns</strong>: The expected number of lead changes in a game between evenly matched teams can be derived from the zero-crossing properties of Brownian motion</p></li><li><p><strong>Scoring intervals are approximately exponential</strong>: Gabel and Redner (2011) showed that the time between scoring events in the NBA follows an exponential distribution, consistent with a Poisson process driving the Brownian motion increments</p></li></ol><p>The model breaks down in the final minutes when strategic behavior (intentional fouling, clock management) violates the stationarity assumption. The drift and diffusion parameters are not constant when teams fundamentally alter their playing style based on the score and clock.</p><h2>Poisson processes: modeling rare events</h2><p>For low-scoring sports like soccer and hockey, the Poisson distribution provides the natural framework. A Poisson process models the number of events (goals) occurring in a fixed interval, given a constant average rate:</p><p><strong>P(k goals in time t) = (&#955;t)&#7503; e^(-&#955;t) / k!</strong></p><p>where &#955; is the scoring rate (goals per unit time) and <em>k</em> is the number of goals.</p><h3>Application to win probability</h3><p>For a game at time <em>t</em> with score <em>a - b</em> (home team has <em>a</em> goals, away team has <em>b</em>) and remaining time <em>T - t</em>:</p><ol><li><p>Model the remaining goals for each team as independent Poisson random variables with parameters &#955;_home(T-t) and &#955;_away(T-t)</p></li><li><p>Compute the probability of each possible final score</p></li><li><p>Sum the probabilities of all final scores where the home team wins</p></li></ol><p><strong>P(home win) = &#931;&#7522; &#931;&#11388; P(home scores i more) &#183; P(away scores j more) &#183; I(a+i &gt; b+j)</strong></p><p>where I is the indicator function.</p><p>The scoring rates &#955;_home and &#955;_away can be estimated from pre-game team strength ratings, in-game expected goals (xG) accumulation rates, and historical league averages adjusted for home advantage.</p><h3>The Dixon-Coles correction</h3><p>The basic Poisson model assumes independence between the two teams&#8217; goal-scoring processes. Dixon and Coles (1997) showed that this independence breaks down for low-scoring outcomes. Their correction introduces a parameter &#964; that adjusts the joint probability of specific scorelines:</p><p>For home goals = <em>x</em> and away goals = <em>y</em>:</p><p><strong>P(x, y) = &#964;(x, y, &#955;_home, &#955;_away, &#961;) &#183; P_Poisson(x; &#955;_home) &#183; P_Poisson(y; &#955;_away)</strong></p><p>The correction factor &#964; depends on a parameter &#961; that captures the correlation between teams&#8217; scoring in low-scoring games (typically 0-0, 1-0, 0-1, 1-1 scorelines). When &#961; = 0, the model reduces to independent Poisson. Empirically, &#961; is small but statistically significant, and including it improves out-of-sample prediction accuracy.</p><h3>Expected goals (xG) as Poisson intensity</h3><p>Modern implementations replace the constant scoring rate &#955; with a dynamic estimate based on expected goals. Each shot attempt is assigned a probability of being scored based on shot location, shot type, assist type, game state, and other features. The cumulative xG through a game provides a running estimate of each team&#8217;s attacking quality:</p><p><strong>&#955;&#770;_home(t) = xG_home(t) / t</strong></p><p>This allows the Poisson model to update in real time based on the quality of chances being created, not just the goals that have actually been scored. A team generating 2.5 xG but only scoring 1 goal is modeled differently than a team generating 0.8 xG and scoring 1 goal, even though the scoreline is identical.</p><h2>Tree-based and ensemble methods</h2><p>When the state space is too large for lookup tables and the interactions between variables are too complex for parametric models, machine learning methods - particularly gradient-boosted decision trees - have become the standard.</p><h3>Gradient-boosted trees (XGBoost)</h3><p>The nflfastR win probability model for football uses XGBoost, which builds an ensemble of decision trees sequentially, with each tree correcting the errors of the previous ensemble:</p><p><strong>F(x) = &#931;&#8344; f&#8344;(x)</strong></p><p>where each <em>f&#8344;</em> is a decision tree and the sum produces the final prediction. The logistic loss function ensures the output can be interpreted as a probability:</p><p><strong>L = -&#931;&#7522; [y&#7522; log(p&#770;&#7522;) + (1-y&#7522;) log(1-p&#770;&#7522;)]</strong></p><p>where <em>y&#7522;</em> is the actual outcome (1 for win, 0 for loss) and <em>p&#770;&#7522;</em> is the predicted probability.</p><h3>Why trees work for football</h3><p>Decision trees naturally capture the interaction effects that dominate football game states. The tree can learn that 4th-and-1 at the opponent&#8217;s 2-yard line with a 3-point deficit and 30 seconds left is very different from 4th-and-1 at the opponent&#8217;s 2-yard line with a 3-point lead and 30 seconds left. These interactions don&#8217;t need to be specified by the modeler - the algorithm discovers them from data.</p><p>The nflfastR model uses features including: seconds remaining in the half, score differential, timeouts remaining (offense and defense), whether the team receives the second-half kickoff, yard line, down, yards to go, and an expected points variable that captures field position value.</p><h3>ESPN&#8217;s ensemble approach</h3><p>ESPN&#8217;s win probability models use ensemble methods that combine multiple model types. The specifics are proprietary, but the general approach involves training several different model architectures on the same data and averaging their predictions, weighted by each model&#8217;s historical accuracy. This reduces variance and produces more calibrated probability estimates than any single model.</p><h2>Evaluating win probability models</h2><p>A win probability model that predicts every game state at 50% is perfectly calibrated (on average) but useless. A model that predicts 90% confidence in every outcome will be right 90% of the time if it&#8217;s well-calibrated, but only if those 90% predictions actually win 90% of the time. Evaluating model quality requires metrics that capture both calibration and discrimination.</p><h3>Brier score</h3><p>The Brier score is the mean squared error between predicted probabilities and actual outcomes:</p><p><strong>BS = (1/n) &#931;&#7522; (p&#770;&#7522; - y&#7522;)&#178;</strong></p><p>where <em>p&#770;&#7522;</em> is the predicted probability and <em>y&#7522;</em> is the outcome (0 or 1). Lower is better. A perfect model scores 0. A model that predicts 50% for every game scores 0.25.</p><p>The Brier score can be decomposed into three components:</p><p><strong>BS = Reliability - Resolution + Uncertainty</strong></p><ul><li><p><strong>Reliability</strong> (lower is better): measures how close predicted probabilities are to observed frequencies.</p></li><li><p><strong>Resolution</strong> (higher is better): measures how much predicted probabilities deviate from the base rate.</p></li><li><p><strong>Uncertainty</strong> (fixed): depends only on the base rate of outcomes in the dataset.</p></li></ul><h3>Log loss (cross-entropy)</h3><p>Log loss penalizes confident wrong predictions more heavily than the Brier score:</p><p><strong>LL = -(1/n) &#931;&#7522; [y&#7522; log(p&#770;&#7522;) + (1-y&#7522;) log(1-p&#770;&#7522;)]</strong></p><p>A prediction of 99% confidence that turns out wrong is penalized far more than a prediction of 60% confidence that turns out wrong. This makes log loss particularly useful for evaluating predictions at the extremes.</p><h3>Calibration curves</h3><p>A calibration curve (reliability diagram) plots predicted probabilities on the x-axis against observed frequencies on the y-axis. A perfectly calibrated model produces a 45-degree line. Deviations reveal systematic biases:</p><ul><li><p><strong>Curve above the diagonal</strong>: the model is underconfident (events happen more often than predicted)</p></li><li><p><strong>Curve below the diagonal</strong>: the model is overconfident (events happen less often than predicted)</p></li><li><p><strong>S-shaped curve</strong>: the model is overconfident at extremes and underconfident in the middle (or vice versa)</p></li></ul><h3>Calibration in practice</h3><p>FiveThirtyEight&#8217;s RAPTOR model for basketball has a known calibration issue: it overestimates home team win probability, predicting home teams win 70% of the time when the actual rate is approximately 61%.</p><p>The nflfastR football model publishes calibration plots showing tight calibration across the probability range, with some deviation at the extremes where sample sizes are small.</p><p>Reporting calibration curves alongside point estimates of model accuracy should be standard practice but often isn&#8217;t. A model&#8217;s Brier score can look good in aggregate while hiding systematic miscalibration in specific game states.</p><h2>The mathematical taxonomy</h2><p>These methods are not mutually exclusive. FiveThirtyEight&#8217;s basketball model uses Poisson for the main game and a decision tree for the endgame. Football models use Expected Points (a regression-based framework) as a feature within an XGBoost model. The Dixon-Coles soccer model applies a parametric correction to a Poisson base.</p><p>The art of win probability modeling is knowing which tools to combine and where each one&#8217;s assumptions break down. The sport-specific posts that follow will explore exactly that.</p><h2>References</h2><p>Beuoy, M. (2013). &#8220;NBA Win Probability Calculator.&#8221; Inpredictable.com.</p><p>Burke, B. (2007). &#8220;Win Probability Model.&#8221; Advanced NFL Analytics.</p><p>Chen, T. and Guestrin, C. (2016). &#8220;XGBoost: A Scalable Tree Boosting System.&#8221; <em>Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining</em>, 785-794.</p><p>Dixon, M.J. and Coles, S.G. (1997). &#8220;Modelling Association Football Scores and Inefficiencies in the Football Betting Market.&#8221; <em>Journal of the Royal Statistical Society: Series C</em>, 46(2), 265-280.</p><p>Gabel, A. and Redner, S. (2012). &#8220;Random Walk Picture of Basketball Scoring.&#8221; <em>Journal of Quantitative Analysis in Sports</em>, 8(1).</p><p>Klaassen, F.J.G.M. and Magnus, J.R. (2001). &#8220;On the Independence and Identical Distribution of Points in Tennis.&#8221; <em>Journal of the American Statistical Association</em>, 96(454), 500-509.</p><p>Stern, H.S. (1994). &#8220;A Brownian Motion Model for the Progress of Sports Scores.&#8221; <em>Journal of the American Statistical Association</em>, 89(427), 1128-1134.</p><p>Tango, T.M., Lichtman, M.G., and Dolphin, A.E. (2006). <em>The Book: Playing the Percentages in Baseball</em>. Potomac Books.</p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[From the Sportsbook to the Order Book]]></title><description><![CDATA[From bookmakers to prediction markets: the two-century evolution that explains why Wall Street tools don't work on sports.]]></description><link>https://nfosignal.substack.com/p/from-the-sportsbook-to-the-order</link><guid isPermaLink="false">https://nfosignal.substack.com/p/from-the-sportsbook-to-the-order</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 21 Apr 2026 13:02:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pb71!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pb71!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pb71!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pb71!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pb71!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pb71!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pb71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg" width="700" height="371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:371,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The First Bookie | In the Dark&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The First Bookie | In the Dark" title="The First Bookie | In the Dark" srcset="https://substackcdn.com/image/fetch/$s_!pb71!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pb71!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pb71!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pb71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581540e8-872f-4284-a924-dc708c8c0895_700x371.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sports betting and financial trading get treated as separate worlds. One happens in a sportsbook. The other on Wall Street. Different industries, different cultures, different language.</p><p>The history says otherwise. For over two hundred years, the line between them has been blurring. Understanding how we got here is the key to understanding what prediction markets actually are, and why the principles built for financial markets belong in the conversation.</p><p>The distance between &#8220;betting&#8221; and &#8220;trading&#8221; is real. The legality is still being argued in court. The house-vs-bettor geometry sportsbooks were built on carries its own math and its own optics. A technical analyst asking whether a game produces a price line worth reading is asking a fair question.</p><p>I&#8217;ll take each of those on in its own post, along with why we&#8217;re in a new phase and why now is the right time to start trading games. Prediction markets opened a market that Wall Street tools weren&#8217;t built for, and SportChartz is the charting platform for it. All of that is ahead. For this post, the history.</p><h2>The bookmaker</h2><p>The modern structure starts in the late 1700s with British bookmakers offering fixed odds on horse racing. The innovation wasn&#8217;t the odds. People had been wagering forever. The innovation was the role itself: a middleman who sets the terms, takes action from both sides, and builds in a margin.</p><p>The bookmaker doesn&#8217;t have to predict who wins. He has to balance his book. Attract enough money on each side that the margin covers him regardless of outcome. The odds were never purely about probability. From the very beginning, they were about risk management.</p><p>That DNA runs through every layer that came after.</p><h2>Las Vegas and the standard products</h2><p>For most of the 20th century, legal U.S. sports betting meant Nevada. The Las Vegas sportsbooks took the bookmaker model and formalized it into the products that still dominate: point spreads, moneylines, totals, and parlays.</p><p>The point spread solved a real problem. How do you make a lopsided game attractive on both sides? Handicap the favorite by a set number of points, and the underdog has a market. The moneyline let bettors just pick the winner, with the payout adjusted to reflect implied probability. Totals let you bet on scoring volume without picking a side. Parlays let you chain bets together for bigger payoffs at higher risk.</p><p>These products all share one feature: the bookmaker sets the terms, the bettor picks from a menu. No negotiation. No matching of buyers and sellers. No changing your mind once the bet is placed.</p><p>For decades, this was the entire market.</p><h2>The exchange changes everything</h2><p>In 2000, Betfair launched in the UK with something new. A betting exchange, where bettors traded directly with each other. Instead of a bookmaker setting odds, users offered and accepted bets at prices they chose. The exchange took a commission on winnings.</p><p>This was a real shift. For the first time, a sports bettor could &#8220;back&#8221; an outcome (bet it happens) and &#8220;lay&#8221; it (bet it doesn&#8217;t). You could enter and exit positions during a game. The market had a bid and an ask. It looked like a financial market because, mechanically, it was one.</p><p>Betfair also scaled in-play betting: live markets that updated continuously as the game progressed. That&#8217;s where the concept of a live &#8220;price&#8221; for a sporting outcome took root.</p><h2>Prediction markets take it further</h2><p>Polymarket, Kalshi, and PredictIt took the exchange concept and reframed it. They don&#8217;t call themselves sportsbooks or betting exchanges. They call themselves markets for forecasting outcomes.</p><p>The mechanics: a contract is created for an event (will Team X win tonight?), and it trades between $0 and $1. If Team X wins, it settles at $1. If they lose, $0. The price at any given moment represents the market&#8217;s implied probability that the event occurs.</p><p>Buy at $0.65, and you&#8217;re paying 65 cents for a contract the market says has a 65% chance of paying $1.</p><p>The framing matters. Once you call it a &#8220;contract&#8221; instead of a &#8220;bet,&#8221; and a &#8220;market&#8221; instead of a &#8220;sportsbook,&#8221; you attract a different crowd. Traders from equities and crypto see something familiar. Quantitative analysts see a probability surface they can model. The same games handicappers have been reading for decades are being approached with an entirely different toolkit.</p><h2>The continuum</h2><p>None of these were clean breaks. Each step was an evolution of the one before it.</p><p>The bookmaker created structured risk management. Vegas standardized the products. Exchanges let bettors trade with each other. Prediction markets gave those trades the language and mechanics of financial markets.</p><p>Even inside traditional sportsbooks, the shift was happening earlier than most people realize. The cashout, where a sportsbook lets you close a live bet for a guaranteed profit or loss before the game ends, is a buy and a sell. You entered a position at one price and exited at another. The sportsbook is the counterparty on both sides. It isn&#8217;t framed as trading. That&#8217;s what it is.</p><p>Once you see the continuum, prediction markets stop looking like a new invention. They&#8217;re the latest layer on a market that has been moving toward financial-market mechanics for two centuries.</p><p>The mechanics have arrived. The analytical toolkit hasn&#8217;t, not yet. A century of equities work produced indicators, pattern libraries, and risk models that travel on principle. What they need to actually read a game is an input they can read. The raw data from a prediction market isn&#8217;t that input. It has to be transformed first, so that the tools built for continuous markets have something recognizable to work on.</p><p>Closing that gap is the reason SportChartz exists.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The State of Win Probability in Sports]]></title><description><![CDATA[Win probability is one of the most widely displayed and least understood numbers in sports.]]></description><link>https://nfosignal.substack.com/p/the-state-of-win-probability-in-sports</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-state-of-win-probability-in-sports</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Sun, 19 Apr 2026 12:51:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4pUx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4pUx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4pUx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4pUx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9321299,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192620538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4pUx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4pUx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb661bd3-5cec-4310-9a57-8912ae536d6c_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Win probability is one of the most widely displayed and least understood numbers in sports. Every major broadcast overlay, every prediction market contract, and every in-game betting line depends on some version of the same calculation: given the current state of the game, what is the probability that each team wins?</p><p>The number appears simple. The machinery behind it is not.</p><p>Over the past two years, I&#8217;ve gone through two decades of play-by-play data across professional and college football, basketball, and baseball while building SportChartz. What I found is that while each sport has produced its own win probability models - some excellent, some deeply flawed - there is no single source that consolidates a multi-sport perspective on how these models work, where they come from, and how they differ.</p><p>This series of posts is meant to be that source.</p><h2>What win probability actually is</h2><p>Win probability (WP) is a real-time estimate of the likelihood that a given team wins the game, expressed as a value between 0 and 1 (or equivalently, 0% to 100%). At any moment during a game, the win probabilities for both teams sum to 1 (in sports where draws are not possible) or the probabilities of win, draw, and loss sum to 1 (in sports like soccer where draws are an outcome).</p><p>Formally, for a game at time <em>t</em> with game state vector <strong>S(t)</strong>:</p><p><strong>P(Team A wins | S(t)) = f(S(t))</strong></p><p>where <strong>S(t)</strong> encodes the relevant state variables - score differential, time remaining, possession, field position, and any other sport-specific factors - and <em>f</em> is the model that maps states to probabilities.</p><p>The simplicity of this definition hides the hard problem: what goes into <strong>S(t)</strong>, and what form does <em>f</em> take? The answer depends entirely on the sport.</p><h2>A brief history</h2><p>The concept of computing win probability from game state data originated in baseball. In 1970, Eldon and Harlan Mills published <em>Player Win Averages: A Computer Guide to Winning Baseball Players</em>, the first systematic attempt to calculate the probability of winning from every possible game situation. Eldon was a retired Air Force colonel with computing expertise; Harlan was an IBM mathematics consultant. They simulated thousands of games from each of baseball&#8217;s 24 base-out states, computed winning percentages, and used the results to evaluate individual player contributions.</p><p>For three decades, the concept remained largely confined to baseball sabermetrics. Tom Tango, Mitchel Lichtman, and Andrew Dolphin formalized win expectancy tables and introduced the Leverage Index in <em>The Book: Playing the Percentages in Baseball</em> (2006), which became the standard reference.</p><p>The concept migrated to football in 2007 when Brian Burke launched Advanced NFL Analytics (later acquired by ESPN), introducing Expected Points and in-game win probability to football for the first time. Burke adapted logistic regression approaches to football&#8217;s complex state space of down, distance, field position, score, and time.</p><p>Basketball win probability modeling gained rigor with Hal Stern&#8217;s 1994 paper &#8220;A Brownian Motion Model for the Progress of Sports Scores&#8221; in the <em>Journal of the American Statistical Association</em>, which established the mathematical framework of modeling score progressions as stochastic processes. Mike Beuoy&#8217;s Inpredictable model (2013) later demonstrated that incorporating Vegas pregame spreads into locally weighted logistic regression could outperform ESPN&#8217;s proprietary model.</p><p>Soccer and hockey models emerged primarily through the expected goals (xG) revolution of the 2010s, building on Poisson-based frameworks that trace back to Maher&#8217;s 1982 paper &#8220;Modelling Association Football Scores&#8221; in <em>Statistica Neerlandica</em>. Hockey analysts, notably Evolving Hockey and MoneyPuck, adapted and extended these frameworks with sport-specific modifications for power plays, goaltender variance, and overtime formats.</p><p>Tennis stands apart. Its hierarchical scoring structure - points within games within sets within matches - allows for exact recursive computation of win probability from a single parameter: the probability of winning a point on serve. This was formalized by Klaassen and Magnus in their 2001 paper &#8220;On the Independence and Identical Distribution of Points in Tennis&#8221; and later extended by Newton and Keller (2005).</p><h2>Why each sport requires a different approach</h2><p>The mathematical approach that works best for modeling win probability is dictated by the sport&#8217;s game structure. This is the central insight that gets lost when win probability is studied one sport at a time.</p><h3>Baseball: discrete states, clean transitions</h3><p>Baseball&#8217;s game state at any moment is fully described by a compact set of discrete variables: the inning (1-9+), the half-inning (top or bottom), the number of outs (0, 1, or 2), the baserunner configuration (8 possible arrangements across three bases), and the score differential. This produces roughly 10,000 distinct game states when score differentials are capped at a reasonable range.</p><p>Because these states are discrete and the transitions between them are well-defined (each plate appearance moves the game from one state to another), baseball is naturally suited to <strong>Markov chain</strong> modeling and <strong>historical frequency lookup tables</strong>. You can compute win probability by looking up the historical winning percentage of teams in each specific state across decades of Retrosheet play-by-play data.</p><p>Baseball&#8217;s state space is tractable. The model is a table.</p><h3>Basketball: continuous scoring, approximately random</h3><p>Basketball generates continuous scoring events at a relatively constant rate. The score differential evolves over time in a way that approximates a random walk with drift - the drift reflecting the difference in team quality. Stern (1994) showed this formally, and Gabel and Redner (2011) confirmed it empirically across 6,087 NBA games, finding that time between scoring events follows an exponential distribution with essentially no memory between intervals.</p><p>This structure makes basketball naturally suited to <strong>logistic regression</strong> (mapping score differential and time remaining to win probability) and <strong>Brownian motion / Poisson process</strong> models. The core variables are few - score differential, time remaining, possession - but the relationship between them is nonlinear, particularly in the final minutes when intentional fouling and clock management introduce strategic discontinuities.</p><h3>Football: massive state space, forced into machine learning</h3><p>Football&#8217;s game state includes score differential, time remaining, possession, down (1st through 4th), yards to go (1-99), field position (1-99), timeouts remaining for each team, and whether the game is in a two-minute drill. The combinatorial explosion of these variables produces a state space orders of magnitude larger than baseball&#8217;s, with far fewer games per season to estimate from.</p><p>Early approaches used logistic regression (Burke, 2007), but modern models have moved to <strong>gradient-boosted decision trees</strong> (XGBoost in nflfastR) and <strong>ensemble methods</strong> because the interaction effects between variables are too complex for parametric models to capture efficiently.</p><p>Football&#8217;s state space is too large for lookup tables and too complex for simple regression. The sport forced the use of machine learning.Soccer: low-scoring, three outcomes</p><p>Soccer produces very few goals per game - roughly 2.5 in top European leagues - and admits three possible outcomes: home win, draw, away win. The low-scoring nature makes individual goals enormously consequential and makes the Poisson distribution a natural fit, since goal-scoring in soccer empirically follows a Poisson process.</p><p>The <strong>Dixon-Coles model</strong> (1997) is the foundational framework: independent Poisson distributions for each team&#8217;s goal-scoring, with a correction factor for low-scoring outcomes (0-0, 1-0, 0-1, 1-1) where independence breaks down. Modern extensions incorporate <strong>expected goals (xG)</strong> - a shot-by-shot model of goal probability - as the intensity parameter for the Poisson process, replacing historical goal-scoring rates with real-time estimates of attacking quality.</p><p>The draw outcome adds a dimension that doesn&#8217;t exist in American sports, requiring models that produce three probabilities rather than two.</p><h3>Hockey: Poisson with power plays and overtime</h3><p>Hockey shares soccer&#8217;s low-scoring, Poisson-amenable structure - roughly 6 total goals per game across both teams - but adds complications. Power plays create unequal game states where scoring rates change dramatically. Overtime and shootout formats introduce discontinuities. Goaltender performance is high-variance and difficult to model in-game.</p><p>Hockey&#8217;s xG models predate soccer&#8217;s, and platforms like <strong>MoneyPuck</strong> and <strong>Evolving Hockey</strong> have built sophisticated Poisson-based frameworks that adjust for game state (even strength, power play, short-handed), shot quality, and goaltender save probability. The core math is similar to soccer but the state transitions are more frequent and the special teams dimension adds complexity.</p><h3>Tennis: hierarchical recursion from a single parameter</h3><p>Tennis is structurally unique among major sports. Its scoring system is hierarchical: points aggregate into games, games into sets, sets into a match. Each level has its own rules (deuce, tiebreaks, final-set variations) but the entire match can be modeled recursively from a single parameter: the probability that the server wins a point.</p><p>Given server point-win probability <em>p</em> and returner point-win probability <em>q</em> = 1 - <em>p</em>, the probability of winning a game on serve can be computed exactly. From game-win probabilities, set-win probabilities follow. From set-win probabilities, match-win probabilities follow. The recursion is exact - no simulation required, no historical lookup needed.</p><p>Klaassen and Magnus (2001) validated this approach empirically and showed that the independence assumption (each point is independent) holds reasonably well, though they identified small but measurable deviations at break points and set points.</p><p>The striking result from this structure is the <strong>skill amplification effect</strong>: a player who wins 52% of points on serve - barely better than a coin flip - wins approximately 85% of matches in a best-of-five format. The hierarchical scoring system magnifies small advantages dramatically.</p><h2>The landscape today</h2><p><strong>Mature and stable</strong>: Baseball win probability is the most established, with publicly available lookup tables (FanGraphs, Baseball Reference, Greg Stoll&#8217;s Retrosheet-based calculator covering 193,305 games from 1903-2024), well-understood methodology, and broad consensus on the approach.</p><p><strong>Sophisticated but fragmented</strong>: Football has the most sophisticated models - nflfastR&#8217;s open-source XGBoost implementation is the current standard - but accuracy is limited by the small sample size inherent to a 17-game regular season and the enormous state space.</p><p><strong>Rapidly improving</strong>: Basketball models have benefited from the player-tracking revolution (SportVU, Second Spectrum) and the Expected Possession Value framework (Cervone et al., 2014), but the end-of-game fouling problem remains unsolved by any single model.</p><p><strong>xG-driven</strong>: Soccer and hockey models are increasingly built on expected goals frameworks, which provide a granular, shot-level foundation for Poisson-based win probability.</p><p><strong>Mathematically elegant, practically limited</strong>: Tennis win probability can be computed exactly from point-level parameters, making it the most theoretically clean model.</p><p><strong>Underdeveloped</strong>: College sports across the board lag behind their professional counterparts due to data availability.</p><h2>What comes next</h2><p>The posts that follow will go deeper into each of these areas. The next post covers the mathematical foundations that underlie all win probability models - logistic regression, Markov chains, Poisson processes, and the evaluation metrics (Brier scores, log loss, calibration curves) used to assess model quality. From there, each sport gets its own technical treatment.</p><p>The goal is to build a complete reference - the multi-sport overview of win probability models that I couldn&#8217;t find when I needed it.</p><h2>References</h2><p>Carter, V. and Machol, R.E. (1971). &#8220;Technical Note - Operations Research on Football.&#8221; <em>Operations Research</em>, 19(2), 541-544.</p><p>Cervone, D., D&#8217;Amour, A., Bornn, L., and Goldsberry, K. (2014). &#8220;Predicting Points and Valuing Decisions in Real Time with NBA Optical Tracking Data.&#8221; <em>MIT Sloan Sports Analytics Conference</em>.</p><p>Dixon, M.J. and Coles, S.G. (1997). &#8220;Modelling Association Football Scores and Inefficiencies in the Football Betting Market.&#8221; <em>Journal of the Royal Statistical Society: Series C</em>, 46(2), 265-280.</p><p>Gabel, A. and Redner, S. (2012). &#8220;Random Walk Picture of Basketball Scoring.&#8221; <em>Journal of Quantitative Analysis in Sports</em>, 8(1).</p><p>Klaassen, F.J.G.M. and Magnus, J.R. (2001). &#8220;On the Independence and Identical Distribution of Points in Tennis.&#8221; <em>Journal of the American Statistical Association</em>, 96(454), 500-509.</p><p>Maher, M.J. (1982). &#8220;Modelling Association Football Scores.&#8221; <em>Statistica Neerlandica</em>, 36(3), 109-118.</p><p>Mills, E.G. and Mills, H.D. (1970). <em>Player Win Averages: A Computer Guide to Winning Baseball Players</em>. A.S. Barnes.</p><p>Newton, P.K. and Keller, J.B. (2005). &#8220;Probability of Winning at Tennis I. Theory and Data.&#8221; <em>Studies in Applied Mathematics</em>, 114(3), 241-269.</p><p>Stern, H.S. (1994). &#8220;A Brownian Motion Model for the Progress of Sports Scores.&#8221; <em>Journal of the American Statistical Association</em>, 89(427), 1128-1134.</p><p>Tango, T.M., Lichtman, M.G., and Dolphin, A.E. (2006). <em>The Book: Playing the Percentages in Baseball</em>. Potomac Books.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[Game Trading and Stock Trading follow the same rules, but sometime use different language]]></title><description><![CDATA[A translation guide for the vocabulary that trips up bettors, traders, and prediction market participants.]]></description><link>https://nfosignal.substack.com/p/game-trading-and-stock-trading-follow</link><guid isPermaLink="false">https://nfosignal.substack.com/p/game-trading-and-stock-trading-follow</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 14 Apr 2026 11:21:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TuJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TuJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TuJd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TuJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg" width="1456" height="495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:495,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Features - In the Time of the Rosetta Stone - Archaeology Magazine -  November/December 2017&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Features - In the Time of the Rosetta Stone - Archaeology Magazine -  November/December 2017" title="Features - In the Time of the Rosetta Stone - Archaeology Magazine -  November/December 2017" srcset="https://substackcdn.com/image/fetch/$s_!TuJd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TuJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53c3f9f-b47e-40b5-a133-2d8dec2db82f_2000x680.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you spend time in sports betting communities, financial trading communities, and prediction market communities, you&#8217;ll notice they use a lot of the same words. Line. Price. Volume. Edge. Sharp.</p><p>They don&#8217;t mean the same thing.</p><p>This isn&#8217;t just a terminology problem. When people import a word from one world into another without adjusting the concept behind it, they import the wrong assumptions. And wrong assumptions in a market cost money.</p><p>Here&#8217;s a translation guide for the terms that trip people up most.</p><h2>Line</h2><p>In sports betting, &#8220;the line&#8221; usually means the point spread. Cowboys -7.5. It&#8217;s the bookmaker&#8217;s handicap that levels the playing field between favorite and underdog.</p><p>In financial trading, there is no &#8220;line.&#8221; The closest analog is the current market price.</p><p>In prediction markets, &#8220;the line&#8221; could mean the current contract price (say, $0.65 for Team X to win), but people also use it to refer to the implied probability, or even the moneyline equivalent. It depends on who&#8217;s talking.</p><p>When someone says &#8220;the line moved,&#8221; you need to know which line they mean before the information is useful.</p><h2>Price</h2><p>In a stock market, price is the fundamental signal. It&#8217;s the result of buyers and sellers agreeing on what something is worth right now. Technical analysis is built on this - every indicator is ultimately measuring some property of price over time.</p><p>In a prediction market, the &#8220;price&#8221; is a win probability. A contract at $0.72 means the market implies a 72% chance of that outcome. But that probability is often derived from a bookmaker&#8217;s model, not purely from market dynamics. You&#8217;re looking at a model output, not a raw consensus between buyers and sellers.</p><p>This is the single biggest source of confusion when traders from equities or crypto enter prediction markets. They see a chart that looks like a price chart and apply tools designed for price. But the thing being charted is structurally different.</p><h2>Volume</h2><p>In stock trading, volume is critical. A breakout on high volume is meaningful. The same breakout on low volume is suspicious. Volume confirms whether the market agrees with a move.</p><p>In prediction markets, volume is thin and inconsistent. A sudden move in win probability could reflect genuine new information, or it could be one large position distorting a shallow book. There&#8217;s no reliable way to distinguish between the two using volume alone.</p><p>People who come from equities and look for volume confirmation on prediction market charts are looking for a signal that doesn&#8217;t exist in a useful form.</p><h2>Sharp money</h2><p>In sports betting, &#8220;sharp money&#8221; means wagers from professional handicappers - people whose track record the sportsbooks respect. When sharp money hits one side of a game, the book moves the line in response, even if the bet is small relative to the overall handle. The signal isn&#8217;t the size. It&#8217;s the source.</p><p>In financial trading, there&#8217;s no direct equivalent. The closest concept is informed flow - institutional orders that move the market because the market maker infers the buyer knows something.</p><p>In prediction markets, &#8220;sharp&#8221; gets used loosely. Sometimes it means a whale moved the price. Sometimes it means someone with a model disagrees with the current line. The signal is muddier because the markets are smaller and less liquid.</p><h2>EV (expected value)</h2><p>Handicappers live and die by EV. If a team should win 55% of the time and the line implies 50%, that&#8217;s positive EV - the bet has a mathematical edge over the long run. This is calculated pre-game, model-driven, and it&#8217;s the foundation of professional handicapping.</p><p>Traders talk about edge, which is conceptually the same thing - a structural advantage that plays out over enough repetitions. But a trader&#8217;s edge might come from reading chart patterns, exploiting inefficient pricing, or reacting faster to live information. It&#8217;s often in-game, not pre-game.</p><p>Both groups will tell you they&#8217;re &#8220;finding value.&#8221; They mean something different by it.</p><h2>The vig (or juice)</h2><p>The bookmaker&#8217;s margin. In a standard -110 / -110 line, the bettor risks $110 to win $100 on either side. The $10 difference on each side is the vig - the house&#8217;s cut.</p><p>In an exchange like Betfair, there&#8217;s no vig in the traditional sense. Instead, the exchange takes a commission on net winnings, and the market&#8217;s bid-ask spread functions like a vig.</p><p>In prediction markets, the vig shows up in different places depending on the platform - trading fees, spread between bid and ask, or resolution fees. Understanding where the vig lives on a given platform tells you who&#8217;s actually making money and how much edge you need before your strategy is profitable after costs.</p><h2>Moneyline vs. decimal vs. implied probability</h2><p>This is where people&#8217;s eyes glaze over, but it matters.</p><p>American odds: -200 means risk $200 to win $100 (favorite). +150 means risk $100 to win $150 (underdog).</p><p>Decimal odds: 1.50 means a $100 bet returns $150 total (your stake plus $50 profit). This is the standard in Europe and on exchanges.</p><p>Implied probability: -200 American converts to 66.7% implied probability. A prediction market contract at $0.667 is saying the same thing.</p><p>These are three ways of expressing the same number. The problem is that each community defaults to a different format, and mental math across formats is error-prone. A trader who thinks in decimal odds and a handicapper who thinks in American odds can look at the same market and not immediately realize they agree.</p><h2>Why this matters</h2><p>This isn&#8217;t academic. Every one of these translation gaps creates friction - and in some cases, real errors - when people try to apply tools from one world to another.</p><p>If you&#8217;re building tools for prediction markets (which is what I&#8217;m doing), you have to be precise about what you&#8217;re actually measuring. A &#8220;chart&#8221; of a prediction market is not a stock chart. &#8220;Volume&#8221; doesn&#8217;t mean what it means on the NYSE. &#8220;The line moved&#8221; could mean three different things depending on who said it.</p><p>Getting the vocabulary right is the first step toward getting the analysis right.</p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Three Tribes of Sports Prediction Markets]]></title><description><![CDATA[Handicappers, fundamental analysts, and technical analysts are converging on the same markets.]]></description><link>https://nfosignal.substack.com/p/the-three-tribes-of-sports-prediction</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-three-tribes-of-sports-prediction</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 07 Apr 2026 12:32:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6GPe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6GPe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6GPe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6GPe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/794513d0-4029-4861-9c53-057a0743168e_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8419891,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192615720?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6GPe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6GPe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F794513d0-4029-4861-9c53-057a0743168e_2752x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three very different communities are converging on prediction markets right now. They use different tools, different language, and different frameworks for making decisions. They&#8217;re all trading against each other. Understanding who they are, and where their methods break down, is the starting point for understanding why these markets need better tools.</p><h2><strong>Tribe 1: The Handicappers</strong></h2><p>Handicappers are the oldest group. They&#8217;ve been at this since long before prediction markets existed.</p><p>Their method is pre-game statistical modeling. They study injury reports, matchup data, historical performance, weather conditions, travel schedules, and dozens of other variables to build a probabilistic view of a game&#8217;s outcome before it starts. The bet is placed before tip-off, kickoff, or first pitch. Once the game begins, the handicapper&#8217;s work is mostly done.</p><p>The handicapping community is deep, sophisticated, and data-rich. There are models that track everything from quarterback pressure rates under specific defensive formations to how NBA teams perform on the second night of a back-to-back after crossing two time zones.</p><p>But handicapping is fundamentally a pre-game discipline. It tells you what should happen. It has limited tools for reacting to what is happening.</p><h2><strong>Tribe 2: The Fundamental Analysts</strong></h2><p>If handicappers are the pre-game analysts, fundamental analysts are the in-game observers. These are people who watch the game, read the situation, and make decisions based on what they&#8217;re seeing in real time.</p><p>A fundamental analyst watching a basketball game might notice that a team&#8217;s star player is favoring his ankle, that the opposing coach has shifted to a zone defense, or that the pace of play has changed in a way that favors the underdog. They don&#8217;t need a model to tell them this. They see it.</p><p>It&#8217;s powerful but inherently subjective. Two experienced observers can watch the same game and draw opposite conclusions. There&#8217;s no standardized framework for translating live observations into quantitative trading signals.</p><h2><strong>Tribe 3: The Technical Analysts</strong></h2><p>Technical analysts don&#8217;t care about injuries, matchups, or what&#8217;s happening on the court. They care about charts.</p><p>Technical analysis is the methodology that has powered Wall Street for decades. It&#8217;s built on a simple premise: price action contains information. By studying patterns in price movement, volume, and momentum, you can identify opportunities that fundamental analysis misses.</p><p>TA practitioners use tools like moving averages, RSI, MACD, Bollinger Bands, and support/resistance levels. These tools work because financial markets have certain structural properties: continuous trading, uniform time intervals, reliable volume data, and prices that trade indefinitely.</p><p>Now these practitioners are looking at prediction markets and seeing something familiar. Lines that move. Charts that look like price charts. What appears to be the same game they&#8217;ve been playing in equities and crypto.</p><p>But prediction markets aren&#8217;t stock markets. They look like them on the surface. Underneath, the structure is different.</p><h2><strong>The collision</strong></h2><p>Each tribe has tools that were built for a specific context, and none of those contexts match what prediction markets actually are.</p><p>Handicappers have pre-game models that go stale once the game starts. Fundamental analysts have qualitative insights that are hard to systematize. Technical analysts have quantitative tools that assume market structures prediction markets don&#8217;t have.</p><p>The technical analysts face the most interesting challenge, because their tools are the most precise and the most brittle. A moving average crossover strategy that works on the S&amp;P 500 will produce garbage on a live NBA game. Not because the math is wrong, but because the assumptions baked into the math don&#8217;t hold.</p><p>Time isn&#8217;t uniform in a game. Events aren&#8217;t equal. The market has a known endpoint. The &#8220;price&#8221; is actually a derivative of a bookmaker&#8217;s win probability model. And there&#8217;s no reliable volume signal.</p><p>These are covered in detail in <em><a href="https://nealcfoster.substack.com/p/why-technical-analysis-breaks-on">Why Technical Analysis Breaks on Prediction Markets</a></em>. The short version: until you fix them, TA on prediction markets is theater, not analysis.</p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Underdog Upset]]></title><description><![CDATA[The entry price is low.]]></description><link>https://nfosignal.substack.com/p/the-asymmetric-bet-underdog-upset</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-asymmetric-bet-underdog-upset</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 24 Mar 2026 13:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o7z4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o7z4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o7z4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o7z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png" width="1456" height="805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117887,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o7z4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!o7z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F646c0576-2936-4567-8cb2-4f2cff5cb2cd_1708x944.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The entry price is low. The underdog's win probability has been pushed down to 10-20%. The probability of a full payoff is small. But when it hits, the return is the largest of any pattern in the framework.</p><h2>How it differs from a V-bottom</h2><p>On the surface, the Underdog Upset looks like a V-Bottom Recovery. A team&#8217;s win probability drops to deeply oversold levels, the system identifies a long entry, and the win probability recovers. The chart shape can be similar. The entry criteria overlap.</p><p>The distinction is in who recovers and where the win probability ends up.</p><p>In a V-Bottom Recovery, the favorite falls behind and comes back. Their win probability drops below expected value and reverts toward it. The trade captures a correction back to roughly where the market expected the game to be.</p><p>In an Underdog Upset, the underdog falls behind (or starts low because they&#8217;re expected to lose), and then wins the game outright. Their win probability goes from the teens to above 90%. This isn&#8217;t a reversion to expected value. It&#8217;s a full reversal of the pre-game expectation.</p><p>The system classifies a game as Underdog Upset when long trades were identified and the underdog wins the game relative to the spread. It takes priority over V-Bottom Recovery because the outcome is different. The underdog didn&#8217;t just recover to fair value. They exceeded it.</p><h2>Reading the setup</h2><p>Here is the sportchart for the January 4th Cleveland vs. Cincinnati NFL game</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Gn6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Gn6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Gn6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png" width="886" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144745,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Gn6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!-Gn6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32f8d1d6-4cb1-4e26-a229-6ccdbb0ad144_886x1829.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cleveland at Cincinnati, January 4, 2026. Cincinnati was favored by 8.5 points. For three quarters, the chart confirmed that expectation. Cincinnati&#8217;s Game Signal held above 50, RSI stayed in a comfortable midrange, and the Spread Deviation lingered below 0&#963; with red signal dots firing periodically. Cincinnati was winning but underperforming their spread the entire game. The market expected a blowout and was getting a competitive game instead.</p><p>Then Q4 arrived. Cleveland&#8217;s momentum reversed sharply. The MACD produced a massive bullish spike in the final three minutes of game clock, jumping from near zero to its highest reading of the entire game. RSI surged from the mid-40s toward 70. Cleveland won 20-18.</p><p>An 8.5-point underdog winning outright by 2. The Spread Deviation chart tells the deeper story: Cincinnati never performed to the level the spread implied. The deviation sat below 0&#963; for most of the game. The chart was showing that for 45 minutes before Cleveland made it official.</p><h2>What separates the upset from the trap</h2><p>The entry signal is the same as a V-Bottom Recovery: significant deviation, RSI confirmation, no trap flags. But the team that&#8217;s oversold is the underdog.</p><p>If the underdog&#8217;s decline is structural, the trap indicators fire and the entry gets rejected. If the deficit is driven by variance, a few bad breaks, a fluky turnover, an early score by the favorite, the entry passes the filter. In the CLE @ CIN game, the deficit was variance. Cincinnati&#8217;s lead was never as comfortable as an 8.5-point favorite&#8217;s lead should have been, and the trap indicators didn&#8217;t fire because the game dynamics weren&#8217;t confirming Cincinnati&#8217;s dominance.</p><p>The recovery path for an underdog is different from the favorite&#8217;s path. A favorite recovering to expected value is the default outcome. An underdog recovering past expected value and winning requires either that the pre-game market was wrong about the quality differential, or that in-game conditions shifted in ways the spread didn&#8217;t anticipate. Spreads are set days before the game. Injuries during warmups, weather changes, or coaching adjustments can alter the equation. And sometimes the spread was simply off. The market is efficient on average, but individual game spreads have meaningful error bars.</p><p>The Underdog Upset is the highest-magnitude pattern in the framework. Most entries won&#8217;t result in an upset. The ones that do move further than any other pattern. That asymmetry is what makes it worth watching for.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Overbought Fade]]></title><description><![CDATA[Mean reversion works in both directions.]]></description><link>https://nfosignal.substack.com/p/the-short-side-overbought-fade</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-short-side-overbought-fade</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Fri, 20 Mar 2026 13:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mVW8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mean reversion works in both directions. If a team can be oversold, a team can be overbought. When the overpriced team is the underdog, the trade dynamics are different.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mVW8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mVW8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mVW8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png" width="1456" height="805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70598,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570879?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mVW8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!mVW8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38c28c24-8ff7-4773-968d-52ae20a89854_1708x944.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>What it looks like</h3><p>Chicago White Sox at Milwaukee, March 29, 2026. Milwaukee was favored at -1.5. Chicago jumped all over them early. By the second inning, Milwaukee&#8217;s Game Signal had dropped from 60 to around 20. The Spread Deviation chart confirmed it: Milwaukee fell to -1&#963;, then -2&#963;, with red signal dots firing in innings 1 and 2.</p><p>RSI on Milwaukee&#8217;s momentum sat below 30 from inning 2 through inning 7. From Chicago&#8217;s side, that&#8217;s deep overbought territory for six straight innings. The underdog was priced as the likely winner for the bulk of the game.</p><p>Then Milwaukee&#8217;s quality showed up. In innings 8 and 9, the Game Signal exploded. The MACD produced a massive bullish spike, jumping from near zero to above 21, as Milwaukee scored enough to take the lead. RSI surged from deep oversold to near 100. The Spread Deviation climbed from -2&#963; back above 0&#963;. Milwaukee won 9-7. The overbought condition broke all at once, and the chart captured the moment it happened.</p><p>here is the full sport chart:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!COU9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!COU9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!COU9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!COU9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!COU9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!COU9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png" width="886" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130752,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570879?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!COU9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!COU9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!COU9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!COU9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5d5382f-fc65-4568-835e-e44c192f22a6_886x1829.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>The entry signal</h3><p>The system flags an Overbought Fade when the underdog&#8217;s win probability has risen significantly above their spread-implied expected value and RSI pushes above 70. The live market is pricing the underdog much higher than the structural quality encoded in the spread supports. The trade thesis: the underdog&#8217;s win probability will revert toward the spread-implied level as the favorite&#8217;s quality advantage plays out over remaining game time.</p><h2>Time sensitivity</h2><p>The short side has a different risk profile than the long side.</p><p>On the long side (V-Bottom Recovery), a team at 10% win probability can only lose another 10 points. The downside is capped and small. On the short side, a team at 72% with a big lead can simply maintain it and watch the number climb as the clock runs out. Time decay works in the underdog&#8217;s favor, not against them.</p><p>This makes the fade more time-sensitive than the long trade. A first-quarter overbought signal gives the favorite plenty of time to assert their quality advantage. A fourth-quarter overbought signal gives them very little. The system accounts for this by evaluating time remaining as part of the signal.</p><h2></h2><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[When Not to Buy the Dip]]></title><description><![CDATA[A favorite falls behind, their win probability drops into oversold territory, and the chart looks like a buying opportunity.]]></description><link>https://nfosignal.substack.com/p/when-not-to-buy-the-dip</link><guid isPermaLink="false">https://nfosignal.substack.com/p/when-not-to-buy-the-dip</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 17 Mar 2026 13:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mF0W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A favorite falls behind, their win probability drops into oversold territory, and the chart looks like a buying opportunity. But the dip keeps going. The favorite never recovers. The game was over before the chart said it was.</p><p>Identifying these situations is as important as identifying the V-Bottom Recovery.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mF0W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mF0W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 424w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 848w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 1272w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mF0W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png" width="1456" height="796" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:796,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89271,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570766?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mF0W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 424w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 848w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 1272w, https://substackcdn.com/image/fetch/$s_!mF0W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d0b7265-d733-48d0-b4f3-9c7230c9fe5e_1726x944.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The trap</h2><p>A trap is an entry signal that looks valid but isn&#8217;t. The team appears oversold. Deviation from expected win probability is deeply negative. RSI is below 30. By the criteria that define a V-Bottom Recovery entry, everything checks out.</p><p>But the decline isn&#8217;t temporary. The quality differential that the spread encoded hasn&#8217;t disappeared, but it&#8217;s been overwhelmed by game conditions that are unlikely to reverse.</p><p>When a potential entry appears, the system evaluates whether the oversold condition reflects variance or something structural. Variance creates recoveries. Structural declines don&#8217;t. The indicators the system examines look at the nature of the decline, the game context, and whether the conditions that caused the deficit are likely to persist. When enough of them point the same direction, the entry is rejected.</p><p>Here is the full sport chart:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QTv0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QTv0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 424w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 848w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QTv0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png" width="895" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:895,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162096,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570766?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QTv0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 424w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 848w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!QTv0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88f53137-458b-43f0-b916-a6a4a7ababcd_895x1829.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The confirmed decline</h2><p>When every potential entry in a game is rejected, the game produces no actionable signal. The system found moments that looked like buying opportunities, evaluated them, and passed on all of them.</p><p>These are the games where buying the dip would have lost. The favorite looked cheap, but the decline was real. The opponent was the better team that day, or the conditions had shifted enough that the pre-game spread no longer reflected what was happening on the court or field.</p><h2>The favorite collapse</h2><p>Sometimes the system doesn&#8217;t just avoid a bad long entry. It identifies the conditions for a short.</p><p>Philadelphia at Charlotte, March 28, 2026. Charlotte was favored by 6.5 at home. Through three quarters, the chart supported that assessment. Charlotte&#8217;s momentum held above 50 for most of Q1 through Q3, RSI stayed in a comfortable midrange, and the Spread Deviation line hugged zero. The favorite was winning, roughly as expected.</p><p>Then Q4 happened. Charlotte&#8217;s Game Signal dropped from around 70 to near 0. The MACD, which had been oscillating mildly for three quarters, produced a massive negative spike. RSI plunged into oversold territory. Every indicator aligned in the same direction: down.</p><p>Philadelphia won 118-114. The underdog took it outright.</p><p>A Favorite Collapse is when the system determines the decline is structural enough to trade from the short side. The signal isn&#8217;t &#8220;don&#8217;t buy this dip.&#8221; It&#8217;s &#8220;this dip is going to keep going.&#8221; The PHI @ CHA chart shows what that looks like across the Q4 panels.</p><p><strong>The right action is sometimes nothing</strong></p><p>The trap detection system looks for reasons not to trade. In a meaningful portion of games, the correct action is nothing. The deviation is there. The RSI is there. But the evaluation says the setup isn&#8217;t real.</p><p>Knowing when to stay out is part of the system. It&#8217;s also the part that&#8217;s hardest to trust in the moment when the chart looks compelling.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[V-Bottom Recovery]]></title><description><![CDATA[Sharp decline, identifiable bottom, recovery toward prior levels.]]></description><link>https://nfosignal.substack.com/p/v-bottom-recovery-the-bread-and-butter</link><guid isPermaLink="false">https://nfosignal.substack.com/p/v-bottom-recovery-the-bread-and-butter</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Tue, 10 Mar 2026 13:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nyNI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sharp decline, identifiable bottom, recovery toward prior levels. The V-bottom is one of the most recognizable chart patterns in technical analysis. In live sports, the same pattern plays out in compressed time. A game instead of weeks. Quarters instead of trading sessions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nyNI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nyNI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nyNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png" width="1456" height="805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83946,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570661?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nyNI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 424w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 848w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 1272w, https://substackcdn.com/image/fetch/$s_!nyNI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7642c35f-14fe-463e-91d3-ac177daa59c0_1708x944.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>What it looks like</h3><p>Saint John&#8217;s at Duke, March 27, 2026. Duke was favored by 6.5 points. Saint John&#8217;s controlled the first half, and Duke&#8217;s Game Signal dropped steadily from above 70 down through 50, then below it. By halftime around minute 20, Duke&#8217;s momentum had cratered to near 0. RSI plunged below 30. The Spread Deviation chart showed red signal dots firing as Duke fell beyond -1&#963; below their expected value. The favorite was deeply oversold.</p><p>Then Duke came back. The Game Signal climbed from near 0 back above 50, then 60, then 70, eventually reaching above 80 in the final minutes. On the chart, it forms the characteristic V shape. Sharp down through H1, trough at halftime, sharp recovery through H2. Duke won 80-75.</p><p>The MACD panel confirms it. A sustained bearish reading through H1, then a bullish crossover at the start of H2 as Duke&#8217;s short-term momentum overtook the longer-term trend. The crossover fired and held for the rest of the game.</p><p>Full sport chart here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vyFd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vyFd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vyFd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png" width="886" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570661?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vyFd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!vyFd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6aa6f5e-caf6-440b-839c-b61aff840f75_886x1829.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Why it happens</h3><p>When a -6.5 favorite falls behind by 12 points in the first half, the question is whether that deficit represents a genuine shift in team quality or a sequence of high-variance events.</p><p>Most of the time, it&#8217;s variance. Two turnovers that wouldn&#8217;t happen again if you replayed the game. A cold shooting stretch. A fluky bounce. The spread already priced in the quality edge. The events of the first half didn&#8217;t change that. They just created a deviation.</p><p>The recovery happens because the quality differential still exists and there is still time for it to express itself. Duke&#8217;s second half was the quality advantage playing out over the remaining 20 minutes of game clock.</p><p>Timing matters. A V-bottom that develops in the first half has more game remaining for reversion than one that develops late in the fourth quarter. The depth of the oversold condition matters, but so does when it happens.</p><h3><strong>The entry signal</strong></h3><p>The system identifies a V-Bottom Recovery entry when three conditions align.</p><p>First, the deviation from expected win probability is significantly negative. The team&#8217;s live win probability is well below what the spread implies.</p><p>Second, RSI confirms the oversold condition. RSI below 30, calculated on the Game Signal. The momentum indicator is saying the same thing as the deviation: this team is oversold.</p><p>Third, the trap detection system doesn&#8217;t flag the decline. Not every oversold condition is a buying opportunity. When the trap indicators confirm the decline is structural rather than temporary, the entry is rejected. The next post covers traps in detail.</p><p>When all three conditions align, the system flags a long entry.</p><p>The V-bottom is the most common pattern the system identifies. Recognizing it is the first step. Separating a real recovery from a trap is the harder one, and that's what the next post covers.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[The Mean Reversion Thesis]]></title><description><![CDATA[Every technical analyst understands mean reversion.]]></description><link>https://nfosignal.substack.com/p/the-mean-reversion-thesis</link><guid isPermaLink="false">https://nfosignal.substack.com/p/the-mean-reversion-thesis</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Thu, 05 Mar 2026 14:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FhYT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every technical analyst understands mean reversion. A stock drops 15% below its moving average, Relative Strength Index (RSI) falls into oversold territory, and the expectation is that price will drift back toward fair value. Not always. Not immediately. But often enough that the pattern is tradeable.</p><p>The same thesis applies to live sports. It just needs a different anchor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FhYT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FhYT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FhYT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93683,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570563?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FhYT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!FhYT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7384a33a-c4e4-4c1f-8889-6d93165ad974_1708x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The anchor is the spread</h2><p>In financial markets, the anchor for mean reversion is usually a moving average, a historical price range, or a calculated fair value. In sports, the anchor is the pre-game point spread.</p><p>The spread is the market&#8217;s consensus estimate of the expected score differential at the end of the game. Sharp bettors, bookmakers, and quantitative models all contribute to it. A -7.5 spread on the favorite means the market expects them to win by roughly 7 to 8 points. That spread also implies an expected win probability. A -7.5 favorite has an implied win probability of about 72%.</p><p>During the game, the actual win probability moves based on what&#8217;s happening on the court or field. A turnover, a scoring run, an injury. These events push the live win probability away from the spread-implied expectation. Sometimes by a lot.</p><p>A favorite at -7.5 (implied 72% win probability) that falls behind by 12 points in the third quarter might see their live win probability drop to 22%. The live market is pricing them 50 points below where the pre-game market said they should be.</p><p>That gap is the deviation. And like any significant deviation from fair value, it tends to correct.</p><h2>Measuring the deviation</h2><p>Tennessee at Michigan, March 29, 2026. Michigan was favored by 8.5 points. The Spread Deviation chart from this game shows the thesis playing out in real time.</p><p>In the first four minutes, the deviation line sits below -1&#963;. Red signal dots fire. Tennessee came out strong and Michigan is underperforming where the spread said they should be. Michigan is oversold relative to their structural quality. Then the line starts climbing. By minute 10-12 it crosses 0&#963;. The actual game margin is now roughly in line with what the spread predicted. It just took some game time for the quality to show up.</p><p>By minute 15, the deviation pushes past +1&#963;. Green dots appear. Michigan is not just meeting the spread, they&#8217;re beating it. In the second half, the line parks at +2&#963; for 20 straight minutes. Michigan won 95-62, outperforming their expected margin by 22 points. The full arc (undershooting fair value, reverting to it, then overshooting it) is visible in a single chart panel.</p><p>SportChartz measures this gap on every play. When the deviation is significantly negative, the team is oversold. When it&#8217;s significantly positive, the team is overbought. The 0&#963; line is the anchor. Everything below it is a potential long. Everything above it is a potential short.</p><p>RSI confirms the signal. Below 30 is oversold. Above 70 is overbought. When RSI aligns with a significant deviation from expected value, the signal is stronger.</p><p>here is the full chart</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y9Gv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y9Gv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y9Gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png" width="886" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b05711de-4c71-4de2-a187-1e960576ce46_886x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142760,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570563?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y9Gv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!y9Gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05711de-4c71-4de2-a187-1e960576ce46_886x1829.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The patterns</h2><p>The mean reversion thesis produces distinct patterns, each representing a different market condition during a live game. Some are long opportunities. Some are short. Some are the system correctly identifying that no opportunity exists, or that an apparent opportunity is a trap.</p><p>The next posts in this series walk through what those conditions look like in practice.</p><p>Mean reversion is not a guarantee. It is a structural tendency. The edge is in knowing when it applies, when it doesn&#8217;t, and what separates a real deviation from a trap.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item><item><title><![CDATA[Reading the Chart]]></title><description><![CDATA[There&#8217;s a book that every technical analyst has either read or been told to read - John Murphy&#8217;s Technical Analysis of the Financial Markets.]]></description><link>https://nfosignal.substack.com/p/reading-the-chart</link><guid isPermaLink="false">https://nfosignal.substack.com/p/reading-the-chart</guid><dc:creator><![CDATA[nfos]]></dc:creator><pubDate>Thu, 26 Feb 2026 14:00:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zOpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a book that every technical analyst has either read or been told to read - John Murphy&#8217;s Technical Analysis of the Financial Markets. It&#8217;s been the standard reference for decades. The concepts in it - trend identification, momentum indicators, divergences, crossovers - were developed for equities and commodities. They assume a price series on a uniform time axis with continuous trading.</p><p>None of that exists in sports prediction markets. But once you transform the data, the patterns Murphy describes start showing up. Not perfectly. Not identically. But recognizably.</p><p>That&#8217;s the part I didn&#8217;t fully appreciate until I watched experienced technicians use the platform.</p><h2>The basics still apply</h2><p>The simplest thing a chart tells you is direction. Is the signal trending up, trending down, or moving sideways? In a live game, this maps directly to whether one team is building momentum, losing it, or locked in a back-and-forth pattern.</p><p>A moving average smooths this out. A simple moving average calculated over the last few minutes of game clock tells you the general direction of recent live play. When the signal is above the moving average, the short-term action is favoring one side. When it crosses below, the dynamic has shifted.</p><p>This is as basic as it gets in technical analysis, and it translates cleanly. The difference is that because the x-axis is game-clock time rather than wall-clock time, the moving average is measuring something real - the trend across actual live play - rather than a stretch of broadcast time that might include TV timeouts and dead ball situations.</p><p>We will use the LA Clippers game as an example here is the chart</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zOpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zOpD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zOpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png" width="886" height="1829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1829,&quot;width&quot;:886,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173033,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zOpD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 424w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 848w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 1272w, https://substackcdn.com/image/fetch/$s_!zOpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c870f90-7dd4-47b0-bef2-4eb6d1aac19d_886x1829.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Crossovers</h3><p>A crossover is when two lines on a chart cross each other. The most common version is a MACD crossover - when the MACD line crosses above or below its signal line.</p><p>In equities, a MACD crossover suggests a change in momentum. The short-term trend is diverging from the longer-term trend. Traders use this as an entry or exit signal, though never in isolation.</p><p>LA Clippers at Indiana, March 27, 2026. Indiana was an 8.5-point underdog that nearly won outright, losing 114-113. The MACD panel from this game reads like a textbook. A bullish crossover fires around minute 8 as Indiana surges to a massive early lead, the Game Signal climbing above 80. Around minute 18, a bearish crossover as the Clippers claw back and Indiana&#8217;s momentum drops below 50. Another bullish crossover near minute 28 as Indiana makes a second run into the 80s. Then a final, dramatic bearish crossover in the last minutes as the Clippers complete the comeback. Each crossover corresponds to a visible shift in the Game Signal panel above it. The MACD confirmed the momentum change every time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xwWA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xwWA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xwWA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102610,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xwWA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!xwWA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa02cab4b-8700-427b-8b4f-110ba78920be_1708x816.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The catch is the same as in equities: crossovers lag. By the time the lines cross, the shift has already started. The crossover confirms what&#8217;s happening. It doesn&#8217;t predict it. In the LAC @ IND chart, a technician watching the Game Signal would have seen each momentum shift developing before the MACD lines officially crossed. Experienced technicians use the crossover as confirmation of something they&#8217;re already seeing in the price action, not as a standalone trigger.</p><h2>Divergences</h2><p>This is where chart reading starts to separate from chart watching.</p><p>A divergence happens when the signal and an indicator disagree. The most common example: the transformed signal makes a new high - the win probability equivalent of one team pulling further ahead - but the RSI doesn&#8217;t make a corresponding new high. The signal says things are getting better. The indicator says the momentum behind that move is weakening.</p><p>In equities, this is called bearish divergence. The price is rising but the underlying strength isn&#8217;t there. It often precedes a reversal.</p><p>The LAC @ IND chart shows this. Around minute 32, Indiana&#8217;s Game Signal pushes back above 80 for the second time in the game, making a new high comparable to their Q1 surge. But look at the RSI panel at that same point. It reaches around 70 but doesn&#8217;t match the intensity of the Q1 reading. The signal says Indiana is dominant again. The RSI says the momentum behind this second run isn&#8217;t as strong as the first. The Clippers aren&#8217;t collapsing - they&#8217;re hanging around. And the chart is showing you that before the scoreboard makes it obvious. Indiana&#8217;s second surge didn&#8217;t hold, and the Clippers came back to win by one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dfv1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dfv1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dfv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80899,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://nealcfoster.substack.com/i/192570468?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dfv1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 424w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 848w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 1272w, https://substackcdn.com/image/fetch/$s_!dfv1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32687c9a-82a3-4865-ba6d-637122c6d2a7_1708x816.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Bullish divergence is the mirror image. The signal makes a new low but the RSI doesn&#8217;t confirm. One team is falling behind, but the momentum of the decline is fading. The losing team is stabilizing. Something is shifting underneath the surface that the score alone doesn&#8217;t capture.</p><p>This is the part that&#8217;s more art than science. A divergence doesn&#8217;t guarantee a reversal. It says the conditions for a reversal are building. Whether it actually happens depends on what happens next in the game. An experienced technician looks at the divergence, considers the game context, and makes a judgment call. The chart provides the signal. The human provides the interpretation.</p><h2>Support and resistance</h2><p>Look at the 50 line on the LAC @ IND Game Signal. Indiana&#8217;s signal dips toward it in Q2, bounces off it, dips again early in Q3, bounces again. That level is acting as support. As long as the signal stays above it, Indiana is holding control of the game.</p><p>When it finally breaks through in the final minutes, the move is decisive. The Clippers complete the comeback and win by one. A level that held for three quarters gave way, and the break was real.</p><p>As the game clock runs down, these levels compress. A three-point lead with ten minutes left and a three-point lead with ninety seconds left produce very different chart dynamics. Support that held comfortably in Q2 becomes fragile in Q4.</p><h2>What the CMTs see</h2><p>Watching certified market technicians use the platform was where this stopped being theoretical for me. They see things in the chart that I understand mathematically but wouldn&#8217;t spot intuitively.</p><p>A double divergence across RSI and MACD simultaneously - where both indicators are failing to confirm a new high in the signal - carries more weight than either divergence alone. A crossover happening near a support level tells a different story than a crossover in the middle of a trend. The shape of the signal&#8217;s approach to a resistance level - whether it&#8217;s decelerating or accelerating into it - changes how a technician interprets the likely outcome.</p><p>These aren&#8217;t things you can reduce to a simple rule set. Murphy&#8217;s book gives you the vocabulary and the framework. The application to a specific game in a specific moment requires judgment. The data transformation makes the patterns legible. The technician makes them useful.</p><h2>The art part</h2><p>Every technical analyst will tell you that indicators don&#8217;t make decisions. They inform decisions. Two people can look at the same chart with the same divergence and reach different conclusions based on their experience, their read of the game context, and their risk tolerance.</p><p>That&#8217;s not a weakness of technical analysis. It&#8217;s the nature of it. The chart is a lens for reading market dynamics. It surfaces information that&#8217;s hard to see otherwise. What you do with that information depends on who you are and what you&#8217;re looking for.</p><p>The transformation and game-clock reindexing that SportChartz does makes the charts worth reading. The decades of technical analysis methodology that people like Murphy codified makes them readable. But the reading itself - the judgment call in a live moment - that&#8217;s still a human skill. And it&#8217;s the part that makes this interesting.</p><p></p><p><em>Neal Foster is Co-Founder &amp; CTO of SportChartz and Founder &amp; Partner of Vybe Capital.</em></p>]]></content:encoded></item></channel></rss>