{ "test_years": [ 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 ], "half_life_days": 180.0, "total_test_matches": 8265, "neutral_test_matches": 2660, "folds": [ { "test_year": 2018, "train_matches": 2829, "test_matches": 895, "neutral_test_matches": 245, "fitted_params": { "intercept": 0.11480792473373332, "elo_scale": 0.0020289671408902678, "home_advantage_elo": 96.66494847608217, "rho": -0.10325063882286081 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681347, "brier": 0.6666666666666677, "rps": 0.2349472377405314 }, "current": { "log_loss": 0.9023609429969789, "brier": 0.5327335616980057, "rps": 0.17345577301787155 }, "fitted": { "log_loss": 0.8573809678608475, "brier": 0.5060835684039483, "rps": 0.16129081700055478 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681078, "brier": 0.666666666666666, "rps": 0.23287981859410511 }, "current": { "log_loss": 0.8834315475603629, "brier": 0.5228932563420171, "rps": 0.16550343317192542 }, "fitted": { "log_loss": 0.8643892036200318, "brier": 0.5157402284621485, "rps": 0.1621838008080314 } } }, { "test_year": 2019, "train_matches": 3724, "test_matches": 1151, "neutral_test_matches": 353, "fitted_params": { "intercept": 0.07655270209555426, "elo_scale": 0.0021520627736449803, "home_advantage_elo": 104.35377163519401, "rho": -0.09333056692211965 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681413, "brier": 0.6666666666666591, "rps": 0.24230138044212424 }, "current": { "log_loss": 0.8056111798212608, "brier": 0.4669964990094554, "rps": 0.1542259079723281 }, "fitted": { "log_loss": 0.7623887448033608, "brier": 0.4436091602690203, "rps": 0.14349092866806895 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681076, "brier": 0.6666666666666633, "rps": 0.23575700346238562 }, "current": { "log_loss": 0.9035421998672475, "brier": 0.5318945223380837, "rps": 0.17509914280333874 }, "fitted": { "log_loss": 0.8918610713311597, "brier": 0.5250460714170974, "rps": 0.17242426076070852 } } }, { "test_year": 2020, "train_matches": 4875, "test_matches": 366, "neutral_test_matches": 50, "fitted_params": { "intercept": 0.08882969340736556, "elo_scale": 0.0021691318930572856, "home_advantage_elo": 87.14925981971481, "rho": -0.022682480183322452 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681076, "brier": 0.6666666666666631, "rps": 0.23451730418943506 }, "current": { "log_loss": 0.9057996612707523, "brier": 0.5350331124220667, "rps": 0.17316146306007385 }, "fitted": { "log_loss": 0.8880460395185107, "brier": 0.5245472137423897, "rps": 0.1687037965936433 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681091, "brier": 0.666666666666667, "rps": 0.24111111111111122 }, "current": { "log_loss": 0.9038213868459777, "brier": 0.5293136355860008, "rps": 0.1820028424646411 }, "fitted": { "log_loss": 0.8910762716994022, "brier": 0.5204344668752423, "rps": 0.1785644247095937 } } }, { "test_year": 2021, "train_matches": 5241, "test_matches": 1131, "neutral_test_matches": 372, "fitted_params": { "intercept": 0.09894524890544283, "elo_scale": 0.002086079271632328, "home_advantage_elo": 71.854097236582, "rho": -0.07719874643271779 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681409, "brier": 0.6666666666666596, "rps": 0.24034777483053016 }, "current": { "log_loss": 0.7771281328670586, "brier": 0.4494107978358997, "rps": 0.14187993077918162 }, "fitted": { "log_loss": 0.7303453228987331, "brier": 0.4226998299669378, "rps": 0.12981376058981092 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681076, "brier": 0.666666666666663, "rps": 0.2396953405017915 }, "current": { "log_loss": 0.7752914985633477, "brier": 0.44538900996736913, "rps": 0.1396289557189527 }, "fitted": { "log_loss": 0.7424352387197773, "brier": 0.4277416309134095, "rps": 0.13198354285045627 } } }, { "test_year": 2022, "train_matches": 6372, "test_matches": 985, "neutral_test_matches": 381, "fitted_params": { "intercept": 0.08186883125481959, "elo_scale": 0.002241281090538066, "home_advantage_elo": 74.43744515107814, "rho": -0.09478096119163382 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681373, "brier": 0.6666666666666642, "rps": 0.23953750705019464 }, "current": { "log_loss": 0.8761344289777128, "brier": 0.5133523843352195, "rps": 0.1706774554386513 }, "fitted": { "log_loss": 0.833657111049536, "brier": 0.488081624725104, "rps": 0.15921570644885422 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681076, "brier": 0.6666666666666629, "rps": 0.23665791776027933 }, "current": { "log_loss": 0.8657594659735913, "brier": 0.5056354267716627, "rps": 0.16380135962473727 }, "fitted": { "log_loss": 0.8416080431008207, "brier": 0.49252926430948385, "rps": 0.15831754337007392 } } }, { "test_year": 2023, "train_matches": 7357, "test_matches": 1059, "neutral_test_matches": 301, "fitted_params": { "intercept": 0.09590587998895488, "elo_scale": 0.002136418937922069, "home_advantage_elo": 80.8624491992637, "rho": -0.01817599719515351 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681393, "brier": 0.6666666666666617, "rps": 0.2403210576015079 }, "current": { "log_loss": 0.8164324637949784, "brier": 0.4761251590147837, "rps": 0.15479442502291524 }, "fitted": { "log_loss": 0.78464414371364, "brier": 0.45951898347685194, "rps": 0.14722498614337617 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681078, "brier": 0.6666666666666644, "rps": 0.23791066814322662 }, "current": { "log_loss": 0.8342171896940022, "brier": 0.4853941084027272, "rps": 0.15585628251257372 }, "fitted": { "log_loss": 0.810164720860691, "brier": 0.47283004252787125, "rps": 0.15028013851884245 } } }, { "test_year": 2024, "train_matches": 8416, "test_matches": 1292, "neutral_test_matches": 496, "fitted_params": { "intercept": 0.135784402714181, "elo_scale": 0.002062972962563908, "home_advantage_elo": 86.575382309738, "rho": -0.08165901384717028 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681438, "brier": 0.6666666666666557, "rps": 0.235595115239074 }, "current": { "log_loss": 0.8526359403098033, "brier": 0.49941486960892056, "rps": 0.15859748254285871 }, "fitted": { "log_loss": 0.8217710854614934, "brier": 0.48382352093062225, "rps": 0.15158860276123537 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681111, "brier": 0.666666666666668, "rps": 0.22939068100358312 }, "current": { "log_loss": 0.8834120721785726, "brier": 0.5214199459292324, "rps": 0.16100681571387543 }, "fitted": { "log_loss": 0.8697466901921638, "brier": 0.5158284711675852, "rps": 0.15862363420743003 } } }, { "test_year": 2025, "train_matches": 9708, "test_matches": 1035, "neutral_test_matches": 319, "fitted_params": { "intercept": 0.13154596600905927, "elo_scale": 0.002036860739245838, "home_advantage_elo": 81.47927268898184, "rho": -0.11197216228672728 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681386, "brier": 0.6666666666666625, "rps": 0.24057971014492466 }, "current": { "log_loss": 0.7880248007600671, "brier": 0.4567673295937216, "rps": 0.14619068635740878 }, "fitted": { "log_loss": 0.7490973486843856, "brier": 0.4377864820871933, "rps": 0.13752468930374132 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681078, "brier": 0.666666666666664, "rps": 0.2349355625217695 }, "current": { "log_loss": 0.8283942270934415, "brier": 0.48593502970010505, "rps": 0.15095687011092038 }, "fitted": { "log_loss": 0.8006791374196626, "brier": 0.4739426425559977, "rps": 0.14522519677837512 } } }, { "test_year": 2026, "train_matches": 10743, "test_matches": 351, "neutral_test_matches": 143, "fitted_params": { "intercept": 0.14002451697534277, "elo_scale": 0.002035817689422612, "home_advantage_elo": 71.82836996410468, "rho": -0.11346576437055059 }, "mean_scores": { "uniform": { "log_loss": 1.0986122886681076, "brier": 0.6666666666666633, "rps": 0.23789173789173768 }, "current": { "log_loss": 0.8373907540633281, "brier": 0.4844743976711385, "rps": 0.15558773214039767 }, "fitted": { "log_loss": 0.8010975523248702, "brier": 0.46545804008130004, "rps": 0.14724905524780943 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.098612288668108, "brier": 0.6666666666666675, "rps": 0.23931623931623966 }, "current": { "log_loss": 0.836343534499324, "brier": 0.48346963528722114, "rps": 0.15755513737164847 }, "fitted": { "log_loss": 0.8038171175434251, "brier": 0.46573230600770044, "rps": 0.15013688009902199 } } } ], "overall_mean_scores": { "uniform": { "log_loss": 1.0986122886681369, "brier": 0.6666666666666613, "rps": 0.2388586408550082 }, "current": { "log_loss": 0.8329166311312037, "brier": 0.48594465732512054, "rps": 0.15722582282290334 }, "fitted": { "log_loss": 0.7944622460875409, "brier": 0.46492105251553006, "rps": 0.14769412833147244 } }, "neutral_mean_scores": { "uniform": { "log_loss": 1.0986122886681082, "brier": 0.6666666666666647, "rps": 0.23542188805346673 }, "current": { "log_loss": 0.8541246747458301, "brier": 0.4998279915063266, "rps": 0.15912275114447516 }, "fitted": { "log_loss": 0.8321846360289137, "brier": 0.4888921301366171, "rps": 0.15438117832100154 } }, "calibration_home_win": [ { "predicted_range": [ 0.0, 0.1 ], "n": 564, "predicted_mean": 0.04875281109133798, "observed_home_win_rate": 0.05673758865248227 }, { "predicted_range": [ 0.1, 0.2 ], "n": 657, "predicted_mean": 0.15091809523379324, "observed_home_win_rate": 0.1917808219178082 }, { "predicted_range": [ 0.2, 0.3 ], "n": 846, "predicted_mean": 0.25165383909489764, "observed_home_win_rate": 0.3203309692671395 }, { "predicted_range": [ 0.3, 0.4 ], "n": 983, "predicted_mean": 0.35131798427317085, "observed_home_win_rate": 0.4659206510681587 }, { "predicted_range": [ 0.4, 0.5 ], "n": 986, "predicted_mean": 0.4503357401106465, "observed_home_win_rate": 0.5567951318458418 }, { "predicted_range": [ 0.5, 0.6 ], "n": 1005, "predicted_mean": 0.5499731291510652, "observed_home_win_rate": 0.6626865671641791 }, { "predicted_range": [ 0.6, 0.7 ], "n": 915, "predicted_mean": 0.6504787505848735, "observed_home_win_rate": 0.7289617486338797 }, { "predicted_range": [ 0.7, 0.8 ], "n": 859, "predicted_mean": 0.7489004240433575, "observed_home_win_rate": 0.830034924330617 }, { "predicted_range": [ 0.8, 0.9 ], "n": 745, "predicted_mean": 0.8493848408730554, "observed_home_win_rate": 0.8966442953020134 }, { "predicted_range": [ 0.9, 1.0 ], "n": 705, "predicted_mean": 0.9430183315798715, "observed_home_win_rate": 0.9475177304964539 } ], "ship_gate": { "fitted_beats_uniform_log_loss": true, "fitted_beats_current_log_loss": true, "fitted_beats_current_neutral_log_loss": true, "ship": true, "criterion": "The fitted Dixon-Coles Elo model must have a lower mean log loss than both the uniform baseline and the model previously shipped in world_cup/forecasting.py, both overall and on neutral-venue matches, across walk-forward test folds (2018-2026, no fold trained on its own test data)." } }