Class: TradableProduct
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.
URI: common_domain_model:TradableProduct
classDiagram
class TradableProduct
click TradableProduct href "../TradableProduct/"
TradableProduct <|-- Trade
click Trade href "../Trade/"
TradableProduct : adjustment
TradableProduct --> "0..1" NotionalAdjustmentEnum : adjustment
click NotionalAdjustmentEnum href "../NotionalAdjustmentEnum/"
TradableProduct : ancillaryParty
TradableProduct --> "*" AncillaryParty : ancillaryParty
click AncillaryParty href "../AncillaryParty/"
TradableProduct : counterparty
TradableProduct --> "1..*" Counterparty : counterparty
click Counterparty href "../Counterparty/"
TradableProduct : product
TradableProduct --> "1" NonTransferableProduct : product
click NonTransferableProduct href "../NonTransferableProduct/"
TradableProduct : tradeLot
TradableProduct --> "1..*" TradeLot : tradeLot
click TradeLot href "../TradeLot/"
Inheritance
Section titled “Inheritance”- TradableProduct
| Name | Cardinality and Range | Description | Inheritance |
|---|---|---|---|
| product | 1 NonTransferableProduct |
The underlying product to be included in a contract or execution | direct |
| tradeLot | 1..* TradeLot |
Specifies the price, quantity and effective date of each trade lot, when the … | direct |
| counterparty | 1..* Counterparty |
Specifies the parties which are the two counterparties to the transaction | direct |
| ancillaryParty | * AncillaryParty |
Specifies the parties with ancillary roles in the transaction | direct |
| adjustment | 0..1 NotionalAdjustmentEnum |
Specifies the conditions that govern the adjustment to the quantity of a prod… | direct |
Usages
Section titled “Usages”| used by | used in | type | used |
|---|---|---|---|
| CounterpartyPosition | positionBase | range | TradableProduct |
Comments
Section titled “Comments”- Rosetta condition NotionalAdjustment is not stated in LinkML: if adjustment exists then product -> economicTerms -> payout as PerformancePayout -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout as PerformancePayout exists
- Rosetta condition PerformancePayout_ExtraordinaryDividendsParty is not stated in LinkML: 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
- Rosetta condition OptionPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
- Rosetta condition ForwardPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
- Rosetta condition PredeterminedClearingOrganizationParty is not stated in LinkML: 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
- Rosetta condition ExerciseNoticeReceiverPartyManual is not stated in LinkML: 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
- Rosetta condition ExerciseNoticeReceiverPartyOptionalEarlyTermination is not stated in LinkML: 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
- Rosetta condition ExerciseNoticeReceiverPartyCancelableProvision is not stated in LinkML: 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
- Rosetta condition ExerciseNoticeReceiverPartyExtendibleProvision is not stated in LinkML: 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
- Rosetta condition CalculationAgentIndependent is not stated in LinkML: 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
- Rosetta condition CalculationAgentOptionalEarlyTermination is not stated in LinkML: 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
- Rosetta condition CalculationAgentMandatoryEarlyTermination is not stated in LinkML: 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
Identifier and Mapping Information
Section titled “Identifier and Mapping Information”Schema Source
Section titled “Schema Source”- from schema: https://w3id.org/lmodel/common-domain-model
Mappings
Section titled “Mappings”| Mapping Type | Mapped Value |
|---|---|
| self | common_domain_model:TradableProduct |
| native | common_domain_model:TradableProduct |
LinkML Source
Section titled “LinkML Source”Direct
Section titled “Direct”name: TradableProductdescription: 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.comments:- 'Rosetta condition NotionalAdjustment is not stated in LinkML: if adjustment exists then product -> economicTerms -> payout as PerformancePayout -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout as PerformancePayout exists'- 'Rosetta condition PerformancePayout_ExtraordinaryDividendsParty is not stated in LinkML: 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'- 'Rosetta condition OptionPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'- 'Rosetta condition ForwardPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'- 'Rosetta condition PredeterminedClearingOrganizationParty is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyManual is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyOptionalEarlyTermination is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyCancelableProvision is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyExtendibleProvision is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentIndependent is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentOptionalEarlyTermination is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentMandatoryEarlyTermination is not stated in LinkML: 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'from_schema: https://w3id.org/lmodel/common-domain-modelattributes: product: name: product description: The underlying product to be included in a contract or execution. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template domain_of: - ExecutionInstruction - TermsChangeInstruction - AggregationParameters - PositionBase - ExcludedProducts - TradableProduct range: NonTransferableProduct required: true tradeLot: name: tradeLot description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template rank: 1000 domain_of: - TradableProduct range: TradeLot required: true multivalued: true counterparty: name: counterparty annotations: doc_reference: tag: doc_reference value: ICMA GMRA namingConvention Party description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template domain_of: - ExecutionInstruction - PartyChangeInstruction - AgreementTerms - ClauseLibraryClause - ClauseLibraryClauseVariant - EligibleCollateralSpecification - TradableProduct range: Counterparty required: true multivalued: true minimum_cardinality: 2 maximum_cardinality: 2 ancillaryParty: name: ancillaryParty description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template domain_of: - AncillaryEntity - ExecutionInstruction - PartyChangeInstruction - TermsChangeInstruction - TradableProduct range: AncillaryParty multivalued: true adjustment: name: adjustment description: '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.' from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template domain_of: - TermsChangeInstruction - TradableProduct range: NotionalAdjustmentEnumInduced
Section titled “Induced”name: TradableProductdescription: 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.comments:- 'Rosetta condition NotionalAdjustment is not stated in LinkML: if adjustment exists then product -> economicTerms -> payout as PerformancePayout -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout as PerformancePayout exists'- 'Rosetta condition PerformancePayout_ExtraordinaryDividendsParty is not stated in LinkML: 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'- 'Rosetta condition OptionPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'- 'Rosetta condition ForwardPayout_PredeterminedClearingOrganizationParty is not stated in LinkML: if product -> economicTerms -> payout as SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'- 'Rosetta condition PredeterminedClearingOrganizationParty is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyManual is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyOptionalEarlyTermination is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyCancelableProvision is not stated in LinkML: 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'- 'Rosetta condition ExerciseNoticeReceiverPartyExtendibleProvision is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentIndependent is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentOptionalEarlyTermination is not stated in LinkML: 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'- 'Rosetta condition CalculationAgentMandatoryEarlyTermination is not stated in LinkML: 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'from_schema: https://w3id.org/lmodel/common-domain-modelattributes: product: name: product description: The underlying product to be included in a contract or execution. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template owner: TradableProduct domain_of: - ExecutionInstruction - TermsChangeInstruction - AggregationParameters - PositionBase - ExcludedProducts - TradableProduct range: NonTransferableProduct required: true tradeLot: name: tradeLot description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template rank: 1000 owner: TradableProduct domain_of: - TradableProduct range: TradeLot required: true multivalued: true counterparty: name: counterparty annotations: doc_reference: tag: doc_reference value: ICMA GMRA namingConvention Party description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template owner: TradableProduct domain_of: - ExecutionInstruction - PartyChangeInstruction - AgreementTerms - ClauseLibraryClause - ClauseLibraryClauseVariant - EligibleCollateralSpecification - TradableProduct range: Counterparty required: true multivalued: true minimum_cardinality: 2 maximum_cardinality: 2 ancillaryParty: name: ancillaryParty description: 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. from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template owner: TradableProduct domain_of: - AncillaryEntity - ExecutionInstruction - PartyChangeInstruction - TermsChangeInstruction - TradableProduct range: AncillaryParty multivalued: true adjustment: name: adjustment description: '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.' from_schema: https://w3id.org/lmodel/common-domain-model/cdm_product_template owner: TradableProduct domain_of: - TermsChangeInstruction - TradableProduct range: NotionalAdjustmentEnum