Settlement Risk · benchmark · model trained 2026-10-10 · published 2026-10-14 · v1.1 shipped 2026-10-15

How good is the settlement estimate, measured the hard way

Every model number on this page comes from a frozen test set: 754 Polymarket markets whose UMA resolution was disputed between 1 August and 30 September 2026, none of which the model saw in training. The test set, labels and model scores are downloadable below so anyone can recompute the table.

Numbers are published once with their window and never edited. New model versions get new rows, never replaced ones. Wording: a market "settles differently from the disputed proposal"; a dispute blocks a proposal, it does not by itself change an outcome.

01What is being estimated

When a Polymarket market's proposed resolution is disputed on UMA, the free record at GET https://api.predge.io/v1/settlement-risk/{market} now carries settlement_estimate: the probability that the market settles differently from the disputed proposal. It is computed at the moment of the first dispute from what is public at that moment: the market price just before the dispute, the adapter, the market type and duration. Nothing after the first dispute is used. The field is inside the ed25519-signed payload, as a decimal string, next to the chain facts.

Context, 1 January to 2 October 2026 (on-chain, Polygon): 3,005 UMA disputes on 2,666 Polymarket markets; 323 markets disputed twice or more, which sends the outcome to a UMA token-holder vote; 853 of the 2,543 disputed markets that have settled (33.5%) settled differently from the disputed proposal.

02Results on the frozen test set

Trained on disputes first raised 1 January to 30 June 2026 (1,478 settled disputed markets), calibrated on July (281), tested on August to September (754; 306 settled differently, base rate 40.6%). 95% intervals are bootstrap over the test set (1,000 resamples).

AUC
0.6740.638 to 0.709
settlement-estimate-v1.1, shipped (same scores as v1)
PR-AUC
0.5680.516 to 0.617
base rate 0.406
Precision, top 100
0.65top 50: 0.776
averaged over tied estimates, v1.1; v1 published 0.67 (one tie order)
Brier
0.226constant 0.251
lower is better; constant = the training-period rate
model, inputs at prediction timeAUC95% CIPR-AUCP@50P@100P@250status
base rate (constant)0.520.48 to 0.560.420.420.410.42reference
category prior0.550.52 to 0.580.440.520.520.39reference
gradient boosting, creation-time metadata and rules text only0.580.54 to 0.620.510.580.530.50study
gradient boosting, plus pre-proposal prices (3 h and 24 h before the dispute)0.610.57 to 0.650.550.660.600.50study
settlement-estimate-v1: logistic regression, 15 features incl. price just before the first dispute, isotonic calibration; P@K in one arbitrary order of tied estimates0.6740.638 to 0.7090.5680.760.670.53shipped to 2026-10-15
settlement-estimate-v1.1: the same model and scores as v1; P@K averaged over every order of tied estimates (range: 0.72 to 0.88, 0.53 to 0.85, 0.376 to 0.644)0.6740.638 to 0.7090.5680.7760.650.519shipped since 2026-10-15
gradient boosting, same inputs as v10.730.70 to 0.770.660.780.760.62study, not shipped

Precision at K for v1 depends on how ties are broken: the calibrated estimate takes a few dozen distinct values (49 on the test set), and 91 test disputes share the estimate 0.6957 (ranks 69 to 159). The v1 row is the v1 model card's single order (docs/models/settlement-estimate-v1.json), which records signed under v1 carry. Averaged over every tie order they are 0.776, 0.65 and 0.519 for the top 50, 100 and 250 (first published here on 2026-10-14 as 0.78, 0.65 and 0.52). The gradient-boosted scores have no such ties. Brier for a constant forecast at the training-period rate (0.31) is 0.251; at the test period's own rate (0.41) it is 0.241.

Update 2026-10-15. The API now signs settlement-estimate-v1.1. It is v1 with the same constants, so every estimate is identical; the only signed change is evaluation.precision_at_100, now "0.65" (averaged over tied estimates) instead of v1's "0.67" (one tie order). AUC, PR-AUC and Brier do not depend on tie order and are unchanged. The v1 row and its numbers stay as published; records issued under v1 keep their model id and number and still verify.

The shipped model is the logistic one, not the stronger gradient-boosted one. The reason is operational and stated plainly: the logistic model is fifteen multiplications and a lookup, ports to a few lines of TypeScript inside the API, reproduces against fixtures, and needs no job, table or database on a free route. The 0.06 AUC gap is the price of that, and the next version will try to close it without giving up any of those properties.

Calibration on the test set

estimate binnmean estimateobserved share
0.00 to 0.202280.130.19
0.30 to 0.40110.400.18
0.40 to 0.5040.450.25
0.50 to 0.601810.560.48
0.60 to 0.702620.650.46
0.70 to 0.80500.790.70
0.80 to 1.00180.981.00

The 0.60 to 0.70 bin over-estimates by about 0.19: the July calibration month ran hotter (47% settled differently) than August and September (39% and 42%). Monthly recalibration is the planned fix; until then, read a 0.65 as "more likely than not", not as 65%.

03Drift: the share that settles differently moves every month

Share of settled disputed markets that settled differently from the disputed proposal, by the month the first dispute was raised. Any single headline percentage ages fast; this is why every number here carries its window.

0% 20% 40% 60% 30.2%31.7%20.8% 35.2%24.9%26.5% 46.6%38.9%41.8% JanFebMar AprMayJun JulAugSep n 275208308 230253204 281316438 traincalibrationfrozen test

Twice-disputed markets, whose outcome goes to a UMA token-holder vote, settle differently less often than once-disputed ones: 68 of 314 (21.7%, 95% Wilson 17.5% to 26.5%) against 784 of 2,218 (35.3%, 33.4% to 37.4%), disputes raised 1 January to 2 October 2026. For those markets the API gives this reference rate instead of a model score and labels it basis: reference_rate.

04Leakage checklist

What was excluded so the test is honest. The strongest single "feature" available in Polymarket's market index is the last trade price, which alone gives AUC 0.935 on this task. It is excluded: markets keep trading after a proposal and during a dispute, so the last trade already reflects the crowd's view of how the dispute ends. The model uses prices read from the public order-book history at timestamps before the first dispute.

field or practicedecisionreason
gamma lastTradePrice, outcomePrices, bid, ask, spreadexcludedpost-dispute trading and the final resolution
UMA status history, closedTime, final number of disputesexcludedencode the outcome of the process
final volumeexcludedincludes trading during the dispute
rules text "Update" paragraphs; bulletin-board posts after the disputeexcludedappended after the dispute
CLOB price just before the first disputeincluded, labelledvisible to anyone at that moment; it does contain the market's reaction to the proposal
CLOB price 3 h and 24 h before the disputeincludedpre-proposal proxies (challenge windows are 0 to 2 h)
random cross-validationnot usedthe monthly rate drifts; only the time split counts
vocabulary, scaling, class priorsfit on train and calibration months only

05What is not claimed: predicting disputes before they happen

The same study asked whether a market's chance of being disputed at all can be predicted at creation. On the whole population of 3,305,478 closed Polymarket markets with end dates January to September 2026 (2,413 disputed, 0.073%), creation-time features reach a weighted AUC of 0.71 (95% CI 0.69 to 0.72) on the August to September test months, but precision in the 1,000 highest-risk markets is 1 to 3% and a blind rules-reading test on category-matched pairs found no signal (AUC 0.53, 95% CI 0.40 to 0.67). So the API does not carry a per-market dispute probability. It carries segment_dispute_rate: how often markets of the same category and sports market type were disputed in 2026, with a Wilson interval, labelled as a segment statistic.

category (2026, end dates Jan to Sep)marketsdisputedrate
geopolitics2,389612.55%
politics28,5023331.17%
tech3,020200.66%
culture22,252860.39%
finance35,379800.23%
esports318,3323540.11%
weather146,6481060.07%
sports1,879,6651,2700.068%
crypto868,8241000.012%
other46730.64%

06Live tracking: not running yet

The plan: every new dispute gets its estimate at the moment it is raised, and about 30 days later, once the chain has settled it, the estimate is compared with what the chain settled, month by month (the share that settled differently, and the precision of the 10% highest estimates).

Live tracking starts once the nightly pipeline runs. That pipeline is not running yet, so there are no live numbers on this page. The model figures on this page come from the frozen test set of disputes raised August to September 2026.

07Recompute it yourself

python3 -c "import json;from sklearn.metrics import roc_auc_score as a;r=json.load(open('test-set-2026-08-09.json'))['rows'];print(a([x['settled_differently'] for x in r],[x['estimate_v1'] for x in r]))"

Rules for this page: numbers carry their window; published numbers are never edited; a new model version adds rows. Nothing here is advice or a statement about any market's merits.