FINXIS.

TradableProduct

Type CDM 7.2.0

Definition of a product as ready to be traded, i.e. included in an execution or contract, by associating a specific price and quantity to this product plus an (optional) mechanism for any potential future quantity adjustment.

Extends —
Extended by Trade
Attributes 5
Namespace cdm.product.template

Attributes

All 5 declared on TradableProduct. Cardinality in amber is required.

NameTypeCard.Description
product NonTransferableProduct 1..1 The underlying product to be included in a contract or execution.
tradeLot TradeLot 1..* Specifies the price, quantity and effective date of each trade lot, when the same product may be traded multiple times in different lots with the same counterparty. In a trade increase, a new trade lot is added to the list, with the corresponding effective date. In a trade decrease, the existing trade lot(s) are decreased of the corresponding quantity (and an unwind fee may have to be settled). The multiple cardinality and the ability to increase existing trades is used for Equity Swaps in particular.
counterparty Counterparty 2..2 Specifies the parties which are the two counterparties to the transaction. The product is agnostic to the actual parties to the transaction, with the party references abstracted away from the product definition and replaced by the counterparty enum (e.g. CounterpartyEnum values Party1 or Party2). The counterparty enum can then be positioned in the product (e.g. to specify which counterparty is the payer, receiver etc) and this counterparties attribute, which is positioned outside of the product definition, allows the counterparty enum to be associated with an actual party reference.
ancillaryParty AncillaryParty 0..* Specifies the parties with ancillary roles in the transaction. The product is agnostic to the actual parties involved in the transaction, with the party references abstracted away from the product definition and replaced by the AncillaryRoleEnum. The AncillaryRoleEnum can then be positioned in the product and this AncillaryParty type, which is positioned outside of the product definition, allows the AncillaryRoleEnum to be associated with an actual party reference.
adjustment NotionalAdjustmentEnum 0..1 Specifies the conditions that govern the adjustment to the quantity of a product being traded: e.g. execution, portfolio rebalancing etc. It is typically used in the context of Equity Swaps.

Conditions

Validation rules the model enforces on this type, in Rune. An instance that breaks one of these is invalid CDM, whatever produced it.

NotionalAdjustment Condition
As the adjustment attribute applies to return swaps, the equity payout needs to be present alongside it.
if adjustment exists
then product -> economicTerms -> payout as PerformancePayout -> returnTerms -> priceReturnTerms exists
        or product -> economicTerms -> payout as PerformancePayout exists
PerformancePayout_ExtraordinaryDividendsParty Condition
if product -> economicTerms -> payout as PerformancePayout -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> ExtraordinaryDividendsParty
        and if ancillaryParty -> role contains AncillaryRoleEnum -> ExtraordinaryDividendsParty
            then product -> economicTerms -> payout as PerformancePayout -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists
OptionPayout_PredeterminedClearingOrganizationParty Condition
if product -> economicTerms -> payout as OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
ForwardPayout_PredeterminedClearingOrganizationParty Condition
if product -> economicTerms -> payout as SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
PredeterminedClearingOrganizationParty Condition
if ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
then product -> economicTerms -> payout as SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists
        or product -> economicTerms -> payout as OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists
ExerciseNoticeReceiverPartyManual Condition
if product -> economicTerms -> payout as OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists
then ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual
        and if ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual
            then product -> economicTerms -> payout as OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists
ExerciseNoticeReceiverPartyOptionalEarlyTermination Condition
if product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> optionalEarlyTermination -> exerciseNotice -> exerciseNoticeReceiver exists
then ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyOptionalEarlyTermination
        and if ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyOptionalEarlyTermination
            then product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> optionalEarlyTermination -> exerciseNotice -> exerciseNoticeReceiver exists
ExerciseNoticeReceiverPartyCancelableProvision Condition
if product -> economicTerms -> terminationProvision -> cancelableProvision -> exerciseNotice -> exerciseNoticeReceiver exists
then ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyCancelableProvision
        and if ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyCancelableProvision
            then product -> economicTerms -> terminationProvision -> cancelableProvision -> exerciseNotice -> exerciseNoticeReceiver exists
ExerciseNoticeReceiverPartyExtendibleProvision Condition
if product -> economicTerms -> terminationProvision -> extendibleProvision -> exerciseNotice -> exerciseNoticeReceiver exists
then ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyExtendibleProvision
        and if ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyExtendibleProvision
            then product -> economicTerms -> terminationProvision -> extendibleProvision -> exerciseNotice -> exerciseNoticeReceiver exists
CalculationAgentIndependent Condition
if product -> economicTerms -> calculationAgent -> calculationAgentParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentIndependent
        and if ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentIndependent
            then product -> economicTerms -> calculationAgent -> calculationAgentParty exists
CalculationAgentOptionalEarlyTermination Condition
if product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> optionalEarlyTermination -> calculationAgent -> calculationAgentParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentOptionalEarlyTermination
        and if ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentOptionalEarlyTermination
            then product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> optionalEarlyTermination -> calculationAgent -> calculationAgentParty exists
CalculationAgentMandatoryEarlyTermination Condition
if product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> mandatoryEarlyTermination -> calculationAgent -> calculationAgentParty exists
then ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentMandatoryEarlyTermination
        and if ancillaryParty -> role contains AncillaryRoleEnum -> CalculationAgentMandatoryEarlyTermination
            then product -> economicTerms -> terminationProvision -> earlyTerminationProvision -> mandatoryEarlyTermination -> calculationAgent -> calculationAgentParty exists

Referenced by

1 type holds a TradableProduct as an attribute.

Functions

Model functions that produce or consume this type. These are the CDM's own behaviour — the logic a correct implementation has to match.

FunctionRoleDescription
AddTradeLot returns Add a TradeLot to an existing list of TradeLots.
ExtractTradePurchasePrice takes —
ExtractTradeCollateralQuantity takes —
ExtractTradeCollateralPrice takes —
AddTradeLot takes Add a TradeLot to an existing list of TradeLots.

Open TradableProduct in the Model Browser

Walk the tree and the reference graph interactively, and switch releases to see how the type has changed. Free, no signup.

Model Browser All 200+ releases
Parsed from CDM 7.2.0 · product-template-type.rosetta cdm.product.template