01 Friends Post Winning Slips Every Day, So I Decided to Let the Data Speak
It started in a classmate group chat. Starting last month, an old classmate posted winning sports lottery slips in the group every day—two winning days, one losing day—very loud when winning and pretending not to see it when losing. I asked him whether he was profitable overall, and he replied, "Don't do the math; it ruins the fun." I know that line—for anything people refuse to account for, the books usually don't look good.
I didn't rush to argue with him. It just so happened that this was a scenario I hadn't properly tested with the MuchSci "Programming" feature: have AI write a decent match prediction model, backtest it against public match results, then paper-follow it for a few rounds and see the true quality of "AI predicting football." The data is public, the model is textbook-grade, and the conclusion doesn't need guessing—run it once and you'll know.
▲ Figure 1 | Hand the problem to MuchSci and give the time back to research—this time my "problem" is: can a Poisson model actually beat random guessing?
Let me put my position up front: this article does not teach people to buy lottery tickets; it is paper simulation throughout, and I didn't spend a cent. This article answers only one question—what level is an AI-written prediction model actually at? The answer is in Section 4—not very flattering, but very valuable.
02 Let AI Write a Poisson Model: First Version in 10 Minutes
The data is publicly accessible English Premier League 2025-26 results: one row per match, with home team, away team, home goals, and away goals. I dropped the CSV into the chat and gave clear requirements: use each team's average goals scored and conceded over its last 10 matches to calculate attacking/defensive strength, derive each side's expected goals λ, then use the Poisson distribution to calculate the probability of every scoreline from 0:0 to 6:6, and aggregate them into three-way home/draw/away probabilities.
Ten minutes later, the first version of the script came out and ran pretty fast—then I found it was wrong. It treated "home goals scored" and "away goals conceded" as two independent pieces of information and counted strength twice; λ was double-counted, and all home-win probabilities floated above 70%. I wrote the definition into comments and had it rerun; only the second version was normal.
▲ Figure 2 | Core output of the Poisson model: home expected goals λ=1.8, most likely single-match goal counts are 1 and 2; away λ=1.1, most likely 1. The probability of every scoreline in a match is calculated by multiplying these two distributions.
What is this distribution good for? Multiply the probability of the home team scoring k goals by the probability of the away team scoring j goals to get the probability of each scoreline; then add up all scorelines where the home team scores more to get the home-win probability. It sounds crude—and it is crude; football is not independent red-and-white balls—but it is the starting point for all match models and good enough to be the protagonist of this test.
▲ Figure 3 | Model output for one match: home win 53%, draw 22%, away win 25%. The most striking part is the bottom line—market odds of 1.88 imply a home-win probability of also 53%; the model and the market thought alike.
The model can calculate "who is more likely to win," but it cannot calculate "whether the odds pay enough"—and the latter is what determines whether you can make money.
The third image was the most surprising one in the entire test. I thought the model's calculated probabilities would be exclusive intelligence, but they almost overlapped with market odds. Odds are probabilities voted by real money across the entire market. A Poisson model built from average goals scored and conceded can align with it in the broad direction, which shows the model "isn't broken"; but it also shows that what it knows, the market has known all along.
03 Backtesting 240 Matches: Better Than Random Guessing, but Not Better Than the Market
One match doesn't count. I had the AI add a backtesting script: feed the first 240 matches of the 2025-26 season to the model in chronological order—each match uses only prior historical data to calculate λ, output three-way probabilities, take the highest-probability item as the prediction, and check it against the actual result. To guard against luck, I had it run the same process three times and averaged:
▲ Figure 4 | 240-match backtest: pure random hit rate 33% (79 matches), Poisson model 47% (113 matches), market-odds implied 51% (122 matches). The model beats random guessing by 14 percentage points—but it is still a crucial step away from "being profitable."
How should we read 47%? Good news: it is clearly above random guessing's 33%, showing the model did learn something from the data. Bad news has two layers: first, it is still 4 points behind the market—odds incorporate injuries and suspensions, form, schedule motivation, and other information my model lacks; second, a 47% hit rate combined with the sports lottery's odds structure is very likely to lose money, and Section 4 verifies this with real data.
Beyond backtesting, I had it organize each round's predictions into a report, simulating actual use, like this:
▲ Figure 5 | Prediction report generated each round (the interface is illustrative; conclusions are organized from backtest and simulation records)
What I value most in this report is the small line of text in the sidebar: it can only see match-result data, not the world. Football results contain a lot of information the model can never get—who is injured, who is fighting relegation, who will rest starters for a European match next week. The reason market odds are hard to beat is that all these things have been bought into the price.
04 Five Rounds of Paper Trading: Hit Rate 48%, Return -7.8%
Backtesting is history; live testing is the mirror that exposes everything. Rules set: each round, pick the 5 matches with the highest confidence from the model output, stake a paper 10 yuan on each, record according to the current sports lottery odds, and follow 5 rounds for 25 matches total. No real money, all calculated at real odds:
▲ Figure 6 | Cumulative return of 5 rounds of paper betting: Round 1 +12% and I got cocky; Round 3 missed three high-odds bets in a row and dropped straight to -21%, finally closing at -7.8%. 12 hits out of 25 matches (48%), money negative (illustrative records; odds per the official site at the time)
The process was more interesting than the result. In Round 1, 3 picks with 1 hit turned a small loss into a profit, +12% on paper; I almost put "the model is reliable" in the title. Then came Round 3: three "high-value matches" with odds above 2.3 all lost, and I was back to square one overnight. Reviewing the ledger revealed a very neat pattern—all the hits were low odds from 1.5 to 1.7, and all the losses were high odds above 2.3. The model got matches right quite often; unfortunately, the ones it got right didn't have high enough odds.
It's not that the model is bad; it's that the math is bad: the sports lottery odds already have the payout margin taken out. A 48% hit rate with this odds structure has a negative long-term expectation. My classmate has "looked like he was winning" for two months; once the losing days are included, the books are very likely the same color as mine. This is also the real reason I wrote this article—the model turns "feelings" into "probabilities"; probabilities turn fantasies into ledgers; and ledgers are cold.
05 Let's Be Clear First: These Are Areas Where It Really Can't Help
After five rounds, here are three hard limitations on the table.
① It can't see news, only results. In the model's world there are only scores, no injuries or suspensions, rotation, or relegation motivation. The two obvious crashes in 5 rounds were both information like the first-choice goalkeeper being absent—"obvious in pre-match news, never in the results table." To cover this, you have to add data sources yourself, and the workload multiplies several times.
② You have to find and clean the data yourself. Public results are easy to find, but the definitions are messy: some sources count neutral venues as home, cups and leagues are mixed together, and whether extra time counts as a draw or a win/loss is inconsistent. The first version of the script crashed on a definition issue like "away goals conceded being double-counted." Cleaning data took more time than writing the model.
③ It gives probabilities, not answers. A 47% hit rate means the model is wrong in more than half of matches. After 5 correct picks in a row, what comes next is most likely mean reversion, not "the hot hand has arrived." Treating the model's output as the answer to "what should I bet on tonight" is the most serious misuse—it can only tell you how often something happens, not whether it will happen this time.
So when is this thing actually worth using? Here's the conclusion up front:
✓ When it's worth using: for people who want to systematically practice "data analysis + having AI write models"—football results data is public, free, large-sample, and the answer is revealed immediately, making it a great subject for practicing backtesting methods. The Poisson model, backtesting, and definition checks used here also apply to sales forecasting and user retention.
✗ When it's not suitable: for people who want to make steady money with it—the model is not smarter than the market, odds take a margin over the long term, and negative expectation is math, not opinion; and for people who want to ask "what should I bet on tonight"—this article has no answer and shouldn't have one. Hit rate and return are two different things; 48% versus -7.8% here is the evidence.
If I can give only one practical suggestion: treat the lottery as an entertainment budget and the model as a practice exercise. My biggest takeaway from these five rounds isn't that -7.8% ledger; it's that I can now see at a glance what's wrong with claims like "some AI predicts a 90% win rate"—the backtest period isn't stated, the sample size isn't stated, the odds structure isn't stated. Data literacy is the kind of thing that pays for itself after one practice.
Compliance and Boundary Statement
1. This article is entirely paper simulation, with no real betting; the amounts in the text are simulated bookkeeping.
2. The models, probabilities, and "predictions" in this article do not constitute any betting advice; the long-term expected return of lottery tickets is negative, so please treat it as entertainment spending.
3. No one under 18 may purchase lottery tickets. Play rationally and within your means.
Match results and odds are compiled from public sources; backtest and follow-betting data are illustrative; model output is subject to actual script runs. Feature descriptions are subject to the current version.
---
This article is a record of a personal usage process. The sports lottery prediction model is built on public match result data and is only used to demonstrate the "data → model → backtest" analysis method; it does not constitute any betting advice or return promise. The backtest and live-test data in the article are illustrative; the entire process is paper simulation with no real betting. The long-term expected return of lottery tickets is negative; no one under 18 may purchase lottery tickets. Play rationally and within your means. Feature descriptions are subject to the current version.