Class: CommodityPayout
Payout based on the averaged price of a referenced underlier. (e.g. Commodities). Can represent both average (average of many) & bullet (average of 1) pricing
URI: common_domain_model:CommodityPayout
classDiagram
class CommodityPayout
click CommodityPayout href "../CommodityPayout/"
PayoutBase <|-- CommodityPayout
click PayoutBase href "../PayoutBase/"
CommodityPayout : averagingFeature
CommodityPayout --> "0..1" AveragingCalculation : averagingFeature
click AveragingCalculation href "../AveragingCalculation/"
CommodityPayout : calculationPeriodDates
CommodityPayout --> "0..1" CalculationPeriodDates : calculationPeriodDates
click CalculationPeriodDates href "../CalculationPeriodDates/"
CommodityPayout : commodityPriceReturnTerms
CommodityPayout --> "0..1" CommodityPriceReturnTerms : commodityPriceReturnTerms
click CommodityPriceReturnTerms href "../CommodityPriceReturnTerms/"
CommodityPayout : delivery
CommodityPayout --> "0..1" AssetDeliveryInformation : delivery
click AssetDeliveryInformation href "../AssetDeliveryInformation/"
CommodityPayout : fxFeature
CommodityPayout --> "0..1" FxFeature : fxFeature
click FxFeature href "../FxFeature/"
CommodityPayout : payerReceiver
CommodityPayout --> "1" PayerReceiver : payerReceiver
click PayerReceiver href "../PayerReceiver/"
CommodityPayout : paymentDates
CommodityPayout --> "1" PaymentDates : paymentDates
click PaymentDates href "../PaymentDates/"
CommodityPayout : priceQuantity
CommodityPayout --> "0..1" ResolvablePriceQuantity : priceQuantity
click ResolvablePriceQuantity href "../ResolvablePriceQuantity/"
CommodityPayout : pricingDates
CommodityPayout --> "1" PricingDates : pricingDates
click PricingDates href "../PricingDates/"
CommodityPayout : principalPayment
CommodityPayout --> "0..1" PrincipalPayments : principalPayment
click PrincipalPayments href "../PrincipalPayments/"
CommodityPayout : schedule
CommodityPayout --> "0..1" CalculationSchedule : schedule
click CalculationSchedule href "../CalculationSchedule/"
CommodityPayout : settlementTerms
CommodityPayout --> "0..1" SettlementTerms : settlementTerms
click SettlementTerms href "../SettlementTerms/"
CommodityPayout : underlier
CommodityPayout --> "1" Underlier : underlier
click Underlier href "../Underlier/"
Inheritance
- PayoutBase
- CommodityPayout
Slots
| Name | Cardinality and Range | Description | Inheritance |
|---|---|---|---|
| averagingFeature | 0..1 AveragingCalculation |
Indicates if the averaging calculation, when applicable, is weighted or unwei... | direct |
| commodityPriceReturnTerms | 0..1 CommodityPriceReturnTerms |
Defines parameters in which the commodity price is assessed | direct |
| pricingDates | 1 PricingDates |
Specifies specific dates or parametric rules for the dates on which the price... | direct |
| schedule | 0..1 CalculationSchedule |
Allows the full representation of a payout by defining a set of schedule peri... | direct |
| calculationPeriodDates | 0..1 CalculationPeriodDates |
Defines the calculation period dates schedule | direct |
| paymentDates | 1 PaymentDates |
Defines the payment date schedule, as defined by the parameters that are need... | direct |
| underlier | 1 Underlier or Observable or Product |
Identifies the underlying product that is referenced for pricing of the appli... | direct |
| fxFeature | 0..1 FxFeature |
Defines quanto or composite FX features that are included in the swap leg | direct |
| delivery | 0..1 AssetDeliveryInformation |
Contains the information relative to the delivery of the asset | 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] | CommodityPayout |
| CalculateTransferInstruction | payout | any_of[range] | CommodityPayout |
| ScheduledTransfer | payoutReference | any_of[range] | CommodityPayout |
| EconomicTerms | payout | any_of[range] | CommodityPayout |
Rules
| Rule Applied | Preconditions | Postconditions | Elseconditions |
|---|---|---|---|
| Rule Applied | Preconditions | Postconditions | Elseconditions |
|---|---|---|---|
In Subsets
Comments
- Rosetta condition: Quantity — priceQuantity exists
- Rosetta condition: CalculationPeriod — required choice schedule, calculationPeriodDates
- Rosetta condition: CommodityUnderlier — if underlier -> Observable exists then ObservableIsCommodity(underlier -> Observable) else if underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element -> OptionPayout exists then ObservableIsCommodity( underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element -> OptionPayout -> underlier -> Observable ) // Commodity Option else if underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element -> SettlementPayout exists then ObservableIsCommodity( underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element -> SettlementPayout -> underlier -> Observable ) // Commodity Future else False
- Rosetta condition: DeliveryCapacity — if delivery -> deliveryCapacity exists then schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery -> periods -> profile -> block -> deliveryCapacity is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity is absent else if schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity exists then delivery -> deliveryCapacity is absent and delivery -> periods -> profile -> block -> deliveryCapacity is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity is absent else if delivery -> periods -> profile -> block -> deliveryCapacity exists then schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity exists then delivery -> deliveryCapacity is absent and schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery -> periods -> profile -> block -> deliveryCapacity is absent
- Rosetta condition: PriceTimeIntervalQuantity — if schedule -> schedulePeriod -> deliveryPeriod -> priceTimeIntervalQuantity exists then delivery -> periods -> profile -> block -> priceTimeIntervalQuantity is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity is absent else if delivery -> periods -> profile -> block -> priceTimeIntervalQuantity exists then schedule -> schedulePeriod -> deliveryPeriod -> priceTimeIntervalQuantity is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity exists then schedule -> schedulePeriod -> deliveryPeriod -> priceTimeIntervalQuantity is absent and delivery -> periods -> profile -> block -> priceTimeIntervalQuantity is absent
Identifier and Mapping Information
Annotations
| property | value |
|---|---|
| metadata_key | True |
Schema Source
- from schema: https://w3id.org/lmodel/common-domain-model
Mappings
| Mapping Type | Mapped Value |
|---|---|
| self | common_domain_model:CommodityPayout |
| native | common_domain_model:CommodityPayout |
| close | fpml_5_10:CommodityPayout |
LinkML Source
Direct
name: CommodityPayout
annotations:
metadata_key:
tag: metadata_key
value: true
description: Payout based on the averaged price of a referenced underlier. (e.g. Commodities).
Can represent both average (average of many) & bullet (average of 1) pricing
comments:
- 'Rosetta condition: Quantity — priceQuantity exists'
- 'Rosetta condition: CalculationPeriod — required choice schedule, calculationPeriodDates'
- 'Rosetta condition: CommodityUnderlier — if underlier -> Observable exists then
ObservableIsCommodity(underlier -> Observable) else if underlier -> Product -> TransferableProduct
-> economicTerms -> payout only-element -> OptionPayout exists then ObservableIsCommodity(
underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element
-> OptionPayout -> underlier -> Observable ) // Commodity Option else if underlier
-> Product -> TransferableProduct -> economicTerms -> payout only-element -> SettlementPayout
exists then ObservableIsCommodity( underlier -> Product -> TransferableProduct ->
economicTerms -> payout only-element -> SettlementPayout -> underlier -> Observable
) // Commodity Future else False'
- 'Rosetta condition: DeliveryCapacity — if delivery -> deliveryCapacity exists then
schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery
-> periods -> profile -> block -> deliveryCapacity is absent and schedule -> schedulePeriod
-> deliveryPeriod -> profile -> block -> deliveryCapacity is absent else if schedule
-> schedulePeriod -> deliveryPeriod -> deliveryCapacity exists then delivery ->
deliveryCapacity is absent and delivery -> periods -> profile -> block -> deliveryCapacity
is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block ->
deliveryCapacity is absent else if delivery -> periods -> profile -> block -> deliveryCapacity
exists then schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is
absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity
is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block
-> deliveryCapacity exists then delivery -> deliveryCapacity is absent and schedule
-> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery ->
periods -> profile -> block -> deliveryCapacity is absent'
- 'Rosetta condition: PriceTimeIntervalQuantity — if schedule -> schedulePeriod ->
deliveryPeriod -> priceTimeIntervalQuantity exists then delivery -> periods -> profile
-> block -> priceTimeIntervalQuantity is absent and schedule -> schedulePeriod ->
deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity is absent else if
delivery -> periods -> profile -> block -> priceTimeIntervalQuantity exists then
schedule -> schedulePeriod -> deliveryPeriod -> priceTimeIntervalQuantity is absent
and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity
is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block
-> priceTimeIntervalQuantity exists then schedule -> schedulePeriod -> deliveryPeriod
-> priceTimeIntervalQuantity is absent and delivery -> periods -> profile -> block
-> priceTimeIntervalQuantity is absent'
in_subset:
- cdm_product_asset
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout
is_a: PayoutBase
slots:
- averagingFeature
- commodityPriceReturnTerms
- pricingDates
- schedule
- calculationPeriodDates
- paymentDates
- underlier
- fxFeature
- delivery
slot_usage:
schedule:
name: schedule
description: Allows the full representation of a payout by defining a set of schedule
periods. It supports standard schedule customization by expressing all the dates,
quantities, and pricing data in a non-parametric way.
range: CalculationSchedule
multivalued: false
underlier:
name: underlier
description: Identifies the underlying product that is referenced for pricing
of the applicable leg in a swap. Referenced in the '2018 ISDA CDM Equity Confirmation
for Security Equity Swap' as Security.
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:
exactly_one_of:
- slot_conditions:
schedule:
name: schedule
required: true
- slot_conditions:
calculationPeriodDates:
name: calculationPeriodDates
required: true
description: The calculation periods are either specified parametrically via CalculationPeriodDates
or non-parametrically via SchedulePeriod.
Induced
name: CommodityPayout
annotations:
metadata_key:
tag: metadata_key
value: true
description: Payout based on the averaged price of a referenced underlier. (e.g. Commodities).
Can represent both average (average of many) & bullet (average of 1) pricing
comments:
- 'Rosetta condition: Quantity — priceQuantity exists'
- 'Rosetta condition: CalculationPeriod — required choice schedule, calculationPeriodDates'
- 'Rosetta condition: CommodityUnderlier — if underlier -> Observable exists then
ObservableIsCommodity(underlier -> Observable) else if underlier -> Product -> TransferableProduct
-> economicTerms -> payout only-element -> OptionPayout exists then ObservableIsCommodity(
underlier -> Product -> TransferableProduct -> economicTerms -> payout only-element
-> OptionPayout -> underlier -> Observable ) // Commodity Option else if underlier
-> Product -> TransferableProduct -> economicTerms -> payout only-element -> SettlementPayout
exists then ObservableIsCommodity( underlier -> Product -> TransferableProduct ->
economicTerms -> payout only-element -> SettlementPayout -> underlier -> Observable
) // Commodity Future else False'
- 'Rosetta condition: DeliveryCapacity — if delivery -> deliveryCapacity exists then
schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery
-> periods -> profile -> block -> deliveryCapacity is absent and schedule -> schedulePeriod
-> deliveryPeriod -> profile -> block -> deliveryCapacity is absent else if schedule
-> schedulePeriod -> deliveryPeriod -> deliveryCapacity exists then delivery ->
deliveryCapacity is absent and delivery -> periods -> profile -> block -> deliveryCapacity
is absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block ->
deliveryCapacity is absent else if delivery -> periods -> profile -> block -> deliveryCapacity
exists then schedule -> schedulePeriod -> deliveryPeriod -> deliveryCapacity is
absent and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> deliveryCapacity
is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block
-> deliveryCapacity exists then delivery -> deliveryCapacity is absent and schedule
-> schedulePeriod -> deliveryPeriod -> deliveryCapacity is absent and delivery ->
periods -> profile -> block -> deliveryCapacity is absent'
- 'Rosetta condition: PriceTimeIntervalQuantity — if schedule -> schedulePeriod ->
deliveryPeriod -> priceTimeIntervalQuantity exists then delivery -> periods -> profile
-> block -> priceTimeIntervalQuantity is absent and schedule -> schedulePeriod ->
deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity is absent else if
delivery -> periods -> profile -> block -> priceTimeIntervalQuantity exists then
schedule -> schedulePeriod -> deliveryPeriod -> priceTimeIntervalQuantity is absent
and schedule -> schedulePeriod -> deliveryPeriod -> profile -> block -> priceTimeIntervalQuantity
is absent else if schedule -> schedulePeriod -> deliveryPeriod -> profile -> block
-> priceTimeIntervalQuantity exists then schedule -> schedulePeriod -> deliveryPeriod
-> priceTimeIntervalQuantity is absent and delivery -> periods -> profile -> block
-> priceTimeIntervalQuantity is absent'
in_subset:
- cdm_product_asset
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout
is_a: PayoutBase
slot_usage:
schedule:
name: schedule
description: Allows the full representation of a payout by defining a set of schedule
periods. It supports standard schedule customization by expressing all the dates,
quantities, and pricing data in a non-parametric way.
range: CalculationSchedule
multivalued: false
underlier:
name: underlier
description: Identifies the underlying product that is referenced for pricing
of the applicable leg in a swap. Referenced in the '2018 ISDA CDM Equity Confirmation
for Security Equity Swap' as Security.
attributes:
averagingFeature:
name: averagingFeature
description: Indicates if the averaging calculation, when applicable, is weighted
or unweighted.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.averagingFeature
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
- OptionFeature
range: AveragingCalculation
commodityPriceReturnTerms:
name: commodityPriceReturnTerms
description: Defines parameters in which the commodity price is assessed.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.commodityPriceReturnTerms
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
range: CommodityPriceReturnTerms
pricingDates:
name: pricingDates
description: Specifies specific dates or parametric rules for the dates on which
the price will be determined.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.pricingDates
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
range: PricingDates
required: true
schedule:
name: schedule
description: Allows the full representation of a payout by defining a set of schedule
periods. It supports standard schedule customization by expressing all the dates,
quantities, and pricing data in a non-parametric way.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: CommodityPayout
domain_of:
- TriggerEvent
- CommodityPayout
- AveragingPeriod
- OptionPayout
- SettlementPayout
- FixedPricePayout
range: CalculationSchedule
multivalued: false
inlined: true
inlined_as_list: true
calculationPeriodDates:
name: calculationPeriodDates
description: Defines the calculation period dates schedule.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.calculationPeriodDates
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
- InterestRatePayout
- ObservationTerms
range: CalculationPeriodDates
paymentDates:
name: paymentDates
description: Defines 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 valuation dates).
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.paymentDates
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
- InterestRatePayout
- PerformancePayout
- FixedPricePayout
range: PaymentDates
required: true
underlier:
name: underlier
description: Identifies the underlying product that is referenced for pricing
of the applicable leg in a swap. Referenced in the '2018 ISDA CDM Equity Confirmation
for Security Equity Swap' as Security.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: CommodityPayout
domain_of:
- CorporateAction
- CommodityPayout
- OptionPayout
- PerformancePayout
- PortfolioReturnTerms
- SettlementPayout
- AssetPayout
range: Underlier
required: true
any_of:
- range: Observable
- range: Product
fxFeature:
name: fxFeature
description: Defines quanto or composite FX features that are included in the
swap leg.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.fxFeature
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
- PerformancePayout
- OptionFeature
range: FxFeature
delivery:
name: delivery
description: Contains the information relative to the delivery of the asset.
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- fpml_5_10:CommodityPayout.delivery
rank: 1000
owner: CommodityPayout
domain_of:
- CommodityPayout
- OptionPayout
- SettlementPayout
range: AssetDeliveryInformation
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: CommodityPayout
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: CommodityPayout
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: CommodityPayout
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: CommodityPayout
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:
exactly_one_of:
- slot_conditions:
schedule:
name: schedule
required: true
- slot_conditions:
calculationPeriodDates:
name: calculationPeriodDates
required: true
description: The calculation periods are either specified parametrically via CalculationPeriodDates
or non-parametrically via SchedulePeriod.