CreditVintage

OBSERVED PUBLIC DATA / STATIC BENCHMARK

German credit.
A fixed comparison.

1,000 historical German credit records. Frozen stratified split: 600 train, 200 calibration, 200 test. The native good/bad target has 300 bad records, including 60 in the test split. No hyperparameter search. Scaling and categories are learned only from training records.

This dataset has no decision or publication dates. It cannot validate the point-in-time controls or the 180-day outcome used in the separate synthetic experiment.

Untouched test split

MethodROC-AUC Average precisionBrier ↓
constant_train_rate0.5000.3000.210
logistic0.7740.6770.162
isotonic0.7600.6060.169

The same 20-record review capacity

Method ReviewedCaptured badPrecisionCapture
constant_train_rate206/6030.0%10.0%
logistic2017/6085.0%28.3%
isotonic2017/6085.0%28.3%

A constant score is ordered by original row number to resolve ties. Review is a historical ranking comparison, with no observed intervention, financial benefit or approval outcome.

Reproduce and inspect

creditvintage public-benchmark --out outputs/public-credit
creditvintage verify-public outputs/public-credit

Verification refits the frozen models from the original bytes and recorded split, then checks scores, metrics, queue and page. It needs no network. Numerical tolerance is 1e-8 for probabilities and 1e-6 for summary metrics; runtime versions are recorded.

Original data · Every split assignment · Test labels and scores · All review budgets · Label-free logistic queue · Summary · Digests

What remains unproven

Source: Hans Hofmann (1994), Statlog (German Credit Data), UCI Machine Learning Repository. CC BY 4.0. Original data bytes preserved; native label recoded and three model fields excluded as documented in the protocol.

SHA-256: b21f3d81db8071257d5ff1deaeba1fd4303b62712e6fcc9715c7a86202cb5871