Skip to content

Class: Trade

Defines the output of a financial transaction between parties - a Business Event. A Trade impacts the financial position (i.e. the balance sheet) of involved parties.

URI: common_domain_model:Trade

 classDiagram
    class Trade
    click Trade href "../Trade/"
      TradableProduct <|-- Trade
        click TradableProduct href "../TradableProduct/"

      Trade : account





        Trade --> "*" Account : account
        click Account href "../Account/"



      Trade : adjustment





        Trade --> "0..1" NotionalAdjustmentEnum : adjustment
        click NotionalAdjustmentEnum href "../NotionalAdjustmentEnum/"



      Trade : ancillaryParty





        Trade --> "*" AncillaryParty : ancillaryParty
        click AncillaryParty href "../AncillaryParty/"



      Trade : clearedDate

      Trade : collateral





        Trade --> "0..1" Collateral : collateral
        click Collateral href "../Collateral/"



      Trade : contractDetails





        Trade --> "0..1" ContractDetails : contractDetails
        click ContractDetails href "../ContractDetails/"



      Trade : counterparty





        Trade --> "1..*" Counterparty : counterparty
        click Counterparty href "../Counterparty/"



      Trade : executionDetails





        Trade --> "0..1" ExecutionDetails : executionDetails
        click ExecutionDetails href "../ExecutionDetails/"



      Trade : party





        Trade --> "*" Party : party
        click Party href "../Party/"



      Trade : partyRole





        Trade --> "*" PartyRole : partyRole
        click PartyRole href "../PartyRole/"



      Trade : product





        Trade --> "1" NonTransferableProduct : product
        click NonTransferableProduct href "../NonTransferableProduct/"



      Trade : tradeDate

      Trade : tradeIdentifier





        Trade --> "1..*" TradeIdentifier : tradeIdentifier
        click TradeIdentifier href "../TradeIdentifier/"



      Trade : tradeLot





        Trade --> "1..*" TradeLot : tradeLot
        click TradeLot href "../TradeLot/"



      Trade : tradeTime





        Trade --> "0..1" TimeZone : tradeTime
        click TimeZone href "../TimeZone/"



Inheritance

Slots

Name Cardinality and Range Description Inheritance
tradeIdentifier 1..*
TradeIdentifier
Represents the identifier(s) that uniquely identify a trade for an identity i... direct
tradeDate 1
date
Specifies the date which the trade was agreed direct
tradeTime 0..1
TimeZone
Denotes the trade time and timezone as agreed by the parties to the trade direct
party *
Party
Represents the parties to the trade direct
partyRole *
PartyRole
Represents the role each specified party takes in the trade direct
executionDetails 0..1
ExecutionDetails
Represents information specific to trades that arose from executions direct
contractDetails 0..1
ContractDetails
Represents information specific to trades involving contractual products direct
clearedDate 0..1
date
Specifies the date on which a trade is cleared (novated) through a central co... direct
collateral 0..1
Collateral
Represents the collateral obligations of a party direct
account *
Account
Represents a party's granular account information, which may be used in subse... direct
product 1
NonTransferableProduct
The underlying product to be included in a contract or execution TradableProduct
tradeLot 1..*
TradeLot
Specifies the price, quantity and effective date of each trade lot, when the ... TradableProduct
counterparty 1..*
Counterparty
Specifies the parties which are the two counterparties to the transaction TradableProduct
ancillaryParty *
AncillaryParty
Specifies the parties with ancillary roles in the transaction TradableProduct
adjustment 0..1
NotionalAdjustmentEnum
Specifies the conditions that govern the adjustment to the quantity of a prod... TradableProduct

Usages

used by used in type used
TradeState trade range Trade
Lineage tradeReference range Trade
TradePricingReport trade range Trade
AggregationParameters tradeReference range Trade

Rules

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'clearedDate': {'required': True}}

In Subsets

Comments

  • Rosetta condition: SettlementPayout — if SettlementPayoutOnlyExists(product -> economicTerms -> payout) then partyRole -> role contains PartyRoleEnum -> Buyer and partyRole -> role contains PartyRoleEnum -> Seller and tradeLot -> priceQuantity -> price exists
  • Rosetta condition: PackageTrade — if executionDetails -> packageReference exists then executionDetails -> packageReference -> componentId -> assignedIdentifier contains tradeIdentifier -> assignedIdentifier
  • Rosetta condition: DeliverableObligationsPhysicalSettlementMatrix — if (contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notSubordinated exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> specifiedCurrency exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notSovereignLender exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notDomesticCurrency exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notDomesticLaw exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notContingent exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notDomesticIssuance exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> assignableLoan exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> consentRequiredLoan exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> transferable exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> maximumMaturity exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> notBearer exists) and (product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> fullFaithAndCreditObLiability exists or product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> generalFundObligationLiability exists or product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> revenueObligationLiability exists)
  • Rosetta condition: ObligationsPhysicalSettlementMatrix — if (contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notSubordinated exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notSovereignLender exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notDomesticLaw exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notDomesticIssuance exists) and (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> fullFaithAndCreditObLiability exists or product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> generalFundObligationLiability exists or product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> revenueObligationLiability exists)
  • Rosetta condition: CreditEventsPhysicalSettlementMatrix — if (contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> bankruptcy exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> obligationDefault exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> obligationAcceleration exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> repudiationMoratorium exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> governmentalIntervention exists)
  • Rosetta condition: RestructuringPhysicalSettlementMatrix — if (contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring exists then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring -> multipleHolderObligation exists
  • Rosetta condition: AdditionalFixedPaymentsMortgages — if ((product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> securityType any = Debt and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked) or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> additionalFixedPayments -> interestShortfallReimbursement exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> additionalFixedPayments -> principalShortfallReimbursement exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> additionalFixedPayments -> writedownReimbursement exists)
  • Rosetta condition: FloatingAmountEventsMortgages — if ((product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> securityType any = Debt and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked) or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> failureToPayPrincipal exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> writedown exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents -> impliedWritedown exists)
  • Rosetta condition: CreditEventsMortgages — if ((product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> securityType any = Debt and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked) or contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> failureToPayPrincipal exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> failureToPayInterest exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> distressedRatingsDowngrade exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> maturityExtension exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> writedown exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> impliedWritedown exists)
  • Rosetta condition: HedgingParty — if partyRole -> role contains PartyRoleEnum -> HedgingParty then FilterPartyRole(partyRole, PartyRoleEnum -> HedgingParty) count <= 2
  • Rosetta condition: DeterminingParty — if partyRole -> role contains PartyRoleEnum -> DeterminingParty then FilterPartyRole(partyRole, PartyRoleEnum -> DeterminingParty) count <= 2
  • Rosetta condition: BarrierDerterminationAgent — if partyRole -> role contains PartyRoleEnum -> BarrierDeterminationAgent then FilterPartyRole(partyRole, PartyRoleEnum -> BarrierDeterminationAgent) count <= 1
  • Rosetta condition: ClearedDate — if clearedDate exists then clearedDate >= tradeDate
  • Rosetta condition: FpML_cd_1 — if product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists then tradeDate < product -> economicTerms -> effectiveDate -> adjustableDate -> unadjustedDate or tradeDate < product -> economicTerms -> effectiveDate -> adjustableDate -> adjustedDate
  • Rosetta condition: FpML_cd_7 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists then product -> economicTerms -> payout -> InterestRatePayout -> calculationPeriodDates -> effectiveDate -> adjustableDate -> dateAdjustments exists or tradeDate < product -> economicTerms -> effectiveDate -> adjustableDate -> adjustedDate
  • Rosetta condition: FpML_cd_8 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists then product -> economicTerms -> terminationDate -> adjustableDate -> dateAdjustments exists
  • Rosetta condition: FpML_cd_11 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> allGuarantees exists
  • Rosetta condition: FpML_cd_19 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA1999CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> creditEventNotice -> businessCenter is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring -> multipleHolderObligation is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring -> multipleCreditEventNotices is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> allGuarantees is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> indexReferenceInformation is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> substitution is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> modifiedEquityDelivery is absent
  • Rosetta condition: FpML_cd_20 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notContingent is absent
  • Rosetta condition: FpML_cd_23 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> cashSettlementTerms exists or product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms exists
  • Rosetta condition: FpML_cd_24 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> creditEventNotice exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations exists and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referencePrice exists
  • Rosetta condition: FpML_cd_25 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms exists then product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> settlementCurrency exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> physicalSettlementPeriod exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> escrow exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> accruedInterest exists
  • Rosetta condition: FpML_cd_32 — if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation exists and product -> economicTerms -> payout -> InterestRatePayout -> priceQuantity exists and tradeLot -> priceQuantity -> quantity -> value exists then product -> economicTerms -> payout -> InterestRatePayout -> dayCountFraction exists
  • Rosetta condition: FpML_ird_8 — if product -> economicTerms -> payout -> InterestRatePayout exists then FpmlIrd8(item, account) = True
  • Rosetta condition: ExtraordinaryEvents — if contractDetails -> documentation -> agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms -> extraordinaryEvents exists then (product -> economicTerms -> payout -> PerformancePayout -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout -> OptionPayout exists) and Qualify_AssetClass_Equity(product -> economicTerms)
  • Rosetta condition: DisruptionEventsDeterminingParty — if contractDetails -> documentation -> agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms -> extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists then ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty and if ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty then contractDetails -> documentation -> agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms -> extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists
  • Rosetta func: EquityPerformance — Part 1 Section 12 of the 2018 ISDA CDM Equity Confirmation for Security Equity Swap, Para 75. 'Equity Performance' means, in respect of an Equity Cash Settlement Date, an amount in the Settlement Currency determined by the Calculation Agent as of the Equity Valuation Date to which the Equity Cash Settlement Amount relates, pursuant to the following formula: Equity Performance = (Rate Of Return) Equity Notional Amount.
  • Rosetta func: TradeNoExecutionDetails
  • Rosetta func: ExtractBeforeTrade
  • Rosetta func: ExtractAfterTrade

Identifier and Mapping Information

Annotations

property value
metadata_key True
rosetta_functions [{"name":"EquityPerformance","description":"Part 1 Section 12 of the 2018 ISDA CDM Equity Confirmation for Security Equity Swap, Para 75. 'Equity Performance' means, in respect of an Equity Cash Settlement Date, an amount in the Settlement Currency determined by the Calculation Agent as of the Equity Valuation Date to which the Equity Cash Settlement Amount relates, pursuant to the following formula: Equity Performance = (Rate Of Return) Equity Notional Amount.","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"},{"name":"observation","type":"Price","cardinality":"1..1"},{"name":"date","type":"date","cardinality":"1..1"}],"output":{"name":"equityPerformance","type":"number","cardinality":"1..1"}},{"name":"TradeNoExecutionDetails","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"}],"output":{"name":"newTrade","type":"Trade","cardinality":"1..1"}},{"name":"ExtractBeforeTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}},{"name":"ExtractAfterTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}}]

Schema Source

Mappings

Mapping Type Mapped Value
self common_domain_model:Trade
native common_domain_model:Trade
close gist:Transaction

LinkML Source

Direct

name: Trade
annotations:
  metadata_key:
    tag: metadata_key
    value: true
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"EquityPerformance","description":"Part 1 Section 12 of the 2018
      ISDA CDM Equity Confirmation for Security Equity Swap, Para 75. ''Equity Performance''
      means, in respect of an Equity Cash Settlement Date, an amount in the Settlement
      Currency determined by the Calculation Agent as of the Equity Valuation Date
      to which the Equity Cash Settlement Amount relates, pursuant to the following
      formula: Equity Performance = (Rate Of Return)  Equity Notional Amount.","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"},{"name":"observation","type":"Price","cardinality":"1..1"},{"name":"date","type":"date","cardinality":"1..1"}],"output":{"name":"equityPerformance","type":"number","cardinality":"1..1"}},{"name":"TradeNoExecutionDetails","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"}],"output":{"name":"newTrade","type":"Trade","cardinality":"1..1"}},{"name":"ExtractBeforeTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}},{"name":"ExtractAfterTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}}]'
description: Defines the output of a financial transaction between parties - a Business
  Event. A Trade impacts the financial position (i.e. the balance sheet) of involved
  parties.
comments:
- 'Rosetta condition: SettlementPayout  if SettlementPayoutOnlyExists(product ->
  economicTerms -> payout) then partyRole -> role contains PartyRoleEnum -> Buyer
  and partyRole -> role contains PartyRoleEnum -> Seller and tradeLot -> priceQuantity
  -> price exists'
- 'Rosetta condition: PackageTrade  if executionDetails -> packageReference exists
  then executionDetails -> packageReference -> componentId -> assignedIdentifier contains
  tradeIdentifier -> assignedIdentifier'
- 'Rosetta condition: DeliverableObligationsPhysicalSettlementMatrix  if (contractDetails
  -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations
  exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> notSubordinated exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> specifiedCurrency exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notSovereignLender exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notDomesticCurrency exists
  and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> notDomesticLaw exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notContingent exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> notDomesticIssuance exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms ->
  deliverableObligations -> assignableLoan exists and product -> economicTerms ->
  payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations
  -> consentRequiredLoan exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> transferable
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> maximumMaturity exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notBearer exists) and (product
  -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> fullFaithAndCreditObLiability exists or product ->
  economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> generalFundObligationLiability exists or product ->
  economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> revenueObligationLiability exists)'
- 'Rosetta condition: ObligationsPhysicalSettlementMatrix  if (contractDetails ->
  documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> obligations exists then (product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations
  -> notSubordinated exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> obligations -> notSovereignLender exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notDomesticLaw
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> obligations -> notDomesticIssuance exists) and (product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> obligations -> fullFaithAndCreditObLiability
  exists or product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> obligations -> generalFundObligationLiability exists or product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> revenueObligationLiability
  exists)'
- 'Rosetta condition: CreditEventsPhysicalSettlementMatrix  if (contractDetails ->
  documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> creditEvents exists then (product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> bankruptcy exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> obligationDefault exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> obligationAcceleration
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> repudiationMoratorium exists and product -> economicTerms ->
  payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> governmentalIntervention
  exists)'
- 'Rosetta condition: RestructuringPhysicalSettlementMatrix  if (contractDetails
  -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring exists
  then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> restructuring -> multipleHolderObligation exists'
- 'Rosetta condition: AdditionalFixedPaymentsMortgages  if ((product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> additionalFixedPayments -> interestShortfallReimbursement
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents -> additionalFixedPayments -> principalShortfallReimbursement
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents -> additionalFixedPayments -> writedownReimbursement exists)'
- 'Rosetta condition: FloatingAmountEventsMortgages  if ((product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> failureToPayPrincipal exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents
  -> writedown exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> impliedWritedown exists)'
- 'Rosetta condition: CreditEventsMortgages  if ((product -> economicTerms -> payout
  -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> failureToPayPrincipal exists and product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> failureToPayInterest exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> distressedRatingsDowngrade exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> maturityExtension exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> writedown exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> impliedWritedown
  exists)'
- 'Rosetta condition: HedgingParty  if partyRole -> role contains PartyRoleEnum ->
  HedgingParty then FilterPartyRole(partyRole, PartyRoleEnum -> HedgingParty) count
  <= 2'
- 'Rosetta condition: DeterminingParty  if partyRole -> role contains PartyRoleEnum
  -> DeterminingParty then FilterPartyRole(partyRole, PartyRoleEnum -> DeterminingParty)
  count <= 2'
- 'Rosetta condition: BarrierDerterminationAgent  if partyRole -> role contains PartyRoleEnum
  -> BarrierDeterminationAgent then FilterPartyRole(partyRole, PartyRoleEnum -> BarrierDeterminationAgent)
  count <= 1'
- 'Rosetta condition: ClearedDate  if clearedDate exists then clearedDate >= tradeDate'
- 'Rosetta condition: FpML_cd_1  if product -> economicTerms -> payout -> CreditDefaultPayout
  -> generalTerms -> referenceInformation exists then tradeDate < product -> economicTerms
  -> effectiveDate -> adjustableDate -> unadjustedDate or tradeDate < product -> economicTerms
  -> effectiveDate -> adjustableDate -> adjustedDate'
- 'Rosetta condition: FpML_cd_7  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> InterestRatePayout
  -> calculationPeriodDates -> effectiveDate -> adjustableDate -> dateAdjustments
  exists or tradeDate < product -> economicTerms -> effectiveDate -> adjustableDate
  -> adjustedDate'
- 'Rosetta condition: FpML_cd_8  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> terminationDate ->
  adjustableDate -> dateAdjustments exists'
- 'Rosetta condition: FpML_cd_11  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> generalTerms -> referenceInformation -> allGuarantees exists'
- 'Rosetta condition: FpML_cd_19  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA1999CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> creditEventNotice -> businessCenter is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> restructuring -> multipleHolderObligation is absent and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> restructuring -> multipleCreditEventNotices is absent and product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> allGuarantees
  is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms
  -> indexReferenceInformation is absent and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> substitution is absent and product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> modifiedEquityDelivery is absent'
- 'Rosetta condition: FpML_cd_20  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> obligations -> notContingent is absent'
- 'Rosetta condition: FpML_cd_23  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> cashSettlementTerms exists or product -> economicTerms ->
  payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms exists'
- 'Rosetta condition: FpML_cd_24  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> creditEventNotice exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation
  -> referencePrice exists'
- 'Rosetta condition: FpML_cd_25  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> physicalSettlementTerms exists then product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> settlementCurrency exists
  and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> physicalSettlementPeriod exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms ->
  escrow exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> accruedInterest exists'
- 'Rosetta condition: FpML_cd_32  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and product -> economicTerms -> payout -> InterestRatePayout
  -> priceQuantity exists and tradeLot -> priceQuantity -> quantity -> value exists
  then product -> economicTerms -> payout -> InterestRatePayout -> dayCountFraction
  exists'
- 'Rosetta condition: FpML_ird_8  if product -> economicTerms -> payout -> InterestRatePayout
  exists then FpmlIrd8(item, account) = True'
- 'Rosetta condition: ExtraordinaryEvents  if contractDetails -> documentation ->
  agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms
  -> extraordinaryEvents exists then (product -> economicTerms -> payout -> PerformancePayout
  -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout
  -> OptionPayout exists) and Qualify_AssetClass_Equity(product -> economicTerms)'
- 'Rosetta condition: DisruptionEventsDeterminingParty  if contractDetails -> documentation
  -> agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms
  -> extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists
  then ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
  and if ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
  then contractDetails -> documentation -> agreementTerms -> agreement -> transactionAdditionalTerms
  -> equityAdditionalTerms -> extraordinaryEvents -> additionalDisruptionEvents ->
  determiningParty exists'
- 'Rosetta func: EquityPerformance  Part 1 Section 12 of the 2018 ISDA CDM Equity
  Confirmation for Security Equity Swap, Para 75. ''Equity Performance'' means, in
  respect of an Equity Cash Settlement Date, an amount in the Settlement Currency
  determined by the Calculation Agent as of the Equity Valuation Date to which the
  Equity Cash Settlement Amount relates, pursuant to the following formula: Equity
  Performance = (Rate Of Return)  Equity Notional Amount.'
- 'Rosetta func: TradeNoExecutionDetails'
- 'Rosetta func: ExtractBeforeTrade'
- 'Rosetta func: ExtractAfterTrade'
in_subset:
- cdm_event_common
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- gist:Transaction
is_a: TradableProduct
slots:
- tradeIdentifier
- tradeDate
- tradeTime
- party
- partyRole
- executionDetails
- contractDetails
- clearedDate
- collateral
- account
slot_usage:
  tradeIdentifier:
    name: tradeIdentifier
    description: Represents the identifier(s) that uniquely identify a trade for an
      identity issuer. A trade can include multiple identifiers, for example a trade
      that is reportable to both the CFTC and ESMA, and then has an associated USI
      (Unique Swap Identifier) UTI (Unique Trade Identifier).
  tradeDate:
    name: tradeDate
    description: Specifies the date which the trade was agreed.
  party:
    name: party
    description: Represents the parties to the trade. The cardinality is optional
      to address the case where the trade is defined within a BusinessEvent data type,
      in which case the party is specified in BusinessEvent.
    range: Party
    multivalued: true
  partyRole:
    name: partyRole
    description: Represents the role each specified party takes in the trade. further
      to the principal roles, payer and receiver.
    multivalued: true
  executionDetails:
    name: executionDetails
    description: Represents information specific to trades that arose from executions.
    required: false
  collateral:
    name: collateral
    description: Represents the collateral obligations of a party.
  account:
    name: account
    description: Represents a party's granular account information, which may be used
      in subsequent internal processing.
    deprecated: Deprecated in CDM
    multivalued: true
rules:
- preconditions:
    slot_conditions:
      clearedDate:
        name: clearedDate
        required: true
  description: If the cleared date exists, it needs to be on or after the trade date.
  comments:
  - 'Rosetta comparison: clearedDate >= tradeDate'

Induced

name: Trade
annotations:
  metadata_key:
    tag: metadata_key
    value: true
  rosetta_functions:
    tag: rosetta_functions
    value: '[{"name":"EquityPerformance","description":"Part 1 Section 12 of the 2018
      ISDA CDM Equity Confirmation for Security Equity Swap, Para 75. ''Equity Performance''
      means, in respect of an Equity Cash Settlement Date, an amount in the Settlement
      Currency determined by the Calculation Agent as of the Equity Valuation Date
      to which the Equity Cash Settlement Amount relates, pursuant to the following
      formula: Equity Performance = (Rate Of Return)  Equity Notional Amount.","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"},{"name":"observation","type":"Price","cardinality":"1..1"},{"name":"date","type":"date","cardinality":"1..1"}],"output":{"name":"equityPerformance","type":"number","cardinality":"1..1"}},{"name":"TradeNoExecutionDetails","inputs":[{"name":"trade","type":"Trade","cardinality":"1..1"}],"output":{"name":"newTrade","type":"Trade","cardinality":"1..1"}},{"name":"ExtractBeforeTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}},{"name":"ExtractAfterTrade","inputs":[{"name":"businessEvent","type":"BusinessEvent","cardinality":"1..1"}],"output":{"name":"trade","type":"Trade","cardinality":"0..1"}}]'
description: Defines the output of a financial transaction between parties - a Business
  Event. A Trade impacts the financial position (i.e. the balance sheet) of involved
  parties.
comments:
- 'Rosetta condition: SettlementPayout  if SettlementPayoutOnlyExists(product ->
  economicTerms -> payout) then partyRole -> role contains PartyRoleEnum -> Buyer
  and partyRole -> role contains PartyRoleEnum -> Seller and tradeLot -> priceQuantity
  -> price exists'
- 'Rosetta condition: PackageTrade  if executionDetails -> packageReference exists
  then executionDetails -> packageReference -> componentId -> assignedIdentifier contains
  tradeIdentifier -> assignedIdentifier'
- 'Rosetta condition: DeliverableObligationsPhysicalSettlementMatrix  if (contractDetails
  -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations
  exists then (product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> notSubordinated exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> specifiedCurrency exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notSovereignLender exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notDomesticCurrency exists
  and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> notDomesticLaw exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notContingent exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> notDomesticIssuance exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms ->
  deliverableObligations -> assignableLoan exists and product -> economicTerms ->
  payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms -> deliverableObligations
  -> consentRequiredLoan exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> physicalSettlementTerms -> deliverableObligations -> transferable
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> maximumMaturity exists and
  product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms ->
  physicalSettlementTerms -> deliverableObligations -> notBearer exists) and (product
  -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> fullFaithAndCreditObLiability exists or product ->
  economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> generalFundObligationLiability exists or product ->
  economicTerms -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms
  -> deliverableObligations -> revenueObligationLiability exists)'
- 'Rosetta condition: ObligationsPhysicalSettlementMatrix  if (contractDetails ->
  documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> obligations exists then (product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> obligations
  -> notSubordinated exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> obligations -> notSovereignLender exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> notDomesticLaw
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> obligations -> notDomesticIssuance exists) and (product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> obligations -> fullFaithAndCreditObLiability
  exists or product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> obligations -> generalFundObligationLiability exists or product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations -> revenueObligationLiability
  exists)'
- 'Rosetta condition: CreditEventsPhysicalSettlementMatrix  if (contractDetails ->
  documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> creditEvents exists then (product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> bankruptcy exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> obligationDefault exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> obligationAcceleration
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> repudiationMoratorium exists and product -> economicTerms ->
  payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> governmentalIntervention
  exists)'
- 'Rosetta condition: RestructuringPhysicalSettlementMatrix  if (contractDetails
  -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix
  -> matrixType all <> MatrixTypeEnum -> CreditDerivativesPhysicalSettlementMatrix
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualMatrix -> matrixType is absent) and product -> economicTerms -> payout
  -> CreditDefaultPayout -> protectionTerms -> creditEvents -> restructuring exists
  then product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> restructuring -> multipleHolderObligation exists'
- 'Rosetta condition: AdditionalFixedPaymentsMortgages  if ((product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> additionalFixedPayments -> interestShortfallReimbursement
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents -> additionalFixedPayments -> principalShortfallReimbursement
  exists and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents -> additionalFixedPayments -> writedownReimbursement exists)'
- 'Rosetta condition: FloatingAmountEventsMortgages  if ((product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> floatingAmountEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> failureToPayPrincipal exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> floatingAmountEvents
  -> writedown exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> floatingAmountEvents -> impliedWritedown exists)'
- 'Rosetta condition: CreditEventsMortgages  if ((product -> economicTerms -> payout
  -> CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> securityType any = Debt and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> referenceInformation -> referenceObligation
  -> security -> debtType -> debtEconomics -> secured -> securedType any = AssetBacked)
  or contractDetails -> documentation -> legalAgreementIdentification -> agreementName
  -> contractualTermsSupplement -> contractualTermsSupplementType contains ContractualSupplementTypeEnum
  -> CDSonMBS) and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents exists then (product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> failureToPayPrincipal exists and product ->
  economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> failureToPayInterest exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> distressedRatingsDowngrade exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> maturityExtension exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> writedown exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents -> impliedWritedown
  exists)'
- 'Rosetta condition: HedgingParty  if partyRole -> role contains PartyRoleEnum ->
  HedgingParty then FilterPartyRole(partyRole, PartyRoleEnum -> HedgingParty) count
  <= 2'
- 'Rosetta condition: DeterminingParty  if partyRole -> role contains PartyRoleEnum
  -> DeterminingParty then FilterPartyRole(partyRole, PartyRoleEnum -> DeterminingParty)
  count <= 2'
- 'Rosetta condition: BarrierDerterminationAgent  if partyRole -> role contains PartyRoleEnum
  -> BarrierDeterminationAgent then FilterPartyRole(partyRole, PartyRoleEnum -> BarrierDeterminationAgent)
  count <= 1'
- 'Rosetta condition: ClearedDate  if clearedDate exists then clearedDate >= tradeDate'
- 'Rosetta condition: FpML_cd_1  if product -> economicTerms -> payout -> CreditDefaultPayout
  -> generalTerms -> referenceInformation exists then tradeDate < product -> economicTerms
  -> effectiveDate -> adjustableDate -> unadjustedDate or tradeDate < product -> economicTerms
  -> effectiveDate -> adjustableDate -> adjustedDate'
- 'Rosetta condition: FpML_cd_7  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> InterestRatePayout
  -> calculationPeriodDates -> effectiveDate -> adjustableDate -> dateAdjustments
  exists or tradeDate < product -> economicTerms -> effectiveDate -> adjustableDate
  -> adjustedDate'
- 'Rosetta condition: FpML_cd_8  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> terminationDate ->
  adjustableDate -> dateAdjustments exists'
- 'Rosetta condition: FpML_cd_11  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> generalTerms -> referenceInformation -> allGuarantees exists'
- 'Rosetta condition: FpML_cd_19  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA1999CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> creditEventNotice -> businessCenter is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms
  -> creditEvents -> restructuring -> multipleHolderObligation is absent and product
  -> economicTerms -> payout -> CreditDefaultPayout -> protectionTerms -> creditEvents
  -> restructuring -> multipleCreditEventNotices is absent and product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation -> allGuarantees
  is absent and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms
  -> indexReferenceInformation is absent and product -> economicTerms -> payout ->
  CreditDefaultPayout -> generalTerms -> substitution is absent and product -> economicTerms
  -> payout -> CreditDefaultPayout -> generalTerms -> modifiedEquityDelivery is absent'
- 'Rosetta condition: FpML_cd_20  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum
  -> ISDA2003CreditDerivatives then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> obligations -> notContingent is absent'
- 'Rosetta condition: FpML_cd_23  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> cashSettlementTerms exists or product -> economicTerms ->
  payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms exists'
- 'Rosetta condition: FpML_cd_24  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists then product -> economicTerms -> payout -> CreditDefaultPayout
  -> protectionTerms -> creditEvents -> creditEventNotice exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> protectionTerms -> obligations exists and product
  -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms -> referenceInformation
  -> referencePrice exists'
- 'Rosetta condition: FpML_cd_25  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and product -> economicTerms -> payout -> CreditDefaultPayout
  -> settlementTerms -> physicalSettlementTerms exists then product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> settlementCurrency exists
  and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> physicalSettlementPeriod exists and product -> economicTerms
  -> payout -> CreditDefaultPayout -> settlementTerms -> physicalSettlementTerms ->
  escrow exists and product -> economicTerms -> payout -> CreditDefaultPayout -> settlementTerms
  -> physicalSettlementTerms -> deliverableObligations -> accruedInterest exists'
- 'Rosetta condition: FpML_cd_32  if contractDetails -> documentation -> legalAgreementIdentification
  -> agreementName -> masterConfirmationType is absent and contractDetails -> documentation
  -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
  and product -> economicTerms -> payout -> CreditDefaultPayout -> generalTerms ->
  referenceInformation exists and product -> economicTerms -> payout -> InterestRatePayout
  -> priceQuantity exists and tradeLot -> priceQuantity -> quantity -> value exists
  then product -> economicTerms -> payout -> InterestRatePayout -> dayCountFraction
  exists'
- 'Rosetta condition: FpML_ird_8  if product -> economicTerms -> payout -> InterestRatePayout
  exists then FpmlIrd8(item, account) = True'
- 'Rosetta condition: ExtraordinaryEvents  if contractDetails -> documentation ->
  agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms
  -> extraordinaryEvents exists then (product -> economicTerms -> payout -> PerformancePayout
  -> returnTerms -> priceReturnTerms exists or product -> economicTerms -> payout
  -> OptionPayout exists) and Qualify_AssetClass_Equity(product -> economicTerms)'
- 'Rosetta condition: DisruptionEventsDeterminingParty  if contractDetails -> documentation
  -> agreementTerms -> agreement -> transactionAdditionalTerms -> equityAdditionalTerms
  -> extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists
  then ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
  and if ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
  then contractDetails -> documentation -> agreementTerms -> agreement -> transactionAdditionalTerms
  -> equityAdditionalTerms -> extraordinaryEvents -> additionalDisruptionEvents ->
  determiningParty exists'
- 'Rosetta func: EquityPerformance  Part 1 Section 12 of the 2018 ISDA CDM Equity
  Confirmation for Security Equity Swap, Para 75. ''Equity Performance'' means, in
  respect of an Equity Cash Settlement Date, an amount in the Settlement Currency
  determined by the Calculation Agent as of the Equity Valuation Date to which the
  Equity Cash Settlement Amount relates, pursuant to the following formula: Equity
  Performance = (Rate Of Return)  Equity Notional Amount.'
- 'Rosetta func: TradeNoExecutionDetails'
- 'Rosetta func: ExtractBeforeTrade'
- 'Rosetta func: ExtractAfterTrade'
in_subset:
- cdm_event_common
from_schema: https://w3id.org/lmodel/common-domain-model
close_mappings:
- gist:Transaction
is_a: TradableProduct
slot_usage:
  tradeIdentifier:
    name: tradeIdentifier
    description: Represents the identifier(s) that uniquely identify a trade for an
      identity issuer. A trade can include multiple identifiers, for example a trade
      that is reportable to both the CFTC and ESMA, and then has an associated USI
      (Unique Swap Identifier) UTI (Unique Trade Identifier).
  tradeDate:
    name: tradeDate
    description: Specifies the date which the trade was agreed.
  party:
    name: party
    description: Represents the parties to the trade. The cardinality is optional
      to address the case where the trade is defined within a BusinessEvent data type,
      in which case the party is specified in BusinessEvent.
    range: Party
    multivalued: true
  partyRole:
    name: partyRole
    description: Represents the role each specified party takes in the trade. further
      to the principal roles, payer and receiver.
    multivalued: true
  executionDetails:
    name: executionDetails
    description: Represents information specific to trades that arose from executions.
    required: false
  collateral:
    name: collateral
    description: Represents the collateral obligations of a party.
  account:
    name: account
    description: Represents a party's granular account information, which may be used
      in subsequent internal processing.
    deprecated: Deprecated in CDM
    multivalued: true
attributes:
  tradeIdentifier:
    name: tradeIdentifier
    description: Represents the identifier(s) that uniquely identify a trade for an
      identity issuer. A trade can include multiple identifiers, for example a trade
      that is reportable to both the CFTC and ESMA, and then has an associated USI
      (Unique Swap Identifier) UTI (Unique Trade Identifier).
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - ExecutionInstruction
    - Trade
    range: TradeIdentifier
    required: true
    multivalued: true
    inlined: true
    inlined_as_list: true
  tradeDate:
    name: tradeDate
    description: Specifies the date which the trade was agreed.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - ExecutionInstruction
    - Trade
    range: date
    required: true
  tradeTime:
    name: tradeTime
    description: Denotes the trade time and timezone as agreed by the parties to the
      trade.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - ExecutionInstruction
    - Trade
    range: TimeZone
  party:
    name: party
    description: Represents the parties to the trade. The cardinality is optional
      to address the case where the trade is defined within a BusinessEvent data type,
      in which case the party is specified in BusinessEvent.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - DebtRedemption
    - Trade
    - MarginCallBase
    - CounterpartyPosition
    - AggregationParameters
    - AvailableInventory
    - WorkflowStepApproval
    - WorkflowStep
    - UmbrellaAgreementParty
    - UmbrellaAgreementSet
    - AdditionalRepresentationElection
    - CalculationAgentTerms
    - CalculationCurrencyElection
    - ValuationCalculationDateLocationElection
    - CollateralManagementAgreementElection
    - ControlAgreementElections
    - ControlAgreementNecEventElection
    - CustodianElection
    - CustodianRiskElection
    - ElectiveAmountElection
    - FrenchLawAddendumElection
    - HoldingAndUsingPostedCollateralElection
    - NotificationTimeElection
    - PostingObligationsElection
    - RecalculationOfValueElection
    - RegimeTerms
    - PledgeeRepresentativeRider
    - SecuredPartyRightsEventElection
    - SecurityProviderRightsEventElection
    - SensitivityMethodologiesPartyElection
    - SubstitutedRegimeTerms
    - SubstitutionPartyElection
    - TerminationCurrencyElection
    - AdditionalObligations
    - SecurityInterestForObligations
    - SinglePostingParty
    - ThresholdElection
    - MinimumTransferAmountElection
    - ValuationAgent
    - LegacyExposureScopeElection
    - CreditSupportDocumentElection
    - CreditSupportProviderElection
    - SpecifiedOrAccessConditionPartyElection
    - LegacyIndependentAmountParty
    - AutomaticEarlyTerminationElection
    - PartyTerminationCurrencySelection
    - SpecifiedEntity
    - EventsOfDefaultElection
    - EligibleCollateralSpecification
    range: Party
    multivalued: true
  partyRole:
    name: partyRole
    description: Represents the role each specified party takes in the trade. further
      to the principal roles, payer and receiver.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - PartyChangeInstruction
    - Trade
    - MarginCallBase
    - CounterpartyPosition
    - AvailableInventory
    - AvailableInventoryRecord
    - UmbrellaAgreementParty
    - EligibleCollateralSpecification
    range: PartyRole
    multivalued: true
  executionDetails:
    name: executionDetails
    description: Represents information specific to trades that arose from executions.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - ExecutionInstruction
    - Trade
    - ContractBase
    range: ExecutionDetails
    required: false
  contractDetails:
    name: contractDetails
    description: Represents information specific to trades involving contractual products.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - Trade
    - ContractBase
    range: ContractDetails
  clearedDate:
    name: clearedDate
    description: Specifies the date on which a trade is cleared (novated) through
      a central counterparty clearing service.
    deprecated: Deprecated in CDM
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - Trade
    range: date
  collateral:
    name: collateral
    description: Represents the collateral obligations of a party.
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - ExecutionInstruction
    - Trade
    - ContractBase
    - AvailableInventoryRecord
    - GlobalMasterSecuritiesLendingAgreement
    - EconomicTerms
    range: Collateral
  account:
    name: account
    description: Represents a party's granular account information, which may be used
      in subsequent internal processing.
    deprecated: Deprecated in CDM
    from_schema: https://w3id.org/lmodel/common-domain-model
    rank: 1000
    owner: Trade
    domain_of:
    - Party
    - Trade
    - WorkflowStep
    - TransferContactInformation
    range: Account
    multivalued: true
  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: Trade
    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: Trade
    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: Trade
    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: Trade
    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: Trade
    domain_of:
    - TermsChangeInstruction
    - TradableProduct
    range: NotionalAdjustmentEnum
rules:
- preconditions:
    slot_conditions:
      clearedDate:
        name: clearedDate
        required: true
  description: If the cleared date exists, it needs to be on or after the trade date.
  comments:
  - 'Rosetta comparison: clearedDate >= tradeDate'