Which model does Kneeslide use?
The table predictor and match simulator use KElo 2.0.0. Version 1 is archived. Version 3 is a tested research candidate, not a model that has powered the live forecasts. Its extra complexity has not produced a dependable improvement in match predictions, and its season uncertainty ranges performed worse in the paired test.
KElo is Kneeslide’s own rating of relative team strength. The forecast combines that rating with goals, expected goals (xG), venue and remaining opponents. A rating is not a league-points total, and a higher rating does not translate directly into a title probability. Strength of schedule separately uses sourced ClubElo ratings; those values are not interchangeable with KElo.
| Setting | V1 · archived | V2 · live | V3 · research |
|---|---|---|---|
| Elo update K | 20 | 20 | 20 |
| Home adjustment in Elo | 60 points | 0 points | 0 points |
| Offseason Elo regression | 20% | 10% | 0% |
| Winning-margin multiplier | None | None | √margin, capped at 2× |
| Goals/xG form | Decayed raw rates | Decayed raw rates | Opponent-adjusted rates |
| Elo / form exponents | 0.6 / 0.5 | 0.6 / 0.5 | 0.6 / 0.25 |
| European strength evidence | Not included | Not included | Tested; weight 0 selected |
| Promotion prior / workload | Not included | Not included | Tested; disabled |
The calculation shared by all three
Ratings are reconstructed in date order from 2014–15. Before each match, the rating gap determines an expected result score. For home rating Rₕ, away rating Rₐ and temporary home adjustment H:
Eₕ = 1 / (1 + 10(Rₐ − Rₕ − H) / 400)
ΔRₕ = K × M × (Sₕ − Eₕ)
R′ₕ = Rₕ + ΔRₕ; R′ₐ = Rₐ − ΔRₕ
S is 1 for a win, ½ for a draw and 0 for a defeat. M is 1 in versions 1 and 2; version 3 scales it by goal margin. The opponent gains exactly what the other team loses. E is an expected result score, with draws worth half, not the forecast’s win probability.
With equal ratings and H=0, E=0.5. At K=20, a one-goal win adds 10 rating points, a draw changes nothing, and a defeat removes 10. Against an opponent where E=0.75, a win adds 5, a draw removes 5 and a defeat removes 15. Unexpected results move ratings more.
Why 1500?
1500 is the reference origin. Moving every rating and the reference by the same amount leaves rating gaps and predictions unchanged. The consequential assumption is the relative strength assigned to an unseen club: the live model starts it at 1500. A returning club retains its previous recorded rating, with the applicable season-start adjustment. Neither rule directly measures how much stronger or weaker its squad has become.
From strength to match probabilities
The live scoring model first estimates expected home and away goals. A and D are attacking and defensive goal-rate factors; a larger D means more goals conceded. Each blends recent goals and xG equally. Bₕ and Bₐ are separate home and away scoring bases from the preceding league season, shrunk toward a prior.
λₕ = Bₕ × exp(0.6 × (Rₕ − Rₐ) / 400) × (Aₕ × Dₐ)0.5
λₐ = Bₐ × exp(−0.6 × (Rₕ − Rₐ) / 400) × (Aₐ × Dₕ)0.5
P(goals = g) = exp(−λ) × λg / g!
Goal rates are bounded to 0.08–5. Score probabilities are evaluated from 0 to 20 goals and normalized; summing the home-win, draw and away-win scorelines gives the three outcome probabilities. The selected low-score correction is zero in all three versions. Version 3 uses exponent 0.25 for its opponent-adjusted form factors instead of 0.5.
The raw form estimator retains 96% of its previous weighted observations after each match, adds the new goals, and uses eight prior observations at 1.35 goals. Between seasons those accumulated observations retain 60% of their weight. These form rules are separate from offseason Elo regression. Missing xG is not treated as zero. In version 3, opponent-adjusted form updates at 8% per full-weight match using the opponent’s pre-match factors.
Version 1: a fixed Elo baseline
Version 1 used K=20, a 60-point home adjustment and 20% offseason regression. The last two were starting assumptions, not estimates established by Kneeslide’s historical tests. A 1–0 win and a 5–0 win caused the same rating change at identical pre-match ratings.
For equally rated teams, H=60 gives Eₕ≈0.5855. A home win therefore earns 20×(1−0.5855)≈8.29 points; an away win earns about 11.71. At the season boundary, the rule was R_new=1500+0.80×(R_old−1500): a 1,700 club became 1,660 and a 1,300 club became 1,340. This removed 20% of the distance from the reference, not 20% of the rating.
Version 2: the active model
Version 2 replaced the fixed home and offseason settings with a historical parameter search. Across 4,800 combinations, selection used 1,520 pre-match predictions in 2019–23 after a 2014–19 warmup. The selected settings were K=20, H=0 and 10% offseason regression. A 1,700 rating now becomes 1,680, while 1,300 becomes 1,320.
H=0 does not remove home advantage from the forecast. It removes the extra venue term from the Elo update; the separate home and away goal bases still distinguish venues. For the dated 2026–27 configuration, those bases are approximately 1.538 and 1.212 before team-specific adjustments.
Version 2 had slightly lower selection-period log loss than version 1 (0.98216 versus 0.98257). Its later audit was mixed: log loss improved very slightly, while Brier score was slightly worse. It remains the deployed baseline because version 3 has not made a convincing case for replacement—not because version 2 has been proven optimal.
Version 3: richer evidence, insufficient improvement
The research engine adds capped goal-margin updates, opponent-adjusted attack and defence, European results, Championship-informed promotion priors and calendar workload. The dataset contains 62,554 matches and 36 completed promoted-club examples. The staged search evaluated 10,504 core/scoring combinations.
The selected candidate retains K=20, chooses no annual Elo regression, and sets M=√min(4,max(1,|home goals−away goals|)). A one-goal margin has M=1, two goals M≈1.414, and four or more goals M=2. This limits how much one large win can move the rating. The four-goal cap is still a modeling assumption.
European strength weights of 0%, 25%, 50% and 100% were tested. Zero performed best in development. Promotion-prior blends of 0%, 50% and 100% also selected zero. Rest-day and previous-14-day match-minute adjustments failed to improve the development objective. Those components are implemented but disabled in the selected candidate.
That is evidence about these implementations, not proof that Europe, promotion strength or fatigue are irrelevant. European opponents outside the covered domestic leagues have weaker histories; a one-statistic Championship prior is limited; match duration is an imperfect proxy for individual squad load. Domestic cups contribute calendar load, not strength updates. European extra-time games without verified regulation scores are excluded from strength updates.
Two matches, calculated three ways
These are retrospective reconstructions from pre-match inputs, not forecasts published before the games. Each version has its own accumulated history. Differences between rows reflect the complete model, not just one isolated parameter. Displayed ratings are rounded; calculations use full precision.
Arsenal 5–0 Chelsea · 23 April 2024
| Version | Arsenal before → after | Opponent before → after | Expected score Eₕ | Arsenal change |
|---|---|---|---|---|
| V1 · archived | 1686.41 → 1691.11 | 1541.37 → 1536.67 | 0.7650 | +4.70 |
| V2 · live | 1704.41 → 1710.43 | 1558.25 → 1552.23 | 0.6987 | +6.03 |
| V3 · research | 1786.76 → 1796.92 | 1599.57 → 1589.41 | 0.7460 | +10.16 |
V2: 20 × (1 − 0.6987) = +6.03
V3: 20 × 2.0000 × (1 − 0.7460) = +10.16
The live model rewards the win by 6.03 rating points; it would give the same Elo reward for 1–0 at those pre-match ratings. The research model gives 10.16, with its margin multiplier capped at 2 even though Arsenal won by five. Chelsea loses the corresponding amount. The score also updates each model’s attacking and defensive form, so score margin can influence subsequent forecasts even when the Elo update itself ignores it.
| Version | Expected goals, home / away | Home win | Draw | Away win |
|---|---|---|---|---|
| V1 · archived | 2.58 / 0.96 | 72.3% | 15.9% | 11.8% |
| V2 · live | 2.59 / 0.96 | 72.4% | 15.9% | 11.7% |
| V3 · research | 2.45 / 0.84 | 72.9% | 16.3% | 10.8% |
Arsenal 0–2 Aston Villa · 14 April 2024
| Version | Arsenal before → after | Opponent before → after | Expected score Eₕ | Arsenal change |
|---|---|---|---|---|
| V1 · archived | 1694.26 → 1679.85 | 1589.85 → 1604.26 | 0.7204 | -14.41 |
| V2 · live | 1712.50 → 1699.50 | 1605.15 → 1618.15 | 0.6498 | -13.00 |
| V3 · research | 1801.52 → 1781.51 | 1648.29 → 1668.29 | 0.7072 | -20.00 |
V2: 20 × (0 − 0.6498) = -13.00
V3: 20 × 1.4142 × (0 − 0.7072) = -20.00
The upset costs Arsenal 13.00 rating points in version 2 and 20.00 in version 3; Villa gains the same amounts. Version 3 was more confident in Arsenal before the match and responds more strongly to the two-goal defeat. A stronger reaction after the event does not mean it predicted the event better.
| Version | Expected goals, home / away | Home win | Draw | Away win |
|---|---|---|---|---|
| V1 · archived | 2.45 / 0.98 | 69.6% | 17.1% | 13.3% |
| V2 · live | 2.46 / 0.98 | 69.9% | 17.0% | 13.1% |
| V3 · research | 2.39 / 0.83 | 72.0% | 16.8% | 11.2% |
Villa’s away-win probability was 13.1% in V2 and 11.2% in V3. For the actual away win, log loss is −ln(p): 2.032 for V2 versus 2.189 for V3. Lower is better; the research model did worse on this particular match.
What changed for Arsenal and Chelsea’s projections?
This comparison uses the stored 2 November 2026 snapshot and 10,000 season simulations per version. It is a dated model comparison, not today’s forecast. Each entry shows projected final points and title probability.
| Club | V1 · archived | V2 · live model | V3 · research |
|---|---|---|---|
| Arsenal | 84.55 pts · 66.5% | 85.83 pts · 67.4% | 88.09 pts · 68.5% |
| Chelsea | 59.14 pts · 0.6% | 59.51 pts · 0.5% | 59.90 pts · 0.1% |
Arsenal gains 1.28 projected points from V1 to V2 and another 2.26 in the research forecast. Chelsea’s mean points rise across versions, while its title probability falls: title chances depend on the joint distribution of every club’s finish, not just its own average. Small probability changes also contain Monte Carlo noise. V3 additionally changes historical data reconciliation and fixture ordering; this is not a controlled estimate of the margin feature alone.
What the backtests establish
All three match audits below cover the same 1,140 Premier League matches in 2023–26. Lower log loss and Brier scores are better. Log loss penalizes a low probability assigned to the outcome that occurred. Multiclass Brier score sums the squared errors across home win, draw and away win: Σ(p_k−y_k)².
| Match audit | V1 | V2 | V3 |
|---|---|---|---|
| Log loss | 0.98406 | 0.98387 | 0.98380 |
| Brier score | 0.58677 | 0.58683 | 0.58723 |
| 2023-24 log loss | 0.93333 | 0.93069 | 0.92380 |
| 2024-25 log loss | 0.98787 | 0.98819 | 0.98808 |
| 2025-26 log loss | 1.03099 | 1.03273 | 1.03952 |
V3’s aggregate log-loss advantage over V2 is only 0.00007. It improves 2023–24, is almost unchanged in 2024–25, and worsens 2025–26. The descriptive 95% season-bootstrap range for V3 minus V2 runs from -0.00689 to +0.00678 and crosses zero. With only three season clusters, that range is weak evidence rather than a precise confidence claim.
Season forecasts and uncertainty
Season forecasts simulate the remaining fixtures, starting from points already earned. A persistent sampled strength offset, with standard deviation 70 Elo points per club, represents uncertainty about future strength. It was selected in the earlier model work and retained for this V3 comparison, not recalibrated for the candidate.
| Measure | V2 | V3 |
|---|---|---|
| Mean absolute final-points error ↓ | 6.82 | 6.76 |
| 80% interval coverage | 76.7% | 74.2% |
| 80% interval score ↓ | 27.89 | 28.58 |
An 80% interval should contain the realized points total about 80% of the time. Its score penalizes width and misses: (upper−lower)+10×max(0,lower−actual)+10×max(0,actual−upper). A 60–80 interval with an actual total of 84 scores 20+10×4=60. V3 slightly reduces average points error but misses more intervals and has a worse interval score.
The audit requests cutoffs at 0, 90, 190 and 280 matches, including every result on the final included date. It evaluates earned points before administrative deductions. Earlier V1/V2 season reports used exact match-count cutoffs; their numbers should not be mixed into this paired table. Repeated cutoffs from the same season are correlated.
Selection, data quality and remaining assumptions
V3 development uses 2017–23, with rolling selection folds in 2019–23 that fit scoring weights only on earlier seasons in each fold. Core selection reuses those folds in stages; it is not an exhaustive search or an unbiased nested evaluation. The 2023–26 audit was excluded from selection but had already been inspected during earlier model work, so it is not a fresh blind holdout.
Canonical club aliases recover xG matches missed by older name matching. A corrected-data replay with otherwise unchanged V2 settings achieves 0.98263 log loss and 0.58597 Brier in the audit. That diagnostic is separate from V3’s additional features and has not been activated as a newly selected model.
Historical source snapshots can contain later corrections. European domestic coverage is incomplete; 28 European extra-time matches lack verified regulation scores. Player availability, rotation, travel and transfers are not modeled. Starting-strength priors, form decay, stability bounds and the margin cap remain assumptions. No aligned ClubElo or betting-market benchmark was included in this run.
Release decision: retain V2, keep V1 reproducible, and keep V3 available for research. A replacement needs a repeatable improvement in match probabilities and calibrated season ranges. These tests do not yet establish that improvement.
Data sources & reproducible calculations
- Exact match and club examples behind this page · Calculation script
- V1/V2 parameter search and match audit · V1/V2 projection comparison
- V1 archived snapshots · Active snapshot archive · Active model inputs
- V3 match tests, ablations and subgroups · Paired season tests
- Dated V3 research forecast · Release decision and hashes · Technical reproduction guide
- OpenFootball English results · European results · Football-Data domestic results
- FotMob calendars · Understat historical xG · xgEdge recent xG · Premier League fixtures