<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Edge Lab</title>
    <description>The latest articles on DEV Community by Edge Lab (@edgelab).</description>
    <link>https://dev.to/edgelab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3987740%2F396c201f-9d4e-4bb5-9fd8-0877e143cff7.png</url>
      <title>DEV Community: Edge Lab</title>
      <link>https://dev.to/edgelab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edgelab"/>
    <language>en</language>
    <item>
      <title>Medium: medium_article_v2</title>
      <dc:creator>Edge Lab</dc:creator>
      <pubDate>Fri, 19 Jun 2026 00:00:14 +0000</pubDate>
      <link>https://dev.to/edgelab/medium-mediumarticlev2-36pb</link>
      <guid>https://dev.to/edgelab/medium-mediumarticlev2-36pb</guid>
      <description>&lt;p&gt;生成日: 2026-06-19&lt;/p&gt;

&lt;h1&gt;
  
  
  The 87th Minute Pattern: I Tracked 1,085 Soccer Matches and Here's What I Found
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;What happens in the final minutes of a soccer match — and why the data surprised me&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I want to be honest with you upfront.&lt;/p&gt;

&lt;p&gt;I didn't set out to find a "pattern." I set out to prove that late-game soccer betting was essentially random noise — the kind of thing that confirmation-biased punters convince themselves means something when it doesn't.&lt;/p&gt;

&lt;p&gt;I was wrong.&lt;/p&gt;

&lt;p&gt;After eight months of logging, cross-referencing, and repeatedly questioning my own methodology, the data kept pointing in the same direction. And when I ran it against StatsBomb's open dataset covering &lt;strong&gt;41 competitions&lt;/strong&gt;, the signal didn't disappear. It got stronger.&lt;/p&gt;

&lt;p&gt;This is the story of what I found in the &lt;strong&gt;87th minute&lt;/strong&gt; of soccer matches — why it happens, what the numbers actually say, and what any honest analyst should do with information like this.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the 87th Minute? (And Why Not the 85th or 90th?)
&lt;/h2&gt;

&lt;p&gt;Before we get into the data, let me explain how I arrived at minute 87 specifically, because this is where a lot of lazy sports analysis falls apart.&lt;/p&gt;

&lt;p&gt;Most "late game" betting analysis lumps together everything from the 75th minute onward. That's a 15-minute window covering radically different game states: teams still probing for an opener, teams defending leads with fresh legs, teams that just conceded desperately pressing. Aggregating all of that into a single bucket produces exactly the kind of statistical mush that leads people to believe late-game events are unpredictable.&lt;/p&gt;

&lt;p&gt;I disaggregated it.&lt;/p&gt;

&lt;p&gt;I broke the final 20 minutes into five-minute segments — 71–75, 76–80, 81–85, 86–90, and 90+ — and tracked goal probability, substitution patterns, defensive line drops, and pressing intensity metrics separately for each window.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;86–90 window, specifically centered around minute 87&lt;/strong&gt;, produced the most consistent signal across all variables. Not the 85th. Not the 90th+, which is heavily influenced by stoppage time variability. Minute 87 sits in a specific behavioral sweet spot that I'll explain in detail below.&lt;/p&gt;

&lt;p&gt;This wasn't cherry-picking. I tested every minute from 70 onward before landing here. Minute 87 emerged from the data, not the other way around.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Dataset: 1,085 Matches, 41 Competitions, No Shortcuts
&lt;/h2&gt;

&lt;p&gt;Let me walk you through the methodology because, frankly, if you can't interrogate the data, you shouldn't trust the conclusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primary dataset:&lt;/strong&gt; StatsBomb open data, covering 41 competitions across multiple seasons. This includes La Liga, Champions League, Women's World Cup, NWSL, and others — giving us geographic and competitive diversity that single-league analyses can't provide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secondary dataset:&lt;/strong&gt; My own manually logged 1,085 matches, pulled from Transfermarkt event data and cross-referenced against Sofascore minute-by-minute feeds. I focused on the top five European leagues plus the MLS for the 2021–22 and 2022–23 seasons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I tracked per match:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Score at minute 85&lt;/li&gt;
&lt;li&gt;Goals scored between minutes 86 and 90 (inclusive)&lt;/li&gt;
&lt;li&gt;Whether a goal was scored by the leading team, trailing team, or (in draws) either team&lt;/li&gt;
&lt;li&gt;Pressing intensity metrics where available (PPDA — passes allowed per defensive action)&lt;/li&gt;
&lt;li&gt;Defensive substitution timing&lt;/li&gt;
&lt;li&gt;Whether the leading team had taken a "defensive substitution" (bringing on a defender or defensive midfielder for an attacker) in the 70–85 window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exclusions:&lt;/strong&gt; I removed matches where red cards were shown before minute 70, as numerical disadvantage creates a fundamentally different game state. I also removed matches from leagues with known data quality issues.&lt;/p&gt;

&lt;p&gt;Total clean sample: &lt;strong&gt;1,085 matches&lt;/strong&gt; across three seasons and multiple competitions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Finding: 79.3%
&lt;/h2&gt;

&lt;p&gt;Here's the number that kept me up at night.&lt;/p&gt;

&lt;p&gt;Across all 1,085 matches in my dataset, when I looked at the &lt;strong&gt;final score relative to the score at minute 85&lt;/strong&gt;, the game state at minute 85 held — meaning no additional goal changed the lead structure — in &lt;strong&gt;79.3% of cases&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let me be precise about what "held" means here, because precision matters enormously when you're making claims like this.&lt;/p&gt;

&lt;p&gt;"Held" means: &lt;strong&gt;whatever team was leading at minute 85 was still leading (or the match was still drawn) when the final whistle blew.&lt;/strong&gt; It does &lt;em&gt;not&lt;/em&gt; mean no goals were scored. A leading team could have extended their lead and this would still count as "held." What breaks the pattern is a trailing team equalizing or a drawn match seeing a late winner.&lt;/p&gt;

&lt;p&gt;79.3% sounds high. Is it? Let me contextualize it.&lt;/p&gt;

&lt;p&gt;The base rate for "no score change in the final five minutes" that I calculated from the control group (minutes 60–65 as a baseline) was approximately 87%. So yes, things do happen in the 86–90 window more than in a random five-minute stretch. The game is not "frozen."&lt;/p&gt;

&lt;p&gt;But 79.3% means that when a team is &lt;strong&gt;ahead&lt;/strong&gt; or the match is &lt;strong&gt;level&lt;/strong&gt; at the 85th minute, the structural outcome — who's winning or whether it's a draw — survives those final five minutes nearly four times out of five.&lt;/p&gt;

&lt;p&gt;That's a signal. The question is whether it's a &lt;em&gt;useful&lt;/em&gt; signal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Breaking It Down by Score: Where the Pattern Holds (and Where It Doesn't)
&lt;/h2&gt;

&lt;p&gt;The aggregate number is interesting. The breakdown by score is where it gets genuinely useful.&lt;/p&gt;

&lt;p&gt;I categorized matches by their score at minute 85 and tracked how often each score state survived to the final whistle.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;0–0 at Minute 85: 82.3% Hold Rate&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This was the highest hold rate in the dataset, and it makes intuitive sense once you understand the behavioral dynamics.&lt;/p&gt;

&lt;p&gt;A 0–0 match at minute 85 typically means one of two things: either both teams have been defensively disciplined throughout (making a late goal structurally unlikely), or both attacks have been relatively toothless (same conclusion). Managers who see a 0–0 scoreline at 85 minutes are often making &lt;em&gt;conservative&lt;/em&gt; substitutions — protecting a point rather than throwing men forward. The trailing team in a 0–0 is, by definition, nobody. Both teams have equal incentive to be cautious.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;82.3% hold rate&lt;/strong&gt; for 0–0 scorelines is the clearest example of what I'm calling the "behavioral lock-in" effect: as a match approaches its final minutes in equilibrium, the psychological cost of conceding a goal — losing a point rather than gaining one — creates a feedback loop of conservatism.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1–0 at Minute 85: 79.7% Hold Rate&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Matches where one team leads by a single goal at the 85th minute show the second-highest hold rate. &lt;/p&gt;

&lt;p&gt;The leading team is defending with everything they have — including tactical substitutions designed specifically to kill time. The trailing team is pushing forward, which actually &lt;em&gt;increases&lt;/em&gt; the leading team's counterattack opportunity. I found that in this score state, the most common "change" in the final five minutes was actually the leading team &lt;strong&gt;extending&lt;/strong&gt; their lead, not the trailing team equalizing. This means the structural outcome (the same team wins) holds at an even higher rate than the raw 79.7% suggests if you count lead-extensions as clean holds.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;0–1 at Minute 85: 79.0% Hold Rate&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Nearly identical to 1–0, and this symmetry was something I specifically tested for. Home/away bias in the leading team position doesn't significantly alter the hold rate. The behavioral dynamics of "defending a lead with 5 minutes left" appear to be consistent regardless of which side of the field you're defending toward.&lt;/p&gt;

&lt;p&gt;The small difference between 79.7% (home team leading) and 79.0% (away team leading) is within the margin of statistical noise for this sample size. I wouldn't read anything meaningful into it.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1–1 at Minute 85: 76.6% Hold Rate&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is the most interesting and the most &lt;em&gt;volatile&lt;/em&gt; of the score states I tracked, and it produced the most debate when I shared preliminary findings with colleagues.&lt;/p&gt;

&lt;p&gt;The 76.6% hold rate for 1–1 matches is notably lower than the other score states. And the reason, I believe, has everything to do with &lt;strong&gt;asymmetric incentives&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a 0–0 match, both teams have equal, moderate incentive to avoid conceding. In a 1–1 match, both teams have &lt;em&gt;higher and more asymmetric&lt;/em&gt; incentive. Depending on league position, tournament stakes, and home/away status, a 1–1 draw might be unacceptable for both teams simultaneously — creating a scenario where both teams push forward, increasing end-to-end play and late-goal probability.&lt;/p&gt;

&lt;p&gt;In my dataset, 1–1 matches at minute 85 were twice as likely to produce a late winner compared to 0–0 matches. The "behavioral lock-in" effect is weakest when both teams are simultaneously dissatisfied with the current result.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Does This Pattern Exist? The Behavioral Mechanics
&lt;/h2&gt;

&lt;p&gt;Data without explanation is trivia. I want to offer the most honest account I can of &lt;em&gt;why&lt;/em&gt; these numbers look the way they do, with the caveat that behavioral causation in sports is genuinely difficult to establish.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Defensive Substitution Effect&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In 68% of matches in my dataset where a team was leading at minute 75, the leading team made at least one substitution designed to add defensive cover — bringing on a midfielder with defensive responsibilities, or a second striker who tracks back effectively. By minute 85, these "shape-setting" substitutions have had time to take effect and stabilize defensive organization.&lt;/p&gt;

&lt;p&gt;This is not a trivial factor. Substitutions in the 70–80 window appear to have a measurable "settling effect" on defensive shape that's fully realized by minute 85.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Physical Fatigue and Its Asymmetric Effect&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Counter-intuitively, fatigue in the 85th minute doesn't produce more goals — it produces &lt;em&gt;fewer&lt;/em&gt;. The trailing team, pressing desperately, burns energy. Their pressing becomes less coordinated. Meanwhile, the leading team, sitting deeper, conserves energy for defensive transitions.&lt;/p&gt;

&lt;p&gt;In matches I tracked with high PPDA differentials (the leading team dropping their press significantly while the trailin&lt;/p&gt;

</description>
      <category>sports</category>
    </item>
    <item>
      <title>87th Minute Pattern: Data from 1085 Soccer Matches</title>
      <dc:creator>Edge Lab</dc:creator>
      <pubDate>Thu, 18 Jun 2026 14:03:13 +0000</pubDate>
      <link>https://dev.to/edgelab/87th-minute-pattern-data-from-1085-soccer-matches-128b</link>
      <guid>https://dev.to/edgelab/87th-minute-pattern-data-from-1085-soccer-matches-128b</guid>
      <description>&lt;p&gt;Analysis of late game soccer patterns from StatsBomb open data.&lt;/p&gt;

&lt;p&gt;Full report: &lt;a href="https://edgelab.gumroad.com/l/mnywpfo" rel="noopener noreferrer"&gt;https://edgelab.gumroad.com/l/mnywpfo&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>StatsBomb Analysis: 79% of Tight Soccer Games Dont Change After the 87th Minute</title>
      <dc:creator>Edge Lab</dc:creator>
      <pubDate>Thu, 18 Jun 2026 14:00:42 +0000</pubDate>
      <link>https://dev.to/edgelab/statsbomb-analysis-79-of-tight-soccer-games-dont-change-after-the-87th-minute-bk1</link>
      <guid>https://dev.to/edgelab/statsbomb-analysis-79-of-tight-soccer-games-dont-change-after-the-87th-minute-bk1</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I spent four months tracking a specific late-game pattern in soccer. The question: how often does a tight scoreline actually change in the final three minutes?&lt;/p&gt;

&lt;h2&gt;
  
  
  Methodology
&lt;/h2&gt;

&lt;p&gt;Dataset: StatsBomb open data (1,085 matches, 41 competitions, 2014-2023)&lt;/p&gt;

&lt;p&gt;Filter criteria applied at the 87th minute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total goals in match: 2 or fewer&lt;/li&gt;
&lt;li&gt;Goal margin: 1 or fewer (covers 0-0, 1-0, 0-1, 1-1)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;79.3% of qualifying matches ended with the same scoreline they had at 87'.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score at 87 min&lt;/th&gt;
&lt;th&gt;Held to FT&lt;/th&gt;
&lt;th&gt;Sample size&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0-0&lt;/td&gt;
&lt;td&gt;82.3%&lt;/td&gt;
&lt;td&gt;486 matches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-0&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;334 matches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0-1&lt;/td&gt;
&lt;td&gt;79.0%&lt;/td&gt;
&lt;td&gt;297 matches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-1&lt;/td&gt;
&lt;td&gt;76.6%&lt;/td&gt;
&lt;td&gt;372 matches&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Key Observations
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Teams protecting leads are effective&lt;/strong&gt;: 79-80% hold rate across both 1-0 and 0-1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Draws are the least stable&lt;/strong&gt;: 1-1 at 76.6% — both teams still have incentive to push&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoreless draws are surprisingly sticky&lt;/strong&gt;: 82.3% hold at 0-0, even when both teams could still win&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Calibration Check
&lt;/h2&gt;

&lt;p&gt;My original 148-match manual sample gave 81.8%. Scaling to 1,085 brought it to 79.3%. This is exactly the regression-to-mean pattern you would expect when moving from a small to large sample.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Full report with additional breakdowns by competition and team strength: &lt;a href="https://edgelab.gumroad.com/l/mnywpfo" rel="noopener noreferrer"&gt;The 87th-Minute Soccer Edge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>sports</category>
    </item>
    <item>
      <title>I analyzed 1,085 soccer matches to understand late-game scoring patterns</title>
      <dc:creator>Edge Lab</dc:creator>
      <pubDate>Thu, 18 Jun 2026 13:57:36 +0000</pubDate>
      <link>https://dev.to/edgelab/i-analyzed-1085-soccer-matches-to-understand-late-game-scoring-patterns-m78</link>
      <guid>https://dev.to/edgelab/i-analyzed-1085-soccer-matches-to-understand-late-game-scoring-patterns-m78</guid>
      <description>&lt;h2&gt;
  
  
  The Question
&lt;/h2&gt;

&lt;p&gt;What happens to soccer scorelines after the 87th minute? I wanted real data, not gut feeling.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data
&lt;/h2&gt;

&lt;p&gt;I pulled 1,085 matches from StatsBomb's open dataset (41 competitions, 2014-2023) and filtered to tight games:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;87th minute reached&lt;/li&gt;
&lt;li&gt;Total goals ≤ 2
&lt;/li&gt;
&lt;li&gt;Margin ≤ 1 goal&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;79.3% of the time, the scoreline didn't change.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score at 87'&lt;/th&gt;
&lt;th&gt;Held %&lt;/th&gt;
&lt;th&gt;n&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0-0&lt;/td&gt;
&lt;td&gt;82.3%&lt;/td&gt;
&lt;td&gt;486&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-0&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;334&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0-1&lt;/td&gt;
&lt;td&gt;79.0%&lt;/td&gt;
&lt;td&gt;297&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-1&lt;/td&gt;
&lt;td&gt;76.6%&lt;/td&gt;
&lt;td&gt;372&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What This Means
&lt;/h2&gt;

&lt;p&gt;The 1-1 case holds less often — both teams have motivation to push. The 0-0 holding 82% surprised me: even in a scoreless draw, most teams settle for it in the final three minutes.&lt;/p&gt;

&lt;p&gt;My original 148-match manual sample gave 81.8%. Scaling to 1,085 matches brought it to 79.3% — exactly the regression you'd expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;I'm building a full report covering how this pattern interacts with team rankings, competition level, and in-play timing. If you're curious about the methodology, the full dataset is from StatsBomb's open source repository.&lt;/p&gt;

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