Market-Residual v2 – match statistics
Report #9 · 23.08.2026 07:58:10 · source backtest #6
Development rows11 229
Validation rows2 279
M2-linear λ100
Holdout readNE
Development rolling test
M1 je zmrazená specifikace z předchozí fáze. M2-linear vybírá pouze regularizaci podle development Brier/log-loss. M2-boost má předem pevný malý konfigurací omezený model bez ladění.
| Model | Brier | Log loss | Calibration error | Počet |
|---|---|---|---|---|
| M0 – opening market | 0,2405 | 0,6738 | 1,18 % | 11 229 |
| Poisson v2 raw (kontext) | 0,2457 | 0,6845 | 0,78 % | 11 229 |
| M1 – frozen residual | 0,2405 | 0,6739 | 1,23 % | 11 229 |
| M2-linear – match stats | 0,2405 | 0,6739 | 1,24 % | 11 229 |
| M2-boost – fixed stumps | 0,2406 | 0,6740 | 1,08 % | 11 229 |
Validation 2024/25
| Model | Brier | Log loss | Calibration error | Počet |
|---|---|---|---|---|
| M0 – opening market | 0,2395 | 0,6718 | 1,44 % | 2 279 |
| Poisson v2 raw (kontext) | 0,2432 | 0,6795 | 0,91 % | 2 279 |
| M1 – frozen residual | 0,2396 | 0,6718 | 1,46 % | 2 279 |
| M2-linear – match stats | 0,2396 | 0,6718 | 1,46 % | 2 279 |
| M2-boost – fixed stumps | 0,2395 | 0,6718 | 1,46 % | 2 279 |
Výběr M2-linear regularizace
| λ | Vybraná | Development Brier | Development log loss | Validation Brier | Validation log loss |
|---|---|---|---|---|---|
| 100 | ANO | 0,2405 | 0,6739 | 0,2396 | 0,6718 |
| 10 | ne | 0,2406 | 0,6740 | 0,2395 | 0,6718 |
| 1 | ne | 0,2412 | 0,6753 | 0,2395 | 0,6718 |
| 0.1 | ne | 0,2449 | 0,6839 | 0,2397 | 0,6721 |
Paired bootstrap na validation
Záporný rozdíl znamená, že první model je lepší. 5 000 event-level replikací, seed 42.
| Porovnání | Metrika | Rozdíl | 95% CI | P(model lepší) |
|---|---|---|---|---|
| m1_minus_market | Brier | 0,0000 | 0,0000 až 0,0001 | 18,36 % |
| m1_minus_market | Log loss | 0,0000 | 0,0000 až 0,0001 | 18,78 % |
| m2_linear_minus_market | Brier | 0,0000 | 0,0000 až 0,0001 | 18,02 % |
| m2_linear_minus_market | Log loss | 0,0000 | 0,0000 až 0,0001 | 18,24 % |
| m2_boost_minus_market | Brier | 0,0000 | -0,0001 až 0,0001 | 56,76 % |
| m2_boost_minus_market | Log loss | 0,0000 | -0,0003 až 0,0002 | 57,32 % |
| m2_linear_minus_m1 | Brier | 0,0000 | 0,0000 až 0,0000 | 30,70 % |
| m2_linear_minus_m1 | Log loss | 0,0000 | 0,0000 až 0,0000 | 30,66 % |
Validation podle všech lig
| Liga | Počet | M0 | M1 | M2-linear | M2-boost |
|---|---|---|---|---|---|
| England Championship | 542 | 0,2436 | 0,2437 | 0,2437 | 0,2435 |
| England Premier League | 380 | 0,2423 | 0,2423 | 0,2423 | 0,2424 |
| France Ligue 1 | 306 | 0,2386 | 0,2386 | 0,2386 | 0,2385 |
| Germany Bundesliga | 296 | 0,2284 | 0,2284 | 0,2284 | 0,2284 |
| Italy Serie A | 375 | 0,2436 | 0,2436 | 0,2436 | 0,2438 |
| Spain La Liga | 380 | 0,2364 | 0,2364 | 0,2364 | 0,2363 |
Datová a modelová metodika
{
"M0": "Opening no-vig market baseline.",
"M1": "Frozen market-offset regularized logistic model using Poisson v2 and pre-match metadata features.",
"M2_linear": "Market-offset regularized logistic model with the frozen M1 features plus rolling match statistics.",
"M2_boost": "A deliberately small depth-1 boosted-stump residual model; no external boosting library, no hyperparameter search, fixed rounds, learning rate, leaf cap, and L2.",
"new_information": [
"shots",
"shots on target",
"corners",
"short versus long form",
"shot conversion",
"rest days",
"rolling tempo",
"statistical history and data quality"
],
"rolling": "Each development season is predicted from earlier development seasons; validation is fit on development only. Same-time matches are predicted before any result is added.",
"league_quality": "Stats are modeled relative to league-season baselines. Serie A shot fields retain an explicit measurement caveat and are not globally pooled.",
"selection": "Only development Brier\/log loss select M2-linear regularization. M2-boost configuration is fixed in advance. ROI is excluded.",
"holdout": "The later holdout was not queried, read, trained on, tuned on, or evaluated.",
"main_metrics": [
"Brier score",
"log loss"
],
"immutable_result": true
}
{
"base_feature_names": [
"v2_logit_minus_market_logit",
"expected_total_goals",
"history_min_log",
"history_gap",
"season_progress",
"lambda_imbalance",
"home_attack_strength",
"home_defense_strength",
"away_attack_strength",
"away_defense_strength",
"newcomer_home",
"newcomer_away",
"league__787ef53ef6aaa63e299c3de2e064d8ff0bacf00a",
"league__d6696a57d064756df605440f8ed399e496f2dbb3",
"league__03b21abbf0d4c7b4bf6276904abc71fd8e9781ba",
"league__029373fe60e47c2e06041eed872b1c9de9a083c6",
"league__67d96333beca94ff7f67a7a7d7f6e18f02f24be4",
"league__dae49a978b80c49996fb27e320b6f875a2c5a43e"
],
"combined_feature_names": [
"v2_logit_minus_market_logit",
"expected_total_goals",
"history_min_log",
"history_gap",
"season_progress",
"lambda_imbalance",
"home_attack_strength",
"home_defense_strength",
"away_attack_strength",
"away_defense_strength",
"newcomer_home",
"newcomer_away",
"league__787ef53ef6aaa63e299c3de2e064d8ff0bacf00a",
"league__d6696a57d064756df605440f8ed399e496f2dbb3",
"league__03b21abbf0d4c7b4bf6276904abc71fd8e9781ba",
"league__029373fe60e47c2e06041eed872b1c9de9a083c6",
"league__67d96333beca94ff7f67a7a7d7f6e18f02f24be4",
"league__dae49a978b80c49996fb27e320b6f875a2c5a43e",
"stats_shots_for_diff",
"stats_shots_against_diff",
"stats_shots_on_target_for_diff",
"stats_shots_on_target_against_diff",
"stats_corners_for_diff",
"stats_corners_against_diff",
"stats_shot_on_target_ratio_diff",
"stats_short_long_shots_diff",
"stats_short_long_sot_diff",
"stats_conversion_diff",
"stats_tempo_diff",
"stats_rest_home",
"stats_rest_away",
"stats_rest_diff",
"stats_history_min_log",
"stats_history_gap",
"stats_data_quality"
],
"league_feature_map": {
"league__787ef53ef6aaa63e299c3de2e064d8ff0bacf00a": "England Championship",
"league__d6696a57d064756df605440f8ed399e496f2dbb3": "England Premier League",
"league__03b21abbf0d4c7b4bf6276904abc71fd8e9781ba": "France Ligue 1",
"league__029373fe60e47c2e06041eed872b1c9de9a083c6": "Germany Bundesliga",
"league__67d96333beca94ff7f67a7a7d7f6e18f02f24be4": "Italy Serie A",
"league__dae49a978b80c49996fb27e320b6f875a2c5a43e": "Spain La Liga"
},
"match_stats": {
"shots_for": "HS",
"shots_against": "AS",
"shots_on_target_for": "HST",
"shots_on_target_against": "AST",
"corners_for": "HC",
"corners_against": "AC",
"fouls_for": "HF",
"fouls_against": "AF",
"yellow_for": "HY",
"yellow_against": "AY",
"red_for": "HR",
"red_against": "AR"
},
"normalization": "All raw match stats are converted to rolling team features and league-season relative features before model fitting."
}