Skip to content

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

Slots

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

used by used in type used
CounterpartyPosition positionBase range TradableProduct

In Subsets

Comments

  • Rosetta condition: PriceQuantityTriangulation — PriceQuantityTriangulation(tradeLot) = True
  • Rosetta condition: NotionalAdjustment — if adjustment exists then product -> economicTerms -> payout -> PerformancePayout -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout -> PerformancePayout exists
  • Rosetta condition: PerformancePayout_ExtraordinaryDividendsParty — if product -> economicTerms -> payout -> PerformancePayout -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> ExtraordinaryDividendsParty and if ancillaryParty -> role contains AncillaryRoleEnum -> ExtraordinaryDividendsParty then product -> economicTerms -> payout -> PerformancePayout -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists
  • Rosetta condition: OptionPayout_PredeterminedClearingOrganizationParty — if product -> economicTerms -> payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
  • Rosetta condition: ForwardPayout_PredeterminedClearingOrganizationParty — if product -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty
  • Rosetta condition: PredeterminedClearingOrganizationParty — if ancillaryParty -> role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty then product -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists or product -> economicTerms -> payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty exists
  • Rosetta condition: ExerciseNoticeReceiverPartyManual — if product -> economicTerms -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists then ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual and if ancillaryParty -> role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual then product -> economicTerms -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists
  • Rosetta condition: ExerciseNoticeReceiverPartyOptionalEarlyTermination — 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 — 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 — 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 — 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 — 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 — 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
  • Rosetta func: AddTradeLot — Add a TradeLot to an existing list of TradeLots.

Identifier and Mapping Information

Annotations

property value
rosetta_functions [{"name":"AddTradeLot","description":"Add a TradeLot to an existing list of TradeLots.","inputs":[{"name":"tradableProduct","type":"TradableProduct","cardinality":"1..1"},{"name":"newTradeLot","type":"TradeLot","cardinality":"1..1"}],"output":{"name":"updatedTradableProduct","type":"TradableProduct","cardinality":"1..1"}}]

Schema Source

Mappings

Mapping Type Mapped Value
self common_domain_model:TradableProduct
native common_domain_model:TradableProduct
close gist:ProductSpecification

LinkML Source

Direct

name: TradableProduct
annotations:
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"AddTradeLot","description":"Add a TradeLot to an existing list
      of TradeLots.","inputs":[{"name":"tradableProduct","type":"TradableProduct","cardinality":"1..1"},{"name":"newTradeLot","type":"TradeLot","cardinality":"1..1"}],"output":{"name":"updatedTradableProduct","type":"TradableProduct","cardinality":"1..1"}}]'
description: 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: PriceQuantityTriangulation  PriceQuantityTriangulation(tradeLot)
  = True'
- 'Rosetta condition: NotionalAdjustment  if adjustment exists then product -> economicTerms
  -> payout -> PerformancePayout -> returnTerms -> priceReturnTerms exists or product
  -> economicTerms -> payout -> PerformancePayout exists'
- 'Rosetta condition: PerformancePayout_ExtraordinaryDividendsParty  if product ->
  economicTerms -> payout -> PerformancePayout -> returnTerms -> dividendReturnTerms
  -> extraordinaryDividendsParty exists then ancillaryParty -> role contains AncillaryRoleEnum
  -> ExtraordinaryDividendsParty and if ancillaryParty -> role contains AncillaryRoleEnum
  -> ExtraordinaryDividendsParty then product -> economicTerms -> payout -> PerformancePayout
  -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists'
- 'Rosetta condition: OptionPayout_PredeterminedClearingOrganizationParty  if product
  -> economicTerms -> payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'
- 'Rosetta condition: ForwardPayout_PredeterminedClearingOrganizationParty  if product
  -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'
- 'Rosetta condition: PredeterminedClearingOrganizationParty  if ancillaryParty ->
  role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty then product
  -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists or product -> economicTerms ->
  payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty
  exists'
- 'Rosetta condition: ExerciseNoticeReceiverPartyManual  if product -> economicTerms
  -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise
  -> exerciseNotice -> exerciseNoticeReceiver exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual and if ancillaryParty ->
  role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual then product
  -> economicTerms -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure
  -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists'
- 'Rosetta condition: ExerciseNoticeReceiverPartyOptionalEarlyTermination  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  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  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  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  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  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'
- 'Rosetta func: AddTradeLot  Add a TradeLot to an existing list of TradeLots.'
in_subset:
- cdm_product_template
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- gist:ProductSpecification
slots:
- product
- tradeLot
- counterparty
- ancillaryParty
- adjustment
slot_usage:
  product:
    name: product
    description: The underlying product to be included in a contract or execution.
  counterparty:
    name: counterparty
    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.
  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.
    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.'

Induced

name: TradableProduct
annotations:
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"AddTradeLot","description":"Add a TradeLot to an existing list
      of TradeLots.","inputs":[{"name":"tradableProduct","type":"TradableProduct","cardinality":"1..1"},{"name":"newTradeLot","type":"TradeLot","cardinality":"1..1"}],"output":{"name":"updatedTradableProduct","type":"TradableProduct","cardinality":"1..1"}}]'
description: 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: PriceQuantityTriangulation  PriceQuantityTriangulation(tradeLot)
  = True'
- 'Rosetta condition: NotionalAdjustment  if adjustment exists then product -> economicTerms
  -> payout -> PerformancePayout -> returnTerms -> priceReturnTerms exists or product
  -> economicTerms -> payout -> PerformancePayout exists'
- 'Rosetta condition: PerformancePayout_ExtraordinaryDividendsParty  if product ->
  economicTerms -> payout -> PerformancePayout -> returnTerms -> dividendReturnTerms
  -> extraordinaryDividendsParty exists then ancillaryParty -> role contains AncillaryRoleEnum
  -> ExtraordinaryDividendsParty and if ancillaryParty -> role contains AncillaryRoleEnum
  -> ExtraordinaryDividendsParty then product -> economicTerms -> payout -> PerformancePayout
  -> returnTerms -> dividendReturnTerms -> extraordinaryDividendsParty exists'
- 'Rosetta condition: OptionPayout_PredeterminedClearingOrganizationParty  if product
  -> economicTerms -> payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'
- 'Rosetta condition: ForwardPayout_PredeterminedClearingOrganizationParty  if product
  -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> PredeterminedClearingOrganizationParty'
- 'Rosetta condition: PredeterminedClearingOrganizationParty  if ancillaryParty ->
  role contains AncillaryRoleEnum -> PredeterminedClearingOrganizationParty then product
  -> economicTerms -> payout -> SettlementPayout -> settlementTerms -> physicalSettlementTerms
  -> predeterminedClearingOrganizationParty exists or product -> economicTerms ->
  payout -> OptionPayout -> settlementTerms -> physicalSettlementTerms -> predeterminedClearingOrganizationParty
  exists'
- 'Rosetta condition: ExerciseNoticeReceiverPartyManual  if product -> economicTerms
  -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure -> manualExercise
  -> exerciseNotice -> exerciseNoticeReceiver exists then ancillaryParty -> role contains
  AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual and if ancillaryParty ->
  role contains AncillaryRoleEnum -> ExerciseNoticeReceiverPartyManual then product
  -> economicTerms -> payout -> OptionPayout -> exerciseTerms -> exerciseProcedure
  -> manualExercise -> exerciseNotice -> exerciseNoticeReceiver exists'
- 'Rosetta condition: ExerciseNoticeReceiverPartyOptionalEarlyTermination  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  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  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  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  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  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'
- 'Rosetta func: AddTradeLot  Add a TradeLot to an existing list of TradeLots.'
in_subset:
- cdm_product_template
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- gist:ProductSpecification
slot_usage:
  product:
    name: product
    description: The underlying product to be included in a contract or execution.
  counterparty:
    name: counterparty
    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.
  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.
    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.'
attributes:
  product:
    name: product
    description: The underlying product to be included in a contract or execution.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: TradableProduct
    domain_of:
    - ExecutionInstruction
    - TermsChangeInstruction
    - PositionBase
    - AggregationParameters
    - 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
    rank: 1000
    owner: TradableProduct
    domain_of:
    - TradableProduct
    range: TradeLot
    required: true
    multivalued: true
    inlined: true
    inlined_as_list: true
  counterparty:
    name: counterparty
    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
    rank: 1000
    owner: TradableProduct
    domain_of:
    - ExecutionInstruction
    - PartyChangeInstruction
    - AgreementTerms
    - MasterAgreementClause
    - MasterAgreementClauseVariant
    - EligibleCollateralSpecification
    - TradableProduct
    range: Counterparty
    required: true
    multivalued: true
  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
    close_mappings:
    - fpml_5_10:AncillaryEntity.ancillaryParty
    rank: 1000
    owner: TradableProduct
    domain_of:
    - AncillaryEntity
    - ExecutionInstruction
    - TermsChangeInstruction
    - PartyChangeInstruction
    - 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
    rank: 1000
    owner: TradableProduct
    domain_of:
    - TermsChangeInstruction
    - TradableProduct
    range: NotionalAdjustmentEnum