{"model":"repurchase","model_version":"repurchase_v4.0.0","calibrated":true,"target":"ever_repurchased","n_train":17010804,"n_calib":5670268,"n_test":5670268,"n_iters":238,"test_auc":0.8130216849915786,"true_positive_rate":0.001535624065740808,"score_thresholds":{"p99":0.01279567699836868,"p95":0.004556050010595465,"p90":0.0028672058901612367,"p50":0.0006966352517341241},"feature_order":["borrower_fico","co_borrower_fico","original_ltv","original_cltv","dti","mi_percent","original_upb","original_interest_rate","original_loan_term_months","number_of_units","number_of_borrowers","max_dq_status_1_6","dq_months_1_6","ever_60dq_1_6","ever_90dq_1_6","ever_modified_1_6","upb_decline_pct_1_6","obs_months_1_6","source","loan_purpose","channel","property_type","occupancy","first_time_homebuyer","product_type","property_valuation_method","origination_year","origination_month","property_state","seller_name"],"n_features":30,"expected_inputs":{"numeric":["borrower_fico","co_borrower_fico","original_ltv","original_cltv","dti","mi_percent","original_upb","original_interest_rate","original_loan_term_months","number_of_units","number_of_borrowers","max_dq_status_1_6","dq_months_1_6","ever_60dq_1_6","ever_90dq_1_6","ever_modified_1_6","upb_decline_pct_1_6","obs_months_1_6"],"categorical":["source","loan_purpose","channel","property_type","occupancy","first_time_homebuyer","product_type","property_valuation_method","origination_year","origination_month","property_state","seller_name"]},"vintages_trained_on":["2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023"],"test_brier_raw":0.1540252512020616,"test_brier_calibrated":0.001500324980416403,"test_ece_raw":0.3343085890080571,"test_ece_calibrated":1.483366995386297e-05,"reliability_calibrated":[{"bin_lo":0.0,"bin_hi":0.1,"n_loans":5668161,"predicted_mean":0.0014490209263678326,"actual_rate":0.001454792833160526},{"bin_lo":0.1,"bin_hi":0.2,"n_loans":1050,"predicted_mean":0.15839156322620493,"actual_rate":0.1619047619047619},{"bin_lo":0.2,"bin_hi":0.30000000000000004,"n_loans":740,"predicted_mean":0.25033007383083083,"actual_rate":0.21891891891891893},{"bin_lo":0.30000000000000004,"bin_hi":0.4,"n_loans":170,"predicted_mean":0.3487010293735765,"actual_rate":0.32941176470588235},{"bin_lo":0.4,"bin_hi":0.5,"n_loans":38,"predicted_mean":0.44848392969514733,"actual_rate":0.39473684210526316},{"bin_lo":0.5,"bin_hi":0.6000000000000001,"n_loans":52,"predicted_mean":0.5172168836297646,"actual_rate":0.4423076923076923},{"bin_lo":0.6000000000000001,"bin_hi":0.7000000000000001,"n_loans":57,"predicted_mean":0.6656261014796185,"actual_rate":0.6140350877192983}],"cross_vintage_check":{"split":"train 2020-2021, calib 2022, test 2023","test_auc_calibrated":0.7125,"test_brier_calibrated":0.002341,"test_ece_calibrated":0.0006,"interpretation":"Honest cross-vintage performance. The random-split AUC (0.81) is an upper bound that assumes future macro context resembles the past. Realized 2024+ performance will be closer to this vintage-holdout number than to the random-split number."}}