Know what is behind the number.
The allocation rule can be implemented exactly for a specified ordinary-pool input. Knowing the real future inputs is a different problem.
1. What the engine does
The pure TypeScript engine accepts complete preferences, non-negative integer capacities and a highest-first applicant rank permutation. Pass 1 allocates first choices in that order. Pass 2 revisits unplaced applicants in the same order and allocates their highest available preference. Outputs identify the school, preference number, pass, or an unallocated state when places run out. Categories never change allocation.
For a fixed input it is deterministic. Tests include hand-worked cases, malformed inputs, capacity shortages, zero capacity and exhaustive small-cohort combinations. The implementation is for ordinary unlinked applicants, conditional on admission to the allocation pool and residual capacity after manual placements. It does not reproduce every Oriel pathway.
2. Four kinds of evidence
- Official historical statistics: UKFPO school-level counts and published ratios from 2024–2026. They describe their stated historical population.
- Historical-weighted synthetic scenario: historical first-choice counts provide weights, but lower preferences and scaled capacities are model inputs.
- Synthetic scenario: equal first-choice weights with assumed complete lists. A teaching scenario without a claim to reflect demand.
- Crowdsourced scenario: complete contributed vectors are resampled on the server after the sample threshold. Monte Carlo estimates in all three scenario modes remain conditional on their assumptions.
3. Why first-choice ratios are not enough
A first-choice ratio divides applicants ranking a school first by published places. It does not reveal whether unsuccessful applicants ranked another school second or eighteenth. Those full lists determine Pass 2. The same first-choice totals can produce very different lower-preference outcomes.
The adjusted UKFPO ratios account for pre-allocation/manual matching, but do not give the residual numerator and denominator separately. We do not reconstruct them from rounded ratios. The 2025 source first-choice counts sum to four more than its place total; we preserve the published data.
4. The scenario population
The UI uses 540 model applicants, including you. Historical capacity proportions are rescaled to the selected applicant-to-place ratio using the largest-remainder method. Finite-size rounding matters: this is a small model, not a replay of a national cohort. FP2027 capacities are not implied.
Historical first choices use 2026 primary-allocation counts, or the published single count for 2024/2025. This does not remove unknown manual-placement effects. For synthetic lower preferences, choose either a uniform shuffle or weighted sampling without replacement using historical popularity. Neither model captures geography, relationships or real correlations.
5. What Monte Carlo means
We generate a possible population and random applicant order, run the allocation, and repeat. A reported frequency is the number of runs with that outcome divided by the run count. Both lists use the same opponents and order in each trial. Opponent lists are regenerated each trial, so variation includes both demand generation and rank.
Seeded Mulberry32 randomness and Fisher–Yates shuffling make results repeatable for the same inputs and engine version. Uniform rank permutations are a modelling assumption; this is not Oriel’s random-number generator. Increasing trial count reduces Monte Carlo noise but cannot repair biased or incorrect assumptions. Rounded percentages include counts and an approximate worst-case 95% sampling margin; a zero frequency does not establish impossibility.
6. Sensitivity rather than a single answer
Each run compares baseline first-choice weights with a 10% and 20% increase in weight for List A’s first school. We renormalise weights. This is not a 10% or 20% rise in absolute applicants. The same perturbation is applied to both lists. In crowdsourced mode, full vectors whose first choice is that school receive the additional resampling weight.
Change the lower-preference model and applicants-per-place setting to examine different assumptions. “Acceptable or better” includes ideal, happy and acceptable categories. These summaries are withheld until all schools are categorised. Unallocated trials count as outside the top five and are also displayed separately.
7. What crowdsourced data can tell us
One current ranking per browser identity and cohort reduces accidental repeats. A minimum of 100 complete rankings is an operational guardrail, not a validation study or representative-sample threshold. Contributors may differ from non-contributors, change their minds, clear cookies or deliberately submit multiple times. We do not verify eligibility or ordinary-pool status.
The model resamples whole contributed vectors with replacement, retaining within-list dependence. It assumes participating preferences can stand in for the hypothetical population; that assumption may be badly wrong. We do not report a calibrated personal probability, infer a known national demand total, estimate reserve-list admission, or model linked pairs.
8. Aggregation and change over time
Only whole-cohort daily snapshots are released, once at least 100 rows exist. Small cells and small complements are withheld, with additional suppression when necessary. Two eligible daily releases are needed for changes; sample composition can cause apparent movement. Historical ratios and current survey percentages use different denominators and are not directly equivalent.
9. Scope and reproducibility
No production LLM calls, external AI dependency, payment or advertising. Synthetic scenarios run in a worker in your browser; empirical scenarios stay on the server to avoid exposing individual vectors. Scenario input inspection includes the engine version, seed and scaled capacities. Public source data and an import script are versioned by year.
Official PIA rules ↗ · Source register · Privacy and deletion