CFDL

Credit: floating-rate bridge pool

A floating-rate bridge loan pool priced off a forward curve, where the coupon resets each period rather than being fixed at origination.

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 $15m floating-rate bridge pool. The coupon is a benchmark rate plus 275 basis points, resetting each period off a stepped forward curve, with a 7.00% floor that binds in the early periods. It runs 36 months to a bullet, bought at par, against a 10% prepayment rate, a 2.5% default rate, 45% severity and a five-month recovery lag.

The reference

Floating-rate pool conventions as defined by the standard market formulas — coupon reset off an index, with a rate floor applied before the spread.

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

What it exercises

Packcredit
Contract typescredit.loan, credit.purchase
Language featuresa declared curve read per period by curve_value with step interpolation
Conventionsa coupon that resets rather than fixing at origination, a binding rate floor, a bullet maturity

Curves are exercised end to end here: the curve statement, its representation in the compiled model, and the per-period lookup.

The result

Present value −433,719.03, multiple on invested capital 1.151953 and weighted average life 2.367044 years.

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

The delta

None: every period agrees inside a one-cent tolerance, including the periods where the floor binds and the coupon stops tracking the curve.

Run configuration

{
  "deterministic": {
    "annual_discount_rate": 0.075
  }
}

Verified results

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

  • net_cash_flow

Summary metrics for the base run:

MetricValueTolerance
model.npv-433,719.03±1
model.moic1.151953±0.0001
model.wal_years2.367044±0.0001
domain.credit.interest2,670,923.28±1
domain.credit.principal14,053,633.59±1
domain.credit.recoveries520,501.53±1
domain.credit.wal_years2.54018±0.0001
domain.credit.collections17,245,058.4±1
domain.credit.purchase15,000,000±1
domain.credit.collections_multiple1.149671±0.0001