Skip to content

Class: InterestRatePayout

_ A class to specify all of the terms necessary to define and calculate a cash flow based on a fixed, a floating or an inflation index rate. The interest rate payout can be applied to interest rate swaps and FRA (which both have two associated interest rate payouts), credit default swaps (to represent the fee leg when subject to periodic payments) and equity swaps (to represent the funding leg). The associated globalKey denotes the ability to associate a hash value to the InterestRatePayout instantiations for the purpose of model cross-referencing, in support of functionality such as the event effect and the lineage._

URI: common_domain_model:InterestRatePayout

 classDiagram
    class InterestRatePayout
    click InterestRatePayout href "../InterestRatePayout/"
      PayoutBase <|-- InterestRatePayout
        click PayoutBase href "../PayoutBase/"

      InterestRatePayout : bondReference





        InterestRatePayout --> "0..1" BondReference : bondReference
        click BondReference href "../BondReference/"



      InterestRatePayout : calculationPeriodDates





        InterestRatePayout --> "0..1" CalculationPeriodDates : calculationPeriodDates
        click CalculationPeriodDates href "../CalculationPeriodDates/"



      InterestRatePayout : cashflowRepresentation





        InterestRatePayout --> "0..1" CashflowRepresentation : cashflowRepresentation
        click CashflowRepresentation href "../CashflowRepresentation/"



      InterestRatePayout : compoundingMethod





        InterestRatePayout --> "0..1" CompoundingMethodEnum : compoundingMethod
        click CompoundingMethodEnum href "../CompoundingMethodEnum/"



      InterestRatePayout : dayCountFraction





        InterestRatePayout --> "0..1" DayCountFractionEnum : dayCountFraction
        click DayCountFractionEnum href "../DayCountFractionEnum/"



      InterestRatePayout : discountingMethod





        InterestRatePayout --> "0..1" DiscountingMethod : discountingMethod
        click DiscountingMethod href "../DiscountingMethod/"



      InterestRatePayout : fixedAmount

      InterestRatePayout : floatingAmount

      InterestRatePayout : payerReceiver





        InterestRatePayout --> "1" PayerReceiver : payerReceiver
        click PayerReceiver href "../PayerReceiver/"



      InterestRatePayout : paymentDate





        InterestRatePayout --> "0..1" AdjustableDate : paymentDate
        click AdjustableDate href "../AdjustableDate/"



      InterestRatePayout : paymentDates





        InterestRatePayout --> "0..1" PaymentDates : paymentDates
        click PaymentDates href "../PaymentDates/"



      InterestRatePayout : paymentDelay

      InterestRatePayout : priceQuantity





        InterestRatePayout --> "0..1" ResolvablePriceQuantity : priceQuantity
        click ResolvablePriceQuantity href "../ResolvablePriceQuantity/"



      InterestRatePayout : principalPayment





        InterestRatePayout --> "0..1" PrincipalPayments : principalPayment
        click PrincipalPayments href "../PrincipalPayments/"



      InterestRatePayout : rateSpecification





        InterestRatePayout --> "0..1" RateSpecification : rateSpecification
        click RateSpecification href "../RateSpecification/"



      InterestRatePayout : resetDates





        InterestRatePayout --> "0..1" ResetDates : resetDates
        click ResetDates href "../ResetDates/"



      InterestRatePayout : settlementTerms





        InterestRatePayout --> "0..1" SettlementTerms : settlementTerms
        click SettlementTerms href "../SettlementTerms/"



      InterestRatePayout : spreadCalculationMethod





        InterestRatePayout --> "0..1" SpreadCalculationMethodEnum : spreadCalculationMethod
        click SpreadCalculationMethodEnum href "../SpreadCalculationMethodEnum/"



      InterestRatePayout : stubPeriod





        InterestRatePayout --> "0..1" StubPeriod : stubPeriod
        click StubPeriod href "../StubPeriod/"



Inheritance

Slots

Name Cardinality and Range Description Inheritance
rateSpecification 0..1
RateSpecification or 
FixedRateSpecification or 
FloatingRateSpecification or 
InflationRateSpecification
The specification of the rate value(s) applicable to the contract using eithe... direct
dayCountFraction 0..1
DayCountFractionEnum
The day count fraction direct
calculationPeriodDates 0..1
CalculationPeriodDates
The parameters used to generate the calculation period dates schedule, includ... direct
paymentDates 0..1
PaymentDates
The payment date schedule, as defined by the parameters that are needed to sp... direct
paymentDate 0..1
AdjustableDate
The payment date, where only one date is specified, as for the FRA product direct
paymentDelay 0..1
Boolean
Applicable to CDS on MBS to specify whether payment delays are applicable to ... direct
resetDates 0..1
ResetDates
The reset dates schedule, i direct
discountingMethod 0..1
DiscountingMethod
The parameters specifying any discounting conventions that may apply direct
compoundingMethod 0..1
CompoundingMethodEnum
If one or more calculation period contributes to a single payment amount this... direct
cashflowRepresentation 0..1
CashflowRepresentation
The cashflow representation of the swap stream direct
stubPeriod 0..1
StubPeriod
The stub calculation period amount parameters direct
bondReference 0..1
BondReference
Reference to a bond underlier to represent an asset swap or Condition Precede... direct
fixedAmount 0..1
string
Fixed Amount Calculation direct
floatingAmount 0..1
string
Floating Amount Calculation direct
spreadCalculationMethod 0..1
SpreadCalculationMethodEnum
Method by which spread is calculated direct
payerReceiver 1
PayerReceiver
Canonical representation of the payer and receiver parties applicable to each... PayoutBase
priceQuantity 0..1
ResolvablePriceQuantity
Each payout leg must implement the quantity concept as a 'resolvable' type, w... PayoutBase
principalPayment 0..1
PrincipalPayments
The specification of the principal exchange PayoutBase
settlementTerms 0..1
SettlementTerms
Each payout leg must specifies its settlement terms, including the delivery t... PayoutBase

Usages

used by used in type used
ResetInstruction payout any_of[range] InterestRatePayout
CalculateTransferInstruction payout any_of[range] InterestRatePayout
ScheduledTransfer payoutReference any_of[range] InterestRatePayout
FinalCalculationPeriodDateAdjustment swapStreamReference range InterestRatePayout
EconomicTerms payout any_of[range] InterestRatePayout

Rules

Rule Applied Preconditions Postconditions Elseconditions

Rule Applied Preconditions Postconditions Elseconditions

In Subsets

Comments

  • Rosetta condition: Quantity — priceQuantity exists
  • Rosetta condition: InterestRatePayoutChoice — optional choice paymentDates, paymentDate
  • Rosetta condition: FutureValueNotional — if rateSpecification -> FixedRateSpecification is absent then priceQuantity -> futureValueNotional is absent
  • Rosetta condition: TerminationDate — if priceQuantity -> futureValueNotional exists then priceQuantity -> futureValueNotional -> valueDate = calculationPeriodDates -> terminationDate -> adjustableDate -> adjustedDate
  • Rosetta condition: RateSpecification — if rateSpecification is absent then priceQuantity -> priceSchedule exists
  • Rosetta condition: FpML_ird_6 — if paymentDates -> firstPaymentDate exists and calculationPeriodDates -> effectiveDate exists then paymentDates -> firstPaymentDate > calculationPeriodDates -> effectiveDate -> adjustableDate -> unadjustedDate
  • Rosetta condition: FpML_ird_23 — if stubPeriod -> initialStub exists then calculationPeriodDates -> firstRegularPeriodStartDate exists
  • Rosetta condition: FpML_ird_24 — if stubPeriod -> finalStub exists then calculationPeriodDates -> lastRegularPeriodEndDate exists
  • Rosetta condition: InitialStubFinalStub — if stubPeriod exists then stubPeriod -> initialStub exists or stubPeriod -> finalStub exists
  • Rosetta condition: CashSettlementTerms — if settlementTerms -> settlementCurrency exists and (settlementTerms -> settlementCurrency <> priceQuantity -> quantitySchedule -> unit -> currency or settlementTerms -> settlementCurrency <> priceQuantity -> quantityMultiplier -> fxLinkedNotionalSchedule -> varyingNotionalCurrency) then (settlementTerms -> cashSettlementTerms -> valuationMethod exists and settlementTerms -> cashSettlementTerms -> valuationDate exists) or priceQuantity -> quantityMultiplier -> fxLinkedNotionalSchedule -> fxSpotRateSource exists
  • Rosetta condition: FpML_ird_7_1 — if paymentDates -> paymentFrequency -> period = calculationPeriodDates -> calculationPeriodFrequency -> period and paymentDates -> paymentFrequency -> periodMultiplier = calculationPeriodDates -> calculationPeriodFrequency -> periodMultiplier then (compoundingMethod is absent or compoundingMethod = CompoundingMethodEnum -> None)
  • Rosetta condition: FpML_ird_7_2 — if (paymentDates -> paymentFrequency -> period exists and calculationPeriodDates -> calculationPeriodFrequency -> period exists and paymentDates -> paymentFrequency -> period <> calculationPeriodDates -> calculationPeriodFrequency -> period) or (paymentDates -> paymentFrequency -> periodMultiplier exists and calculationPeriodDates -> calculationPeriodFrequency -> periodMultiplier exists and paymentDates -> paymentFrequency -> periodMultiplier <> calculationPeriodDates -> calculationPeriodFrequency -> periodMultiplier) then compoundingMethod exists
  • Rosetta condition: FpML_ird_9 — if compoundingMethod exists and compoundingMethod <> CompoundingMethodEnum -> None then resetDates exists
  • Rosetta condition: FpML_ird_29 — if compoundingMethod exists and compoundingMethod <> CompoundingMethodEnum -> None then rateSpecification -> FixedRateSpecification is absent
  • Rosetta condition: CalculationPeriodDatesFirstCompoundingPeriodEndDate — if compoundingMethod is absent or compoundingMethod = CompoundingMethodEnum -> None then calculationPeriodDates -> firstCompoundingPeriodEndDate is absent
  • Rosetta func: FixedAmount — 2006 ISDA Definition Article 5 Section 5.1. Calculation of a Fixed Amount: The Fixed Amount payable by a party on a Payment Date will be: (a) if an amount is specified for the Swap Transaction as the Fixed Amount payable by that party for that Payment Date or for the related Calculation Period, that amount; or (b) if an amount is not specified for the Swap Transaction as the Fixed Amount payable by that party for that Payment Date or for the related Calculation Period, an amount calculated on a formula basis for that Payment Date or for the related Calculation Period as follows: Fixed Amount = Calculation Amount × Fixed Rate × Day Count Fraction.
  • Rosetta func: FloatingAmount — 2006 ISDA Definition Article 6 Section 6.1. Calculation of a Floating Amount: Subject to the provisions of Section 6.4 (Negative Interest Rates), the Floating Amount payable by a party on a Payment Date will be: (a) if Compounding is not specified for the Swap Transaction or that party, an amount calculated on a formula basis for that Payment Date or for the related Calculation Period as follows: Floating Amount = Calculation Amount × Floating Rate + Spread × Floating Rate Day Count Fraction (b) if 'Compounding' is specified to be applicable to the Swap Transaction or that party and 'Flat Compounding' is not specified, an amount equal to the sum of the Compounding Period Amounts for each of the Compounding Periods in the related Calculation Period; or (c) if 'Flat Compounding' is specified to be applicable to the Swap Transaction or that party, an amount equal to the sum of the Basic Compounding Period Amounts for each of the Compounding Periods in the related Calculation Period plus the sum of the Additional Compounding Period Amounts for each such Compounding Period.
  • Rosetta func: ExtractFixedLeg — Extract interest rate payout containing fix rate specification.
  • Rosetta func: FixedAmountCalculation — Calculates the fixed amount for a calculation period by looking up the notional and the fixed rate and multiplying by the year fraction.
  • Rosetta func: GetFixedRate — Look up the fixed rate for a calculation period.
  • Rosetta func: FloatingAmountCalculation — Calculate a floating amount for a calculation period by determining the raw floating rate, applying any rate treatments, looking up the calculation period notional, then performing the multiplication of the notional, rate, and year fraction. Floating amount calculations are described in the 2021 ISDA Definitions in Section 6 and 7.
  • Rosetta func: ApplyFloatingRateSetting — Calculate a floating amount for a calculation period by determining the raw floating rate, applying any rate treatments, looking up the calculation period notional, then performing the multiplication of the notional, rate, and year fraction. Floating amount calculations are described in the 2021 ISDA Definitions in Section 6 and 7.
  • Rosetta func: CalculateFloatingCashFlow
  • Rosetta func: GetNotionalAmount — Look up the notional amount in effect for a calculation period.
  • Rosetta func: CalculateYearFraction — Calculate the year fraction for a single calculation period, by invoking the base year fraction logic

Identifier and Mapping Information

Annotations

property value
rosetta_functions [{"name":"FixedAmount","description":"2006 ISDA Definition Article 5 Section 5.1. Calculation of a Fixed Amount: The Fixed Amount payable by a party on a Payment Date will be: (a) if an amount is specified for the Swap Transaction as the Fixed Amount payable by that party for that Payment Date or for the related Calculation Period, that amount; or (b) if an amount is not specified for the Swap Transaction as the Fixed Amount payable by that party for that Payment Date or for the related Calculation Period, an amount calculated on a formula basis for that Payment Date or for the related Calculation Period as follows: Fixed Amount = Calculation Amount \u00d7 Fixed Rate \u00d7 Day Count Fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"fixedAmount","type":"number","cardinality":"1..1"}},{"name":"FloatingAmount","description":"2006 ISDA Definition Article 6 Section 6.1. Calculation of a Floating Amount: Subject to the provisions of Section 6.4 (Negative Interest Rates), the Floating Amount payable by a party on a Payment Date will be: (a) if Compounding is not specified for the Swap Transaction or that party, an amount calculated on a formula basis for that Payment Date or for the related Calculation Period as follows: Floating Amount = Calculation Amount \u00d7 Floating Rate + Spread \u00d7 Floating Rate Day Count Fraction (b) if 'Compounding' is specified to be applicable to the Swap Transaction or that party and 'Flat Compounding' is not specified, an amount equal to the sum of the Compounding Period Amounts for each of the Compounding Periods in the related Calculation Period; or (c) if 'Flat Compounding' is specified to be applicable to the Swap Transaction or that party, an amount equal to the sum of the Basic Compounding Period Amounts for each of the Compounding Periods in the related Calculation Period plus the sum of the Additional Compounding Period Amounts for each such Compounding Period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"rate","type":"number","cardinality":"0..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"floatingAmount","type":"number","cardinality":"1..1"}},{"name":"ExtractFixedLeg","description":"Extract interest rate payout containing fix rate specification.","inputs":[{"name":"interestRatePayouts","type":"InterestRatePayout","cardinality":"0..*"}],"output":{"name":"fixedRatePayout","type":"InterestRatePayout","cardinality":"0..1"}},{"name":"FixedAmountCalculation","description":"Calculates the fixed amount for a calculation period by looking up the notional and the fixed rate and multiplying by the year fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"}],"output":{"name":"fixedAmountDetails","type":"FixedAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetFixedRate","description":"Look up the fixed rate for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"fixedRate","type":"number","cardinality":"0..1"}},{"name":"FloatingAmountCalculation","description":"Calculate a floating amount for a calculation period by determining the raw floating rate, applying any rate treatments, looking up the calculation period notional, then performing the multiplication of the notional, rate, and year fraction. Floating amount calculations are described in the 2021 ISDA Definitions in Section 6 and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"ApplyFloatingRateSetting","description":"Calculate a floating amount for a calculation period by determining the raw floating rate, applying any rate treatments, looking up the calculation period notional, then performing the multiplication of the notional, rate, and year fraction. Floating amount calculations are described in the 2021 ISDA Definitions in Section 6 and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"CalculateFloatingCashFlow","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"currency","type":"string","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"},{"name":"processedRateDetails","type":"FloatingRateProcessingDetails","cardinality":"1..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetNotionalAmount","description":"Look up the notional amount in effect for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"notional","type":"Money","cardinality":"1..1"}},{"name":"CalculateYearFraction","description":"Calculate the year fraction for a single calculation period, by invoking the base year fraction logic","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"dcf","type":"DayCountFractionEnum","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"yearFrac","type":"number","cardinality":"1..1"}}]

Schema Source

Mappings

Mapping Type Mapped Value
self common_domain_model:InterestRatePayout
native common_domain_model:InterestRatePayout

LinkML Source

Direct

name: InterestRatePayout
annotations:
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"FixedAmount","description":"2006 ISDA Definition Article 5 Section
      5.1. Calculation of a Fixed Amount: The Fixed Amount payable by a party on a
      Payment Date will be: (a) if an amount is specified for the Swap Transaction
      as the Fixed Amount payable by that party for that Payment Date or for the related
      Calculation Period, that amount; or (b) if an amount is not specified for the
      Swap Transaction as the Fixed Amount payable by that party for that Payment
      Date or for the related Calculation Period, an amount calculated on a formula
      basis for that Payment Date or for the related Calculation Period as follows:
      Fixed Amount = Calculation Amount \u00d7 Fixed Rate \u00d7 Day Count Fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"fixedAmount","type":"number","cardinality":"1..1"}},{"name":"FloatingAmount","description":"2006
      ISDA Definition Article 6 Section 6.1. Calculation of a Floating Amount: Subject
      to the provisions of Section 6.4 (Negative Interest Rates), the Floating Amount
      payable by a party on a Payment Date will be: (a) if Compounding is not specified
      for the Swap Transaction or that party, an amount calculated on a formula basis
      for that Payment Date or for the related Calculation Period as follows: Floating
      Amount = Calculation Amount \u00d7 Floating Rate + Spread \u00d7 Floating Rate
      Day Count Fraction (b) if ''Compounding'' is specified to be applicable to the
      Swap Transaction or that party and ''Flat Compounding'' is not specified, an
      amount equal to the sum of the Compounding Period Amounts for each of the Compounding
      Periods in the related Calculation Period; or (c) if ''Flat Compounding'' is
      specified to be applicable to the Swap Transaction or that party, an amount
      equal to the sum of the Basic Compounding Period Amounts for each of the Compounding
      Periods in the related Calculation Period plus the sum of the Additional Compounding
      Period Amounts for each such Compounding Period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"rate","type":"number","cardinality":"0..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"floatingAmount","type":"number","cardinality":"1..1"}},{"name":"ExtractFixedLeg","description":"Extract
      interest rate payout containing fix rate specification.","inputs":[{"name":"interestRatePayouts","type":"InterestRatePayout","cardinality":"0..*"}],"output":{"name":"fixedRatePayout","type":"InterestRatePayout","cardinality":"0..1"}},{"name":"FixedAmountCalculation","description":"Calculates
      the fixed amount for a calculation period by looking up the notional and the
      fixed rate and multiplying by the year fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"}],"output":{"name":"fixedAmountDetails","type":"FixedAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetFixedRate","description":"Look
      up the fixed rate for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"fixedRate","type":"number","cardinality":"0..1"}},{"name":"FloatingAmountCalculation","description":"Calculate
      a floating amount for a calculation period by determining the raw floating rate,
      applying any rate treatments, looking up the calculation period notional, then
      performing the multiplication of the notional, rate, and year fraction.  Floating
      amount calculations are described in the 2021 ISDA Definitions in Section 6
      and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"ApplyFloatingRateSetting","description":"Calculate
      a floating amount for a calculation period by determining the raw floating rate,
      applying any rate treatments, looking up the calculation period notional, then
      performing the multiplication of the notional, rate, and year fraction.  Floating
      amount calculations are described in the 2021 ISDA Definitions in Section 6
      and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"CalculateFloatingCashFlow","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"currency","type":"string","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"},{"name":"processedRateDetails","type":"FloatingRateProcessingDetails","cardinality":"1..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetNotionalAmount","description":"Look
      up the notional amount in effect for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"notional","type":"Money","cardinality":"1..1"}},{"name":"CalculateYearFraction","description":"Calculate
      the year fraction for a single calculation period, by invoking the base year
      fraction logic","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"dcf","type":"DayCountFractionEnum","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"yearFrac","type":"number","cardinality":"1..1"}}]'
description: ' A class to specify all of the terms necessary to define and calculate
  a cash flow based on a fixed, a floating or an inflation index rate. The interest
  rate payout can be applied to interest rate swaps and FRA (which both have two associated
  interest rate payouts), credit default swaps (to represent the fee leg when subject
  to periodic payments) and equity swaps (to represent the funding leg). The associated
  globalKey denotes the ability to associate a hash value to the InterestRatePayout
  instantiations for the purpose of model cross-referencing, in support of functionality
  such as the event effect and the lineage.'
comments:
- 'Rosetta condition: Quantity  priceQuantity exists'
- 'Rosetta condition: InterestRatePayoutChoice  optional choice paymentDates, paymentDate'
- 'Rosetta condition: FutureValueNotional  if rateSpecification -> FixedRateSpecification
  is absent then priceQuantity -> futureValueNotional is absent'
- 'Rosetta condition: TerminationDate  if priceQuantity -> futureValueNotional exists
  then priceQuantity -> futureValueNotional -> valueDate = calculationPeriodDates
  -> terminationDate -> adjustableDate -> adjustedDate'
- 'Rosetta condition: RateSpecification  if rateSpecification is absent then priceQuantity
  -> priceSchedule exists'
- 'Rosetta condition: FpML_ird_6  if paymentDates -> firstPaymentDate exists and
  calculationPeriodDates -> effectiveDate exists then paymentDates -> firstPaymentDate
  > calculationPeriodDates -> effectiveDate -> adjustableDate -> unadjustedDate'
- 'Rosetta condition: FpML_ird_23  if stubPeriod -> initialStub exists then calculationPeriodDates
  -> firstRegularPeriodStartDate exists'
- 'Rosetta condition: FpML_ird_24  if stubPeriod -> finalStub exists then calculationPeriodDates
  -> lastRegularPeriodEndDate exists'
- 'Rosetta condition: InitialStubFinalStub  if stubPeriod exists then stubPeriod
  -> initialStub exists or stubPeriod -> finalStub exists'
- 'Rosetta condition: CashSettlementTerms  if settlementTerms -> settlementCurrency
  exists and (settlementTerms -> settlementCurrency <> priceQuantity -> quantitySchedule
  -> unit -> currency or settlementTerms -> settlementCurrency <> priceQuantity ->
  quantityMultiplier -> fxLinkedNotionalSchedule -> varyingNotionalCurrency) then
  (settlementTerms -> cashSettlementTerms -> valuationMethod exists and settlementTerms
  -> cashSettlementTerms -> valuationDate exists) or priceQuantity -> quantityMultiplier
  -> fxLinkedNotionalSchedule -> fxSpotRateSource exists'
- 'Rosetta condition: FpML_ird_7_1  if paymentDates -> paymentFrequency -> period
  = calculationPeriodDates -> calculationPeriodFrequency -> period and paymentDates
  -> paymentFrequency -> periodMultiplier = calculationPeriodDates -> calculationPeriodFrequency
  -> periodMultiplier then (compoundingMethod is absent or compoundingMethod = CompoundingMethodEnum
  -> None)'
- 'Rosetta condition: FpML_ird_7_2  if (paymentDates -> paymentFrequency -> period
  exists and calculationPeriodDates -> calculationPeriodFrequency -> period exists
  and paymentDates -> paymentFrequency -> period <> calculationPeriodDates -> calculationPeriodFrequency
  -> period) or (paymentDates -> paymentFrequency -> periodMultiplier exists and calculationPeriodDates
  -> calculationPeriodFrequency -> periodMultiplier exists and paymentDates -> paymentFrequency
  -> periodMultiplier <> calculationPeriodDates -> calculationPeriodFrequency -> periodMultiplier)
  then compoundingMethod exists'
- 'Rosetta condition: FpML_ird_9  if compoundingMethod exists and compoundingMethod
  <> CompoundingMethodEnum -> None then resetDates exists'
- 'Rosetta condition: FpML_ird_29  if compoundingMethod exists and compoundingMethod
  <> CompoundingMethodEnum -> None then rateSpecification -> FixedRateSpecification
  is absent'
- 'Rosetta condition: CalculationPeriodDatesFirstCompoundingPeriodEndDate  if compoundingMethod
  is absent or compoundingMethod = CompoundingMethodEnum -> None then calculationPeriodDates
  -> firstCompoundingPeriodEndDate is absent'
- 'Rosetta func: FixedAmount  2006 ISDA Definition Article 5 Section 5.1. Calculation
  of a Fixed Amount: The Fixed Amount payable by a party on a Payment Date will be:
  (a) if an amount is specified for the Swap Transaction as the Fixed Amount payable
  by that party for that Payment Date or for the related Calculation Period, that
  amount; or (b) if an amount is not specified for the Swap Transaction as the Fixed
  Amount payable by that party for that Payment Date or for the related Calculation
  Period, an amount calculated on a formula basis for that Payment Date or for the
  related Calculation Period as follows: Fixed Amount = Calculation Amount × Fixed
  Rate × Day Count Fraction.'
- 'Rosetta func: FloatingAmount  2006 ISDA Definition Article 6 Section 6.1. Calculation
  of a Floating Amount: Subject to the provisions of Section 6.4 (Negative Interest
  Rates), the Floating Amount payable by a party on a Payment Date will be: (a) if
  Compounding is not specified for the Swap Transaction or that party, an amount calculated
  on a formula basis for that Payment Date or for the related Calculation Period as
  follows: Floating Amount = Calculation Amount × Floating Rate + Spread × Floating
  Rate Day Count Fraction (b) if ''Compounding'' is specified to be applicable to
  the Swap Transaction or that party and ''Flat Compounding'' is not specified, an
  amount equal to the sum of the Compounding Period Amounts for each of the Compounding
  Periods in the related Calculation Period; or (c) if ''Flat Compounding'' is specified
  to be applicable to the Swap Transaction or that party, an amount equal to the sum
  of the Basic Compounding Period Amounts for each of the Compounding Periods in the
  related Calculation Period plus the sum of the Additional Compounding Period Amounts
  for each such Compounding Period.'
- 'Rosetta func: ExtractFixedLeg  Extract interest rate payout containing fix rate
  specification.'
- 'Rosetta func: FixedAmountCalculation  Calculates the fixed amount for a calculation
  period by looking up the notional and the fixed rate and multiplying by the year
  fraction.'
- 'Rosetta func: GetFixedRate  Look up the fixed rate for a calculation period.'
- 'Rosetta func: FloatingAmountCalculation  Calculate a floating amount for a calculation
  period by determining the raw floating rate, applying any rate treatments, looking
  up the calculation period notional, then performing the multiplication of the notional,
  rate, and year fraction.  Floating amount calculations are described in the 2021
  ISDA Definitions in Section 6 and 7.'
- 'Rosetta func: ApplyFloatingRateSetting  Calculate a floating amount for a calculation
  period by determining the raw floating rate, applying any rate treatments, looking
  up the calculation period notional, then performing the multiplication of the notional,
  rate, and year fraction.  Floating amount calculations are described in the 2021
  ISDA Definitions in Section 6 and 7.'
- 'Rosetta func: CalculateFloatingCashFlow'
- 'Rosetta func: GetNotionalAmount  Look up the notional amount in effect for a calculation
  period.'
- 'Rosetta func: CalculateYearFraction  Calculate the year fraction for a single
  calculation period, by invoking the base year fraction logic'
in_subset:
- cdm_product_asset
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: PayoutBase
slots:
- rateSpecification
- dayCountFraction
- calculationPeriodDates
- paymentDates
- paymentDate
- paymentDelay
- resetDates
- discountingMethod
- compoundingMethod
- cashflowRepresentation
- stubPeriod
- bondReference
- fixedAmount
- floatingAmount
- spreadCalculationMethod
slot_usage:
  dayCountFraction:
    name: dayCountFraction
    description: The day count fraction. The cardinality has been relaxed when compared
      with the FpML interest rate swap for the purpose of accommodating standardized
      credit default swaps which DCF is not explicitly stated as part of the economic
      terms. The data rule InterestRatePayout_dayCountFraction requires that the DCF
      be stated for interest rate products.
    required: false
  calculationPeriodDates:
    name: calculationPeriodDates
    description: The parameters used to generate the calculation period dates schedule,
      including the specification of any initial or final stub calculation periods.
  paymentDates:
    name: paymentDates
    description: The payment date schedule, as defined by the parameters that are
      needed to specify it, either in a parametric way or by reference to another
      schedule of dates (e.g. the reset dates).
    required: false
  paymentDate:
    name: paymentDate
    description: The payment date, where only one date is specified, as for the FRA
      product.
    range: AdjustableDate
  fixedAmount:
    name: fixedAmount
    description: Fixed Amount Calculation
    range: string
rules:
- postconditions:
    slot_conditions:
      priceQuantity:
        name: priceQuantity
        required: true
  description: When there is an OptionPayout the quantity can be expressed as part
    of the payoutQuantity, or as part of the underlier in the case of a Swaption.  For
    all other payouts that extend PayoutBase the payoutQuantity is a mandatory attribute.
- postconditions:
    any_of:
    - slot_conditions:
        paymentDates:
          name: paymentDates
          required: true
    - slot_conditions:
        paymentDate:
          name: paymentDate
          required: true
  description: The paymentDates attributes is applicable to interest rate payouts
    with periodic payments, while the paymentDate reflects the FpML FRA implementation
    where one specific date is specified.

Induced

name: InterestRatePayout
annotations:
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"FixedAmount","description":"2006 ISDA Definition Article 5 Section
      5.1. Calculation of a Fixed Amount: The Fixed Amount payable by a party on a
      Payment Date will be: (a) if an amount is specified for the Swap Transaction
      as the Fixed Amount payable by that party for that Payment Date or for the related
      Calculation Period, that amount; or (b) if an amount is not specified for the
      Swap Transaction as the Fixed Amount payable by that party for that Payment
      Date or for the related Calculation Period, an amount calculated on a formula
      basis for that Payment Date or for the related Calculation Period as follows:
      Fixed Amount = Calculation Amount \u00d7 Fixed Rate \u00d7 Day Count Fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"fixedAmount","type":"number","cardinality":"1..1"}},{"name":"FloatingAmount","description":"2006
      ISDA Definition Article 6 Section 6.1. Calculation of a Floating Amount: Subject
      to the provisions of Section 6.4 (Negative Interest Rates), the Floating Amount
      payable by a party on a Payment Date will be: (a) if Compounding is not specified
      for the Swap Transaction or that party, an amount calculated on a formula basis
      for that Payment Date or for the related Calculation Period as follows: Floating
      Amount = Calculation Amount \u00d7 Floating Rate + Spread \u00d7 Floating Rate
      Day Count Fraction (b) if ''Compounding'' is specified to be applicable to the
      Swap Transaction or that party and ''Flat Compounding'' is not specified, an
      amount equal to the sum of the Compounding Period Amounts for each of the Compounding
      Periods in the related Calculation Period; or (c) if ''Flat Compounding'' is
      specified to be applicable to the Swap Transaction or that party, an amount
      equal to the sum of the Basic Compounding Period Amounts for each of the Compounding
      Periods in the related Calculation Period plus the sum of the Additional Compounding
      Period Amounts for each such Compounding Period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"rate","type":"number","cardinality":"0..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"date","type":"date","cardinality":"0..1"},{"name":"calculationPeriodData","type":"CalculationPeriodData","cardinality":"0..1"}],"output":{"name":"floatingAmount","type":"number","cardinality":"1..1"}},{"name":"ExtractFixedLeg","description":"Extract
      interest rate payout containing fix rate specification.","inputs":[{"name":"interestRatePayouts","type":"InterestRatePayout","cardinality":"0..*"}],"output":{"name":"fixedRatePayout","type":"InterestRatePayout","cardinality":"0..1"}},{"name":"FixedAmountCalculation","description":"Calculates
      the fixed amount for a calculation period by looking up the notional and the
      fixed rate and multiplying by the year fraction.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"}],"output":{"name":"fixedAmountDetails","type":"FixedAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetFixedRate","description":"Look
      up the fixed rate for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"fixedRate","type":"number","cardinality":"0..1"}},{"name":"FloatingAmountCalculation","description":"Calculate
      a floating amount for a calculation period by determining the raw floating rate,
      applying any rate treatments, looking up the calculation period notional, then
      performing the multiplication of the notional, rate, and year fraction.  Floating
      amount calculations are described in the 2021 ISDA Definitions in Section 6
      and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"ApplyFloatingRateSetting","description":"Calculate
      a floating amount for a calculation period by determining the raw floating rate,
      applying any rate treatments, looking up the calculation period notional, then
      performing the multiplication of the notional, rate, and year fraction.  Floating
      amount calculations are described in the 2021 ISDA Definitions in Section 6
      and 7.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"isInitialPeriod","type":"boolean","cardinality":"1..1"},{"name":"suppliedNotional","type":"number","cardinality":"0..1"},{"name":"suppliedRate","type":"number","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"CalculateFloatingCashFlow","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"},{"name":"notional","type":"number","cardinality":"0..1"},{"name":"currency","type":"string","cardinality":"0..1"},{"name":"floatingRateSetting","type":"FloatingRateSettingDetails","cardinality":"0..1"},{"name":"processedRateDetails","type":"FloatingRateProcessingDetails","cardinality":"1..1"}],"output":{"name":"result","type":"FloatingAmountCalculationDetails","cardinality":"1..1"}},{"name":"GetNotionalAmount","description":"Look
      up the notional amount in effect for a calculation period.","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"notional","type":"Money","cardinality":"1..1"}},{"name":"CalculateYearFraction","description":"Calculate
      the year fraction for a single calculation period, by invoking the base year
      fraction logic","inputs":[{"name":"interestRatePayout","type":"InterestRatePayout","cardinality":"1..1"},{"name":"dcf","type":"DayCountFractionEnum","cardinality":"1..1"},{"name":"calculationPeriod","type":"CalculationPeriodBase","cardinality":"1..1"}],"output":{"name":"yearFrac","type":"number","cardinality":"1..1"}}]'
description: ' A class to specify all of the terms necessary to define and calculate
  a cash flow based on a fixed, a floating or an inflation index rate. The interest
  rate payout can be applied to interest rate swaps and FRA (which both have two associated
  interest rate payouts), credit default swaps (to represent the fee leg when subject
  to periodic payments) and equity swaps (to represent the funding leg). The associated
  globalKey denotes the ability to associate a hash value to the InterestRatePayout
  instantiations for the purpose of model cross-referencing, in support of functionality
  such as the event effect and the lineage.'
comments:
- 'Rosetta condition: Quantity  priceQuantity exists'
- 'Rosetta condition: InterestRatePayoutChoice  optional choice paymentDates, paymentDate'
- 'Rosetta condition: FutureValueNotional  if rateSpecification -> FixedRateSpecification
  is absent then priceQuantity -> futureValueNotional is absent'
- 'Rosetta condition: TerminationDate  if priceQuantity -> futureValueNotional exists
  then priceQuantity -> futureValueNotional -> valueDate = calculationPeriodDates
  -> terminationDate -> adjustableDate -> adjustedDate'
- 'Rosetta condition: RateSpecification  if rateSpecification is absent then priceQuantity
  -> priceSchedule exists'
- 'Rosetta condition: FpML_ird_6  if paymentDates -> firstPaymentDate exists and
  calculationPeriodDates -> effectiveDate exists then paymentDates -> firstPaymentDate
  > calculationPeriodDates -> effectiveDate -> adjustableDate -> unadjustedDate'
- 'Rosetta condition: FpML_ird_23  if stubPeriod -> initialStub exists then calculationPeriodDates
  -> firstRegularPeriodStartDate exists'
- 'Rosetta condition: FpML_ird_24  if stubPeriod -> finalStub exists then calculationPeriodDates
  -> lastRegularPeriodEndDate exists'
- 'Rosetta condition: InitialStubFinalStub  if stubPeriod exists then stubPeriod
  -> initialStub exists or stubPeriod -> finalStub exists'
- 'Rosetta condition: CashSettlementTerms  if settlementTerms -> settlementCurrency
  exists and (settlementTerms -> settlementCurrency <> priceQuantity -> quantitySchedule
  -> unit -> currency or settlementTerms -> settlementCurrency <> priceQuantity ->
  quantityMultiplier -> fxLinkedNotionalSchedule -> varyingNotionalCurrency) then
  (settlementTerms -> cashSettlementTerms -> valuationMethod exists and settlementTerms
  -> cashSettlementTerms -> valuationDate exists) or priceQuantity -> quantityMultiplier
  -> fxLinkedNotionalSchedule -> fxSpotRateSource exists'
- 'Rosetta condition: FpML_ird_7_1  if paymentDates -> paymentFrequency -> period
  = calculationPeriodDates -> calculationPeriodFrequency -> period and paymentDates
  -> paymentFrequency -> periodMultiplier = calculationPeriodDates -> calculationPeriodFrequency
  -> periodMultiplier then (compoundingMethod is absent or compoundingMethod = CompoundingMethodEnum
  -> None)'
- 'Rosetta condition: FpML_ird_7_2  if (paymentDates -> paymentFrequency -> period
  exists and calculationPeriodDates -> calculationPeriodFrequency -> period exists
  and paymentDates -> paymentFrequency -> period <> calculationPeriodDates -> calculationPeriodFrequency
  -> period) or (paymentDates -> paymentFrequency -> periodMultiplier exists and calculationPeriodDates
  -> calculationPeriodFrequency -> periodMultiplier exists and paymentDates -> paymentFrequency
  -> periodMultiplier <> calculationPeriodDates -> calculationPeriodFrequency -> periodMultiplier)
  then compoundingMethod exists'
- 'Rosetta condition: FpML_ird_9  if compoundingMethod exists and compoundingMethod
  <> CompoundingMethodEnum -> None then resetDates exists'
- 'Rosetta condition: FpML_ird_29  if compoundingMethod exists and compoundingMethod
  <> CompoundingMethodEnum -> None then rateSpecification -> FixedRateSpecification
  is absent'
- 'Rosetta condition: CalculationPeriodDatesFirstCompoundingPeriodEndDate  if compoundingMethod
  is absent or compoundingMethod = CompoundingMethodEnum -> None then calculationPeriodDates
  -> firstCompoundingPeriodEndDate is absent'
- 'Rosetta func: FixedAmount  2006 ISDA Definition Article 5 Section 5.1. Calculation
  of a Fixed Amount: The Fixed Amount payable by a party on a Payment Date will be:
  (a) if an amount is specified for the Swap Transaction as the Fixed Amount payable
  by that party for that Payment Date or for the related Calculation Period, that
  amount; or (b) if an amount is not specified for the Swap Transaction as the Fixed
  Amount payable by that party for that Payment Date or for the related Calculation
  Period, an amount calculated on a formula basis for that Payment Date or for the
  related Calculation Period as follows: Fixed Amount = Calculation Amount × Fixed
  Rate × Day Count Fraction.'
- 'Rosetta func: FloatingAmount  2006 ISDA Definition Article 6 Section 6.1. Calculation
  of a Floating Amount: Subject to the provisions of Section 6.4 (Negative Interest
  Rates), the Floating Amount payable by a party on a Payment Date will be: (a) if
  Compounding is not specified for the Swap Transaction or that party, an amount calculated
  on a formula basis for that Payment Date or for the related Calculation Period as
  follows: Floating Amount = Calculation Amount × Floating Rate + Spread × Floating
  Rate Day Count Fraction (b) if ''Compounding'' is specified to be applicable to
  the Swap Transaction or that party and ''Flat Compounding'' is not specified, an
  amount equal to the sum of the Compounding Period Amounts for each of the Compounding
  Periods in the related Calculation Period; or (c) if ''Flat Compounding'' is specified
  to be applicable to the Swap Transaction or that party, an amount equal to the sum
  of the Basic Compounding Period Amounts for each of the Compounding Periods in the
  related Calculation Period plus the sum of the Additional Compounding Period Amounts
  for each such Compounding Period.'
- 'Rosetta func: ExtractFixedLeg  Extract interest rate payout containing fix rate
  specification.'
- 'Rosetta func: FixedAmountCalculation  Calculates the fixed amount for a calculation
  period by looking up the notional and the fixed rate and multiplying by the year
  fraction.'
- 'Rosetta func: GetFixedRate  Look up the fixed rate for a calculation period.'
- 'Rosetta func: FloatingAmountCalculation  Calculate a floating amount for a calculation
  period by determining the raw floating rate, applying any rate treatments, looking
  up the calculation period notional, then performing the multiplication of the notional,
  rate, and year fraction.  Floating amount calculations are described in the 2021
  ISDA Definitions in Section 6 and 7.'
- 'Rosetta func: ApplyFloatingRateSetting  Calculate a floating amount for a calculation
  period by determining the raw floating rate, applying any rate treatments, looking
  up the calculation period notional, then performing the multiplication of the notional,
  rate, and year fraction.  Floating amount calculations are described in the 2021
  ISDA Definitions in Section 6 and 7.'
- 'Rosetta func: CalculateFloatingCashFlow'
- 'Rosetta func: GetNotionalAmount  Look up the notional amount in effect for a calculation
  period.'
- 'Rosetta func: CalculateYearFraction  Calculate the year fraction for a single
  calculation period, by invoking the base year fraction logic'
in_subset:
- cdm_product_asset
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: PayoutBase
slot_usage:
  dayCountFraction:
    name: dayCountFraction
    description: The day count fraction. The cardinality has been relaxed when compared
      with the FpML interest rate swap for the purpose of accommodating standardized
      credit default swaps which DCF is not explicitly stated as part of the economic
      terms. The data rule InterestRatePayout_dayCountFraction requires that the DCF
      be stated for interest rate products.
    required: false
  calculationPeriodDates:
    name: calculationPeriodDates
    description: The parameters used to generate the calculation period dates schedule,
      including the specification of any initial or final stub calculation periods.
  paymentDates:
    name: paymentDates
    description: The payment date schedule, as defined by the parameters that are
      needed to specify it, either in a parametric way or by reference to another
      schedule of dates (e.g. the reset dates).
    required: false
  paymentDate:
    name: paymentDate
    description: The payment date, where only one date is specified, as for the FRA
      product.
    range: AdjustableDate
  fixedAmount:
    name: fixedAmount
    description: Fixed Amount Calculation
    range: string
attributes:
  rateSpecification:
    name: rateSpecification
    description: The specification of the rate value(s) applicable to the contract
      using either a floating rate calculation, a single fixed rate, a fixed rate
      schedule, or an inflation rate calculation.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: RateSpecification
    any_of:
    - range: FixedRateSpecification
    - range: FloatingRateSpecification
    - range: InflationRateSpecification
  dayCountFraction:
    name: dayCountFraction
    description: The day count fraction. The cardinality has been relaxed when compared
      with the FpML interest rate swap for the purpose of accommodating standardized
      credit default swaps which DCF is not explicitly stated as part of the economic
      terms. The data rule InterestRatePayout_dayCountFraction requires that the DCF
      be stated for interest rate products.
    from_schema: https://w3id.org/lmodel/common-domain-model
    close_mappings:
    - fpml_5_10:AccrualFactorCalculationTerms.dayCountFraction
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - AccrualFactorCalculationTerms
    - FloatingRateIndexCalculationDefaults
    - InterestRatePayout
    - CollateralInterestCalculationParameters
    range: DayCountFractionEnum
    required: false
  calculationPeriodDates:
    name: calculationPeriodDates
    description: The parameters used to generate the calculation period dates schedule,
      including the specification of any initial or final stub calculation periods.
    from_schema: https://w3id.org/lmodel/common-domain-model
    close_mappings:
    - fpml_5_10:CommodityPayout.calculationPeriodDates
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - CommodityPayout
    - InterestRatePayout
    - ObservationTerms
    range: CalculationPeriodDates
  paymentDates:
    name: paymentDates
    description: The payment date schedule, as defined by the parameters that are
      needed to specify it, either in a parametric way or by reference to another
      schedule of dates (e.g. the reset dates).
    from_schema: https://w3id.org/lmodel/common-domain-model
    close_mappings:
    - fpml_5_10:CommodityPayout.paymentDates
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - CommodityPayout
    - InterestRatePayout
    - PerformancePayout
    - FixedPricePayout
    range: PaymentDates
    required: false
  paymentDate:
    name: paymentDate
    description: The payment date, where only one date is specified, as for the FRA
      product.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - FeaturePayment
    - InterestRatePayout
    - PaymentDetail
    - SchedulePeriod
    range: AdjustableDate
  paymentDelay:
    name: paymentDelay
    description: Applicable to CDS on MBS to specify whether payment delays are applicable
      to the fixed Amount. RMBS typically have a payment delay of 5 days between the
      coupon date of the reference obligation and the payment date of the synthetic
      swap. CMBS do not, on the other hand, with both payment dates being on the 25th
      of each month.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    - SettlementDate
    range: boolean
  resetDates:
    name: resetDates
    description: The reset dates schedule, i.e. the dates on which the new observed
      index value is applied for each period and the interest rate hence begins to
      accrue.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: ResetDates
  discountingMethod:
    name: discountingMethod
    description: The parameters specifying any discounting conventions that may apply.
      This element must only be included if discounting applies.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: DiscountingMethod
  compoundingMethod:
    name: compoundingMethod
    description: If one or more calculation period contributes to a single payment
      amount this element specifies whether compounding is applicable and, if so,
      what compounding method is to be used. This element must only be included when
      more than one calculation period contributes to a single payment amount.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: CompoundingMethodEnum
  cashflowRepresentation:
    name: cashflowRepresentation
    description: The cashflow representation of the swap stream.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: CashflowRepresentation
  stubPeriod:
    name: stubPeriod
    description: The stub calculation period amount parameters. This element must
      only be included if there is an initial or final stub calculation period. Even
      then, it must only be included if either the stub references a different floating
      rate tenor to the regular calculation periods, or if the stub is calculated
      as a linear interpolation of two different floating rate tenors, or if a specific
      stub rate or stub amount has been negotiated.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: StubPeriod
  bondReference:
    name: bondReference
    description: Reference to a bond underlier to represent an asset swap or Condition
      Precedent Bond.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: BondReference
  fixedAmount:
    name: fixedAmount
    description: Fixed Amount Calculation
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - ThresholdElection
    - MinimumTransferAmountElection
    - LegacyIndependentAmountParty
    - InterestRatePayout
    range: string
  floatingAmount:
    name: floatingAmount
    description: Floating Amount Calculation
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: string
  spreadCalculationMethod:
    name: spreadCalculationMethod
    description: 'Method by which spread is calculated. For example on an asset swap:
      ''ParPar'' or ''Proceeds'' may be the method indicated.'
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - InterestRatePayout
    range: SpreadCalculationMethodEnum
  payerReceiver:
    name: payerReceiver
    description: Canonical representation of the payer and receiver parties applicable
      to each payout leg.
    from_schema: https://w3id.org/lmodel/common-domain-model
    close_mappings:
    - fpml_5_10:CalculateTransferInstruction.payerReceiver
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - CalculateTransferInstruction
    - TransferBase
    - CollateralBalance
    - FeaturePayment
    - AssetFlow
    - PayoutBase
    - PrincipalPayment
    - PortfolioReturnTerms
    - PassThroughItem
    range: PayerReceiver
    required: true
  priceQuantity:
    name: priceQuantity
    description: Each payout leg must implement the quantity concept as a 'resolvable'
      type, which allows for different payout legs to be linked to each other (e.g.
      in the case of cross-curreny products).
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - ExecutionInstruction
    - IndexTransitionInstruction
    - PositionBase
    - PayoutBase
    - TradeLot
    range: ResolvablePriceQuantity
    required: false
    multivalued: false
    inlined: true
    inlined_as_list: true
  principalPayment:
    name: principalPayment
    description: The specification of the principal exchange. Optional as only applicable
      in the case of cross-currency or zero-coupon swaps with a final payment.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - PayoutBase
    range: PrincipalPayments
  settlementTerms:
    name: settlementTerms
    description: Each payout leg must specifies its settlement terms, including the
      delivery type (i.e. cash vs physical, and their respective terms), the transfer
      type (DvP etc.) and settlement date, if any.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: InterestRatePayout
    domain_of:
    - EquitySwapMasterConfirmation2018
    - PayoutBase
    range: SettlementTerms
    required: false
rules:
- postconditions:
    slot_conditions:
      priceQuantity:
        name: priceQuantity
        required: true
  description: When there is an OptionPayout the quantity can be expressed as part
    of the payoutQuantity, or as part of the underlier in the case of a Swaption.  For
    all other payouts that extend PayoutBase the payoutQuantity is a mandatory attribute.
- postconditions:
    any_of:
    - slot_conditions:
        paymentDates:
          name: paymentDates
          required: true
    - slot_conditions:
        paymentDate:
          name: paymentDate
          required: true
  description: The paymentDates attributes is applicable to interest rate payouts
    with periodic payments, while the paymentDate reflects the FpML FRA implementation
    where one specific date is specified.