Skip to main content
CFDL

Credit: level-pay auto pool

A level-payment amortizing loan pool — the constant installment 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 installment 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.

Provenance. No external source exists for this case. The expectations come from an in-repo reference implementation generated from the pack's rules, built separately from the model and compared month by month, pending practitioner review. Nothing external asserts them.

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 twelve metrics, the three above among them.

The delta

None: every period agrees inside a one-cent tolerance. The weighted average life and the multiple carry a basis-point tolerance; the first is a weighted sum and the second a ratio of sums, both computed directly.

Run configuration

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

Verified results

Checked period by period: 1 series across 126 periods — 126 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
metric.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