Scoring Models · EPO 6mo (broker commission-clawback risk within 6 months)
What it does
Gradient-boosting classifier rating the probability that a Fannie-eligible conventional origination will either prepay or reach 30+ days delinquent within the first 6 months after funding — the standard event window in most wholesale originator comp agreements. Either event fires the broker's commission clawback, so the two outcomes are combined into a single "EPO" label. Trained on 16.4M Fannie SFP originations across 2018-2023 vintages, isotonic-calibrated, tested on 981K 2024 loans out-of-time: OOT AUC 0.68 (v1.1). Fair-lending AIR audit ACCEPTABLE across race (0.923), ethnicity (0.963), and sex (0.985) — well within the 4/5ths rule.
v1.1 refresh (2026-08-11): added a
rate-incentive feature computed from Optimal Blue's
live market feed. The scorer now compares the loan's note rate to
today's prevailing 30yr conforming lock rate (and optionally to a
broker-supplied forecast). OOT AUC improved 4pp (0.65 → 0.68) and
the Test→OOT gap collapsed from 4pp to under 1pp — the model
is much less regime-dependent than v1 was. Top driver is now
refi_incentive_m6 = loan note rate minus expected market
rate 6 months out.
Why it matters. A prepay or an early payment default inside the 6-month window means the broker forfeits their comp on that loan — often the entire origination margin. A pre-submission triage score lets you route the highest-risk files through a wholesale-lender partner with a shorter clawback window, negotiate a contingent-comp posture, or eat the risk knowingly rather than after the fact. Score the top-of-pipeline population once, filter to the top 5% or 10%, and route those specifically.
Tier-only output. The API returns a tier ranking — top 1% / top 5% / top 10% / within baseline — rather than a raw probability. The calibrator drifts materially on post-2023 vintages because prepay dynamics rebased after the 2022-23 rate shock, so absolute probabilities are unreliable. Tier ordering, on the other hand, is stable and is what a broker actually uses (triage, not underwriting math).
What it is NOT. This is a propensity signal, NOT an underwriting decision, NOT a DU/LPA substitute, NOT a compliance check. Fannie eligibility, LLPA pricing, agency guides are unchanged. This surfaces risk that would otherwise only become visible in the servicing tape 3-6 months later.
Universe note. Fannie SFP conventional originations
only in v1 — a GNMA (FHA/VA/USDA) sibling is on the roadmap
since government-loan broker economics have similar 6-month clawback
structures but different prepay dynamics (Streamline / IRRRL / MIP
effects). Freddie is excluded from v1 because the loan-level tape
(STACR) is a CRT-referenced subset. Deliberately does NOT use
seller/lender identity as a feature: ablation showed dropping
seller_name cost only 0.4pp OOT AUC while eliminating
2.3pp of in-sample overfit — a cleaner, more portable model.
Top drivers: origination_year,
original_interest_rate, original_upb,
borrower_fico, property_state,
first_time_homebuyer, co_borrower_fico,
loan_purpose, channel.
› Try it on the home page (Loan-level model scoring → EPO 6mo)
API connector
Programmatic access. Calibrated probability + risk band + operating recommendation in the response.
POST /api/score_epo_6mo
Content-Type: application/json
{
"borrower_fico": 720,
"co_borrower_fico": 700,
"dti": 38,
"original_ltv": 80,
"original_cltv": 80,
"original_upb": 350000,
"original_interest_rate": 6.5,
"original_loan_term_months": 360,
"number_of_borrowers": 2,
"loan_purpose": "P", // P=purchase, R=refi, C=cash-out refi
"channel": "R", // R=retail, B=broker, C=correspondent
"property_type": "SF", // SF / CO / MF / MH etc.
"occupancy": "P", // P=primary, S=second, I=investor
"first_time_homebuyer": "N",
"property_state": "GA",
"origination_year": "2026",
"origination_month": "08"
}
Response includes risk_band (P99 / P95 / P90 / BASE),
risk_percentile (e.g., "top 5% risk"), and a
recommendation tuned to broker triage decisions
(submit / re-quote / renegotiate comp). Deliberately does NOT
include a raw probability — see the calibration note in the
response and the /schema endpoint for the full response contract.
Schema reference (request / response shape): GET /api/score_epo_6mo/schema
Model metadata (training cohort, AUC, calibration): GET /api/score_epo_6mo/info
mortgagetape™