Credit: the discount margin of a floating-rate note
A six-year floating-rate note paying a reference rate plus 80 basis points semiannually, bought below par, and the spread over the reference at which its cash is worth the price: the discount margin.
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 six-year floating-rate note paying a reference rate plus 80 basis points twice a year, bought at 99.3098 per 100 of face. The question a floater is quoted on is not its yield, which moves with every reset, but its discount margin: the spread over the reference rate at which the note's cash, discounted at the reference rate plus that spread, is worth the price paid.
The reference
A standard fixed-income textbook's worked example of the discount margin,
which states the note, the price, a reference rate assumed flat at 10%, and
the answer, 96 basis points. See SOURCE.md.
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
| Pack | none |
| Contract types | none; two hand-written streams |
| Language features | a series-shaped assumption read at the period; spread over a selection at a price |
| Conventions | a semiannual payer on a monthly grid; the discount accruing simple between settlement dates |
The note pays semiannually and the model runs monthly. The coupon stream
occurs every month and carries cash in every sixth cell; the face returns
with the last coupon. spread accrues its discount between the dates cash
settles, six months apart, at the reference rate plus the spread, simple,
which is the basis a floater's coupon accrues on and the definition the
reference uses:
metric discount_margin = spread("frn.*", 100 * inputs.price, inputs.reference)The result
| Discount margin, solved | 95.99 basis points |
| Published | 96 basis points |
Asserted within half a basis point, the print floor of a figure stated to the basis point. The coupon stream is pinned per period as the figure's basis.
The delta
Exact to the print floor. The residual is the rounding of the published figure. The reference discounts per semiannual period at half the annual reference rate plus half the margin; the model accrues the same quantity over each six-month stretch between settlement dates, which is the same arithmetic. On a grid that compounded the discount month by month the figure would read 72 basis points, which is the convention error this case exists to catch.
Run configuration
{
"deterministic": {
"annual_discount_rate": 0.10
}
}Verified results
Checked period by period: 1 series across 72 periods — 72 values in all, each within ±0.000001 of the reference.
frn.coupon
Summary metrics for the base run:
| Metric | Value | Tolerance |
|---|---|---|
metric.discount_margin | 0.0096 | ±0.00005 |