Supreme Court Report

supremecourt.report · methods note

Predicting the Probability of Certiorari

How this site estimates the chance that a petition will be granted, and how those estimates are checked against what the Court actually did.

What the number means

Every paid petition on this site carries a percentage: the estimated chance that the Court will grant it and hear the case. It works like a rain forecast. A “17%” does not say the petition scores 17 out of 100, and it does not say the petition will be granted. It says that, of a hundred petitions that look like this one on the docket, about seventeen have been granted in the past. Most petitions are long shots: across the eight Terms the models learned from, 4.1% of paid petitions were granted, so a petition rated near that figure is simply average.

Three estimates for three moments

A petition’s prospects change as its docket develops, so the site carries three related estimates rather than one.

Petitions filed without the fee, by people who cannot afford it, are not scored. About one in a thousand of them is granted, and a model built for paid petitions would be wrong about them in both directions.

What the models learned from

Eight Terms of the Court’s own docket records, from the Term that began in October 2017 through the one that began in October 2024: 11,814 paid petitions, of which 498 were granted and heard. A petition counts as a success only if the Court took the case in full. Petitions sent back with a GVR, dismissed, or still waiting are left out of the lesson, because they are neither a yes nor a no to the question the model is asking.

One rule matters more than any other: the models may see only what was on the docket before the Court acted. A response filed the week after a grant says nothing useful about predicting that grant, and letting it in would make the model look far better than it is. Every docket signal is measured strictly before the decision date.

How the estimate is made

The method is the plainest one that works: a scoring formula. Each fact about a petition adds or subtracts points (the United States as petitioner adds a great many; a petitioner with no lawyer subtracts a great many), the points are totalled, and the total is converted into a probability. Statisticians call this logistic regression. Nobody writes the points by hand: the formula is fitted to the eight Terms of outcomes so that each fact carries the weight it actually had.

The conversion from points to a percentage is then checked and, where needed, adjusted, a step called calibration, so that when the model says 17%, about 17 in 100 such petitions really were granted.

The checking is done honestly. Fitting a model and then grading it on the same petitions would be like letting a student mark their own homework with the answers open. Instead, each Term is hidden in turn: the model is fitted on the other seven Terms, asked to predict the hidden one, and graded against what actually happened. Every figure in the next section comes from those hidden-Term predictions, never from petitions the model had already seen. A stricter version of the check fits only on Terms earlier than the one being predicted, as a forecaster working in real time would have to. It scores slightly lower, by 0.006 to 0.025 on the AUC scale explained below depending on the estimate. That is the honest cost of predicting forward in time, and the figures below are a little more generous than it.

How well it works

ModelBase rateAUCAvg. prec.Brier
Baseline (at filing)4.14%0.8760.2920.0343
Enhanced (at conference)7.81%0.8810.3710.0589
GVR (at conference)5.45%0.8370.2040.0460

Base rate is how often the outcome happened at all: the share of petitions in each model’s data that were granted, or for the GVR model sent back. It is the number a model has to beat.

AUC answers a simple question. Pick one granted petition and one denied petition at random; how often does the model rate the granted one higher? A coin flip scores 0.5 and a perfect model scores 1. The baseline scores 0.876, so it puts the granted petition first about 88% of the time.

Average precision asks how concentrated the grants are near the top of the model’s ranking. A random ranking scores the base rate itself, 4.14%. The baseline scores 0.292, about 7.1 times better than chance.

Brier score is the average error of the percentages themselves, so lower is better. The comparison is with the laziest possible forecast, which gives every petition the base rate. That forecast scores 0.0397 for the baseline, 0.0720 for the enhanced model and 0.0516 for the GVR model, and all three models beat it.

Plain accuracy is not reported because it would mislead. A model that said “denied” to every petition would be right 95.9% of the time and would be worthless.

These figures test the model on past Terms. Its live record, scored on forecasts written down before each conference, is on the Forecast Scorecard; see “Keeping score” below.

Calibration plot: predicted vs observed grant rate by decile
Petitions sorted into ten groups by the model’s estimate. Across: what the model predicted for each group. Up: the share actually granted. Points on the dashed line are perfectly calibrated; larger points are groups with more petitions.

What moves the estimate

Does 17% really mean 17%?

Within the limits of the data, yes. Sort the petitions into ten groups by the model’s estimate and compare each group’s average estimate with the share actually granted. In the riskiest tenth, the enhanced model predicted 39.0% and 36.9% were in fact granted; the baseline predicted 23.1% and 23.2% were granted. The lower groups track just as closely, as the chart above shows.

Keeping score

Every figure above was computed after the outcomes were known, on Terms the model was not fitted to. That is an honest test, but it is still a test set up after the fact. So the site also keeps a record it cannot revise. Before each conference, the nightly run writes down a forecast for every paid petition on the list and never edits it afterwards. Nothing is written for a conference that has already happened.

Each petition gets two forecasts at each conference. The first forecast is written the first night the petition appears on an upcoming conference’s list, often weeks ahead. The final forecast is made again every night after that and frozen at noon UTC on the day of the conference, before the Justices meet. It reflects everything the docket showed by then: the response, any relists, an invitation to the Solicitor General.

The Forecast Scorecard holds both to the orders the Court then issued, conference by conference: how many grants the forecasts expected and how many came, where each grant ranked among the petitions at its conference, and the same AUC and calibration checks as above. Its numbers are less settled than these, because the Court grants only a few dozen petitions a Term, but they are numbers the model could not have seen.

What it cannot do

Coefficients

This section is for readers who want to check the arithmetic. It lists every term in every model exactly as deployed, read from the model files themselves. For everyone else the sections above are the whole story, and these tables can be skipped.

Each row is one fact the model can see. β is the points that fact adds to a petition’s score (a negative number subtracts), and the odds ratio, eβ, restates the same thing as a multiplier on the odds of the outcome with everything else held equal: 2.0 means the odds double, 0.5 means they halve. SE is the uncertainty in the estimate, z is the estimate divided by that uncertainty, and p is the chance of seeing an effect at least this large if the true effect were zero. A • marks p below 0.05. It is a reading aid, not a finding: this is eight Terms of observational data, the 118 tests reported here are not corrected for their number, and a coefficient measures association, not cause.

Baseline at filing; predicts a grant · 37 terms
TermβSEzpOdds ratio
Intercept
(Intercept)-4.792 •0.226-21.181.6e-990.008
Counsel
counsel_tiersome0.425 •0.1403.040.00241.529
counsel_tiervet0.770 •0.1834.202.7e-052.160
counsel_tierwon1.274 •0.1349.521.8e-213.574
Petition signal
cite_bucket1-20.1600.1381.150.24821.173
cite_bucket11+0.569 •0.2202.590.00971.766
cite_bucket3-100.520 •0.1403.720.00021.682
dissent_below2TRUE0.524 •0.1264.153.3e-051.688
split_argued2TRUE0.928 •0.1247.515.9e-142.530
word_band<3k-1.750 •0.398-4.401.1e-050.174
word_band3-6k-0.808 •0.167-4.851.2e-060.446
word_bandunknown0.3040.1671.820.06891.355
Structural
court_belowCA10.909 •0.3102.940.00332.482
court_belowCA100.2050.3090.660.50741.227
court_belowCA110.5070.2681.890.05881.660
court_belowCA20.577 •0.2502.310.02101.781
court_belowCA30.721 •0.2812.570.01022.056
court_belowCA40.1080.2820.380.70171.114
court_belowCA50.701 •0.2293.070.00222.017
court_belowCA60.2320.2720.850.39401.261
court_belowCA7-0.1520.331-0.460.64620.859
court_belowCA80.4250.3021.410.15951.529
court_belowCA90.571 •0.2112.700.00691.769
court_belowCAAF0.8060.7101.130.25652.239
court_belowCADC0.852 •0.2843.000.00272.344
court_belowCAFED0.4450.2941.510.13001.561
court_belowOTHER-1.7981.453-1.240.21620.166
court_belowUSDC_APPEAL2.019 •0.4884.133.6e-057.527
gap_fast0.519 •0.0598.752.2e-181.681
gap_naTRUE0.851 •0.2773.080.00212.341
pet_typebusiness0.389 •0.1312.980.00291.475
pet_typestate_local0.720 •0.2283.150.00162.054
pet_typeus_fed1.886 •0.1919.875.8e-236.593
pro_seTRUE-4.644 •1.385-3.350.00080.010
resp_typebusiness-0.2200.152-1.450.14750.802
resp_typestate_local-0.357 •0.170-2.090.03640.700
resp_typeus_fed-0.0000.138-0.000.99881.000
Enhanced at conference; predicts a grant at any later conference · 41 terms
TermβSEzpOdds ratio
Intercept
(Intercept)-5.012 •0.163-30.722.9e-2070.007
Petition signal
dissent_below2TRUE0.187 •0.0762.460.01391.206
split_argued2TRUE0.831 •0.07710.746.8e-272.295
Process
amicus_bucket10.841 •0.0958.849.5e-192.319
amicus_bucket20.909 •0.1197.632.3e-142.481
amicus_bucket3-40.986 •0.1128.791.4e-182.682
amicus_bucket5+1.056 •0.1099.655.0e-222.874
cvsgTRUE0.722 •0.1714.232.4e-052.059
relist_bucket11.374 •0.08915.392.0e-533.951
relist_bucket20.741 •0.1425.221.8e-072.098
relist_bucket3-40.438 •0.1522.890.00391.550
relist_bucket5+-0.2440.166-1.480.13990.783
reply_filedTRUE1.941 •0.16711.662.1e-316.968
resp_waiverTRUE-0.738 •0.115-6.431.3e-100.478
response_filedTRUE-0.978 •0.152-6.441.2e-100.376
response_requestedTRUE0.553 •0.1134.891.0e-061.739
Structural
court_belowCA10.778 •0.2103.700.00022.176
court_belowCA100.0040.2160.020.98351.004
court_belowCA110.633 •0.1683.770.00021.883
court_belowCA20.468 •0.1642.850.00431.597
court_belowCA31.132 •0.1846.167.1e-103.101
court_belowCA40.2240.1791.250.20981.251
court_belowCA50.770 •0.1495.182.2e-072.161
court_belowCA60.396 •0.1762.250.02461.486
court_belowCA7-0.609 •0.219-2.780.00550.544
court_belowCA80.446 •0.2022.210.02731.563
court_belowCA90.685 •0.1355.064.3e-071.983
court_belowCAAF0.9740.5471.780.07492.648
court_belowCADC0.620 •0.1893.290.00101.860
court_belowCAFED0.1120.2000.560.57481.118
court_belowOTHER-2.3861.451-1.640.10010.092
court_belowUSDC_APPEAL2.238 •0.3696.061.3e-099.371
gap_fast0.376 •0.0419.136.9e-201.457
gap_naTRUE0.942 •0.1994.752.1e-062.566
pet_typebusiness0.508 •0.0875.826.0e-091.661
pet_typestate_local0.1910.1511.260.20661.211
pet_typeus_fed1.790 •0.12614.263.7e-465.991
pro_seTRUE-4.187 •1.405-2.980.00290.015
resp_typebusiness0.0100.1080.090.92841.010
resp_typestate_local-0.256 •0.107-2.400.01660.774
resp_typeus_fed0.307 •0.0973.170.00151.360
GVR at conference; predicts a grant-vacate-remand · 40 terms
TermβSEzpOdds ratio
Intercept
(Intercept)-2.779 •0.138-20.143.5e-900.062
Petition signal
gvr_askTRUE1.123 •0.09611.757.3e-323.074
Process
amicus_bucket1-0.0670.110-0.600.54600.935
amicus_bucket20.0880.1500.590.55731.092
amicus_bucket3-4-0.952 •0.190-5.015.4e-070.386
amicus_bucket5+0.0410.1410.290.77041.042
cvsgTRUE0.563 •0.2722.070.03821.757
relist_bucket11.082 •0.1109.829.1e-232.952
relist_bucket21.531 •0.15010.192.2e-244.622
relist_bucket3-41.483 •0.1649.021.8e-194.406
relist_bucket5+2.013 •0.14813.566.7e-427.489
reply_filedTRUE0.0970.1390.700.48521.102
resp_waiverTRUE-1.876 •0.116-16.186.8e-590.153
response_filedTRUE-0.639 •0.138-4.653.3e-060.528
response_requestedTRUE1.371 •0.10912.573.1e-363.940
Structural
court_belowCA1-0.929 •0.317-2.930.00340.395
court_belowCA10-0.2470.225-1.100.27070.781
court_belowCA110.2490.1751.420.15421.283
court_belowCA2-0.1020.188-0.540.58670.903
court_belowCA3-0.589 •0.268-2.200.02810.555
court_belowCA4-0.2720.193-1.410.15990.762
court_belowCA50.0250.1640.150.87911.025
court_belowCA6-0.410 •0.197-2.080.03760.663
court_belowCA7-0.0000.190-0.000.99811.000
court_belowCA80.2580.2031.270.20311.295
court_belowCA90.2680.1391.930.05411.308
court_belowCAAF-2.3721.487-1.600.11050.093
court_belowCADC0.1930.2100.920.35871.213
court_belowCAFED-0.4390.241-1.820.06910.645
court_belowOTHER-0.8290.652-1.270.20350.436
court_belowUSDC_APPEAL1.277 •0.3533.610.00033.584
gap_fast0.0080.0520.160.87541.008
gap_naTRUE0.0060.2570.020.98161.006
pet_typebusiness0.0420.1160.370.71431.043
pet_typestate_local1.154 •0.1447.991.3e-153.171
pet_typeus_fed1.349 •0.1379.857.1e-233.854
pro_seTRUE-2.447 •0.400-6.129.1e-100.087
resp_typebusiness-0.397 •0.138-2.870.00410.673
resp_typestate_local-0.408 •0.128-3.190.00140.665
resp_typeus_fed0.472 •0.1134.192.8e-051.603
Conference competing risks · 49 terms

No uncertainty figures for this one. The conference forecast is a different kind of model: at each conference it weighs three outcomes at once (relisted, granted, GVR) against denial. To keep the saved model small, the part that carries its uncertainty estimates (the Hessian) is dropped by strip_multinom() before it is stored, so SE, z and p cannot be recovered from it; refit from the at-risk panel if you need them. Each number below is the points that fact adds to the odds of that outcome versus denial at the same conference.

TermRelistedGrantedGVR
Intercept
(Intercept)-0.778-6.132-4.678
Conference
conf_f2-0.873-0.4321.077
conf_f3-0.1150.1421.659
conf_f41.3000.4882.748
conf_f51.565-0.2311.237
phasejune-0.1920.3381.342
phaselong-0.4641.3610.447
phasespring-0.137-0.4080.379
phasesummer-2.5280.1581.468
phasewinter0.0780.349-0.114
Petition signal
gvr_askTRUE0.536-0.1791.556
Process
amicus_bucket10.8090.609-0.064
amicus_bucket20.9231.132-0.093
amicus_bucket3-41.1751.000-0.135
amicus_bucket5+1.9001.3280.860
cvsgTRUE-0.6481.0190.405
relist_bucket11.4863.8821.947
relist_bucket20.9932.8401.948
relist_bucket3-40.1682.6201.674
relist_bucket5+0.0552.1062.005
reply_filedTRUE0.4892.1760.048
resp_waiverTRUE-2.358-1.848-2.974
response_filedTRUE-1.429-1.380-1.550
response_requestedTRUE3.7292.2443.254
Structural
court_belowCA10.3611.281-0.245
court_belowCA100.2250.540-0.147
court_belowCA110.3110.8710.303
court_belowCA20.3321.0060.475
court_belowCA3-0.0461.3120.126
court_belowCA40.1450.6810.163
court_belowCA50.3811.0790.389
court_belowCA60.3500.9590.214
court_belowCA70.3810.128-0.037
court_belowCA80.2411.1990.663
court_belowCA90.2511.1780.503
court_belowCAAF0.2461.216-9.200
court_belowCADC0.8450.7060.243
court_belowCAFED0.2370.356-0.338
court_belowOTHER-0.665-11.492-0.222
court_belowUSDC_APPEAL12.55715.24814.691
gap_fast0.1770.3570.074
gap_naTRUE0.2910.6880.270
pet_typebusiness0.0540.3990.208
pet_typestate_local0.6440.2570.803
pet_typeus_fed1.9132.4342.422
pro_seTRUE-1.726-16.504-1.845
resp_typebusiness-0.3660.083-0.674
resp_typestate_local0.010-0.320-0.239
resp_typeus_fed0.0040.2030.660