CFDL

Credit: level-pay auto pool

A level-payment amortizing loan pool — the constant instalment that splits into shrinking interest and growing principal.

Every number below is checked against an independent reference implementation on every commit — period by period, and on each metric, inside a declared tolerance. See benchmark methodology.

The case

A $25m auto loan pool at 6.5% over 120 months, bought at a one-point discount. Every borrower pays the same instalment each month, which splits into shrinking interest and growing principal. Layered on top: an 8% constant prepayment rate, a 2% default rate, 35% loss severity, a six-month recovery lag, a 50 basis point servicing strip and a 1% prepayment penalty.

The reference

Level-payment pool conventions as defined by the standard market formulas for amortizing collateral — the same definitional source the mortgage cases use.

Not redistributable. The source cannot be published, so its conventions are recreated independently of the model and compared month by month.

The pack lowers this contract to closed-form pool-factor expressions, and the comparison is against a month-by-month recursion of the same convention.

What it exercises

Packcredit
Contract typescredit.loan, credit.purchase
Language featuresa pack contract paired with a purchase price
Conventionslevel-pay amortization, CPR, CDR, loss severity, recovery lag, a servicing strip, a prepayment penalty, purchase at a discount

The result

Present value −295,975.22, multiple on invested capital 1.225381 and weighted average life 3.84394 years.

Asserted: net cash flow per period across 126 months, plus the three summary figures.

The delta

None: every period agrees inside a one-cent tolerance. The weighted average life and multiple carry a basis-point tolerance, since both are computed from an iterative root rather than a closed form.

Run configuration

{
  "deterministic": {
    "annual_discount_rate": 0.06
  }
}

Verified results

Checked period by period: 1 series across 126 periods126 values in all, each within ±0.01 of the reference.

  • net_cash_flow

Summary metrics for the base run:

MetricValueTolerance
model.npv-295,975.22±1
model.moic1.225381±0.0001
model.wal_years3.84394±0.0001
domain.credit.interest6,499,894.55±1
domain.credit.principal22,978,060.49±1
domain.credit.recoveries1,167,319.89±1
domain.credit.servicing499,991.89±1
domain.credit.penalties82,207.68±1
domain.credit.wal_years4.056967±0.0001
domain.credit.collections30,727,482.61±1
domain.credit.purchase24,750,000±1
domain.credit.collections_multiple1.241514±0.0001