Skip to main content
CFDL

Credit: mortgage pool conventions

A mortgage pool priced under standard market conventions, reconciling published factors, CPR and SMM against a fixed prepayment vector.

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 30-year agency mortgage pool run at market-standard conventions: a constant prepayment rate converted to a single monthly mortality, a default rate, a loss severity on defaulted balances, and a lag before recoveries arrive. These are the definitional mechanics of mortgage cash flow.

The reference

The industry's own standard formulas for analyzing mortgage-backed securities — the document that defines CPR, SMM, PSA and SDA. It publishes cash flow schedules computed on those definitions; the anchors here run to period 347.

Not redistributable. The publisher forbids reproduction in any form, so the source is neither vendored nor quoted; its figures are carried as anchor values and cited as facts.

Provenance. The expectations are taken from an independent published reference, cited above. The source is not committed with the case; a reader checks the asserted figures against the published document itself.

What it exercises

Packcredit
Contract typescredit.loan
Language featurespack contract lowering to four separate cash flow lines
ConventionsCPR-to-SMM conversion, constant default rate, loss severity, recovery lag

The result

Interest, scheduled principal, prepayments and recoveries each reproduce as their own column across the schedule, rather than only in a total.

Asserted: four stream columns at 25 anchor months, 95 cells in all.

The delta

The tolerance is 0.51 — just over half a dollar — because the published schedule prints whole dollars while compounding on unrounded balances. Half a dollar is the closest any implementation can come to a figure rounded to the dollar.

There is no summary metric; the four columns are asserted directly.

Run configuration

{
  "deterministic": {
    "annual_discount_rate": 0.08
  }
}

Verified results

Checked period by period: 4 series across 25 periods — 95 values in all, each within ±0.51 of the reference.

  • credit.loan.interest.a
  • credit.loan.sched_principal.a
  • credit.loan.prepay.a
  • credit.loan.recoveries.a