When the Model Returns Zero: Archaeology of a Football Data Pipeline That Died Silently Mid-Season
I was sitting in front of three monitors in a rented apartment in Jing'an...
I was sitting in front of three monitors in a rented apartment in Jing'an District, Shanghai, at 2:14 a.m. The third monitor displayed exactly one word: N/A. Next to it was a spreadsheet twelve columns wide, and all twelve columns were empty. No club name. No player name. No score. No date. No source. Only the grey lines the system generated to tell itself that it had nothing to say.
I have spent twenty-eight years reading football spreadsheets. I have watched beautiful models collapse in the first forty-five minutes of extra time. I have written about shocks and then had to delete the piece, rewrite it, and humble myself in the comments. But this was the first time I saw an analytical pipeline return absolute zero — a silent death, noiseless, with no red error message, just emptiness carefully formatted as though it were a finding.
And I realised: this is the most worthwhile thing to write about this week.
In football, we are used to data arriving late, data being wrong, data being faked. We are not used to data failing to arrive. A match can be postponed for rain. A player can be substituted in the first minute. A goal can be stripped away by VAR after four minutes of waiting. But an expert-grade analytical system returning a blank page has no precedent in my memory. No images to replay. No slow-motion sequences to analyse. Only silence. And silence, to a man who reads numbers for a living, is the loudest sound there is.
Context: a decade of building pipelines
Over roughly a decade, the football analytics industry has built a data pipeline more massive than that of any other sport. Every match in a major league now generates thousands of data points per second: the positions of twenty-two players on the pitch, movement speed, running direction, distances between lines, number of passes, pass completion rate, pressure, and above all xG — the metric estimating the probability that a shot becomes a goal.
Based on my experience following matches, I can say that xG has changed the way we tell the story of a game. A 1-1 draw with twenty shots on target used to be called unlucky. Now it is called superior in process but defeated in outcome. The language has changed. The way we accuse and acquit a manager has changed with it.
But the pipeline does not run itself. It has three layers. The first is collection: data providers attach tracking devices to the pitch, hire people to tag events in real time, and resell to platforms. The second is analysis: where an article, a report, a model is generated from raw data. The third is storytelling: where journalists, analysts, and fans turn metrics into words.
In my trade, people call the first two stages by technical names. Stage one is deconstruction — reading an article, extracting information points, identifying entities, assessing time sensitivity, grading the source. Stage two is deep analysis — taking those information points and placing them across nine dimensions: tactics, finance, results, league context, rules, dressing room, risk, media, and industry transmission.
Both stages share a golden rule: if the input is empty, the output must be empty. No fabrication. No unfounded speculation. No filling gaps with intuition and calling it analysis.
That rule sounds obvious. But it is the most violated rule in the entire sports analytics industry.
Tonight, the pipeline obeyed the rule. And the result was a blank page. I looked at it, and instead of disappointment, I felt something close to respect.
Core: dissecting a blank page
The document I was reading had a very serious title: Stage-Two Deep Professional Analysis — Football Domain. It was long. It had tables. It had a nine-part structure, a comprehensive assessment, an information-value rating, even a glossary of professional terms at the end. Formally, it was a complete text. In substance, it was a confession.
The first thing that struck me was the warning at the top. It said that the Stage-One deconstruction result supplied for the analysis was effectively empty. Every substantive field was blank, N/A, or an unpopulated placeholder. Article title: N/A. Article source: N/A. Article type: unclassified. Core viewpoints: blank. Information points: empty list. Entities involved: identify from the information points above, but there was nothing above to identify. Time sensitivity: not assessed. Source quality: cannot be judged.
Then the document declared something I had to read three times to believe: under the execution constraints on null handling and format completeness, this Stage-Two analysis could not generate any substantive sporting, financial, or governance conclusions. Doing so would violate the core principle that every dimension of analysis must be grounded in the Stage-One information points.
In other words, the system caught its own error before I could raise my hand. It recognised it had no ingredients, and it refused to cook.
This is a moment I want to linger on, because it is rare. In betting and sports analytics, the natural reflex when facing a gap is to fill it. A manager loses his job, a player is absent, a transfer rumour has no source — all of these are gaps, and all of them are filled immediately with the most assertive language the writer can think of. Every model is wrong, but a few are wrong usefully. The worst is the one that is wrong confidently and without data.
This document did the opposite. It kept the nine-part framework intact, and at every position requiring content, it wrote four words: insufficient information, cannot assess.
I counted. Those four words appear more than fifty times across the text.
That is deliberate repetition. Each repetition is a refusal of temptation. It refused to speak about tactics when there was no lineup. It refused to speak about finance when there was no figure. It refused to speak about the dressing room when there was no name. It refused to speak about rules when no rule system was referenced.
Dissecting nine dimensions of emptiness
The first dimension is tactics and technique. The document states it cannot assess the sophistication of a tactical system, cannot assess execution, cannot assess personnel fit, and that no key metrics were supplied. No formation was identified. There is no basis to judge the feasibility of a tactical idea.
For someone who has spent whole weeks arguing about whether a back three can hold up against a pair of flying full-backs, this is a chilling reminder. We argue about tactics every day. We call a manager outdated after one defeat. But when asked to point to the data behind that judgement, most of us hold nothing but a feeling.

The second dimension is club finance and the transfer market. The document states there is no broadcasting revenue, no commercial revenue, no wage expenditure, no net debt. No deal to value. No contract structure to dissect. No panic-premium risk to warn about.
This is the dimension the sports industry loves most, because it holds big numbers and beautiful stories. A ninety-million-euro deal is always easier to sell than a deal that does not exist. But a deal that does not exist cannot be dissected. And the system said exactly that.
The third dimension is sporting results and the opinion cycle. No standings. No recent form. No fixture factor. No divergence between process data and results. No pressure on the manager, the core players, the board — because nobody was named.
This is the dimension I know best. A manager usually loses his job not because the team loses, but because the story around the losing has reached boiling point. And that temperature, in our world, is measured in social-media data, in the number of critical articles, in the odds on his chair.
The fourth dimension is league landscape and team positioning. The document draws an empty diagram: title contenders, European spots, mid-table, relegation zone — all N/A. No team was entered to populate the landscape. No resource comparison was constructed. No talent-flow signal was detected.
The fifth dimension is rules and governance compliance. No primary rule system. No compliance risk level. The checklist covering financial fair play, transfer registration, disciplinary sanctions, competition eligibility — all N/A. No sanction scenario was modelled: no worst case, no central case, no optimistic case.
The sixth dimension is management and the dressing room. No owner, no coach, no player was identified. No leadership structure. No manager-player relations. No generational transition. No one to place on the tracking board for age curve, contract status, injury risk, media pressure.
The seventh dimension is the risk profile. The six-row risk matrix — sporting, financial, personnel, rules, public opinion, systemic — was empty. And here the document admitted something subtle: the only identifiable risk is a meta-risk — the analytical input itself was void.
The eighth dimension is media narrative and expectation. No current narrative. No heat-cycle phase. No expectation gap between market and objective assessment. No frenzy or panic signal. No transfer rumour to grade for source credibility.
The ninth dimension is the football industry transmission chain. The upstream-to-downstream diagram — academy and talent supply, clubs and competitions, broadcasting and derivative markets — was N/A across all three layers. No agent ecosystem. No capital network. No derivative market. No national-team ecosystem.
Nine dimensions. Nine refusals.
And then came the comprehensive assessment.
The comprehensive judgement and the honest moment
The document's core judgement was this: the Stage-One deconstruction result contains no analysable content. All fields are empty, N/A, or unpopulated placeholders. It is therefore impossible to produce any substantive football analysis without fabricating facts — which the analytical framework expressly forbids. The correct output is a transparent null-handling report, not speculative commentary.
I read that line and I thought about all the times I had done the opposite.
In 2026, when I was a senior specialist for a new sports platform, I published an analysis before Shanghai SIPG faced Shandong Luneng on matchday eighteen of the Chinese Super League. The piece used xG: SIPG had an xG of 2.8 against the opponent's 0.4, and I predicted a 3-1 win, while traditional experts all picked a draw. The final score was exactly 3-1. The article reached fifty thousand views in twenty-four hours.
But I did not stay with that topic. Because I was excited by new directions, I immediately abandoned the series to experiment with a basketball betting model, irritating my editor. I had a moment of being right, and I left it mid-road to chase another moment that had not yet happened.
Then came the 2026 World Cup. After the previous year's success, a betting company hired me as chief analyst. My model, based on the PPDA metric and defensive-line height, correctly predicted South Korea beating Germany 2-0. Son Heung-min scored in the sixth minute of second-half stoppage time, and I posted a message urging people to bet along with the model. It was the brief peak of arrogance.
In the round of sixteen, my model believed Brazil would beat Belgium, because Brazil's expected defensive numbers were better. I asserted that on live television. Kevin De Bruyne scored, Belgium won 2-1, Brazil were eliminated. Many clients lost money because they listened to me.
I argued bitterly on social media with a colleague, then spent three weeks rewriting the source code. I added a tournament variable. I added a coefficient for randomness. And I learned something that became a mandatory disclaimer in every piece I have written since: the model is only a probability, not a prophecy.
But there was a deeper lesson I only realised when reading this blank document tonight. In 2026, I was not short of data. I had data. I had metrics. I had a model. And I was still wrong, because I had turned data into belief. Tonight's document is different. It has no data, and it refuses to turn emptiness into belief.
Between those two extremes — a man with data who speaks as though he holds the truth, and a system with no data that correctly says it does not know — I choose to trust the system.
Null handling as a virtue, not a fault
In data science, null handling is a tedious chapter of the curriculum. Nobody dreams about it. People dream about neural networks, about large language models, about predictions that make the whole world doff its hat. Null handling is the work people only remember when everything has already collapsed.
But this document shows that null handling can be the smartest part of an entire system.
Imagine a world in which every model is obliged to declare its own emptiness. A manager must say: I have no data to prove this defence is good. A journalist must say: I have no source to confirm this transfer rumour. A betting analyst must say: my model does not have enough of a sample to predict this match.
That world would be more boring. Fewer sensational headlines. Fewer arguments. And perhaps fewer people losing money.
I think about that every time I read an information-value rating. This blank document scored itself one star across all four dimensions: sporting value, industry value, timeliness value, reference value. It did not praise itself. It rated itself low, and was honest about rating itself low. Every spreadsheet is a meditation, except that when the meditation ends you have lost money. But a spreadsheet that declares itself empty is a meditation that costs nothing — it saves you the loss you nearly planted.
The document went further when classifying risk. It split risk into three levels. High: the analytical input is void, so return to Stage One and re-run the deconstruction with a valid article. Medium: downstream automation risk — if this empty output feeds an automated pipeline, it may generate hallucinated analysis, so a validation gate should halt processing when the information-point list is empty. Low: a source-traceability gap — no article source was recorded, so source metadata should be captured at Stage One.
These are three risk levels for a system that produced nothing at all. And all three are correct.
The medium risk deserves a pause. It says the greatest danger is not a model that returns zero. The greatest danger is an automated pipeline that receives empty input and keeps running anyway, because it was programmed to always return an answer. In our world, a system that must always have an answer is a system that will always invent one. And an invented answer about a football match can make someone bet a month's salary.
The document also proposed a concrete fix: add a validation gate that halts processing when the information-point list is empty. It is a small line of code. But it is the boundary between an honest system and a boastful one.
A survivor's glossary
At the end of the document is a glossary of professional terms. To me, that is the most interesting part, because it is the only place where the text allows itself to speak about real things.
xG, or expected goals, is a metric estimating the probability that a shot becomes a goal, used to measure chance quality. I have used xG since 2026, and I still hold my view of it: xG does not score goals, but it makes people argue more than the ball itself. A shot from the edge of the box with an xG of 0.03 can go in and become the moment of the season. A penalty with an xG of 0.78 can be saved and become a tragedy. xG does not judge the value of the moment. It only measures probability before the moment happens.
PPDA, or passes allowed per defensive action, is a metric measuring pressing intensity. Lower values mean more aggressive pressing. This is the metric I used in my 2026 model to predict South Korea beating Germany. It was right in that match. It also helped make me overconfident in Brazil against Belgium. A metric that is right once is not a metric that is right. It is only a metric that has not yet been wrong.
FFP, financial fair play, is the European football governing body's rule requiring clubs to balance football-related spending against revenue. PSR, profit and sustainability rules, is the Premier League version, limiting allowable losses.
These two terms make me think about another dimension of emptiness. Whenever a big club is investigated financially, the media is flooded with figures on revenue, wages, debt. But most of those figures are published selectively, at a convenient time, in a convenient structure. Medical confidentiality leaves fans and media blind to injuries; clubs only publish the injuries that suit their value. Financial confidentiality works the same way. What we call transparency in modern football is often just emptiness framed more beautifully.
Then come the glossary's final terms: Stage One and Stage Two, and null handling. Stage One is deconstructing an article to extract information points. Stage Two is deep analysis. Null handling is the framework rule requiring an explicit insufficient information, cannot assess instead of guessing.
Those three terms are not football terms. They are the terms of a machine. And their presence in a document about football is exactly what I want to say throughout this piece: modern football has become a machine, and that machine sometimes breaks in ways we do not yet have words for.
Disappearing data is a type of data
I have a line I use often in talks with students of sports analytics: data disappearing is not data loss — it is a type of data. Tonight, I have proof of that line.
When a match has enough data, we learn about the match. When a match lacks data, we learn about the data-collection system. And when an analytical system returns zero, we learn about the very framework we use to understand football.
Tonight's blank page tells me three things.
First, it tells me the pipeline has a break upstream. Not in the analysis stage, but in the deconstruction stage. An article entered the system and left no trace. No title, no source, no information point. That means either the article does not exist, or it exists but was lost along the way. Both possibilities are equally worrying. If the article does not exist, we are running an analytical machine on nothing. If the article exists but was lost, we have a hole in the pipeline that nobody noticed until a man sitting in front of three monitors at two in the morning saw it.
Second, it tells me the system has self-awareness. It did not just return empty; it returned a report about its own emptiness. It knows it is empty, and it says so. In an industry where confidence is often valued above accuracy, this is a rare virtue.
Third, it tells me the reader — in this case me — is also part of the pipeline. Because when I received a blank page, my first reflex was to find a way to fill it. I thought about inventing a match, a club, a story, just to have something to write. I thought about turning the emptiness into a vague philosophical lesson and calling it analysis.
I nearly did it. And then I realised that doing so would make me the very thing the document warns against: the automated system that must always return an answer, even when there is nothing to answer.
Football stopped rolling in 2026, but randomness has never taken a lunch break. The pandemic taught the analytics industry a lesson it has still not fully learned: that every model can be voided by a variable outside every model. In 2026, that variable was a virus. This year, it is an empty article.
But the lesson is the same. The machine is not invincible. The machine can die silently. And what matters is not whether the machine dies, but whether, when it dies, it is honest enough to say it has died.
The contrarian angle: emptiness is more honest than any number
Here I have to say something most of my readers will not like.
Tonight's blank document has higher value than most of the number-packed analyses I read every week.
That sounds absurd. A text that says nothing about any match — how can it be worth more than an analysis of a real match? The answer lies here: most of those number-packed analyses are lying, and they lie so subtly that readers do not notice.
Imagine a typical analysis before a big match. It opens with the xG of both teams over the last five games. It compares PPDA. It cites pass completion rates. It concludes that team A is slightly ahead of team B. Everything has a number. Everything has a source. And everything can be wrong, because a five-game sample is not enough to conclude anything about a match that has not yet happened.
That analysis looks valuable because it is full. But its fullness is an illusion. It fills the gap with real but insufficient metrics, then calls that a conclusion. That is a more sophisticated version of fabrication. Crude fabrication is easy to spot. Sophisticated fabrication is called expertise.
The blank document does the opposite. It has a nine-dimension framework, as complete as any analysis. It has tables, assessments, ratings. But instead of filling gaps with metrics, it leaves the gaps intact and states plainly that they cannot be filled.
That is why I call it more honest. Not because it says more. But because it does not say what it does not know.
There is an obvious counter-argument. If every system returns zero when data is missing, we will never have any analysis at all, because perfect data does not exist. Every decision in football is made under uncertainty. A manager must pick a lineup without knowing for sure which player will get injured. A scout must sign a contract without knowing for sure which young player will make it. If you wait for enough data before acting, you will never act.
That counter-argument is correct. And it does not contradict what the document does.
Because the document does not say that lacking data means you cannot analyse. It says that lacking data means you cannot fabricate data. Those are different things.
A manager can pick a lineup based on intuition and experience. That is a valid decision under uncertainty. But if he says his intuition is data, then he is fooling himself and others. The difference lies in acknowledging the origin of the decision. Intuition is intuition. Data is data. And a gap is a gap.
In betting, this confusion costs real money. When a model tells me it believes team A wins with a probability of sixty percent, and the model actually has only three games of data, then that sixty-percent figure is a lie formatted as a probability. The bettor reads it as truth. And the bettor loses money.
The blank document offers no probabilities. And that is what makes it safer than every model I have ever written.
There is a deeper layer in this contrarian angle. We usually think the value of an analysis lies in its conclusion. But most of the value of an analysis lies in identifying what is still unknown. A good map is not a map that fills every gap. A good map is a map that marks clearly where there are dragons.
This blank document is a map that marks clearly where there are dragons. It draws nine regions, and in each it writes: unsurveyed. For an analyst, that is the most useful thing you can receive, because it tells you exactly where to go and collect data first.
For a reader who only wants to hear who wins, it is a disappointment. And perhaps we need more disappointments in this industry.
Takeaway: the signal for the next round
I closed the three monitors at nearly four in the morning. Outside the window, Shanghai was still lit, and I thought about all the matches coming this weekend — matches I will again sit down to analyse, again build models for, again write predictions about.
I will still do this job. I will still use xG, still read PPDA, still add and subtract numbers and call them knowledge. But tonight has left me a note I will stick on the third monitor: before asking the model what it predicts, ask it whether it has anything to predict.
Because the most important signal for the next round is not which team will win. It lies in whether our pipeline is still alive. A system that knows how to say insufficient information, cannot assess is a system worth trusting. A system that always returns an answer no matter the input is a system that will soon take us to the edge.
And I wonder: if every sports analysis in the world tonight had to declare its own level of emptiness, how many percent of them would return zero?
I do not have the answer yet. But for the first time in years, I am comfortable not having one.
