Betting Value Engine

Poisson v2 – rolling evaluation

Report #1 · 22.08.2026 17:15:58 · source backtest #6

Development rows11 229
Validation rows2 279
Selected configdecay365-prior20-carry50
Holdout readNE

Development rolling test

2019/20–2023/24. Každý zápas používá jen výsledky před jeho časem. Kalibrace je naučená na těchto rolling OOS predikcích; její validní kontrola je až níže na 2024/25.

ModelBrierLog lossCalibration errorPočet
Base-rate0,24980,69260,00 %11 229
Poisson v10,25110,69885,98 %11 229
Poisson v2 raw0,24570,68450,78 %11 229
Poisson v2 calibrated0,24560,68420,95 %11 229
Poisson v2 Dixon–Coles calibrated0,24560,68420,95 %11 229
Opening market0,24050,67381,18 %11 229

Validation 2024/25

Specifikace a kalibrátor jsou zde už zmrazené podle developmentu. Opening market zůstává pouze benchmarkem.

Dixon–Coles vychází pro agregovanou pravděpodobnost Over/Under 2,5 stejně jako kalibrovaný Poisson očekávaně: standardní tau korekce pouze přerozděluje nízké skóre uvnitř intervalu 0–2.

ModelBrierLog lossCalibration errorPočet
Base-rate0,24990,69290,46 %2 279
Poisson v10,24510,68434,05 %2 279
Poisson v2 raw0,24320,67950,91 %2 279
Poisson v2 calibrated0,24350,68001,55 %2 279
Poisson v2 Dixon–Coles calibrated0,24350,68001,55 %2 279
Opening market0,23950,67181,44 %2 279

Výběr hyperparametrů

Řazení je podle development Brier score, při shodě podle development log loss. ROI se do výběru nepoužívá.

ConfigDecay half-lifeShrinkage priorCarry-overDev BrierDev log lossValidation BrierValidation log loss
decay365-prior20-carry50365 dní20 zápasů50,00 %0,24570,68450,24320,6795
decay180-prior20-carry50180 dní20 zápasů50,00 %0,24590,68490,24400,6811
decay90-prior20-carry5090 dní20 zápasů50,00 %0,24620,68550,24480,6827
decay365-prior10-carry50365 dní10 zápasů50,00 %0,24660,68650,24300,6793
decay180-prior10-carry50180 dní10 zápasů50,00 %0,24680,68690,24390,6810
decay90-prior10-carry5090 dní10 zápasů50,00 %0,24700,68720,24470,6826

Rolling vývoj po sezonách

SezonaV2 raw BrierV2 calibrated BrierDC calibrated BrierV2 raw log lossV2 calibrated log loss
19200,24610,24580,24580,68530,6847
20210,24620,24610,24610,68560,6852
21220,24630,24620,24620,68580,6855
22230,24650,24650,24650,68620,6861
23240,24340,24330,24330,67980,6796
2425 validation0,24320,24350,24350,67950,6800

Metodika a zmrazení

{
    "model_variants": [
        "v2-regularized",
        "v2-regularized-calibrated",
        "v2-dixon-coles-calibrated"
    ],
    "rolling": "Each match uses only results earlier in chronological order; same-time matches are added after prediction.",
    "regularization": "Venue-specific attack\/defence rates are shrunk to the past league baseline with an effective prior.",
    "decay": "Exponential half-life decay is applied to historical goals and observation weights.",
    "season_carryover": "Previous-season team state is multiplied by a fixed carry-over weight and then shrunk by the regularized prior.",
    "league_baseline": "Home and away league baselines use only prior matches plus a fixed neutral prior.",
    "newcomer_prior": "Teams without prior state receive the regularized neutral prior.",
    "calibration": "Logistic recalibration is fitted only on rolling out-of-sample development predictions.",
    "dixon_coles": "One fixed rho alternative; no rho search.",
    "market": "Opening market no-vig probability is a benchmark only and is not an input to v2.",
    "holdout": "The later season is not queried, read, used, or evaluated in this report.",
    "model_tuning": "Hyperparameters selected by development Brier, then development log loss; never ROI."
}
{
    "selected_config_id": "decay365-prior20-carry50",
    "selected_config": {
        "config_id": "decay365-prior20-carry50",
        "decay_half_life_days": 365,
        "shrinkage_matches": 20,
        "league_prior_matches": 20,
        "season_carryover_weight": 0.5,
        "strength_floor": 0.65,
        "strength_cap": 1.5,
        "neutral_goal_rate": 1.35,
        "dixon_coles_rho": -0.05
    },
    "primary_metric": "development rolling Brier score",
    "secondary_metric": "development rolling log loss",
    "roi_used_for_selection": false
}