Lesson 04 · 6 min
Payouts: the Building Blocks
Eight leg types, one shared base. Meet InterestRatePayout up close.
One base, eight bodies
Products are built from payouts. This lesson opens the toolbox. Every payout type extends a shared base, PayoutBase, which carries the parts every leg needs: who pays whom (payerReceiver), how much (priceQuantity), any principal exchanges, and how the leg settles (settlementTerms). Learn the shared base once and every leg in the model reads the same way.
The base carries the universals
payerReceiveris required on every leg. Quantity, principal payments, and settlement terms are optional slots the base provides.Each child adds its specialty
InterestRatePayoutadds rate mechanics,OptionPayoutadds exercise terms and an underlier,CreditDefaultPayoutadds protection terms. The specialty fields are what qualification looks at.Direction lives on the leg
There is no trade-level "buy" flag for a swap. Each leg names its payer and receiver, and direction emerges from the mirrored roles.
InterestRatePayout up close
The most heavily reused leg in the model deserves a closer look. Four field clusters do most of the talking: rateSpecification (a choice: fixed, floating, or inflation), dayCountFraction (the year-fraction convention), calculationPeriodDates (how the accrual calendar is generated), and paymentDates (when cash actually moves).
{ "payerReceiver": { "payer": "Party2", "receiver": "Party1" }, "rateSpecification": { "floatingRateSpecification": { "rateOption": { "floatingRateIndex": "USD-SOFR-OIS Compound" }, "spreadSchedule": { "price": { "value": 0.0015 } } } }, "dayCountFraction": "ACT/360", "calculationPeriodDates": { "calculationPeriodFrequency": { "periodMultiplier": 3, "period": "M" } }, "paymentDates": { "paymentFrequency": { "periodMultiplier": 3, "period": "M" } }}
01What does every payout type inherit from PayoutBase?