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.

PayoutBasepayerReceiver · priceQuantity · settlementInterestRatePayoutrate streamsOptionPayoutrightsPerformancePayoutreturnsCreditDefaultPayoutprotectionSettlementPayoutdeliveriesFixedPricePayoutfixed legsevery leg shares the same base fields,so payer / receiver and settlement always read the same
Key ideas
  • The base carries the universals

    payerReceiver is required on every leg. Quantity, principal payments, and settlement terms are optional slots the base provides.

  • Each child adds its specialty

    InterestRatePayout adds rate mechanics, OptionPayout adds exercise terms and an underlier, CreditDefaultPayout adds 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).

{} interestRatePayout, floating leg, annotated
{  "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"    }  }}
Read it like a sentence: Party2 pays Party1 SOFR plus 15bp, accruing ACT/360 on quarterly periods, paid quarterly.
Try itBrowse InterestRatePayout and skim its 15 conditions. Notice how much business knowledge ("FRAs specify a payment date, not a schedule") lives right on the type.
◆ Checkpoint

01What does every payout type inherit from PayoutBase?

1 / 3