Forecast
Cumulative Entries
History
Registration Curve and Fees
Registration Curve
Fees
Tournament Overview
| Tournament | Status | Event Date | Current | Last day | Predicted | Likely Range | Progress | Value |
|---|
Published Forecasts
Tournament Results
CCA Tournament Entry Prediction Model
The Core Idea
Every CCA tournament follows a registration curve: entries trickle in slowly, then accelerate as the event nears. The model exploits this pattern. If a tournament has 180 entries with 60 days to go, and the same tournament historically had ~170 at that point and finished with ~900, we expect roughly 900 again. We compute the ratio of final-to-current entries at the same lead time across all prior years, average them, and multiply: 180 × 5 = 900.
Why Two Models?
The ratio approach works well with good history. For newer tournaments or unusual patterns, we also run a regression: a best-fit line through all data points. The final prediction blends both. Close to the event (last few days), we trust the ratio more (80% weight) because the current count is highly informative. Months out, we lean on regression (85% weight) because the count is still noisy.
Ensemble Equation
The predicted final entry count is a weighted blend of the two sub-models:
| T (days to end) | ≤ 3 | ≤ 7 | ≤ 28 | > 28 |
|---|---|---|---|---|
| w(T): ratio weight | 0.80 | 0.55 | 0.30 | 0.15 |
Historical Ratio Model (Primary)
For each tournament family at lead time T, compute final/current ratios from every prior year. Central estimate uses the harmonic mean (downweights outlier-high ratios):
When T falls between historical chop points, ratios are blended in log-space via inverse-distance interpolation.
Huber Regression Model (Secondary)
Per-family robust linear regression (Huber loss, ε = 1.35) trained on all historical (count, T) → final pairs. Falls back to a size-matched global model for unknown families:
Confidence Intervals & Sanity Checks
Every prediction includes a confidence interval: a range the actual result has fallen within about 75% of the time at two weeks out in backtesting. The interval targets 80%; the Performance tab shows how close each lead time comes. Wider far from the event, narrower as it approaches.
s(T) calibrated via LOO for 80% coverage. Shrink(T) = 0.33 at T ≥ 60 → 0.75 at T < 5. σ floored via variance regularization for families with ≤ 3 editions. Months out, the forecast leans toward last year’s final; inside two weeks it is averaged with pickup (this year’s count plus what last year’s edition took from the same point). Smaller adjustments correct for year-over-year trends and near-capacity dampening. Predictions that drift too far from historical norms are pulled back via plausibility bounds.
Sequential Adjustments
| Adjustment | Trigger | Effect |
|---|---|---|
| Late-surge damping | Scholastic families, T > 3 | Cap ratio at 1.1 + 0.4 · min(T/90, 1) |
| Fill-% shrinkage | Count > 60% of family mean | Shrink ratio toward 1.0 (max 20%) |
| Family anchor | Count < threshold, T ≥ 42 | Blend with 0.6 · recent + 0.4 · mean final |
| Last-year anchor | T > 14 | Blend toward last edition’s final (0.4 at T ≤ 28, 0.6 beyond) |
| Growth trend | T ≥ 7 | Multiply by 1 + trend · 0.5 (capped ±15%) |
| Pickup blend | T ≤ 14 | Geometric mean with count + entries last edition took after T |
| Last final, no curve | Past finals, none with a registration curve; no pickup | Move toward the last final in log space (all the way at T > 28, weight 0.3 at T = 1) |
| New-event prior | No past final, T > 42 | Move toward the spread of first-edition finals in log space (all the way at T ≥ 60) |
| Range cap | Two or more past finals, or the last-final row | Hold each side of the range to the year-over-year spread of finals (about 19% below, 20% above) |
| Plausibility bounds | Pred < 30% of family minimum or > 3× its maximum | Re-centre on the historical median, or cap at 1.5× the maximum |
| Edition widening | 0–1 prior editions | Widen CI by 2.5× / 1.5× |
How We Tested It
We never test on data the model has seen. On the first of each month since 2023 we refit the model on the data as it stood that day, then forecast every tournament that month at each lead time from the entries registered by that date: no future information leaks in. Across 136 tournaments, at two weeks out the median miss was 7.4% and the 80% interval captured the true result 78% of the time. Coverage three days out sits near 76%. Earlier releases ran overconfident close to the event (three-day coverage as low as 67%) — exactly when people most want the number — and the 2026 recalibration widened short-lead intervals. The full lead-time breakdown is on the Performance tab.
Validated via walk-forward backtest: refit monthly on the data as it stood, forecast each tournament at each lead time from the entries registered by that date. No future or in-sample data leakage. 133 tournaments across 2023–2026.
What We Tried and Rejected
We tested several alternatives on an earlier blind test. None improved accuracy. The figures below are the relative model-selection comparison and predate the leave-one-out leak fix and the walk-forward test, so the absolute coverage numbers run higher than the honest figures above; read them as a ranking of configurations, not current accuracy.
| Configuration | MedAPE | MAPE | 80% Cov | Verdict |
|---|---|---|---|---|
| Harmonic-mean ratio only | 8.2% | 14.8% | 89% | Good base, wide CIs |
| + Huber regression ensemble | 7.6% | 13.0% | 91% | Selected |
| + YoY pacing (direct blend) | 8.5% | 15.0% | 88% | Adds noise |
| + YoY pacing (dampened) | 7.9% | 14.1% | 89% | Marginal harm |
| + Recency-weighted ratios | 7.8% | 13.4% | 82% | CI coverage crash |
| Log-linear regression | 7.9% | 13.5% | 90% | No improvement |
| Aggressive fill-% shrink | 7.7% | 13.2% | 90% | Neutral → rejected |
Selection rule (at model-selection time): keep only changes that improve Median APE without degrading 80% CI coverage.
Prior Approaches
Earlier prediction methods used at CCA provided the foundation for the current model:
| Metric | Manual Multiplier Approach | Ratio Model | Current Ensemble Model |
|---|---|---|---|
| Method | Fixed multiplier × current entries; multiplier from days-to-event lookup, chosen subjectively | Historical ratio (entries_at_T / final), median across past 4 years | Ensemble: ratio-based + Huber regression, T-dependent weighting |
| Error Rate | ~20% median (est.) | ~12–15% median (est.) | 7.1% median APE at 2 wks (walk-forward) |
| Prediction Intervals | None | MAE-based error bars; not calibrated intervals | Lognormal calibrated 80% CI; 75% coverage at 2 wks |
| Backtesting | No formal backtesting | No formal backtesting | 133 tournaments, 2023–2026 walk-forward, refit monthly |
| Limitations | Multiplier updated by feel; no systematic validation | Single-deadline events only; no multi-deadline handling | Needs 3+ yrs history; cannot anticipate one-off disruptions |
Each approach built on lessons from its predecessor. The prior models’ intuition, that historical ratios are the strongest predictor, remains the core of the current system.
Worked Example: Chicago Open 2026
Forward-looking estimate: 180 entries, 62 days to end (May 21–25, 2026).
Step 1: Historical Ratios at T ≈ 60
| Year | Count at T≈60 | Final | Ratio |
|---|---|---|---|
| 2022 | 168 | 944 | 5.62 |
| 2023 | 161 | 960 | 5.96 |
| 2024 | 191 | 860 | 4.50 |
| 2025 | 188 | 899 | 4.78 |
Harmonic mean = 4 / (1/5.62 + 1/5.96 + 1/4.50 + 1/4.78) = 5.15 → Fratio = 180 × 5.15 = 927
Step 2: Huber Regression
Freg = β0 · 180 + β1 · 62 + β2 ≈ 907
Step 3: Ensemble Blend
At T = 62 (> 28), ratio weight w = 0.15:
Fpred = 0.15 × 927 + 0.85 × 907 = 910
Step 4: Adjustments
| Adjustment | Calculation | Result |
|---|---|---|
| Last-year anchor (T > 28) | 0.6 × 899 + 0.4 × 910 | 903 |
| Growth trend (−3.4%/yr) | 903 × (1 + (−0.034) · 0.5) | 888 |
| Plausibility bounds | Between 30% of the family minimum (258) and 3× its maximum (2,880) | 888 |
The plausibility check stops a forecast far outside the family’s history; this one sits inside it. The pickup blend applies only inside two weeks, so at T = 62 the point estimate is 888.
Step 5: Confidence Interval
From lognormal fit on log-ratios, calibrated via LOO with T-dependent shrinkage:
σ = std(log(r)) = 0.127 → raw CI = [788, 1046] → × shrink(0.33 at T≈60) → re-centred on 903, shifted by the trend → CI = [837, 942]
The range cap would hold each side to the year-over-year spread of finals, about 719–1,065 around 888; this range already sits inside it.
Limitations
The model predicts from historical patterns. It cannot anticipate one-off events: venue changes, competing tournaments on the same weekend, entry fee changes, or external disruptions. It works best with 3+ years of history; brand-new events get wider confidence ranges. This model is a baseline; tournament directors should apply manual adjustments for known upcoming factors.
Pipeline Health
output/audit_warnings.json, output/performance_data.json, and output/website_data.json.