Skip to content

NRMP-like market: a saved run

Run this market yourself

A saved run of the simulator: everyone who opens it sees this same market. Simulated from the assumptions in the parameters; not a prediction of any real applicant's or program's match.

About this example

The simulator's default market. Applicants come in five groups, in proportions like those of the Main Residency Match (US MD seniors, US DO seniors, US and non-US international medical graduates, and others), and there are slightly fewer positions than applicants. Applicants agree only moderately on which programs are best, as programs do on applicants, and each side sees the other through noise before interviews.

What to look at

  • Match: Who matched, by applicant group and by strength, and which choice on their list they got.
  • Applications and interviews: How the interviews are spread: who holds many, and who has none.
  • Before interviews: How well each side can judge the other before interviews.
  • Population: The applicant groups and the programs the market was generated with.

This is one run of the market, with seed 2026 and model 2.1. Another seed draws other applicants and programs, so the numbers differ from run to run: run the market yourself to see by how much, or to change its parameters. The run's files are kept with the project's source code.

Summary

Market
1,000 × 142
Applicants per position
1.080
Match rate
92.2%
Positions filled
95.7%
Seed
2026
Matched to first choice
41.4%
Interviews per applicant
8.2
Time
74 ms
Saved
2026-10-06
Applicants
1,000 (generated)
Programs
142 with 926 positions (generated)

Checks passed The match is stable, within capacity and follows the rank order lists. See the match.

Which applicants get an interview and a match?

Which applicants get an interview and a match?

Every applicant counted once: whether they had at least one interview, and whether they matched. With Colour by strength on, each stage splits into five groups by strength percentile (fifths; applicants of equal strength stay in the same group), from the bottom 20% in red through the middle in grey to the top 20% in blue, and each drop-off shows which groups it holds, so the quality of the applicants can be followed through the stages. Each band's width is a number of applicants. Hover a stage or a band for its count and its share of all applicants (with the switch on, of its group) and to highlight its path; a band after the first stage also gives its share of the stage it leaves. No interview splits into never invited and invited without an interview. With the switch on, each drop-off's bar is split into the groups' colours in proportion, and the small bar beside its label shows the same mix from weaker to stronger; hover the drop-off for each group's count, its share of the drop-off and the share of the group it holds: a group that loses a larger share of its applicants does worse. Strength is the applicant's latent strength. The view all programs share is mostly strength, mixed with the applicant's attributes, and each program sees it only through its own noisy view. The funnel above counts applications instead: strong applicants hold many interviews but match only once.

Learn more in the help

Of 1,000 applicants, 961 had at least one interview and 886 matched (88.6%); 39 had no interview, 39 of them never invited. By strength, 68.0% of the bottom 20% matched, against 96.0% of the top 20%. The bottom 20% make up 23 of the 39 with no interview and 41 of the 75 interviewed but not matched.

The numbers
WhoStrength (z)Applicants Never invitedInvited, no interview InterviewedInterviewed, not matched MatchedShare matched
Bottom 20% -4.99 to -1.28 200 23 0 177 41 136 68.0%
20th–40th percentile -1.28 to -0.45 200 3 0 197 13 184 92.0%
40th–60th percentile -0.44 to 0.21 200 5 0 195 12 183 91.5%
60th–80th percentile 0.21 to 0.90 200 4 0 196 5 191 95.5%
Top 20% 0.90 to 4.01 200 4 0 196 4 192 96.0%
All applicants 1,000 39 0 961 75 886 88.6%

Stages

StageStatusTimeResult
Population Finished 1 ms 1,000 applicants, 926 positions, 142 programs
Pre-interview Finished 45 ms 142,000 pairs
Applications Finished 2 ms 31,447 applications
Signals Finished 0 ms 0 signals
Invitations Finished 12 ms 8,203 interviews, 13,969 invitations
Interviews Finished 3 ms 8,203 interviews
Rank order lists Finished 3 ms 8,203 applicant list entries, 7,451 program list entries
Match Finished 7 ms 0 blocking pairs, 886 matched

Checks

How this match was checked
CheckResult
Blocking pairs: an applicant and a program that rank each other above their match 0
Programs matched to more applicants than they have positions 0
Matches that are not on both rank order lists 0
List entries without an interview 0
Rank order lists whose ranks are not exactly 1, 2, ..., k 0
Applicant list entries beyond rank 300 (the NRMP limit) 0
Both proposing sides match the same applicants and fill each program equally (rural hospitals) not run
No applicant prefers the program-proposing result (applicant optimality) not run

The last two checks run when Compare both sides proposing is on in the match settings. The engine is also checked on hundreds of random markets against an independent solver (docs/VALIDATION.md).

Parameters of this run

Show the parameters

Run

Random seed
2026

Market

Applicants
1000
Applicants per position
1.08
Programs
blank
Program sizes
lognormal
Mean positions per program
6.5
Program size spread
0.8

Applicants

Applicant groups
NameShareStrength meanStrength SDApplications (mean)Signals
us_md0.440.51.0NoneNone
us_do0.180.351.0NoneNone
us_img0.09-1.01.0NoneNone
non_us_img0.25-1.31.0NoneNone
other0.04-0.51.0NoneNone
Applicant attributes
AttributeCorrelation with strengthAverage weight
board_scores0.80.5
research0.50.3
honors0.60.2

Programs

Quality SD within tiers
1.0
Program attributes
AttributeCorrelation with qualityAverage weight
reputation0.90.5
program_size0.00.2
location0.00.3

Preferences

Applicant agreement
0.6
Program agreement
0.7
Taste share of personal preferences
0.5
Attribute share of the common view
0.3
Weight concentration
10.0

Information

Applicant pre-interview noise
0.5
Program pre-interview noise
0.5
Interview informativeness
0.6
Interview fit shock
0.3
Visibility effect
0.0
Shared error (halo)
0.0

Applications

Application count
negbin
Applications (mean)
30.0
Application strategy
portfolio
Reach
0.25
Target
0.5
Safety
0.25
Self-assessment error
0.5
Application dispersion
0.5
Target band
0.15

Signals

Signal allocation
realistic
Programs using signals
1.0
Signals affect rank lists
False

Invitations

Interviews per position
10.0
Invitation strategy
top_score
Invitation rounds
3
Screening attribute
blank
Screening minimum percentile
0.0
Yield protection
0.0

Interviews

Interviews per applicant (max)
12
Acceptance order
first_come

Rank order lists

Applicant rank lists
all_interviewed
Applicant list length
20
Program rank lists
dnr_quantile
Do-not-rank share
0.1
Reservation utility
-1.0

Match

Algorithm
applicant_proposing
Compare both sides proposing
False

Parameter hash 4f847eb3ee9d235859d6ff027cd22c2aa95b28702d8c30c9f34202227f3db10f; population digest f44d6508d12cb5d3341f7660c022025e7e0e50a8a7fde4c75844450d8abc8759.