Will your waitlist spot clear?

Compare your position with previous offerings of the same course, on this day.

Historical estimate
Choose a course from the current session
Your current lecture section
#
Your place on the waitlist

Unofficial and not academic advice. Estimates use public enrollment history and are never a guarantee.

HOW THE ORACLE WORKS

Methodology

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:

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.

ModelTraining sessionsValidation
Fall/Winter2022–20232023–2024
Fall/Winter2022–20242024–2025
Fall/Winter2022–20252025–2026
Summer20232024
Summer2023–20242025
Summer2023–20252026

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.

SeasonMethodAccuracyBrierECEAUC
Fall/WinterOracle model97.4%0.01700.00650.9853
Fall/WinterLiteral 10% rule94.9%0.05120.05120.5006
Fall/WinterBoosted 10% rule95.8%0.04060.00260.5232
SummerOracle model93.6%0.04960.02290.9214
SummerLiteral 10% rule73.3%0.26670.26670.6518
SummerBoosted 10% rule91.1%0.07780.01300.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.

SeasonMethodAccuracyBrierECEAUC
Fall/WinterOracle model97.9%0.01430.00590.9871
Fall/WinterHistorical percentage97.6%0.02220.02040.8411
Fall/WinterLiteral 10% rule95.7%0.04250.04250.4968
Fall/WinterBoosted 10% rule96.5%0.03420.00440.5008
SummerOracle model94.3%0.04510.02110.9078
SummerHistorical percentage94.1%0.05670.05420.6933
SummerLiteral 10% rule76.6%0.23430.23430.6802
SummerBoosted 10% rule92.9%0.06350.02290.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.