Putting two models in the same folder is not an ensemble. It is a custody dispute. A real stack needs a rule for which model gets trusted, a clean set of predictions that neither model trained on, and a final test window nobody touched while tuning. Without those pieces, the meta-learner is just another model learning your mistakes at a higher level.
Blending is a rule; stacking learns the rule
A blend combines model probabilities with fixed weights. That can be perfectly respectable. The weights are chosen before the evaluation window and the same rule applies to every event. Stacking goes further: a second-level learner receives the base-model predictions and learns how to combine them.
The extra flexibility is useful only when the base models make meaningfully different errors. If both models use the same data, the same cutoff, and nearly the same feature family, the stack may have no independent signal to exploit. Adding a meta-learner does not manufacture diversity. It can merely fit the shared noise more confidently.
Out-of-fold predictions are the price of admission
The meta-learner must train on predictions made for rows the base models did not train on. That is the core invariant. Split the historical window in chronological order. Fit each base model on earlier rows, produce predictions for the next untouched block, and repeat until every meta-training row has a genuinely out-of-sample prediction.
Do not fit the base models on the full history and then hand their in-sample predictions to the stack. That leaks the label through the base models. The meta-learner will discover which model memorized each row and the backtest will look terrific right up to the first live slate.
Keep one final window sealed
After generating out-of-fold predictions, train the meta-learner on those predictions and their labels. Then evaluate the entire system on a later block that was not used to choose features, models, calibration, or ensemble weights. That sealed window is the only place the stack gets to make its case.
The split must follow event time. Random folds can place later games in the training side of an earlier prediction and let roster, market, or season-state information drift backward. Sports data has a clock. The validation plan should respect it.
Calibrate the base models before combining them
A stack receives probabilities, not personalities. If one model is systematically overconfident and another is cautious, the meta-learner may spend its limited sample correcting calibration rather than learning complementary signal. Check each base model on an untouched calibration block and apply a documented calibration method only when the reliability curve supports it.
Keep calibration inside the training process. A calibrator fitted on the final evaluation window is still leakage. Version the base model, calibrator, feature cutoff, and stack together so a published prediction can be reconstructed later.
Start with the simplest meta-learner
A regularized linear combiner is usually the right opening bid. It is easy to inspect, hard to hide behind, and less eager to carve a small sports sample into elaborate regimes. A more flexible learner has to earn its complexity on the sealed window, not on the fold used to tune it.
Constrain inputs to the base predictions and a small set of predeclared context features only when there is a clear hypothesis. Once the stack starts ingesting the original feature matrix, it stops being a clean ensemble and becomes another full model. That may be valid, but it is a different experiment and should be labeled that way.
Judge the stack against boring baselines
Compare the stack with each base model, an equal-weight blend, and the market baseline on the same rows. Use a probability scoring rule and calibration view before discussing betting performance. Then, for spread decisions, publish only a sourced ATS record with wins, losses, pushes, cover rate, named window, and sample size.
This module has no attached graded ledger or model-run provenance. It therefore publishes no improvement claim, no return figure, and no winner. The empty state is honest: the procedure is specified, but the stack has not been proved here.
Correlation lives in the errors
Do not measure diversity by comparing the models’ headline scores alone. Inspect residual correlation on the same out-of-sample rows. Two models can have different architectures and still make the same mistakes because they share closing lines, injuries, or team-strength inputs. Conversely, two modest models can combine well when their misses come from different parts of the schedule.
Break the errors down by season segment, market type, favorite and underdog status, and data availability. If the stack’s advantage appears only in one narrow slice, treat it as a hypothesis for another sealed test, not as a permanent weight rule.
Know when the blend is better
Stacking is not automatically the sophisticated choice. When the out-of-fold sample is thin, the base models are highly correlated, or the learned weights swing sharply across folds, a fixed blend may be safer. Simplicity is not surrender. It is a lower-variance answer to weak evidence.
The final question is not whether the stack looks clever in the Workshop. It is whether another person can reproduce the folds, rebuild every base prediction, fit the same meta-learner, and recover the same sealed-window result. If not, you have a demo, not a model.
Model calibration from graded predictions
Calibration points render only when a verified source binds prediction probabilities to settled outcomes for the same observations.
Expected value from graded outcomes
Expected-value cells render only when a verified source binds observed win outcomes to the price paid for the same bets.



