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
- PayoutBase
- InterestRatePayout
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
- from schema: https://w3id.org/lmodel/common-domain-model
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.