Skip to content

Commit

Permalink
Refactored Extraordinary Events - version 2
Browse files Browse the repository at this point in the history
This work introduces the representation of transactional terms accross asset classes within the legal agreement and reposition the extraordinary events details as agreed with the former ARC. Some of the reference to ISDA Definition have been cleared out.
  • Loading branch information
rvincentISDA committed Oct 4, 2023
1 parent 4b609b8 commit 56c2715
Show file tree
Hide file tree
Showing 10 changed files with 162 additions and 218 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,3 @@ enum TelephoneTypeEnum: <"The enumerated values to specify the type of telephone
Mobile <"A number on a mobile telephone that is often or usually used for work-related calls. This type of number can be used for urgent work related business when a work number is not sufficient to contact the person or firm.">
Fax <"A number used primarily for work-related facsimile transmissions.">
Personal <"A number used primarily for non work-related calls. (Normally this type of number would be used only as an emergency backup number, not as a regular course of business).">

// enum CategoryEnum: <"The enumerated values to specify the type of organisation involved in the transaction.">
// Agent <"The trade or trade report represents the information from the perspective of the sender of the report, typically a clearing member firm or dealer (acting as an agent).">
// Counterparty <"The trade or trade report represents the information from the perspective of the counterparty of the sender of the report, which is typically a clearing member firm or dealer.">
// Customer <"The trade or trade report represents the information from the perspective of a client opposite the sender of the report, which is typically a clearing member firm or dealer.">
// Principal <"The trade or trade report represents the information from the perspective of the sender of the report, typically a clearing member firm or dealer (acting as a principal).">

17 changes: 14 additions & 3 deletions rosetta-source/src/main/rosetta/event-common-type.rosetta
Original file line number Diff line number Diff line change
Expand Up @@ -427,11 +427,11 @@ type Trade: <"Defines the output of a financial transaction between parties - a
if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> masterConfirmationType is absent
and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualMatrix is absent
and tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> generalTerms -> referenceInformation exists
and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003Credit
and contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003CreditDerivatives
then tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> generalTerms -> referenceInformation -> allGuarantees exists

condition FpML_cd_19: <"FpML validation rule cd-19 - If the condition ISDA1999Credit is true, then the following elements must not exist: protectionTerms/creditEvents/creditEventNotice/businessCenter, protectionTerms/creditEvents/restructuring/multipleHolderObligation, protectionTerms/creditEvents/restructuring/multipleCreditEventNotices, generalTerms/referenceInformation/allGuarantees, generalTerms/indexReferenceInformation, generalTerms/substitution, generalTerms/modifiedEquityDelivery.">
if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA1999Credit
if contractDetails -> documentation -> legalAgreementIdentification -> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA1999CreditDerivatives
then tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> protectionTerms -> creditEvents -> creditEventNotice -> businessCenter is absent
and tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> protectionTerms -> creditEvents -> restructuring -> multipleHolderObligation is absent
and tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> protectionTerms -> creditEvents -> restructuring -> multipleCreditEventNotices is absent
Expand All @@ -441,7 +441,7 @@ type Trade: <"Defines the output of a financial transaction between parties - a
and tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> generalTerms -> modifiedEquityDelivery is absent

condition FpML_cd_20: <"FpML validation rule cd-20 - If the condition ISDA2003 is true, then protectionTerms/obligations/notContingent must not exist.">
if contractDetails -> documentation -> legalAgreementIdentification-> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003Credit
if contractDetails -> documentation -> legalAgreementIdentification-> agreementName -> contractualDefinitionsType any = ContractualDefinitionsEnum -> ISDA2003CreditDerivatives
then tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> creditDefaultPayout -> protectionTerms -> obligations -> notContingent is absent

condition FpML_cd_23: <"FpML validation rule cd-23 - If the condition LongForm is true, then cashSettlementTerms or physicalSettlementTerms must exist.">
Expand Down Expand Up @@ -481,6 +481,17 @@ type Trade: <"Defines the output of a financial transaction between parties - a
if tradableProduct -> product -> contractualProduct -> economicTerms -> payout -> interestRatePayout exists then
FpmlIrd8( tradableProduct, account ) = True

condition ExtraordinaryEvents: <"Extraordinary events provisions must be associated with an equity payout.">
if contractDetails->documentation->agreementTerms->agreement->transactionAdditionalTerms->equityAdditionalTerms->extraordinaryEvents exists then
tradableProduct->product ->contractualProduct->economicTerms->payout-> performancePayout -> returnTerms -> priceReturnTerms exists // and performancePayout underlier must be security
or tradableProduct->product ->contractualProduct->economicTerms->payout -> optionPayout -> underlier -> security exists

condition DisruptionEventsDeterminingParty:
if contractDetails->documentation->agreementTerms->agreement->transactionAdditionalTerms->equityAdditionalTerms->extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists
then tradableProduct->ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
and if tradableProduct->ancillaryParty -> role contains AncillaryRoleEnum -> DisruptionEventsDeterminingParty
then contractDetails->documentation->agreementTerms->agreement->transactionAdditionalTerms->equityAdditionalTerms-> extraordinaryEvents -> additionalDisruptionEvents -> determiningParty exists

type ExecutionDetails: <"Defines specific attributes that relate to trade executions.">
[metadata key]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,25 @@ version "${project.version}"
import cdm.mapping.config.*

enum ContractualDefinitionsEnum: <"The enumerated values to specify a set of standard contract definitions relevant to the transaction.">
ISDA1991 <"ISDA 1991 Interest Rate Definitions">
ISDA1993Commodity <"ISDA 1993 Commodity Derivatives Definitions">
ISDA1996Equity <"ISDA 1996 Equity Derivatives Definitions">
ISDA1997Bullion <"ISDA 1997 Bullion Definitions">
ISDA1997GovernmentBond <"ISDA 1997 Government Bond Option Definitions">
ISDA1998FX <"ISDA 1998 FX and Currency Option Definitions">
ISDA1999Credit <"ISDA 1999 Credit Derivatives Definitions">
ISDA2000 <"ISDA 2000 Definitions">
ISDA2002Equity <"ISDA 2002 Equity Derivatives Definitions">
ISDA2003Credit <"ISDA 2003 Credit Derivatives Definitions">
ISDA2004Novation <"ISDA 2004 Novation Definitions">
ISDA2005Commodity <"ISDA 2005 Commodity Derivatives Definitions">
ISDA2006 <"ISDA 2006 Interest Rate Definitions">
ISDA2006Inflation <"ISDA 2006 Inflation Derivatives Definitions">
ISDA2008Inflation <"ISDA 2008 Inflation Derivatives Definitions">
ISDA2011Equity <"ISDA 2011 Equity Derivatives Definitions">
ISDA2014Credit <"ISDA 2014 Credit Derivatives Definitions">
ISDA2021 <"ISDA 2021 Interest Rate Derivatives Definitions">
ISDA1991InterestRate <"ISDA 1991 Interest Rate Definitions">
ISDA1993CommodityDerivatives <"ISDA 1993 Commodity Derivatives Definitions">
ISDA1996EquityDerivatives <"ISDA 1996 Equity Derivatives Definitions">
ISDA1997Bullion <"ISDA 1997 Bullion Definitions">
ISDA1997GovernmentBondOption <"ISDA 1997 Government Bond Option Definitions">
ISDA1998FxAndCurrencyOption <"ISDA 1998 FX and Currency Option Definitions">
ISDA1999CreditDerivatives <"ISDA 1999 Credit Derivatives Definitions">
ISDA2000 <"ISDA 2000 Definitions">
ISDA2002EquityDerivatives <"ISDA 2002 Equity Derivatives Definitions">
ISDA2003CreditDerivatives <"ISDA 2003 Credit Derivatives Definitions">
ISDA2004Novation <"ISDA 2004 Novation Definitions">
ISDA2005Commodity <"ISDA 2005 Commodity Definitions">
ISDA2006<"ISDA 2006 Definitions">
ISDA2006InflationDerivatives <"ISDA 2006 Inflation Derivatives Definitions">
ISDA2008InflationDerivatives <"ISDA 2008 Inflation Derivatives Definitions">
ISDA2011EquityDerivatives <"ISDA 2011 Equity Derivatives Definitions">
ISDA2014CreditDerivatives <"ISDA 2014 Credit Derivatives Definitions">
ISDA2021InterestRateDerivatives <"ISDA 2021 Interest Rate Derivatives Definitions">
ISDA2023DigitalAssetDerivatives <"ISDA 2021 Digital Asset Derivatives Definitions">

enum ContractualSupplementTypeEnum: <"The enumerated values to define the supplements to a base set of ISDA Definitions that are applicable to the transaction.">
ABX <"Standard Terms Supplement for ABX Transactions.">
Expand Down Expand Up @@ -236,6 +237,8 @@ enum LegalAgreementPublisherEnum: <"The enumerated values to specify the legal a
AFB <"Association Française des Banques.">
BNYM <"BNY Mellon">
ISDAClearstream <"ISDA and Clearstream">
EMTA <"Emerging Markets Traders Association">
TheFXCommittee <"The Foreign Exchange Committee">
ISDAEuroclear <"ISDA and Euroclear">
ISDA <"International Swaps and Derivatives Association, Inc.">
[synonym AcadiaSoft_AM_1_0 value "ISDA"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ type Agreement: <"Specification of the standard set of terms that define a legal
collateralTransferAgreementElections CollateralTransferAgreementElections (0..1) <"Elections to specify a Collateral Transfer Agreement.">
securityAgreementElections SecurityAgreementElections (0..1) <"Elections to specify a Security agreement.">
masterAgreementSchedule MasterAgreementSchedule (0..1) <"Elections to specify a Master Agreement Schedule.">

transactionAdditionalTerms TransactionAdditionalTerms (0..1)<"Any additional terms which mainly intend to specify the extraordinary events that may affect a trade and the related contractual rights and obligation of the parties when this happens">
condition: one-of
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ enum MasterConfirmationAnnexTypeEnum: <"The enumerated values to specify the typ
ISDA2010FairValueShareSwapEuropeanInterdealer <"The Fair Value Interdealer Share Swap 2010 Annex to the ISDA 2009 European Interdealer Master Equity Derivatives Confirmation Agreement applies.">
ISDA2010IndexShareOptionEMEAInterdealer <"The Cash-settled Index Option/Cash/Physically-settled Share Option 2010 Annex to the ISDA 2010 EMEA EM Interdealer Master Equity Derivatives Confirmation Agreement applies.">

enum NationalizationOrInsolvencyOrDelistingEventEnum: <"Defines the consequences of nationalization, insolvency and delisting events relating to the underlying.">
NegotiatedCloseout <"The parties may, but are not obliged, to terminate the transaction on mutually acceptable terms and if the terms are not agreed then the transaction continues.">
CancellationAndPayment <"The trade is terminated.">

enum MasterConfirmationTypeEnum: <"The enumerated values to specify the type of master confirmation agreement governing the transaction. While FpML positions the date a prefix, the CDM positions it as the suffix to handle grammar type constraints.">
[docReference ISDA FpML_Coding_Scheme schemeLocation "http://www.fpml.org/coding-scheme/master-confirmation-type"]

Expand Down
Loading

0 comments on commit 56c2715

Please sign in to comment.