Sooner Underwriting

Expected loss

Expected loss workbench

Seed-run view of PD, LGD, EAD, and sensitivity for the active underwriting config.

Build snapshot as of 2026-04-30. Config values are baked at build time; overrides require a redeploy.

Admin →

Equation

Expected loss equation

EL = PD x LGD x EAD

PD2%PD = priorByBand[band]Inputs:bandapproveprior0.02= 2.00%xLGD33%LGD = clamp(1 - recoveryRate - recourseTierCorrection - recourseDepthLgdAdjustment, 0, 1)Inputs:recoveryRate0.46recourseTierstrongrecourseTierCorrection0.18recourseDepthLgdAdjustment0.03= 33.00%xEADAED 256,000EAD = financedFeePctOfPrice × priceBasisAedInputs:financedFeePctOfPrice0.08priceBasisAed3,200,000= AED 256,000=ELAED 1,690EL = PD × LGD × EADInputs:PD0.02LGD0.33EAD256,000= AED 1,690

Default probability

Probability of default

Score band thresholds come from the active config set. The selected band feeds the PD prior.

BandScoring rulePD priorSeed match
approveSCS ≥ 70acceptanceThreshold = live config valueInputs:acceptanceThreshold70= 702%PD approve = live rate x 100Inputs:PD approve0.02= 2%Selected
committee55committeeReviewThreshold = live config valueInputs:committeeReviewThreshold55= 55 to 70acceptanceThreshold = live config valueInputs:acceptanceThreshold70= 706%PD committee = live rate x 100Inputs:PD committee0.06= 6%Reference
declineSCS < 55committeeReviewThreshold = live config valueInputs:committeeReviewThreshold55= 5515%PD decline = live rate x 100Inputs:PD decline0.15= 15%Reference
hardGateHard gate fail100%PD hardGate = live rate x 100Inputs:PD hardGate1= 100%Reference
PD value2%PD = priorByBand[band]Inputs:bandapproveprior0.02= 2.00%
Scoring bandapproveband = scoreBand(totalScore, thresholds)Inputs:totalScore99.1acceptanceThreshold70committeeReviewThreshold55= approve
SCS total99.1SCS = sum(categoryScore × categoryWeight) / activeWeightInputs:activeWeight100A1_weightedScore10A2_weightedScore7.5B_weightedScore15C_weightedScore10D_weightedScore7.5E_weightedScore7.5F_weightedScore5G_weightedScore5H_weightedScore15I_weightedScore4.1J_weightedScore12.5= 99.1
Tier inputResolved tierWeightScoreWeighted points
Re-Leasing RecourseAcommunityTier = resolvedRecourseTierInputs:communityTierA= A15%H weight = live rate x 100Inputs:H weight0.15= 15%100score = tierScore(communityTier)Inputs:communityTierAband100= 10015weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight15activeWeight100= 15.0
Sector TierT1employerTier = resolvedEmployerTierInputs:employerTierT1= T112.5%J weight = live rate x 100Inputs:J weight0.125= 12.5%100score = tierScore(employerTier)Inputs:employerTierT1band100= 10012.5score = bandFor(employerTier) × categoryWeight / activeWeightInputs:employerTierT1band100categoryWeight12.5activeWeight100= 12.5

Loss severity

Loss given default

LGD starts with recovery, then adjusts for recourse tier and rental-depth grade.

LGD33%LGD = clamp(1 - recoveryRate - recourseTierCorrection - recourseDepthLgdAdjustment, 0, 1)Inputs:recoveryRate0.46recourseTierstrongrecourseTierCorrection0.18recourseDepthLgdAdjustment0.03= 33.00%
Recovery rate46%recoveryRate = live rate x 100Inputs:recoveryRate0.46= 46%
Recourse tierstrongrecourseTier = resolved property recourse tierInputs:recourseTierstrong= strong
ComponentValueFormula
Collection window4 monthscollectionWindowMonths = recovery horizonInputs:collectionWindowMonths4= 4 monthsRecovery decay input
Recourse depth adjustment3%recourseDepthLgdAdjustment = live rate x 100Inputs:recourseDepthLgdAdjustment0.03= 3%Rental-depth grade input
Depth gradeAcommunityRecourseDepthGrade = resolved community signalInputs:communityRecourseDepthGradeA= ACommunity signal

Exposure

Exposure at default

EAD is the financed fee percentage applied to the active price basis.

EADAED 256,000EAD = financedFeePctOfPrice × priceBasisAedInputs:financedFeePctOfPrice0.08priceBasisAed3,200,000= AED 256,000
Price basisAED 3,200,000priceBasisAed = max(propertyPriceAed, propertyPriceFloorAed)Inputs:priceBasisAed3,200,000propertyPriceFloorAed800,000= AED 3,200,000
Financed fee8%financedFeePctOfPrice = live rate x 100Inputs:financedFeePctOfPrice0.08= 8%
Price floorAED 800,000propertyPriceFloorAed = live recovery config valueInputs:propertyPriceFloorAed800,000= AED 800,000

Stress table

Sensitivity grid

Cells vary PD by row and LGD by column while keeping seed EAD constant.

PD ↓ LGD →20%LGD = scenario column rateInputs:LGD0.2= 20%40%LGD = scenario column rateInputs:LGD0.4= 40%60%LGD = scenario column rateInputs:LGD0.6= 60%80%LGD = scenario column rateInputs:LGD0.8= 80%
1%PD = scenario row rateInputs:PD0.01= 1%AED 512EL = PD x LGD x EADInputs:pd0.01lgd0.2ead256,000= AED 512AED 1,024EL = PD x LGD x EADInputs:pd0.01lgd0.4ead256,000= AED 1,024AED 1,536EL = PD x LGD x EADInputs:pd0.01lgd0.6ead256,000= AED 1,536AED 2,048EL = PD x LGD x EADInputs:pd0.01lgd0.8ead256,000= AED 2,048
3%PD = scenario row rateInputs:PD0.03= 3%AED 1,536EL = PD x LGD x EADInputs:pd0.03lgd0.2ead256,000= AED 1,536AED 3,072EL = PD x LGD x EADInputs:pd0.03lgd0.4ead256,000= AED 3,072AED 4,608EL = PD x LGD x EADInputs:pd0.03lgd0.6ead256,000= AED 4,608AED 6,144EL = PD x LGD x EADInputs:pd0.03lgd0.8ead256,000= AED 6,144
5%PD = scenario row rateInputs:PD0.05= 5%AED 2,560EL = PD x LGD x EADInputs:pd0.05lgd0.2ead256,000= AED 2,560AED 5,120EL = PD x LGD x EADInputs:pd0.05lgd0.4ead256,000= AED 5,120AED 7,680EL = PD x LGD x EADInputs:pd0.05lgd0.6ead256,000= AED 7,680AED 10,240EL = PD x LGD x EADInputs:pd0.05lgd0.8ead256,000= AED 10,240
10%PD = scenario row rateInputs:PD0.1= 10%AED 5,120EL = PD x LGD x EADInputs:pd0.1lgd0.2ead256,000= AED 5,120AED 10,240EL = PD x LGD x EADInputs:pd0.1lgd0.4ead256,000= AED 10,240AED 15,360EL = PD x LGD x EADInputs:pd0.1lgd0.6ead256,000= AED 15,360AED 20,480EL = PD x LGD x EADInputs:pd0.1lgd0.8ead256,000= AED 20,480