PW Intelligence · Forecast validation
The forecasting engine, replayed as-of every week of the cycle and scored against what actually happened since. This is the honest track record — not a claim, a measurement.
The short version. For the horizons people actually plan against — today, this week, this month — the admissions forecast is tight and reliable: it has called the running admissions count to within ~2 students on any given day, and the month's total to within ~6%. It is deliberately more cautious the further out it reaches: a full month ahead it is directional (±25%), and it consistently under-shot the far horizon because this cycle ran hotter than last year's seasonal shape. Registration volume a month out is its known weak spot. Read the near term as a number; read the far term as a direction.
The horizon ladder — today
Each step adds what last year delivered in that window, scaled by this year's current pace. This is the live projection your team reads.
| Checkpoint | Admissions | + from now | Registrations | + from now |
|---|---|---|---|---|
| Now (12 Aug) | 466 | — | 7,673 | — |
| End of day | 467 | +1 | 7,701 | +28 |
| End of week (16 Aug) | 477 | +11 | 7,811 | +138 |
| End of month (31 Aug) | 501 | +35 | 8,417 | +744 |
| End of cycle | 662 | +196 | 8,802 | +1,129 |
Each point is what the engine expected the full-cycle admissions total to be, using only data it could have known on that date. It climbed from ~440 in April to ~660–700 by August as real admissions kept outrunning last year's pace. The shaded band is the engine's own low–high range; the dashed line is admissions actually booked to date.
Every week's end-of-cycle call
| As of | Booked | Expected adm | Adm range | Expected regs |
|---|---|---|---|---|
| 20 Apr | 17 | 441 | 143–642 | 2,941 |
| 27 Apr | 20 | 418 | 172–586 | 3,534 |
| 4 May | 28 | 425 | 161–640 | 2,947 |
| 11 May | 43 | 533 | 178–884 | 3,051 |
| 18 May | 56 | 400 | 191–554 | 3,104 |
| 25 May | 66 | 358 | 221–467 | 3,139 |
| 1 Jun | 81 | 392 | 247–512 | 3,374 |
| 8 Jun | 111 | 448 | 295–593 | 3,789 |
| 15 Jun | 136 | 453 | 375–519 | 4,421 |
| 22 Jun | 184 | 469 | 434–510 | 4,982 |
| 29 Jun | 224 | 490 | 449–540 | 5,473 |
| 6 Jul | 260 | 531 | 484–594 | 5,997 |
| 13 Jul | 304 | 599 | 528–691 | 6,808 |
| 20 Jul | 340 | 610 | 497–767 | 7,805 |
| 27 Jul | 392 | 661 | 525–851 | 8,494 |
| 3 Aug | 433 | 697 | 538–931 | 9,502 |
| 12 Aug | 466 | 662 | 538–848 | 8,802 |
WAPE = weighted absolute percent error (lower is better). Every row is scored against what actually happened. The tier reflects how much to trust that horizon.
Admissions — the number leadership tracks
| Horizon | Scored | Avg miss | WAPE | Band hit-rate | Verdict |
|---|---|---|---|---|---|
| End of day | 16 | 1.7 | 1.0% | — | near-exact |
| End of week | 16 | 13.0 | 6.8% | — | reliable |
| End of month | 15 | 13.6 | 6.4% | — | reliable |
| 1 month ahead | 11 | 37.5 | 25.0% | 46% | directional |
| 2 months ahead | 6 | 50.5 | 28.9% | 67% | directional |
| 3 months ahead | 2 | 61.0 | 33.0% | 50% | rough |
Registrations — strong near-term, weak month-ahead
| Horizon | Scored | Avg miss | WAPE | Band hit-rate | Verdict |
|---|---|---|---|---|---|
| End of day | 16 | 15 | 0.5% | — | near-exact |
| End of week | 16 | 180 | 5.1% | — | reliable |
| End of month | 15 | 531 | 13.8% | — | usable |
| 1 month ahead | 11 | 1,665 | 72.6% | 9% | unreliable |
| 2 months ahead | 6 | 2,323 | 85.2% | 0% | unreliable |
| 3 months ahead | 2 | 2,808 | 88.5% | 0% | unreliable |
Every Monday in July the engine predicted where admissions would land by 31 July. The actual was 418. The forecast stayed within a tight ±30 the whole month, and the day-of number was essentially exact all season.
| Forecast made | Days out | Predicted (31 Jul) | Actual | Error |
|---|---|---|---|---|
| 6 Jul | 25 | 399 | 418 | −19 |
| 13 Jul | 18 | 446 | 418 | +28 |
| 20 Jul | 11 | 396 | 418 | −22 |
| 27 Jul | 4 | 424 | 418 | +6 |
Same-day admissions — a near-perfect track
| As of | Predicted today | Actual | Error |
|---|---|---|---|
| 15 Jun | 141 | 136 | +5 |
| 29 Jun | 225 | 224 | +1 |
| 13 Jul | 308 | 304 | +4 |
| 20 Jul | 345 | 340 | +5 |
| 27 Jul | 394 | 392 | +2 |
| 3 Aug | 434 | 433 | +1 |
Where it misses — new registrations a month out
The one genuinely weak call. The engine expected new registrations to fall away sharply after each date; instead they held near ~3,000. This is why month-ahead registration volume is flagged unreliable — and why admissions, which lean on the existing pipeline instead, stay accurate anyway.
| As of | Predicted (month+1) | Actual | Error |
|---|---|---|---|
| 1 Jun | 427 | 3,171 | −2,744 |
| 15 Jun | 639 | 3,171 | −2,532 |
| 29 Jun | 999 | 3,171 | −2,172 |
| 6 Jul | 5,150 | 7,045 | −1,895 |
No black box and no machine learning — the forecast is a deterministic ensemble of three views, so the same inputs always give the same number and every figure can be traced to its basis. Admissions accuracy comes from leaning hardest on the method that reads the existing funnel rather than guessing at new demand.
| Method | What it reads | Today's EOC call |
|---|---|---|
| Pipeline | Students already in the funnel × last year's stage-to-stage conversion and timing | 848 |
| Seasonal | This year's pace projected along last year's month-by-month shape | 538 |
| Momentum | The last 28 days' run-rate carried onto the remaining curve | 541 |
| Blended | Pipeline-weighted ensemble; band = the spread across methods | 662 |