The Oracle estimates whether a selected U of T lecture's waitlist will record enough cumulative downward movement to cover the entered position. It runs entirely in the browser and is not an official forecast or academic advice.
Reconstructing the queue
The public archive provides enrollment demand, section capacity, capacity changes, and collection timestamps. Queue size is inferred as max(enrollment demand − section capacity, 0). Offerings are aligned by days remaining before the applicable waitlist deadline.
Live queue freshness
The live collector can lag behind someone joining a waitlist. The site therefore accepts ranks up to five positions beyond the latest inferred queue. If no waitlist is recorded, ranks 1 through 5 remain available. For live model inputs, the current queue is the larger of the latest inferred queue and the entered rank.
Defining the target
Each training row represents one rank in one lecture on one observed day. From that day forward, the target adds every observed downward queue step through the final sufficiently complete pre-deadline observation. Later arrivals can refill the queue, but they do not erase movement that was already visible. The target records whether this cumulative downward movement reaches the entered rank. Capacity increases can contribute to the observed movement.
This is not a record of individual admission offers. A departure behind you can shrink the queue without advancing you. A departure ahead can also be hidden when a new student joins between collector snapshots. The estimate can therefore differ from actual student advancement in either direction.
Model
The Oracle uses separate histogram gradient-boosted tree models for Fall/Winter and Summer. Each ensemble contains 200 small trees with at most 15 leaves and L2 regularization of 3. Missing numeric values are filled with the training median. Calibration is selected on earlier same-season sessions. Fall/Winter uses isotonic calibration, while Summer uses Platt scaling.
The model uses 26 numeric features:
- Rank: raw rank, rank divided by capacity, and rank divided by waitlist size
- Queue: raw size, log size, and queue divided by capacity
- Capacity: section capacity and recent capacity changes
- Time: days remaining, squared days, and piecewise seven, fourteen, and sixty-day effects
- Movement: observed three-day and seven-day movement plus seven-day velocity
- Interactions: rank and queue ratios near the deadline plus an indicator for ranks above 30% of capacity
- Context: campus and course-term indicators, including their near-deadline interactions
The selected lecture supplies live queue, capacity, and movement inputs. A lecture identifier such as LEC0101 is not a feature.
Understanding Driven by
The Driven by list is a local explanation of the displayed estimate. The browser changes one underlying factor toward its typical training value and recomputes every dependent ratio and interaction. A + means the entered case raises the estimate relative to that comparison. A − means it lowers it.
Training and validation
The archive covers completed sessions from 2022 through Summer 2026. Validation follows time rather than randomly mixing rows. Each fold trains on all earlier sessions and predicts the next one. Features, hyperparameters, calibration, and release thresholds are locked before evaluating the latest session.
| Model | Training sessions | Validation |
| Fall/Winter | 2022–2023 | 2023–2024 |
| Fall/Winter | 2022–2024 | 2024–2025 |
| Fall/Winter | 2022–2025 | 2025–2026 |
| Summer | 2023 | 2024 |
| Summer | 2023–2024 | 2025 |
| Summer | 2023–2025 | 2026 |
No validation rows enter that fold's model fit, preprocessing values, or capacity-only baseline fit. Earlier holdouts are used for development selection and same-season calibration. The production models are then refit on all completed sessions for their season. The current session is used only to build live inputs.
Accuracy uses a 50% cutoff. Brier measures probability error. ECE measures calibration. AUC measures how well likely successes rank above likely misses.
Baselines
The historical percentage is the success rate of the previous lecture offerings listed when you query the Oracle. A lecture counts as a success when its cumulative observed downward movement after the equivalent date was at least the entered position. The literal 10% rule predicts that threshold when the position is no more than 10% of capacity. The boosted 10% rule is a fitted probability curve that still uses only position divided by capacity.
Overall performance
The Oracle and both capacity baselines are scored on every validation row.
| Season | Method | Accuracy | Brier | ECE | AUC |
| Fall/Winter | Oracle model | 97.4% | 0.0170 | 0.0065 | 0.9853 |
| Fall/Winter | Literal 10% rule | 94.9% | 0.0512 | 0.0512 | 0.5006 |
| Fall/Winter | Boosted 10% rule | 95.8% | 0.0406 | 0.0026 | 0.5232 |
| Summer | Oracle model | 93.6% | 0.0496 | 0.0229 | 0.9214 |
| Summer | Literal 10% rule | 73.3% | 0.2667 | 0.2667 | 0.6518 |
| Summer | Boosted 10% rule | 91.1% | 0.0778 | 0.0130 | 0.6864 |
Direct comparison with history
The historical percentage can score only rows with a comparable earlier lecture. This common subset covers 72.3% of Fall/Winter evaluation weight and 54.3% of Summer evaluation weight.
| Season | Method | Accuracy | Brier | ECE | AUC |
| Fall/Winter | Oracle model | 97.9% | 0.0143 | 0.0059 | 0.9871 |
| Fall/Winter | Historical percentage | 97.6% | 0.0222 | 0.0204 | 0.8411 |
| Fall/Winter | Literal 10% rule | 95.7% | 0.0425 | 0.0425 | 0.4968 |
| Fall/Winter | Boosted 10% rule | 96.5% | 0.0342 | 0.0044 | 0.5008 |
| Summer | Oracle model | 94.3% | 0.0451 | 0.0211 | 0.9078 |
| Summer | Historical percentage | 94.1% | 0.0567 | 0.0542 | 0.6933 |
| Summer | Literal 10% rule | 76.6% | 0.2343 | 0.2343 | 0.6802 |
| Summer | Boosted 10% rule | 92.9% | 0.0635 | 0.0229 | 0.7224 |
On the common subset, the Oracle reduced Brier error by 58.2% against the boosted 10% rule, 35.6% against history, and 66.4% against the literal 10% rule in Fall/Winter. Summer reductions were 28.9%, 20.4%, and 80.7%. The overall performance claim comes from the all-evaluation table above.
Release status
Fall/Winter passed every pre-locked release gate and is marked validated. Summer beat the literal and boosted 10% baselines but missed the strict near-deadline calibration and maximum calibration-gap gate among probability bins representing at least 2% of evaluation weight. It is released as experimental. Its latest-session near-deadline gap was 0.0904 and maximum eligible probability-bin gap was 0.1569. Treat Summer percentages with extra caution.
The locked latest-session benchmark and figure generation are available in V2 Notebook 4.
Production and limitations
The exported tree splits, leaf values, and preprocessing medians run locally in the browser. Historical outcomes are fetched and displayed separately. They do not change the model percentage, and the Oracle can estimate a new course or an unusually high rank without them.
Cumulative downward movement is inferred from aggregate snapshots rather than student records. Departures behind the entered position may be counted, and departures hidden by offsetting arrivals between snapshots may be missed. Scheduling, reserved seats, and student behaviour can change between years. Summer has fewer comparable observations and should be treated with more caution.
Source
Enrollment history is maintained by ICPRplshelp and originates from U of T’s public timetable builder.