Skip to main content

Module coupons

Module coupons 

Expand description

Coupon types. Every field here is passive contract data.

A coupon is a term sheet fragment: dates, a notional, a rate or a gearing and spread, a day count, a currency. None of it is differentiable, and none of it takes a scalar type parameter. The mode appears only when a coupon is projected — AnyCoupon::project reads a forward curve in mode R and produces a Cashflow<R> — so a book of trades is one type rather than one type per pricing mode.

The set is a closed enum for the same reason the curve families are: the projection is generic over the mode, a generic method is not object-safe, and closing the set also retires the boxed-clone plumbing a trait object needs.

Structs§

CmsCoupon
A CMS coupon: notional · τ · (g · CMS + s), the CMS rate the swap index template at tenor fixes on fixing_date — in advance, by the index’s fixing lag — convexity-adjusted by linear TSR at mean_reversion and paid on payment_date. A payoff caps, floors or digitises the rate as on an IBOR coupon.
CmsSpreadCorrelationParseError
A spelling that names no CMS spread correlation.
CmsSpreadLeg
The swap index a CMS spread coupon subtracts, and the correlation that joins its rate to the first’s.
Collar
A cap and/or floor on a floating coupon’s rate gearing · index + spread, as a decimal each.
CpiCoupon
A CPI coupon: notional · rate · tau · I(end)/base, paid on the payment date — a real rate on a notional carried up by a price index.
CpiRedemption
A CPI coupon leg’s indexed notional: notional · (I(T)/base − 1) where it pays the growth only, or notional · I(T)/base, I(T) the index observed for observation under the index’s lag and interpolation, as a CpiCoupon observes its accrual end.
Digital
Digital options on a floating coupon’s rate.
DigitalStrike
One side of a digital: its strike on the coupon’s rate, what it pays, and which side of it the holder is on.
FixedRateCoupon
A fixed-rate coupon: notional · rate · tau, paid on the payment date.
FixingWindow
The window an index’s own rate spans, and the basis it is quoted on.
IborCoupon
An IBOR-style coupon: one fixing per period, geared and spread.
InterpolatedStub
ISDA 2006 §8.3 Linear Interpolation for a stub whose confirmation elects it: the rate is R_short + weight · (R_long − R_short), each rate read from the store where published and otherwise projected over its own window off its own index’s curve.
MultiResetCoupon
A floating coupon that resets several times and pays once: each reset’s term rate, geared, combined over the accrual under a ResetCompounding method — the CAD, HKD or 3M-in-6M leg that pays less often than it fixes.
Observation
One daily observation of an overnight index.
OptionTerms 🔒
What the optionlets on a coupon’s rate read: the rate’s gearing and spread, the currency whose cap vols price them, the time the vol is read at and the time its variance accrues over, and the surface’s tenor column.
OvernightCoupon
A compounded overnight (RFR) coupon.
RangeAccrualCoupon
A range accrual: notional · rate · tau · (days in range) / (days), each calendar day of the accrual period in range when the index’s fixing it observes lies in [lower, upper] (a missing bound is open).
RangeObservation
One fixing a range accrual observes, and how many calendar days read it.
Redemption
A dated payment of a known amount — a redemption, a fee, a notional exchange.
Reset
One reset of a MultiResetCoupon: its sub-period, its fixing date, and the index window it projects over.
StubTenor
One of the two Designated Maturities an interpolated stub reads: the index it names and that index’s own window from the stub fixing’s value date.
YoyInflationCoupon
A year-on-year inflation coupon: `notional · τ · (g · (I(end)/I(start) − 1)

Enums§

AnyCoupon
The closed coupon set.
CmsSpreadCorrelation
Where a CMS spread coupon’s rate-to-rate correlation comes from.
Direction
Whether a leg’s payments are received or paid.
OvernightCouponError
Why an overnight coupon could not be built.
PayoffError
Why an option on a coupon’s rate is not a payoff.
RatePayoff
An option a floating coupon carries on its rate gearing · index + spread — the payoff axis of the coupon layer, over any IBOR observation.
ResetCompounding
How a multi-reset coupon combines its resets into one payment — the ISDA 2006 compounding methods (§6.3, Supplement 16) and day-weighted averaging.

Functions§

averaged_sum 🔒
Σ rᵢ·τᵢ over the coupon’s observation strip — the numerator of an averaged overnight rate.
averaged_sum_by_day 🔒
averaged_sum for a coupon that does not telescope: each day’s rate is read on its own, bounded, and accrued over its weight.
bounded 🔒
A daily rate bounded by the coupon’s observation cap and floor.
compose_payoff 🔒
payoff on a coupon rate rate = g·X + s still to fix, whatever X observes: the payoff axis of the coupon layer, composed over any observation that prices an optionlet on itself. optionlet(k, kind) is the undiscounted option on X at k, in the coupon’s payment terms. Each option on the rate at K is one on X at (K − s)/g, times |g|, a negative gearing swapping calls for puts. A collar is r − caplet(cap) + floorlet(floor); a digital is its call spread (see Digital).
compounded_growth 🔒
compounded_growth_by_day 🔒
compounded_growth for a coupon that does not telescope: each day’s rate is read on its own, bounded, and compounded over its weight.
day_growth 🔒
The compounded growth factor ∏(1 + r_d·tau_d) over the coupon’s days.
index_tenor_years 🔒
The registered tenor of the IBOR index code, in years, when the registry holds it.
observation_published 🔒
Whether every month the observation of index for date at lag_months reads is published — the observed level is then known, and an option on it is its intrinsic value.
observe_day 🔒
One overnight day under FixingsView::observe’s rule, a day after as_of answered here without the call: observe can only project it, and asking it day by day cost a third of a calibration. Both strip walks read through this, so the rule is stated once.
optioned 🔒
A coupon rate rate = g·F + s still to fix, with payoff on it: each option an optionlet on the index at (K − s)/g, times |g|, a negative gearing swapping calls for puts; Bachelier or Black-76 by the surface’s convention, the vol read in the mode at terms.expiry and the tenor, its variance over terms.variance. A collar is r − caplet(cap) + floorlet(floor); a digital is its call spread (see Digital).
projected_day 🔒
The projected rate of one day off curve, under the index’s day count: (DF(s)/DF(e))^(1/τ) − 1 on BUS/252, (DF(s)/DF(e) − 1)/τ otherwise.
telescopes 🔒
Whether the coupon’s projected days can join telescoping runs: every rate accrues over its own span and no bound reads it. A lookback, a cut-off or a daily cap breaks that, and the coupon then takes the day-by-day walk. Both the per-day check and a pass over the strip cost a plain SOFR ladder over 10% of its calibration, so the weights are judged once at build.