The Variance Filter Doesn't Care What Window You Use
Lowering VARIANCE_LOOKBACK from 10 to 5/6/7/8 produced identical CLV (+10.0-10.1%) and fewer bets, not more. The 3.0-goal threshold is coupled to window length — shrinking the window tightens the filter, doesn't relax it. Second rejection in the variance-tuning space after attack-defense-asymmetry. The 22 early-season bets this was meant to unlock need a two-parameter fix (window + scaled threshold), not this one.
The Variance Filter Doesn't Care What Window You Use
The variance-regression-filter is a core production signal. It bets teams whose actual goals have diverged from their xG by ≥3.0 goals over the last 10 matches — the intuition being those teams will regress to the mean. We tried lowering the 10-match window to 5, 6, 7, or 8. None of it mattered.
The Question
A coverage audit of /gauntlet showed 22 early-season bets in arg-b-nacional, brazil-a, uruguayan-primera, ucl, and mls where the MatchXG and XGVar signals returned "data not available." Cause: those teams had fewer than 10 prior matches by the bet date. Brazilian Serie A had its first 2026 match Jan 28; bets placed April 1 had 6 prior team-matches, max.
Natural hypothesis: lower VARIANCE_LOOKBACK from 10 to 6 and those bets would qualify — coverage jumps. But we'd need to prove it doesn't wreck the signal's edge first. Distinct from the already-rejected attack-defense-regression-asymmetry test (which tried asymmetric windows per side).
Pre-registered in signal-registry.json as variance-lookback-short-symmetric on 2026-04-17.
What We Found
Ran backtest-eval.ts --variance-filter --lookback=N across 5 values, all on the same universe (29K+ bets at edge ≥5% across 3 seasons and 19 leagues).
| Lookback | N bets | CLV | ROI | Hit |
|---|---|---|---|---|
| 5 | 23,101 | +10.1% | -2.7% | 40.3% |
| 6 | 25,141 | +10.1% | -2.8% | 40.4% |
| 7 | 26,563 | +10.0% | -3.0% | 40.3% |
| 8 | 27,802 | +10.0% | -2.5% | 40.4% |
| **10 (baseline)** | **29,193** | **+10.0%** | **-2.6%** | **40.4%** |
Two findings. Both uncomfortable.
Finding 1: CLV is lookback-independent. +10.0% to +10.1%. The variance filter produces essentially the same edge regardless of whether you compute the xG divergence over 5, 6, 7, 8, or 10 matches. This is the same flat pattern the asymmetric-lookback rejection surfaced two weeks ago. Whatever the variance filter is picking up on, it's not the *exact* window length.
Finding 2: Lower lookback shrinks the bet count, not grows it. I assumed shorter windows = more bets through, because fewer prior matches required. Wrong direction. The 3.0-goal threshold is an *absolute* gap. A team needs to accumulate +3 goals of xG divergence over the window. In a 5-match window, that's harder to hit than in a 10-match window — the cumulative divergence has less time to build. So N actually drops from 29K at lookback=10 down to 23K at lookback=5.
Which means: lowering the lookback doesn't even unlock the early-season bets that motivated the test. If a team has 6 matches and you set lookback=6, the filter now demands +3 goals of divergence accumulated in 6 matches — a higher rate of divergence per match than the +3-in-10 baseline. Most early-season teams won't clear that either.
Why That's Interesting
The naive reading is "lookback doesn't matter, so we can set it to whatever." That's not quite right. What's really going on: the ±3.0-goal threshold and the N-match window are *coupled*. Changing the window without scaling the threshold isn't a parameter change — it's a different filter definition.
To actually enable early-season coverage, you'd need a two-parameter change: lower the window AND scale the threshold proportionally (e.g. ±1.8 goals over 6 matches = same rate as ±3.0 over 10). That's a separate hypothesis. I didn't register it yet — the point of this post is to record that *this specific tuning dimension is settled* so nobody retests it blind.
What We Changed
Nothing in production. VARIANCE_LOOKBACK stays at 10. The registry now has:
{
"id": "variance-lookback-short-symmetric",
"status": "rejected",
"result": "CLV flat at +10.0-10.1% across all lookbacks tested. Lower lookback produced FEWER bets, not more — the 3.0-goal threshold is harder to hit in shorter windows.",
"rejectionReason": "No CLV improvement AND no coverage unlock. The real fix would be a distinct two-parameter hypothesis."
}What's Worth Retesting
A hypothesis structured as: "variance-regression filter with window=6 AND threshold-per-match scaling (±0.3 goals × window) preserves CLV while enabling early-season bets with n≥6 prior matches." That's a per-match-rate framing rather than a cumulative-goals threshold. It would change both knobs together and might actually unlock the 22 bets.
Not registered yet. Next time someone wants those arg-b-nacional / brazil-a early-season bets, this is the cleaner experiment to run.