All releases

2.85.3

2.85.0

CDM Model: Data Templates

What is being released

This release introduces the concept of data templates to the CDM. Data templates provide a way to store data which is common across multiple CDM objects in a single referenced template.

One of the driving use-cases for templates in the CDM is Equity Swaps. Due to the high volume of contracts with near identical product details from Equity Financing desks. The product details duplicated on each contract can be extracted into a single template, and each contract can then specify a reference to that template. Each contract would only specify the unique product details, which can be merged with the template to form a fully specified object when required.

In the business domain the same is achieved via master confirmation or portfolio swap agreements which can be bespoke or standard, or via clients having standard term sheets agreed and sitting with sales desks to be used when writing all future deals (a working practice which has parallels in almost every asset class).

Model Changes

The annotation type [metadata template] has been added to the model. This annotation indicates that a data type is eligible to be used as a template. The designation applies to all encapsulated types in that data type.

For example, currently, the only date type in the model that has been assigned this new annotation is ContractualProduct. The designation of template eligibility also applies to EconomicTerms which is an encapsulated type in ContractualProduct, and also likewise applies to Payout which is an encapsulated type in EconomicTerms.

Other than the new annotation, data templates do not have any impact on the model, i.e. no new types, attributes, or conditions.

Review Directions

  • In the CDM Portal, use the Textual Browser to review the type ContractualProduct and annotation [metadata template].

Merging Utilities and Examples

Once a template reference has been resolved, it will be necessary to merge the template data to form a single fully populated object. This release includes code utilities, written in Java, that can merge the data from two objects into one. These utilities can be extended by implementors to change the merging strategy to meet their requirements.

This release also includes a example to show usage of data template and the merging utilities.

Review Directions

  • In the CDM Portal, go to the Downloads page, and download the Java Examples. Review the example in Java class, com.regnosys.cdm.example.template.TemplateExample.

2.84.2

2.83.3

Infrastructure: Namespace reclassification

What is being released

Following the latest namespace reclassification, an infrastructure change is required to enable Rosetta Core to run ingestion on CDM type cdm.event.workflow.WorkflowStep which was reclassified from org.isda.cdm.WorkflowStep.

Review Directions

This infrastructure change has no impact on the CDM model, nor the CDM Portal.

To run the ingestion on a cdm.event.workflow.WorkflowStep type in Rosetta Core, select the Ingestion panel, and run the all integration tests for synonym CDM_Event.

2.83.2

Model Optimisation: Extract Party References from Product

What is being released

This change is the part of the ongoing model refactoring to externalise the definition of the parties involved in a transaction from the definition of the transacted product.

  • New enum RelatedPartyEnum specifies all the possible parties roles (other than counterparty) which are defined within the product.​
  • The RelatedPartyEnum can be resolved to an actual party by looking up the enum value in type RelatedPartyReference to find the corresponding party reference.
  • New type CounterpartyOrRelatedParty is used when the party can be either one of the counterparties or a related party.​
  • RelatedPartyEnum is constrained within each usage in the model using conditions.

This release covers the party references in CalculationAgent.calculationAgentParty, Cashflow.payerReceiver.payerRelatedParty and Cashflow.payerReceiver.receiverRelatedParty, and completes the externalisation of parties from the translated product with a few exceptions.

  • PhysicalExercise and CashExercise - the physical and cash exercise models require refactoring to use TradableProduct. Once completed, the deprecated attributes PayerReceiver.payerPartyReference and PayerReceiver.receiverPartyReference can be removed.
  • 3rd party payments should be modelled with SettlementTerms rather than Cashflow - Once completed, the deprecated attributes PayerReceiver.payerRelatedParty and PayerReceiver.receiverRelatedParty can be removed.

Functions have also been updated to work with counterparties and related parties.

  • Create_Execution, Create_ExecutionPrimitive, Create_ClearedTrade, Create_CashTransferPrimitive, CashflowSettlementTerms, ExtractCounterpartyBySide, and ExtractRelatedParty.

Review Directions

In the CDM Portal, use the Textual Browser to review the types, enums and functions mentioned above.

In the CDM Portal, use the Ingestion page to review the following samples:

CalculationAgent.calculationAgentParty:

  • equity > eqs-ex01-single-underlyer-execution-long-form.xml
  • equity > eqs-ex01-single-underlyer-execution-long-form-related-party.xml

Cashflow.payerReceiver.payerRelatedParty and receiverRelatedParty:

  • rates > swap-with-other-party-payment.xml

PhysicalExercise:

  • events > exercise-swaption-physical.xml

CashExercise:

  • events > exercise-swaption-cash.xml

CDM Function: Fix CalculationPeriod Function to Resolve the Correct Period in the Schedule.

What is being fixed

When the valuation date is equal to the period start date, the function logic would use the wrong period.

2.82.8

Product/Event Model: Averaging Model

What is being released

This change introduces a multi-purpose model for calculating an average of market observations according to contract terms for options. The model can be used to specify the parametric input needed for making an average calculation to determine a strike price or a settlement amount. Specific changes are noted below:

  • New type AveragingObservation, which defines parameters for use in cases when a valuation or other term is based on an average of market observations.
  • New type ObservationDates, which describes date details for a set of observation dates in parametric or non-parametric form.
  • New type FxRateObservable, which defines foreign exchange (FX) asset class specific parameters for market observations.
  • New type ObservationSchedule, which specifies a single date on which market observations take place and specifies optional associated weighting.
  • New enum AveragingCalculationMethodEnum, which specifies enumerations for the type of averaging calculation.
  • Modified type OptionFeature in which the attribute asian is replaced with averagingRateFeature which is of type AveragingObservation.
  • Modified type OptionStrike in which the attribute averagingStrikeFeature is added and is of type AveragingObservation. Also modified the choice condition to include averagingStrikeFeature.

Review Directions

In the CDM Portal, use the Textual Browser to review the types, enums, and functions mentioned above, or use the Graphical Navigator. For example, in the Graphical Navigator, search for OptionFeature and then drill down on the averagingRateFeature and underlying data types.

2.82.7

Product/Event Model: Averaging Model

What is being released

This change introduces a multi-purpose model for calculating an average of market observations according to contract terms for options. The model can be used to specify the parametric input needed for making an average calculation to determine a strike price or a settlement amount. Specific changes are noted below:

  • New type AveragingObservation, which defines parameters for use in cases when a valuation or other term is based on an average of market observations.
  • New type ObservationDates, which describes date details for a set of observation dates in parametric or non-parametric form.
  • New type FxRateObservable, which defines foreign exchange (FX) asset class specific parameters for market observations.
  • New type ObservationSchedule, which specifies a single date on which market observations take place and specifies optional associated weighting.
  • New enum AveragingCalculationMethodEnum, which specifies enumerations for the type of averaging calculation.
  • Modified type OptionFeature in which the attribute asian is replaced with averagingRateFeature which is of type AveragingObservation.
  • Modified type OptionStrike in which the attribute averagingStrikeFeature is added and is of type AveragingObservation. Also modified the choice condition to include averagingStrikeFeature.

Review Directions

In the CDM Portal, use the Textual Browser to review the types, enums, and functions mentioned above, or use the Graphical Navigator. For example, in the Graphical Navigator, search for OptionFeature and then drill down on the averagingRateFeature and underlying data types.

2.82.1

Infrastructure: Fix for the broken JavaDocs link

What is being fixed

This broken JavaDocs link on the Documentation page is fixed.

Review Directions

In the CDM Portal, navigate to the Documents > JavaDocs tile, then click download link and see that it works.

2.82.0

CDM Model: Remaining model in org.isda.cdm namespace classification

What is being released

This refactor is the sixth and final incremental change that will further transform the org.isda.cdm file into a hierarchical namespace.
This refactor includes the reorganisation of some model objects to existing namespaces while other being deleted (as they are not being used in CDM).

Types to be moved to existing namespaces:

  • Types: CalculationAgentModel moved to cdm.product.template namespace.
  • Types: PackageInformation & ExerciseEvent moved to cdm.event.common namespace.
  • Enums: StandardSettlementStyleEnum moved to cdm.product.common.
  • Funcs: NewEquitySwapProduct, NewSingleNameEquityPayout & NewFloatingPayout moved to cdm.event.common namespace.

Objects to be deleted:

  • Types: CommoditySet, BondOptionStrike, CalculationAmount & DeterminationMethod.
  • Enums: OriginatingEventEnum, PaymentStatusEnum & PackageTypeEnum.
  • Funcs: EquityAmountPayer & ResolvePrice.

Review Directions

In Rosetta Core (https://ui.rosetta-technology.io/), review the File or Namespace structure in the Editor Textual View. In the CDM Portal,
navigate to the Downloads tile, then download artefacts in Java, DAML, Typescript or Scala distribution format and review the reorganised source folder.

2.81.0

CDM Distribution: C# Language

What is being released
The suite of CDM Distributions has been expanded to 2 versions in C# programming language on the CDM Portal:

  • C# 8.0 based on .NET Core 3.1 (.NET Standard 2.1).
  • C# 9.0 based on .Net 5 Preview.

Review Directions
2 new tiles in the downloads section of the CDM Portal offering the option to download the new C# CDM Distributions.

2.80.0

CDM Distribution: C# Language

What is being released
The suite of CDM Distributions has been expanded to 2 versions in C# programming language on the CDM Portal:

  • C# 8.0 based on .NET Core 3.1 (.NET Standard 2.1).
  • C# 9.0 based on .Net 5 Preview.

Review Directions
2 new tiles in the downloads section of the CDM Portal offering the option to download the new C# CDM Distributions.

2.79.0

CDM Model: Event & Regulation namespace classification

What is being released

This refactor is the fifth incremental change that will further transform the org.isda.cdm file into a hierarchical namespace.

This fifth refactor includes the changes for the cdm.event.* & cdm.regulation.* set of namespaces.

The namespaces contain components used across the CDM for

  • Business event concepts: primitives, contract state and associated state transition function specifications
  • Workflow concepts (orthogonal to business event): time stamp, credit limit, trade warehouse info and associated function specifications
  • Position concepts: portfolio and portfolio aggregation
  • ISO standard concepts.

Review Directions

In Rosetta Core (https://ui.rosetta-technology.io/), review the File or Namespace structure in the Editor Textual View. In the CDM Portal,
navigate to the Downloads tile, then download artefacts in Java, DAML, Typescript or Scala distribution format and review the reorganised source folder with new cdm.event.* files.

CDM Model: Deprecated types & functions

What is being released

Following objects to be marked deprecated.

Types:

  • CommoditySet
  • BondOptionStrike
  • CalculationAmount
  • CalculationAgentModel
  • PackageInformation
  • DeterminationMethod
  • ExerciseEvent
  • TradeDate

Functions:

  • EquityAmountPayer
  • ResolvePrice

User Documentation: Regulatory Reporting Syntax

What is being released

A new section has been added to the Rosetta DSL documentation that explains the regulatory reporting components and the syntax that can be used to write reporting logic.

This update will allow external contributors to write further regulatory reporting components in the CDM, in order to scale-up the effort of digitising regulatory rules and associated best practices.

Review Directions

In the CDM Portal, navigate to the ISDA CDM Documentation tile and find the "Reporting Component" under the Rosetta DSL > Rosetta Modelling Components section.

Alternatively, documentation section is directly accessible at: https://docs.rosetta-technology.io/dsl/documentation.html#reporting-component.

2.78.0

Model Optimisation: Extract Party References from Product

What is being released

This change is part of the ongoing model refactoring to externalise the definition of the parties involved in a transaction from the definition of the transacted product.

  • New enum RelatedPartyEnum specifies all the possible parties roles (other than counterparty) which are defined within the product.​
  • The RelatedPartyEnum can be resolved to an actual party by looking up the enum value in type RelatedPartyReference to find the corresponding party reference.
  • New type CounterpartyOrRelatedParty is used when the party can be either one of the counterparties or a related party.​
  • RelatedPartyEnum is constrained within each usage in the model using conditions.

This release covers the party references in AdditionalDisruptionEvents.determiningParty, DividendReturnTerms.extraordinaryDividendsParty, OptionPhysicalSettlement.predeterminedClearingOrganizationParty and ExerciseNotice.exerciseNoticeReceiver. Future releases will cover the remaining party references defined within the product.

Review Directions

In the CDM Portal, use the Textual Browser to review the enum and types mentioned above.

In the CDM Portal, use the Ingestion page to review the following samples:

AdditionalDisruptionEvents.determiningParty:

  • equity > eqs-ex01-single-underlyer-execution-long-form.xml
  • equity > eqs-ex01-single-underlyer-execution-long-form-related-party.xml
  • equity > eqs-ex06-single-index-long-form.xml

DividendReturnTerms.extraordinaryDividendsParty:

  • equity > eqs-ex01-single-underlyer-execution-long-form.xml
  • equity > eqs-ex01-single-underlyer-execution-long-form-related-party.xml

OptionPhysicalSettlement.predeterminedClearingOrganizationParty:

  • events > exercise-swaption-physical-related-party.xml

ExerciseNotice.exerciseNoticeReceiver:

  • rates > ird-ex12-euro-swaption-straddle-cash-related-party.xml

2.77.0

CDM Model: Legal Agreement namespace classification

What is being released

This refactor is the fourth incremental change that will further transform the org.isda.cdm file into a hierarchical namespace.

This fourth refactor includes the changes for the cdm.legalagreement.* set of namespaces.

The namespaces contain components used across the CDM for

  • Generic documentation concepts: legal agreement, contract, calc agent, disruption and extraordinary events,
  • Common legal agreement concepts,
  • Contract (i.e. transaction confirmation) concepts,
  • Credit support concepts: CSA, collateral, elections, initial margin, threshold, minimum transfer amount,
  • and Master agreement concepts.

Review Direction

In Rosetta Core (https://ui.rosetta-technology.io/), review the File or Namespace structure in the Editor Textual View. In the CDM Portal,
navigate to the Downloads tile, then download artefacts in Java, DAML, Typescript or Scala distribution format and review the reorganised source folder with new cdm.legalagreement.* files.

New mapping syntax is being released to support selected variations in patterns observed during synonym mappings from other models to the CDM

What is being released

pattern -A synonym on a a basicType or an enumerated type can optionally be followed by the pattern construct that consists of the keyword pattern followed by two quoted strings.
The first string is a regular expression using the PERL standard syntax used to match against the input value. The second string is a replacement expression used to reformat the matched input before it is processed for the basic type or enum. E.g.

       Frequency:              + periodMultiplier                    [value "Tenor" maps 2 pattern "([0-9]*).*" "$1"]              + period                    [value "Tenor" maps 2 pattern "[0-9]*(.*)" "$1"]

A tenor value of "1Y" will be deconstructed into a period of 'Year' and a periodMultiplier of '1'

dateFormat - A date/time synonym can be followed by a format construct. The keyword dateFormat should be followed by a string.
The string should be a date format and will be interpreted following the pattern documented here Date format. This format will be used to interpret dates/times from the input element.
E.g.

  + tradeDate        [value "startDate" dateFormat "MM/dd/yy"]

Review Directions

  • The first use of the pattern and format syntax has been in the context of an initial set of mapping synonyms for ORE XML. The pattern syntax is used to map the tenor field - splitting it up into separate period and period multiplier fields. The format syntax is used to map dates from formats accepted in ORE XML to the CDM.
  • For an illustration of the use of the new pattern syntax, 1) go to the CDM Portal, 2) click on the link for Rosetta, 3) in the Files panel on the left, select synonym-cdm-ore, 4) and then view the mappings for Frequency
  • To view a an example in rosetta, 1) first verify that the status indicator in the lower right is green, 2) go to the ingestion feature, under Synonyms, select ORE_1_0_39, deselect the other synonym sets, 3) Select INTEGRATION TESTS, 4) click the play button next to Ingestion 5) scroll down select the ORE test ingestion for Vanilla_IR_Swap 6) In the right side panel with the CDM projection, check the period and period multiplier for any Period, and check any date to see the results of the mapping

2.73.0

Model Optimisation: Exercise Notice

What is being released

The ExerciseNotice data structure is insufficient to address all use cases, for example when both parties have the right to exercise.​

To address all use cases, ExerciseNoticeGiverEnum has been introduced with values Buyer, Seller, Both and AsSpecifiedInMasterAgreement.

In addition, for greater clarity the ExerciseNotice attributes have been renamed to exerciseNoticeGiver and exerciseNoticeReceiver and the descriptions have been updated.

Review Directions

In the CDM Portal, use the Textual Browser to review ExerciseNotice and ExerciseNoticeGiverEnum.

2.72.2

Model Optimisation: Extract Party References from Product

What is being released

This change is part of the ongoing model refactoring to externalise the definition of the parties involved in a transaction from the definition of the transacted product.

Update function Create_ClearedTrade to correctly assign the counterparties on the resulting beta and gamma trades.

Review Directions

In the CDM Portal, use the Textual Browser to review the function Create_ClearedTrade, and use the Instance Viewer to review the Clearing Accepted and Clearing Rejected examples.

In Rosetta Core, review the function Create_ClearedTrade in file model-cdm-functions, and on the Visualisation panel review the Clearing Accepted and Clearing Rejected examples.

2.72.0

CDM Model: Product namespace classification

What is being released

This refactor is the third incremental change that will further transform the org.isda.cdm file into a hierarchical namespace tree.

This third refactor includes the changes for the cdm.product.* set of namespaces.

The namespaces contain components used across the CDM for

  • Generic product concepts: economic terms and payout,
  • Common product settlement concepts:cash vs physical, non-deliverable, money and cashflow, delivery vs payment,
  • Common product schedule concepts: calculation period, reset, fixing and payment dates, stub, notional schedule, roll convention,
  • Product concepts applicable to specific asset classes,
  • and Template feature concepts to define payouts.

Review Direction

In Rosetta Core (https://ui.rosetta-technology.io/), review the File or Namespace structure in the Editor Textual View. In the CDM Portal,
navigate to the Downloads tile, then download artefacts in Java, DAML, Typescript or Scala distribution format and review the source to see the new cdm.product.* files.

Extension of EMIR Regulatory Rules

What is being released

In preparation for modelling of the functional expression of EMIR Article 9 RTS and ITS, the provisions for an initial set of rules have been added to the CDM.

Review Direction

In Rosetta Core (https://ui.rosetta-technology.io/), review reporting rules containing regulatoryReference ESMA EMIR ITS_9 in the model-reg-reporting file.

Change in rosetta path conditional mapping

What is being released

An enhancement to the semantics of the rosetta path conditional logic required a minor change to the synonyms for effectiveDate in calculationPeriodDates.

Review Directions

In Rosetta Core (https://ui.rosetta-technology.io/), navigate to the synonym-cdm-fpml file and review the synonyms for effectiveDate in calculationPeriodDates.

2.71.10

CDM Model: ProductId Refactoring Supplemental Changes

What is being released

In the Product data type, added the commodity attribute, added descriptions for the other attributes, and updated the data type description.

In the ExternalProductType data type, renamed the externalProductType attributes as value.

Review Directions

In the CDM Portal, use the Textual Browser to look up the data types mentioned above.

2.71.9

CDM Model: Enhancement to Create_ExecutionPrimitive and Create_Execution

What is being released

Added three input and output attributes to the Create_ExecutionPrimitive, Create_Execution, and Create_ClearedTrade functions. All three attributes are required in the ExecutionPrimitive but were not previously in the functions: executionType, tradeDate, and identifier.

Review Directions

In the Rosetta Core, search for the functions noted above.

2.71.7

CDM Documentation: Java Distribution Guidelines

What is being released

Added a new section for Java Distribution Guidelines under CDM Portal Documentation.

Review Direction

Go to CDM Portal documentation, you will see an additional section called CDM Java Distribution Guidelines.

2.71.6

Infrastructure: Build and Release Process

What is being released

Changes to the build and release process to accommodate the CDM's increased memory size.

2.71.5

Infrastructure: Add Ingestion Environment for ORE XML model

What is being released

A new synonym source ORE_1_0_39 has been created in the CDM which is being used to create mappings between the ORE XML model and the CDM. The initial scope for the mapping is plain vanilla interest rate swaps.

A new Ingestion Envrionment has also been added such that ORE XML sample documents and their ingested CDM representations can be displayed in the CDM Portal.

Review Directions
In the Rosetta core, see the filename synonyms-cdm-ore

In the Ingestion page, see the drop-down for the ore-1-0-39 entry.

2.71.3

2.71.2

Model Optimisation: Extract Account References from Product

What is being released

This change is part of the ongoing model refactoring to externalise the definition of the parties involved in a transaction from the definition of the product being transacted itself. This particular change addresses counterparty account reference details that are currently embedded within the representation of the product.”

This release focuses on moving Account references outside of the Product. Account references in types PayerReceiver and BuyerSeller (both positioned inside the Product) have been deprecated and replaced by linking the Account to a Party at the Contract level by specifying the new attribute Contract.account.partyReference.

In addition to the model change, the translation mappings have been updated for synonyms FpML_5_10, Workflow_Event, CME_ClearedConfirm_1_17, CME_SubmissionIRS_1_0, DTCC_9_0 and DTCC_11_0.

Further work on moving Account will be done as part of separate changes to support the settlement and cash transfer use cases. For the settlement use case a different Account may be specified on each Payout, e.g. for a cross-currency swap, each currency may settle into a different account. This use case is not currently supported by the model. The current set of FpML samples does not contain illustrative cases with different accounts specified at the Payout level. Further changes will be proposed based on analysis of relevant use cases.

To make the Product fully agnostic to parties, non-counterparty party references must also be moved, e.g. AdditionalDisruptionEvents.determiningParty, DividendReturnTerms.extraordinaryDividends, OptionPhysicalSettlement.predeterminedClearingOrganization, etc. This will be done as part of separate changes in the coming weeks.

Review Directions

In the Textual Browser, review changes to Account, PayerReceiver and BuyerSeller.

In the Ingestion Panel, review FpML sample products > EUR-Vanilla-account.xml, and any CME Cleared Confirmed sample, for example cme-cleared-confirm-1-17 > IRD_EX05_LONG_STUB_SWAP.xml.

2.71.0

CDM Model: Observable namespace classification

What is being released

This refactor is the second incremental change that will further transform the org.isda.cdm file into a hierarchical namespace tree.

This second refactor includes the changes for the cdm.observable.* set of namespaces.

The namespaces contain components used across the CDM for market data, holiday calendar date, event (extraordinary event, trigger event, disruption event), and asset (schedule, settlement, price and quantity notation, etc).

Review Directions

In Rosetta Core (https://ui.rosetta-technology.io/), review the File or Namespace structure in the Editor Textual View.

In the CDM Portal, navigate to the Downloads tile, then download artefacts in Java, DAML, Typescript or Scala distribution format and review the source to see the new cdm.observable.* files.

2.66.3

CDM Model: ProductIdentifier Refactoring

What is being released

The refactoring rationalizes the use of ProductIdentifier and standardizes related references. Changes include:

  • Creating a ProductBase abstract type with one encapsulated data type: ProductIdentifier
  • Setting cardinality of the id and the source in ProductIdentifier to (1..1)
  • Define Index, Loan, Commodity, and Security as extensions of ProductBase
  • Remove IdentifiedProduct
  • Restructure Security to align with CollateralAssetType and rename data types and attributes with the word bond by replacing bond with debt
  • The products that were previously extensions of IdentifiedProduct can now be identified in securityType and related attributes in the Security data type: Bond, ConvertibleBond, and MortgageBackedSecurity are identified as the enumerated value of Debt in security, and ConvertibleBond and MortgageBackedSecurity can be further identified in debtClass as the enumerated values of Convertible and AssetBacked. Similiarly, ExchangeTradedFund and MutualFund are identified as the enumerated value Fund in security, and can be further identified in fundType. Otherwise, the pre-existing types (Equity and Warrant) can be identified as enumerated values in security.
  • In ProductIdentification, replace productType with externalProductType (of type ExternalProductType) and replace productId with productIdentifier (of type ProductIdentifier)

Review Directions

In the CDM Portal, navigate to the Textual Browser and search for the data types noted above.

CDM Model: Model Definitions

What is being released

Added definitions for attribute TradableProduct.counterparties and type Counterparty.

2.65.10

Infrastructure: CDM Portal Change Password bug

What is being released

Fixed a bug where after updating the authentication library, the users were being forced to change their passwords on first login.

2.65.7

Infrastructure: CDM Portal Change Password bug

What is being released

Fixed a bug affecting a small number of users where the CDM Portal was not registering the password change and continuously asking to change their password.

2.65.6

Infrastructure: CDM Portal Change Password bug

What is being released

Fixed a bug affecting a small number of users where the CDM Portal was forcing the user to change their password but wasn't accepting any new password.

2.65.4

Infrastructure: User Extraction API Fix

What is being released

Upgraded user extraction API to support downloads of more than 1000 registered users.

Review directions

  • ISDA CDM Admins can log into the portal and download users via the CDM Portal Home Page.

2.65.2

CDM Model: Legal Document Modelling

What is being released

Variation Margin model added and initial changes for Master Agreement Schedule model.

The following documents or specific clauses are now supported:

Variation Margin Agreements

  • ISDA 2016 CSA for Variation Margin ("VM") (Security Interest - New York Law)
  • ISDA 2016 CSA for VM (Title Transfer – English Law)
  • ISDA 2016 CSA for VM (Loan – Japanese Law)
  • ISDA 2016 CSA for VM (Title Transfer – Irish Law)
  • ISDA 2016 CSA for VM (Title Transfer – French Law)

Master Agreement Schedule

  • ISDA 2002 Master Agreement Schedule (Automatic Early Termination Clause only)

Other related changes:

  • Model changes for Eligible Collateral and Margin Agreement Schedule.
  • ISDA Create synonym mapping fixes.
  • Updated documentation samples in the Legal Agreement section.

Review directions

  • Review type CreditSupportAgreementElections, MasterAgreementSchedule and EligibileCollateral.
  • Review ISDA Create ingestion samples in the CDM Portal Ingestion Page in folder isda-create.

CDM Model: Synonym Externalisation

What is being released

As part of the ongoing namespace changes, synonyms defined inline in the CDM Model are being moved to their respective namespaces. The following have now been externalised:

  • FpML_5_10
  • CME_SubmissionIRS_1_0
  • CME_ClearedConfirm_1_17

Review directions

The extracted synonyms can be viewed in Rosetta Core:

  • The FpML file is named synonym-cdm-fpml.rosetta under namespace cdm.synonyms.fpml.
  • The CME file is named synonym-cdm-cme.rosetta under namespace cdm.synonyms.cme.

The extracted synonyms can also be viewed in the CDM Portal Textual Browser by searching for synonym source FpML_5_10, synonym source CME_ClearedConfirm_1_17 and synonym source CME_SubmissionIRS_1_0.

Infrastructure: DAML Upgrade

What is being released

Upgrade DAML version to use version 1.3.0 for DAML compilation.

Review directions

Download and review the DAML CDM distributed artifact from the CDM Portal Download page.

Infrastructure: Go Code Generation

What is being released

Add a Go implementation of the CDM to the available downloads.

Notable changes and updates introduced:

  • The generated Go source code contains all CDM model types and enums, and all function specifications.
  • As Go language compilation is platform-specific, the CDM distributed artifact does not contain executable code.
  • The Go CDM distributed artifact is now available on the CDM Portal Downloads page.

Review directions

Download and review the Go CDM distributed artifact from the CDM Portal Download page.

2.64.0

Model Optimisation: Extract Party References from ContractualProduct

What is being released

Following the recent model refactoring to extract Party references from ContractualProduct, the regulatory reporting model in model-reg-reporting was updated to look up the Party based on the CounterpartyEnum.

Review direction

In the Textual Browser, review reporting rules:

  • FixedFloatBuyerSeller
  • FixedFixedBuyerSeller
  • SingleCurrencyBasisSwap
  • CrossCurrencySwapBuyerSeller
  • CreditDefaultSwapBuyerSeller

2.63.5

User Documentation: Legal Agreement Section

What is being released

The Legal Agreement section of the CDM user documentation has been updated, in line with recent changes to other sections of the documentation and to the model.

Notable changes and updates introduced:

  • Updated modelling approach describing current scope and updated design principles.
  • Detailed description of individual components within the Legal Agreement model.
  • Detailed description of structure and modelling approach for Elective Provisions
  • Addition of relevant examples to demonstrate model content
  • Updated description of approach for linking legal agreements to contracts

The Process section has also been updated to explain support for initial margin calculations as part of the Calculation Process section.

Review direction

In the CDM Portal, review the CDM Documentation, in particular the sections:

2.62.5

CDM Model: Legal Document Modellinge

What is being released

ISDA Create schemas and samples added for ISDA 2019 Security Agreements for Belgium and Luxembourg Law.

Review Directions

In the Ingestion Panel, try samples in folders:

  • isda-create > isda-sa-im-2019-bellaw
  • isda-create > isda-sa-im-2019-luxlaw

2.60.0

Model Optimisation: Extract Party References from ContractualProduct

What is being released

The first part of the model refactoring to move Party definitions and references to make ContractualProduct agnostic to parties, i.e. for trades containing economically identical products, but different counterparties, the CDM representation of the products should also be identical.

Replace any Party or references to Party by a resolvable enum, CounterpartyEnum, which contain values Party1 and Party2 that correspond to the two counterparties to the trade.

Create type Counterparty to specify which CounterpartyEnum corresponds to which Party, and add to TradableProduct with a cardinality of exactly two e.g. one for each counterparty.​ Typically the Counterparty.party attribute would be specified as a reference because the party would already be fully specified on the Contract, Execution or WorkflowStep, along with any other parties related to the trade eg. broker or calculation agent etc.

In addition to the model changes, the translation mappings have been updated for synonyms FpML_5_10, Workflow_Event, CME_ClearedConfirm_1_17, CME_SubmissionIRS_1_0, DTCC_9_0 and DTCC_11_0.

To make the ContractualProduct fully agnostic to parties, the Account must also be moved. That will be done as part of further changes in the coming weeks. In addition there will be further changes to remove non-counterparty party references e.g. AdditionalDisruptionEvents.determiningParty, DividendReturnTerms.extraordinaryDividends, OptionPhysicalSettlement.predeterminedClearingOrganization etc.

Review direction

In the Textual Browser, review CounterpartyEnum, Counterparty, PayerReceiver, BuyerSeller, ExerciseNotice.optionBuyer and NotifyingParty.

In the Ingestion Panel, review any FpML samples under products or Event samples under events.

Below is a list of samples which are of particular interest:

FpML sample containing CounterpartyEnum data in PayerReceiver:

  • products > rates > EUR-Vanilla-uti

FpML sample containing CounterpartyEnum data in PayerReceiver, BuyerSeller and NotifyingParty:

  • products > credit > cds-loan-ReferenceObligation-uti

Event allocation sample that shows the Product is party agnostic. The WorkflowStep.businessEvent.primitives.contractFormation before and after data has different party references specified in the Contract.tradableProduct.counterparties, but each Contract.tradableProduct.product.meta.globalKey is identical (in these samples the globalKey is generated based on a checksum of the data; so identical keys indicate identical data):

  • events > allocation-single

FpML sample with party references Contract.collateral.independentAmount (e.g. party references as outside the ContractualProduct), and CounterpartyEnum data in PayerReceiver and BuyerSeller (e.g. inside the ContractualProduct):

  • products > credit > cd-indamt-ex01-short-us-corp-fixreg-versioned

FpML sample with CounterpartyEnum data in ExerciseTerms.optionBuyer, PayerReceiver and BuyerSeller:

  • products > rates > bond-option-uti

FpML sample with a payment to a third party (e.g. not one of the two counterparties). See Contract.tradableProduct.product.contractualProduct.economicTerms.payout.cashflow.payerReceiver.receiverPartyReference.externalReference, moving cashflow payout party references will be part of a separate change:

  • products > rates > swap-with-other-party-payment

2.59.1

Infrastructure: Merge multiple ISDA create ingestion environemnts into one

What is being released

Merge the isda-reate ingestion environments

  • The various flavours of isda create were being treated as entirely seperate entities for the purpose of ingestion slowing the ingestion creation process. These can now be merged into one which should cause an increase in performace of core.

2.58.3

Infrastructure: Add override keyword to Rosetta Grammar

What is being released

Adding a new override keyword

  • The override keyword allows a type to be extended from another namespace.

2.57.8

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues for legal documents:

  • Addresses for Transfer/Demands and Notices - Addresses are now mapped for the specified party
  • Related Agreements – COLLATERAL_TRANSFER_AGREEMENT, MASTER_AGREEMENT and SECURITY_AGREEMENT agreement types are now mapped for related agreements
  • Posting Obligations - Additional_language is now correcty mapped to the specified party.
  • Recalculation of Value - Elections are now correcty mapped to the specified party.
  • French Law Addendum – Bespoke language are now associated with correct party on CTA ISDA Bank Custodian 2019.
  • Regime/Security Provider Rights Event/Security Taker Rights Event - Elections are now correcty mapped to the specified party.

Review direction

In the Ingestion Panel, try samples in folder isda-create.

  • clearstream-cta-2016-englaw/sample1 - see partyElection -> address mapped to correct party.
  • clearstream-sa-2016-luxlaw/sample1 - see agreementType -> COLLATERAL_TRANSFER_AGREEMENT mapped for the releated agreement for date 2020-04-03
  • isda-csa-im-2016-jpnlaw/sample1 - see postingObligations -> partyElection mapped for partyA and partyB
  • clearstream-cta-2019/sample1 - see recalculationOfValue -> partyElection correctly associate partyA and partyB in disputeResolution.
  • euroclear-cta-2019/sample1 - see jurisdictionRelatedTerms -> frenchLawAddendum correctly associate the addendumLanguage with partyB.
  • isda-csa-im-2018-nylaw/sample1 - see rightsEvents -> securityProviderRightsEvent correctly associate partyA and partyB for partyElection.

2.57.7

*Event Model: Direct Principal and Agency Clearing Model *

What is being released

The clearing function has been enhanced to support the Direct Agency clearing model. Direct clearing is when the risk party to the trade is facing the CCP, either through its own account (principle) or its clearing member acting as agent (angency).

Notable changes:

  • Clearing function renamed to Create_CrearedTrade and is now consistent with the strategic approach.
  • Descriptions added/modified for ClearingInstruction and Create_CrearedTrade.
  • party1/party2 alias used in clearing function to link parties have been moved to ClearingInstruction.
  • clearerParty1/clearerParty2 added to in ClearingInstruction to support agency clearing.
  • Constrain added to Create_CrearedTrade inputs so that the parties and roles are present in the alpha trade.

Review direction

In the CDM Portal, open the Textual Browser and see:

  • func Create_CrearedTrade
  • type ClearingInstruction

Infrastructure: Namespace hierarchy to be sorted

What is being released

Infrastructure change to show the files in the namespace hierarchy in sorted order.

2.57.2

*Event Model: Direct Principal and Agency Clearing Model *

What is being released

The clearing function has been enhanced to support the Direct Agency clearing model. Direct clearing is when the risk party to the trade is facing the CCP, either through its own account (principle) or its clearing member acting as agent (angency).

Notable changes:

  • Clearing function renamed to Create_CrearedTrade and is now consistent with the strategic approach.
  • Descriptions added/modified for ClearingInstruction and Create_CrearedTrade.
  • party1/party2 alias used in clearing function to link parties have been moved to ClearingInstruction.
  • clearerParty1/clearerParty2 added to in ClearingInstruction to support agency clearing.
  • Constrain added to Create_CrearedTrade inputs so that the parties and roles are present in the alpha trade.

Review direction

In the CDM Portal, open the Textual Browser and see:

  • func Create_CrearedTrade
  • type ClearingInstruction

Infrastructure: Namespace hierarchy to be sorted

What is being released

Infrastructure change to show the files in the namespace hierarchy in sorted order.

2.56.6

User Documentation: Overview Section

What is being released

The overview section of the CDM user documentation has been updated, in line with recent changes to other sections of the documentation and to the model.

Notable changes and updates introduced:

  • Updated components diagram
  • Aligned high-level description of benefits onto ISDA's systematic messaging about CDM
  • New CDM governance section
  • Move of versioning section to be part of the CDM distribution section
  • Clean-up language and clarify explanations where required
  • Updated links and resources

Review direction

In the CDM Portal, review the CDM Documentation, in particular the section:

Documentation: Add descriptions to Create functions

What is being released

The Functions defined in the CDM have been updated to include descriptions for their usage, inputs, outputs and conditions.

Review Direction

In the CDM textual browser, see the descriptions for functions:

  • Create_Execution
  • Create_ExecutionPrimitive
  • Create_ContractFormation
  • Create_ContractFormationPrimitive
  • ClearingInstruction

Event Model: Add Create Workflow Step Functions

CDM functions to create a WorkflowStep with a business event that has happened or a WorkflowStep supporting proposing a business event, accepting a business event, and rejecting a business event. The new functions enable data quality remediation on a WorkflowStep data record with the use of the action attribute with possible values of New, Correct and Cancel and constraints restricting the inputs to valid cases.

Review Direction

  • New annotation type [create WorkflowStep] added similar to [create BusinessEvent].
  • 4 new functions have been added to create workflowStep with inputs: message Information, timestamp, event identifiers, parties, accounts.
    • Create_WorkflowStep - Business Event + action (new, correct, cancel)
    • Create_ProposedWorkflowStep - Proposed Instructions + action (new or correct only)
    • Create_AcceptedWorkflowStep - Business Event + previous proposed step reference
    • Create_RejectedWorkflowStep - Rejection + previous proposed step
  • Action is now optional on WorkflowStep

Portal Registration Form Bugfix

What is being released

For new users registering on the CDM Portal, numbers are were not permitted to be used when specifying a company name. This bug has been fixed.

2.56.0

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues for legal documents:

  • Convert ISDA Create currency descriptions into ISO Country Code (iso4217)
  • Access Conditions - fix mapping of Additional Termination Events
  • Amendment to Termination Currency - fix mapping of three party election structure, and agreement date.
  • SIMM Calculation Currency - fix mapping of elections.
  • Collateral Management Agreement - fix mapping of elections.
  • Custodian Event End Date - fix mapping issues and add CustodianEventEndDate.safekeepingPeriodExpiry to accommodate Clearstream CTA documents.
  • Remove LegalDocumentBase.partyInformation as it duplicates LegalDocumentBase.contractualParty and LegalDocumentBase.otherParty.

Review Direction

In the Ingestion Panel, try samples in folder isda-create.

2.55.5

Infrastructure changes: Ingestion

What is being released

Fixed a bug in the ingestion algorithm that was causing issue in the downsteam projects.

2.55.4

User Documentation: Consistency of Examples vs Model

What is being released

A technical change has been introduced in the CDM build and release infrastructure, that verifies the consistency of any code snippet included in the user documentation vs the model, and alerts in case of any discrepancy. Going forward, this will facilitate maintenance of the user documentation as the model evolves, by forcing to update the documentation in synchrony with any model change.

As part of this infrastructure change, a number of code snippets in the user documentation have been updated to be synchronised with the model.

In particular, following removal of the inception primitive (superseded by the execution and contract formation primitives) as part of a recent release, the user documentation has been updated to reflect that model change.

Review Direction

In the CDM Portal, review the CDM Documentation, in particular the section:

2.55.3

Product Model: Equity Swap Modelling

What is being released

Fixes for Equity Swap model, and corresponding FpML synonym mappings for returnLeg.effectiveDate and interestLegPaymentDates.

Review Direction

  • In the Textual Viewer, review types PaymentDateSchedule, AdjustableRelativeOrPeriodicDates and PeriodicDates.

  • In the Ingestion Panel, try samples in folder products > equity.

2.55.0

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues:

  • CalculationDateLocation - resolve incorrect association of mapped items.
  • Custodian - build mapper to associate Custodian Name and Account details for Stock vs Cash.
  • Threshold / MinimumTransferAmount - update existing mapper to correctly deal with zero amount.
  • CustodyArrangements - resolve incorrect association of mapped items.

Review Direction

In the Ingestion Panel, try samples in folder isda-create.

User Documentation: Event Model

What is being released

Following recent overhaul of the Rosetta DSL documentation, the CDM documentation has been updated, focusing on:

  • Event Model section
  • Lifecycle Event Process section of the Process Model

An overview of the design principle of the CDM event model has been introduced, including an explanatory diagram for the different levels in the model and their relationships:

  • Trade State
  • Primitive Event
  • Business Event
  • Worksflow Step

All snippet examples have been updated to reflect their current status in the CDM.

The Process Model section has been expanded to include Primitive Event creation functions, and the Event Qualification section has also been updated, both reflecting consistent use of the func syntax in the Rosetta DSL.

Review Direction

In the CDM Documentation, review the CDM Model tab, in particular the sections:

CDM Model: Eligible Collateral Modelling

What is being released

Extension of CDM model to incorporate treatment of collateral

  • Concentration Limits
  • Inclusion/Exclusion Criteria

Review Direction

In the Textual Browser, review types CollateralTreatment and ConcentrationLimitCriteria.

2.54.1

Model Optimisation: Initial fees and additional payments

What is being released

The Create_Execution function has been modified to include an input for the initial settlement information for the transaction such as a fee or upfront payment.

The existing SettlementTerms type has been used for this and has been adjusted to contain all relevant information: date, parties, and payer/receiver, plus an assetIdentifier to uniquely link this cashflow settlement to a cashPrice specification.

Review Direction

In the Textual Broswer of the CDM Portal:

  • Type Execution has been modified to have a one-to-many relationship with SettlementTerms to support multiple initial settlement terms.
  • PayerReceiver has been added to SettlementTerms to define the settlement parties
  • AssetIdentifier has been added to SettlementTerms to uniquely link the cashflow settlement to a cashPrice specification
  • Updated Create_Execution to take SettlementTerms as an input
  • Updated descriptions to align with the change in the data structure:
    • Search for type SettlementTerms - see updated description
    • Search for type Execution, scroll down to attribute settlementTerms - see updated description
    • Search for func Create_Execution, scroll down to input settlementTerms - see updated description

In the Instance Viewer of the CDM Portal, see the exection business event examples:

  • Swaption - Premium is represented as a settlement term
  • Swap With Other Party Payment - Broker fee is represented as a settlement term
  • Swap With Initial Fee - Fee is represented as a settlement term

2.53.5

Product Model: Equity Swap Modelling

What is being released

Fixes for Equity Swap model, and corresponding FpML synonym mappings.

  • valuationDates.periodicDates - EquityValuation.valuationDates previously only allowed list of dates, rather than named date attributes e.g. calculationStartDate, calculationEndDate, calculationPeriodFrequency etc.
  • fxFeature - added to EquityPayout.

Review Directions

In the Ingestion Panel, review sample:

  • products > equity > eqs-ex12-on-european-index-underlyer-short-form.xml

2.53.4

Product Model: FpML Equity Swap Mapping

What is being released
FpML synonym fixes for Equity Swap samples.

Review Directions
In the Ingestion Panel, try the following samples folder products > equity.

2.53.0

CDM Model: Namespace Hierarchy Bug fixes

What is being released

Minor bug fixes in the generation of the namespace hierarchy tree.

2.52.4

Event Model: Function test changes based on working group feedback

What is being released

Follow up action from 12-May-20 Design WG minutes:

Demonstration was provided of the Create, Correct, Cancel function:

Working group observed that rejected is including in the cancel WorkflowStep. This should be removed from the model. Action: CDM team to review attributes contained within type WorkflowStep and revise accordingly.

The reject has been removed from the cancel step.

Demonstration of Create_ContractFormation with a Legal Document:

Working group observed that under Contract, the parties are defined twice. Firstly, as parties to the Contract, and secondly as parties to the Legal Agreement. Response: CDM team will review how parties are referenced through this function and recommend an approach that doesn’t require parties to be defined in multiple places.

The parties within the legel agreement are now references to the parties defined in the contract to avoid duplicating parties.

Review Direction

In the Instance Viewer section of the CDM Portal:

  • See "New Cancel Correct" section. Observe that in the visualisation, the cancel is no longer rejected.
  • Under the "Form Contract" section, open "Fixed/Floating Single Currency Interest Rate Swap With Legal Agreement" and observe that in the parties are not duplicated in the LegalAgreement.

2.52.2

Model Optimisation: Remove Inception Primitive

What is being released

Follow up action from 2-Jul-19 Design WG minutes:

  • Remove the Inception primitive and provide sample events for ExecutionPrimitive and ContractFormation. Proposal is to make use of the new ‘Function Specification’ module and start presenting events as a sequence instead of a static ingestion.

The InceptionPrimitive has been deprectated for some time and has now been completely removed in favour of the ExectionPrimitive and ContractFormationPrimitive. All synonymns, conditions, qualifications and function have now been updated to reflect this. Examples of Inception events provided in the CDM Portal Ingestion section have now been removed and replaced with new examples that are available in the Instance Viewer section created by executing the relevent Business Event Functions.

Review Direction

In the CDM Portal Review changes:

  • In the Ingestion page, DTCC XML samples now ingest into ContractFormation events rather than Inception.
  • See CME confirm examples now qualify the beta and gamma trades as ContractFormation
  • In the Textual browser, see the reg reporting definition of NewTrade now reports on Execution or Contract Formation (but not both to avoid double reporting)
  • In the Textual browser, see updated qualifications: Qualify_Novation, Qualify_PartialNovation, Qualify_TradeWarehousePositionNotification
  • In the Instance Viewer, see new examples for FX Forward, CDS and Repo in the Execution and Contract Formation Business section
  • In the Textual browser, see that PostInceptionState has been renamed to PostContractFormationState for consistency

2.51.3

Documentation: Process Model

What is being released

Following recent overhaul of the Rosetta DSL documentation, the CDM documentation has been updated, focusing on:

  • Process model section (formerly: functions)
  • Product qualification section

The former CDM function section has been migrated to a dedicated Rosetta DSL function section (as per previous release), and the CDM documentation focuses instead on explaining how this function feature is used to standardise lifecycle event processes. Two types of process are being demonstrated:

  • Validation process
  • Calculation process
  • An upcoming section (not part of this release) will also focus on event creation process

The product qualification section has also been adjusted to reflect the use of functions for the qualification logic.

Example snippets for the two updated sections have been updated to reflect their latest representation in the CDM, and some additional examples have been included where relevant.

Review Direction

In the CDM Documentation, review the CDM Model tab, also directly accessible here: https://docs.rosetta-technology.io/cdm/documentation/source/documentation.html

CDM Model: Legal Document Modelling

What is being released

Collateral Documentation Changes:

  • Further ISDA Create synonym mapping fixes.
  • Extension of CreditSupportAgreementElections to fully support 2016 ISDA IM CSA Japanese Law.

Review Direction

In the Ingestion Panel, try samples in folders:

  • isda-create > isda-csa-im-2016-jpnlaw

2.51.1

CDM Model: Bug fixes

What is being released

Cleanup of tests and some minor bug fixes.

2.51.0

CDM Model: Synonyms & MetaType cleanup

What is being released

Default synonyms moved to a separate namespace cdm.synonyms.config. All the metaType values moved to a read-only resource.

2.48.3

Documentation: DSL Documentation Overhaul

What is being released

Complete overhaul of Rosetta DSL documentation, with the syntax now stabilised following a complete set of changes introduced recently.

The changes include:

  • Change from class to type
  • Unification of validation components under condition attached to type
  • All functions unified under func, including object qualification logic
  • New annotation concept introduced, to unify all metadata
  • Syntax made more consistent across all these components

The examples illustrating the syntax in the documentation have been fully updated.

Review Direction

In the CDM Documentation, review the Rosetta Modelling Components section at: https://docs.rosetta-technology.io/dsl/documentation.html

CDM Model: Legal Documents Modelling

What is being released

ISDA Create schemas and samples added for Euroclear CTA documents.

Review Directions

In the Ingestion Panel, try samples in folders:

  • isda-create > euroclear-cta-2016-englaw
  • isda-create > euroclear-cta-2016-nylaw
  • isda-create > euroclear-cta-2017-englaw
  • isda-create > euroclear-cta-2017-nylaw

2.48.2

CDM Model: Namespace hierarchy representation

What is being released

Auto Generation of namespace-hierarchy.json file, which represents the CDM Model in a tree format

CDM Portal: Bug fix for Graphical Navigator

What is being released

Fix bug where the Graphical Navigator only partially displayed the CDM.

2.48.0

CDM Model: Legal Documents Modelling

What is being released

Fixes to ISDA Create synonym mapping of Legal Documents model, focused on ApplicableRegime and AdditionalRegime types.

Review Directions

In the Ingestion Panel, try samples in the folder isda-create.

2.47.0

CDM Model: Legal Documents Modelling

What is being released

Updates to the Legal Documentation model:

  • Addition of ISDA Create synonyms for CTA documents.
  • CTA model adjustments required to resolve testing issues.
  • Deprecation of legacy CSA model components.
  • Addition of new CSA model.

Review Directions

In the Ingestion Panel, try samples in folders:

  • isda-create > clearstream-cta-2016-englaw
  • isda-create > clearstream-cta-2016-nylaw
  • isda-create > clearstream-cta-2019
  • isda-create > euroclear-cta-2019
  • isda-create > isda-cta-im-2019

Event Model: New Correct Cancel Example

What is being released

Added an example for new, correct and cancel workflow for a vanilla IRS.

Review Directions

Open Rosetta Core and navigate to the Visualisation section:

  • Select NEW CANCEL CORRECT WORKFLOW
  • See an example where in IRS is created with a quanity of 99999, which is then corrected and then cancelled.

2.46.4

Event Model: Allocation / Split Business Events

What is being released

Refactor Allocation and Split business events.

Allocation business event contains two types of primitives:

  • SplitPrimitive with the original execution split into separate executions with the quantity as specified in the AllocationInstructions.
  • ContractFormationPrimitive for each execution in SplitPrimitive.after.splitTrades.execution, updating the party based on the AllocationInstructions.

Review Directions

In the Textual Browser, review the functions:

  • Create_Allocation (BusinessEvent creation function)
  • Create_SplitPrimitive (PrimitiveEvent creation function)
  • Create_ContractFormationPrimitive (PrimitiveEvent creation function)
  • Qualify_Allocation (Qualification function)

In the Ingestion Panel, review the samples:

  • events > allocation-multiple.xml
  • events > allocation-single.xml

2.46.2

Infrastructure: Annotations

What is being released

Changes to annotations based on the recommendations of the recent design review of CDM functions.

  • Remove [partialKey] - the annotation was used on the EconomicTerms type, and was intended to provide a hash/checksum of the object data, excluding any metadata, that could be used for comparing economic equality between objects. However, the current implementation could cause both false positive and false negative results, and, following the recent quantity and price model refactor does not account for these values.

Review Directions

In the Textual Browswer, review the EconomicTerms type.

2.45.2

Function Testing: Initial fee and other party payment examples

What is being released

As part of the on going function testing, two new examples have been created for a swap execution with initial fee and one for a payment to a party.

Review Directions

In Rosetta Core, navigate to the Visualise page and select the new examples:

  • Swap With Initial Fee
  • Swap With Other Party Payment

2.45.0

Infrastructure: Annotation Syntax

What is being released

Changes to annotations based on the recommendations of the recent design review of CDM functions. The following annotations have been updated:

qualification:

  • Annotation declaration syntax changed to specify the qualifiable type e.g. BusinessEvent or Product.
  • Annotation declaration syntax changed to specify the function name prefix, and set as "Qualify". e.g. func Qualify_Execution.
  • Add validation to enforce that any function with a qualification annotation has the correct function name prefix, input type and output type.

creation:

  • Rename annotation from funcType to creation.
  • Set annotation prefix to "Create". e.g. func Create_ExecutionPrimitive.
  • Add validation to enforce that any function with a creation annotation has the correct function name prefix, and output type.

Review Directions

In the Textual Browser, review annotations qualification and creation.

2.44.3

CDM Documentation: Update

What is being released

General documentation refresh with updated code snippets and explainations.

Review Directions

Please see documentation update here: https://docs.rosetta-technology.io/cdm/documentation/source/documentation.html

Infrastructure: Legal Documents Modelling

What is being released

Add ISDA Create JSON schemas and ingestion sample documents for Collateral Transfer Agreements.

Review Directions

In the Ingestion Panel, try samples in folders:

  • isda-create > clearstream-cta-2016-englaw
  • isda-create > clearstream-cta-2016-nylaw
  • isda-create > clearstream-cta-2019
  • isda-create > isda-cta-im-2019

2.44.1

Event Model: Add Examples and Tests for New Trade Functions

What is being released

New examples for the Execute and FormContract functions.

  • Execute Business Event

    • Fixed/Floating Single Currency Interest Rate Swap
    • Forward Rate Agreement
    • Basis Swap
    • OIS Swap
    • Swaption
  • FormContract Business Event

    • Fixed/Floating Single Currency Interest Rate Swap using ISDA Master Agreement
    • Fixed/Floating Single Currency Interest Rate Swap
    • Forward Rate Agreement
    • Basis Swap
    • OIS Swap
    • Swaption

Review Directions

Using Rosetta Core, navigate to the Visualise CDM Events section and select 'EXECUTE BUSINESS EVENT' or 'FORM CONTRACT BUSINESS EVENT'. There will be an item per example which you can click on to see a visualisation. Click on a node to see the CDM JSON in the analisys section.

2.44.0

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

  • Migrate regulation reporting rules for ESMA MiFIR RTS22 to use new price model.

Review Directions

In the Textual Browser, review reporting rules:

  • FixedRatePrice, FloatingRatePrice, FixedFixedPrice
  • FixedFloatBuyerSeller, CrossCurrencySwapBuyerSeller, FixedFixedBuyerSeller
  • IsFixedFloat, IsFixedFixed, IsIRSwapBasis, IsXCCYSwap, IsCreditDefaultSwap

2.43.2

CDM Model: Legal Documents Modelling

What is being released

Implementation of model to support Security Agreements.

Ability to ingest below documents from ISDA Create:

  • 2019 ISDA Bank Custodian SA (NY Law)
  • 2019 ISDA Bank Custodian SA (Eng Law)
  • 2019 Euroclear SA (Bel Law)

Review Directions

In the Ingestion Panel, review samples in folders:

  • isda-create > euroclear-sa-2019-bellaw
  • isda-create > isda-sa-im-2019-englaw
  • isda-create > isda-sa-im-2019-nylaw

2.43.0

Infrastructure: Legal Documents Modelling

What is being released

Add ISDA Create JSON schemas and ingestion sample documents for Security Agreements.

Review Directions

In the Ingestion Panel, try samples in folders:

  • isda-create > clearstream-sa-2016-luxlaw
  • isda-create > clearstream-sa-2017-luxlaw
  • isda-create > clearstream-sa-secprovider-2019-luxlaw
  • isda-create > clearstream-sa-sectaker-2019-luxlaw
  • isda-create > euroclear-sa-2016-bellaw
  • isda-create > euroclear-sa-2018-bellaw
  • isda-create > euroclear-sa-2019-bellaw

2.42.9

Infrastructure: Function Testing

What is being released

Test definitions have been added to the cdm to test the Execute and FormContract function definitions with a vanilla IRS.

Review Directions

The tests will be available to view in Rosetta Core in the near future.

2.42.8

Infrastructure: Function Testing

What is being released

Test definitions have been added to the cdm to test the Execute and FormContract function definitions with a vanilla IRS.

Review Directions

The tests will be available to view in Rosetta Core in the near future.

2.42.7

Infrastructure: Function Testing

What is being released

Test definitions have been added to the cdm to test the Execute and FormContract function definitions with a vanilla IRS.

Review Directions

The tests will be available to view in Rosetta Core in the near future.

2.42.6

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

  • Migrate conditions related FpML rule IRD 25 to type TradableProduct - FpML_ird_25_FixedRate, FpML_ird_25_FloatingRateSpread, FpML_ird_25_FloatingRateCapRate and FpML_ird_25_FloatingRateFloorRate.
  • To support use case for a floating rate multiplier schedule, add attribute multiplier to type FloatingInterestRate, and add FpML sample ird-ex27-inverse-floater.xml.
  • Migrate condition FloatingRateMultiplierSchedule to type FloatingInterestRate.

Review Directions

In the Textual Browser, review:

  • Conditions FpML_ird_25_FixedRate, FpML_ird_25_FloatingRateSpread, FpML_ird_25_FloatingRateCapRate and FpML_ird_25_FloatingRateFloorRate on type TradableProduct.
  • Condition FloatingRateMultiplierSchedule on type FloatingInterestRate.

In the Ingestion Panel, review sample products > rates > ird-ex27-inverse-floater.xml.

2.42.5

CDM Model: Eligible Collateral Model

What is being released

Changes to Issuer and Product taxonomy model to support Eligible Collateral.

  • Changes to Issuer model to include reference to Fund Issuers and Special Purpose Vehicles.
  • Changes to Product model to include reference to Bond Types and Bond Economics.
  • Additional descriptions added across the model.

Review Directions

In the Textual Browser, review types IssuerCriteria and ProductCriteria.

2.42.4

Model Optimisation: Quantity Refactor

What is being released

Clean up tasks following the recent model quantity refactor:

  • Rename attribute NonNegativeQuantitySchedule.quantity to NonNegativeQuantitySchedule.initialQuantity.
  • Add FpML synonym mappings logic to populate NonNegativeQuantitySchedule.initialQuantity only when a quantity schedule exists.
  • Add attribute ResolvablePayoutQuantity.resolvedQuantity to be populated when the quantity is resolved (based on the aseet identifier).
  • Add conditions to type TradableProduct - NotionalAdjustment, InterestRatePayoutQuantityResolvable, EquityPayoutQuantityResolvable, CreditDefaultPayoutQuantityResolvable, CashflowQuantityResolvable and SecurityQuantityResolvable.
  • Add conditions to type Payout - NotionalResetOnEquityPayout and NotionalResetInterestRatePayoutExists.
  • Add condition to type ResolvablePayoutQuantity - ResolvedQuantity.

Review Directions

In the Textual Browser, review type ResolvablePayoutQuantity.

2.42.3

CDM Model: Currency Enum

What is being released

Adding two currency code enumerated sets to the file base-staticdata-asset-commons-enum:

  • enum ISOCurrencyCodeEnum
  • enum CurrencyCodeEnum extends ISOCurrencyCodeEnum

The CurrencyCodeEnum will be used in place of string as the date type for all currency fields. The work of updating the data type will be completed in one or more subsequent releases.
The new CurrencyCodeEnum is materialized version of the FpML external scheme for currency codes and includes an applicable synonym.

Review Directions

In the Textual Browser, review ISOCurrencyCodeEnum and CurrencyCodeEnum.

2.42.2

CDM Model: Legal Documents Modelling

What is being released

First phase of refactoring to support new legal documents modelling approach.

  • Change to LegalAgreement to look for ContractualTerms.
  • Addition of ContractualTerms to define an Agreement and RelatedAgreements
  • Addition of RelatedAgreements for specification of related agreements terms
  • Rename Documentation->RelatedAgreement in model-derivatives-shared and update reference in model-cdm-product.
  • Addition of types to support Credit Support, Collateral Transfer and Security Agreements.
  • Modelling of clauses in Security Agreement and addition of synonyms.

Review Directions

In the Textual Browser, review LegalAgreement and related types.

2.42.1

Model Enhancements: Adding description to the CDM Model

What is being released

Added the ability to provide descriptions for a CDM Namespace. Additionally added the description for the cdm.base package.

  • base.rosetta
  • base-staticdata.rosetta
  • base-staticdata-party-enum.rosetta
  • base-staticdata-identifier-type.rosetta
  • base-staticdata-asset.rosetta
  • base-staticdata-asset-common-enum.rosetta
  • base-math-enum.rosetta
  • base-datetime-enum.rosetta

Review Directions

View any of the above mentioned files, right next to their namespace label, there is a description.

2.42.0

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

  • Add FpML synonym mappings logic to populate Schedule.initialValue when a price schedule exists.
  • Rename type InterestRateSpread to FloatingInterestRate.
  • Add [deprecated] annotation to deprecated attributes.
  • Fix minimum cardinality for TradableProduct.priceNotation.

Review Directions

In the Ingestion Panel, try the following samples which contain price step schedules in folder products > rates:

  • EUR-variable-notional-uti.xml
  • ird-ex04-arrears-stepup-fee-swap-usi-uti.xml
  • ird-ex22-cap.xml
  • ird-ex23-floor.xml
  • ird-ex24-collar.xml
  • GBP-VNS-uti.xml
  • USD-VNS-uti.xml

2.41.0

Product/Event Model: Collateral Eligibility

What is being released

Eligible Collateral model refactoring focusing on attribute cardinality to allow the eligibility criteria to be specified.

Review Directions

In the Textual Browser, review the following:

  • Type EligibleCollateralCriteria, IssuerCriteria and ProductCriteria.

Product/Event Model: Collateral Documentation

What is being released

ISDA Create schemas and sample files added for Security Agreement documents: Euroclear SA 2019 Belgium Law, ISDA SA IM 2019 English Law and ISDA SA IM 2019 New York Law.

2.40.5

Product/Event Model: Stock Split Function

What is being released

Updated the StockSplit func and associated type naming and definitions.

Review Directions

In the Textual Browser, review the following:

  • Business event func StockSplit.
  • Type StockSplitInstruction.
  • Qualification func StockSplitEvent.

2.40.4

CDM Model: IM CSA New York Law 2018 Modelling

What is being released

IM CSA New York Law 2018 document modelled and synonyms added to map to ISDA Create negotiation data.

CSA document model refactored to better support combination of 2016 and 2018 IM documents.

Review Directions

In the Ingestion Panel, try samples in folder:

  • isda-create > im-csd-ny-law-2018

2.40.3

CDM Model: CSA Initial Margin 2018 (Paragraph 3 & 5) Calculations

What is being released

Further modelling of the calculations described in CSA Initial Margin 2018 paragraphs 3 and 5.

These functions are still under active development and have been released so they can be more easily shared with a wider audience.

Review Directions

In the Textual Browser, review the following:

  • Functions: DeliveryAmount, ReturnAmount, CreditSupportAmount, UndisputedAdjustedPostedCreditSupportAmount, SumPostedCreditSupportItemAmounts, PostedCreditSupportItemAmount
  • Types: PostedCreditSupportItem

2.40.2

CDM Model: Equity Stock Split Function

What is being released

Function added to create a split stock business event based on a SplitStockInstruction. The SplitStockInstruction.adjustmentRatio is applied to the number of securities and cash price resulting in the a QuantityChangePrimitive and TermsChangePrimitive respectively.

Review Directions

In the Textual Browser, review the following:

  • Business event func SplitStock.
  • Type StockSplitInstruction.
  • Qualification func StockSplit.

2.40.1

Infrastructure: ISDA Create Projection

What is being released

Infrastructure changes related to the projection of ISDA Create documents.

2.40.0

CDM Model: IM CSD English Law 2018 Modelling

What is being released

IM CSD English Law 2018 document modelled and synonyms added to map to ISDA Create negotiation data.

Review Directions

In the Ingestion Panel, try the following sample:

  • isda-create > im-csd-eng-law-2018 > sample1.json

2.39.1

Model Optimisation: Externalise the DTCC Synonyms into its own namespace

What is being released

The DTCC synonyms have been moved to a seperate namespace cdm.synonyms.dtcc allowing both DTCC_9 and DTCC_11 to inherit from the FPML synonym. This removes a lot of duplication of mapping logic within the CDM.

  • synonym source DTCC_BASE extends FpML_5_10 : All common synomyms for DTCC that inherit from FpML_5_10
  • synonym source DTCC_9_0 extends DTCC_BASE : Synonyms that only apply to DTCC_9_0
  • synonym source DTCC_11_0 extends DTCC_BASE : Synonyms that only apply to DTCC_11_0

Review Directions

In the Textual Browser, search (use control-f) for the text synonym source DTCC_BASE and see all of the synonym mapping.
Observe that there are no longer any DTCC synonyms defined within the types (i.e. attributes of type Contract do not have any DTCC synonyms.

2.38.0

Infrastructure: ISDA Create

What is being released

Infrastructure changes to support ingestion of ISDA Create IM CSD English Law 2018 documents.

Review Directions

In the Ingestion Panel, try the following sample:

  • isda-create > im-csd-eng-law-2018 > sample1.json

2.37.0

Model Optimisation: Price Refactor

What is being released

Following the recent price refactor, migrate synonyms to the new model for all products including rates, equity, FX, credit and repo, and also all other event, DTCC and CME synonyms.

Remove synonyms from model attributes from InterestRatePayout.rateSpecification:

  • fixedRate.initialValue
  • floatingRate.initialRate
  • floatingRate.spreadSchedule.initialValue
  • floatingRate.capRateSchedule.initialValue
  • floatingRate.floorRateSchedule.initialValue

Add synonyms to refactored PriceNotation attributes:

  • price.fixedInterestRate.rate
  • price.interestRateSpread.rate
  • price.interestRateSpread.capRate
  • price.interestRateSpread.floorRate
  • assetIdentifier.currency
  • assetIdentifier.rateOption.floatingRateIndex
  • assetIdentifier.rateOption.indexTenor

The RateSpecification type on InterestRatePayout now has three attributes of type FixedRateSpecification, FloatingRateSpecification and InflationRateSpecification. These all extend super type RateSpecificationBase which has an attribute assetIdentifier that corresponds to the PriceNotation.assetIdentifier.

Review Directions

In the Textual Browser, review the following types:

  • PriceNotation, Price, FixedInterestRate and InterestRateSpread.
  • RateSpecification, FixedRateSpecification, FloatingRateSpecification and InflationRateSpecification.

In the Ingestion Panel, try one of the following samples:

  • products > credit
  • products > equity
  • products > FX
  • products > rates
  • products > repo

CDM Model: Equity Dividend Cash Settlement Amount Calculation

What is being released

Function added to calculate the Dividend Cash Settlement Amount for Equities as defined in the SES1 legal document.

Review Directions

In the Textual Browser, review func DividendCashSettlementAmount.

2.36.1

CDM Model: Collateral Eligibility Schedules

What is being released

Further changes to Eligible Collateral model focusing on defining the issuer and instrument type.

Review Directions

In the Textual Browser, review the following:

  • types: CollateralIssuerTypeClassification and CollateralProductType.
  • CollateralIssuerTypeClassification related enums: IssuerTypeClassificationEnum, QuasiGovernmentIssuerTypeClassificationEnum, RegionalGovernmentIssuerTypeClassificationEnum and SupraNationalIssuerTypeClassificationEnum.
  • CollateralProductType related enums: CollateralProductTypeEnum, SecurityTypeEnum, BondTypeEnum and EquityTypeEnum.

2.36.0

Namespaces: Initial roll-out (Base Package)

What is being released

The Model is being refactored into namespaces to make it more modular. This will enable the users of CDM to import only
the part of the model they are interested in.

This refactoring is structural ONLY, and does not change the functionality of the Model in any way.

This refactor is the first of many incremental changes that will transform the CDM into hierarchical namespace tree. The first refactor is
for the base.cdm.* package.

This package contain basic components used across the CDM for date, time, math and also static data (party, asset, identifier).

Review Directions

In the CDM Portal, navigate to the Downloads tile, review the generated Java source to see the new cdm.base.* package.

2.35.6

CDM Model: Collateral Eligibility Schedules

What is being released

Further changes to the collateral eligibility schedules following feedback from the Working Group.

Review Directions

In the Textual Browser, review the following:

  • types: EligibleCollateral and CollateralIssueInformation.
  • enums: IssuerTypeClassificationEnum and ProductTypeEnum.

CDM Model: Inception Function

What is being released

CDM function to create the Inception Business Event.
Annotations to help identify the usages of CDM functions.

Review Directions

In the Textual Browser, review the following:

  • func: Inception

2.35.4

Code Generation: TypeScript

What is being released

Added a new TypeScript CDM Distribution in CDM Portal.

Review Directions

In Portal, navigate to the downloads page. You should see the new TypeScript download tile.

2.35.3

Infrastructure: Test Configuration

What is being released

Added configuration to run ISDA Create integration tests in Rosetta Core.

Review Directions

In the Rosetta Core, open ingestion panel and run integration tests. ISDA Create samples will now be included.

2.35.0

CDM Model: Price Model Refactor Preparation

What is being released

As preparation for the upcoming model price work, refactor Contract and Execution to represent product, quantity and price consistently, which also enables a significant consolidation and simplification of synonyms.

Contract and Execution refactored to introduce type TradableProduct which groups together Product, QuantityNotation and PriceNotation, and remove the following deprecated types and attributes:

  • Removed type ExecutionPrice and related attributes Contract.executionPrice and Execution.price.
  • Removed type ExecutionQuantity and related attributes Contract.contractualQuantity and Execution.executionQuantity.
  • Removed attributes Contract.contractualProduct and Execution.product.
  • Added Contract data rule ContractualProductExists.

Review Directions

In the Textual Browser, review type TradableProduct.

2.34.2

CDM Model: CSA Initial Margin 2018 (Paragraph 3) Calculations

What is being released

Added calculations related to CSA Initial Margin 2018 documents, paragraph 3. These functions are still under active development and have been released so they can be more easily shared with a wider audience.

Review Directions

In the Textual Browser, review the following functions:

  • PostedCreditSupportAmount_IM
  • CreditSupportAmount_IM
  • DeliveryAmount_IM
  • ReturnAmount_IM

2.34.1

CDM Model: AllocationBreakdown and DividendDateReferenceEnum

What is being released

  • Added new enum options for DividendDateReferenceEnum:

    • CumulativeEquityExDivBeforeReset
    • CumulativeEquityPaidBeforeReset
    • CumulativeEquityPaidInclReset
    • CumulativeLiborPaid renamed as CumulativeInterestPaid, including for ExDiv type.
    • CumulativeInterestPaidInclReset
    • CumulativeInterestPaidBeforeReset
    • UnwindOrEquityExDiv
    • UnwindOrEquityPaid
    • UnwindOrInterestExDiv
    • UnwindOrInterestPaid
    • UnwindExDiv
    • UnwindPaid
  • Updated AllocationBreakdown to have a quantity of type QuantityNotation wherease previously it was NonNegativeQuantity

  • Added additional details to AllocationBreakdown including account, collateral and allocationTradeId in order to ensure that AllocationBreakdown is more consistent with its FpML specification - https://www.fpml.org/spec/fpml-5-10-5-rec-1/html/confirmation/schemaDocumentation/schemas/fpml-doc-5-10_xsd/complexTypes/Allocations/allocation.html

Review Directions

In the Textual Browser, review the following:

  • AllocationBreakdown
  • DividendDateReferenceEnum

Model Optimisation: Clearing Instructions

What is being released

  • The ClearingInstruction now has a reference to the alpha contract that is being cleared.
  • Folded WorkflowStepInstruction and BusinessEventInstruction into new type Instruction as they served the same purpose.

Review Directions

In the Textual Browser, review the following:

  • ClearingInstruction
  • Instruction

Model Optimisation: Primitive Event lineage

What is being released

Lineage in the CDM has been rationalised for PrimitiveEvent. Each event has been updated to have a reference to the before state allowing the events to be chained together.

The following states are now annotated with key allowing them to be used as references.

  • ContractState
  • ExecutionState
  • Trade

The following states are now annotated with metadata reference allowing them to be used as references.

  • ExecutionPrimitive
  • ContractFormationPrimitive
  • AllocationPrimitive
  • ExercisePrimitive
  • InceptionPrimitive
  • QuantityChangePrimitive
  • ResetPrimitive
  • TermsChangePrimitive

Review Directions

In the Textual Browser, review the following the above types.

Repo Model: Open Repo Handling

What is being released

Following initial workshop with ICMA focusing on the open repo use-case, the CDM has been updated to handle the Call feature of open repos, using the same callable/extendible provision component as for Swaps.

The CallableProvision and ExtendibleProvision have been factored into a common OptionProvision component, existing FpML synonyms have been updated and the corresponding Call component in FpML for open repo has been mapped.

Review Directions

In the Textual / Graphical Browser, see: EconomicTerms > OptionProvision.

In the Ingestion Panel, see Product > Repo > "repo-ex02-repo-open-fixed-rate"

2.34.0

CDM Model: AllocationBreakdown and DividendDateReferenceEnum

What is being released

  • Added new enum options for DividendDateReferenceEnum:

    • CumulativeEquityExDivBeforeReset
    • CumulativeEquityPaidBeforeReset
    • CumulativeEquityPaidInclReset
    • CumulativeLiborPaid renamed as CumulativeInterestPaid, including for ExDiv type.
    • CumulativeInterestPaidInclReset
    • CumulativeInterestPaidBeforeReset
    • UnwindOrEquityExDiv
    • UnwindOrEquityPaid
    • UnwindOrInterestExDiv
    • UnwindOrInterestPaid
    • UnwindExDiv
    • UnwindPaid
  • Updated AllocationBreakdown to have a quantity of type QuantityNotation wherease previously it was NonNegativeQuantity

  • Added additional details to AllocationBreakdown including account, collateral and allocationTradeId in order to ensure that AllocationBreakdown is more consistent with its FpML specification - https://www.fpml.org/spec/fpml-5-10-5-rec-1/html/confirmation/schemaDocumentation/schemas/fpml-doc-5-10_xsd/complexTypes/Allocations/allocation.html

Review Directions

In the Textual Browser, review the following:

  • AllocationBreakdown
  • DividendDateReferenceEnum

Model Optimisation: Clearing Instructions

What is being released

  • The ClearingInstruction now has a reference to the alpha contract that is being cleared.
  • Folded WorkflowStepInstruction and BusinessEventInstruction into new type Instruction as they served the same purpose.

Review Directions

In the Textual Browser, review the following:

  • ClearingInstruction
  • Instruction

Model Optimisation: Primitive Event lineage

What is being released

Lineage in the CDM has been rationalised for PrimitiveEvent. Each event has been updated to have a reference to the before state allowing the events to be chained together.

The following states are now annotated with key allowing them to be used as references.

  • ContractState
  • ExecutionState
  • Trade

The following states are now annotated with metadata reference allowing them to be used as references.

  • ExecutionPrimitive
  • ContractFormationPrimitive
  • AllocationPrimitive
  • ExercisePrimitive
  • InceptionPrimitive
  • QuantityChangePrimitive
  • ResetPrimitive
  • TermsChangePrimitive

Review Directions

In the Textual Browser, review the following the above types.

Repo Model: Open Repo Handling

What is being released

Following initial workshop with ICMA focusing on the open repo use-case, the CDM has been updated to handle the Call feature of open repos, using the same callable/extendible provision component as for Swaps.

The CallableProvision and ExtendibleProvision have been factored into a common OptionProvision component, existing FpML synonyms have been updated and the corresponding Call component in FpML for open repo has been mapped.

Review Directions

In the Textual / Graphical Browser, see: EconomicTerms > OptionProvision.

In the Ingestion Panel, see Product > Repo > "repo-ex02-repo-open-fixed-rate"

2.33.0

Model Optimisation: Exchange Rate and Quantity Data Rule

What is being released

  • Add data rule for FX products that checks triangulation between ExchangeRate and the payout Quantity for each currency.
  • A number of DSL fixes and stability improvements relating to code generation of conditional logic.

Review Directions

In the Textual Browser, review the following:

  • Functions: PriceQuantityTriangulation, ExchangeRateQuantityTriangulation
  • Data rules: ContractPriceQuantityTriangulation, ExecutionPriceQuantityTriangulation

In the Ingestion Panel, try one of the following samples:

  • products > fx > fx-ex01-fx-spot.xml
  • products > fx > fx-ex02-spot-cross-w-side-rates.xml
  • products > fx > fx-ex03-fx-fwd.xml
  • products > fx > fx-ex04-fx-fwd-w-settlement.xml
  • products > fx > fx-ex05-fx-fwd-w-ssi.xml
  • products > fx > fx-ex06-fx-fwd-w-splits.xml
  • products > fx > fx-ex07-non-deliverable-forward.xml
  • products > fx > fx-ex28-non-deliverable-w-disruption.xml

Model Optimisation: Increase readability of condition names and simply the path expressions

What is being released

  • The names of all of the type conditions in the CDM have been renamed to increase readability.
  • The paths defined in the conditions no longer need to start with the type of the condition. This greatly increases the readability of the conditions.

Review Directions

  • Navigate to the Frequency type and see the condition named PositivePeriodMultiplier. This was previously named Frequency_periodMultiplier.

  • See that the path that the path is simpliefied:

    • Before: if Frequency -> period = PeriodExtendedEnum -> T then Frequency -> periodMultiplier = 1
    • After: if period = PeriodExtendedEnum -> T then periodMultiplier = 1

All conditions throughout the CDM have been updatged in similar ways.

2.32.1

CDM Model: Collateral Eligibility Schedules

What is being released

Further changes to the collateral eligibility schedules following a workshop with Acadia.

  • New enum values added to CollateralIssuerTypeClassification and CollateralType, and new enum CollateralSubType added.
  • EligibleCollateral attribute of type UnderlyingCurrency removed and replaced by denominatedCurrency.
  • Existing enum ProductIdSourceEnum value ICAD has moved to TaxonomySourceEnum.
  • MultipleCreditNotations has attributes mismatchResolution and referenceAgency added to specify how to resolve mismatches between ratings.

The type EligibleCollateral now has 5 attributes:

    issueInformation CollateralIssueInformation (1..1)    denominatedCurrency string (1..*)        [metadata scheme]    maturityRange MaturityRange (1..1)    agencyRating AgencyRating (0..1)    valuationPercentage CollateralValuationPercentage (1..1)

Review Directions

In the Textual Browser, review the following:

  • types: EligibleCollateral, MultipleCreditNotations, CollateralIssueInformation, CollateralType, AgencyRating and CollateralValuationPercentage.
  • enums: CollateralIssuerTypeClassificationEnum, CollateralTypeEnum and CollateralSubTypeEnum.

2.32.0

Infrastructure: Projection

What is being released

Changes to projection infrastructure following recent changes to allow data rules to call functions.

2.31.1

Model Optimisation: Price Refactor for Equity Swaps

What is being released

Following the recent price refactor, the synonyms, data rules and functions for Equity Swaps have been migrated to the new product-agnostic, generic price model.

Remove synonyms from deprecated model attributes:

  • Contract.contractualProduct.economicTerms.payout.equityPayout.priceReturnTerms.initialPrice
  • Execution.product.contractualProduct.economicTerms.payout.equityPayout.priceReturnTerms.initialPrice

Add synonyms to refactored model attributes:

  • Contract.contractualPrice.priceNotation.price.*
  • Execution.price.priceNotation.price.*

Remove deprecated attribute PriceReturnTerms.initialPrice.

Add data rule that checks triangulation between Price, Quantity (no. of units) and Quantity (notional) that applies to any applicable Contract or Execution (not just Equity Swaps).

Review Directions

In the Textual Browser, review the following:

  • types: PriceReturnTerms, PriceNotation
  • data rules: Contract_cashPrice_quantity_noOfUnits_triangulation, Execution_cashPrice_quantity_noOfUnits_triangulation
  • functions: CashPriceQuantityNoOfUnitsTriangulation

In the Ingestion Panel, try one of the following samples:

  • products > equity > eqs-ex01-single-underlyer-execution-long-form.xml
  • products > equity > eqs-ex10-short-form-interestLeg-driving-schedule-dates.xml

Event Model: Workflow Step Refactor for Clearing

What is being released

The Event model in the CDM has been adjusted to cater for the clearing usecase. The concept of WorkflowStep has been introduced to model a step in a workflow that can either be in a state of propose, accept or reject.

The WorkflowEvent has been removed from the model and its properties have been re-organised into WorkflowStep and BusinessEvent.

BusinessEvent now contains eventDate, effectiveDate, intent and eventQualification.

Updated the definitions for BusinessEvent and PrimitiveEvent.

All Event Qualifications now function on the BusinessEvent rather then the WorkflowEvent.

Introduced BusinessEventInstruction which defines the instructions to execute a CDM function to contruct a BusinessEvent.

The BusinessEventInstruction can be one-of ClearingInstruction or AllocationInstructions with the intention to add further types.

ContractFormation can be created without a before state to allow fully formed Contract created without an Execution.

Review Directions

In the Textual Browser, review the following:

  • types: WorkflowStep, BusinessEvent, PrimitiveEvent, BusinessEventInstruction and ClearingInstruction.

2.22.8

CDM Model: Collateral Eligibility Schedules

What is being released

CDM model representation of data relevant for collateral eligibility schedules has been enhanced. This is found under EligibleCollateral.

There are 6 key attributes relevant for this feature of collateral documentation:

  • issueInformation CollateralIssueInformation
  • underlyingCurrency UnderlyingCurrency
  • maturityRange MaturityRange
  • issuerAgencyRating IssuerAgencyRating
  • issueAgencyRating IssueAgencyRating
  • haircut CollateralHaircut

For reference purposes, the previous model have has been renamed to EligibleCollateralFpMLMapped. This will be removed once the new model is complete.

Review Directions

  • Review enhancements to EligibleCollateral and associated types and enums.
  • Review new values in enum ProductIdSourceEnum (added under "//added new").
  • Review additional text to reference EligibleCollateralFpMLMapped.

2.22.5

CDM Model: Collateral Eligibility Schedules

What is being released

CDM model representation of data relevant for collateral eligibility schedules has been enhanced. This is found under EligibleCollateral.

There are 6 key attributes relevant for this feature of collateral documentation:

  • issueInformation CollateralIssueInformation
  • underlyingCurrency UnderlyingCurrency
  • maturityRange MaturityRange
  • issuerAgencyRating IssuerAgencyRating
  • issueAgencyRating IssueAgencyRating
  • haircut CollateralHaircut

For reference purposes, the previous model have has been renamed to EligibleCollateralFpMLMapped. This will be removed once the new model is complete.

Review Directions

  • Review enhancements to EligibleCollateral and associated types and enums.
  • Review new values in enum ProductIdSourceEnum (added under "//added new").
  • Review additional text to reference EligibleCollateralFpMLMapped.

2.22.4

CDM Code Generation: Scala

What is being released

New code generator that projects the CDM into Scala.

  • Scala code generated for all CDM types and enums.
  • JSON serializer / deserializer provided in Scala distribution.
  • Interoperability with other generated CDM code - E.g. serialized CDM Scala artefacts are identical to serialized Java CDM artefacts.
  • Injected into CDM build pipeline so all new CDM releases will include Scala code artefacts.
  • Scala download tile added to the ISDA CDM Portal Downloads page.

Review Directions

  • In the CDM Portal, go to Downloads section and download Scala distribution.

2.22.3

Model Optimisation: Quantity Refactor - Add Functions To Resolve Payout Quantity

What is being released

Following on from the recent migration to a product-agnostic quantity model, functions have now been added to resolve the payout quantity.

  • func ResolvePayoutQuantity: for a given ResolvablePayoutQuantity, the function resolves and returns the corresponding quantity from the QuantityNotations by matching on AssetIdentifier.
  • func ResolveContractualProduct: for a given ContractualProduct, the function finds all ResolvablePayoutQuantity instances, then for each instance, resolves the quantity, populates the quantity attribute on ResolvablePayoutQuantity, and finally returns the updated ContractualProduct.

Note that only the function inputs and outputs are specified natively in the CDM, with the implementation in Java. Depending on WG feedback, further work could be undertaken to add the required syntax to support writing the implementation natively in the CDM.

Review Directions

  • In the Textual Browser, review function specifications ResolvePayoutQuantity and ResolveContractualProduct.
  • In the downloaded CDM distributable, review corresponding Java implementations ResolvePayoutQuantityImpl.java and ResolveContractualProductImpl.java.

2.22.0

Rosetta Syntax Upgrade: Migrate isProduct, isEvent and alias to use the func syntax

What is being released

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when adding and editing the CDM.

  • The Event Qualification logic is now expressed using the func syntax.
    The isEvent has now changed to use the standard func syntax. To differentiate this kind of function from others, it is annotated with [qualification event] and must always result in a boolean.

  • The Product Qualification logic is now expressed using the func syntax.
    The isProduct has now changed to use the standard func syntax. To differentiate this kind of function from others, it is annotated with [qualification product] and must always result in a boolean.

  • The alias syntax was previously used in two different ways, within functions and as a top-level element designed to be used in the isEvent and isProduct logic. The latter has now been expressed as a func.

Review Directions

In the Textual Browser, review func InterestRate_IRSwap_Basis for product qualification and Allocation for event qualification.

The change for 'Allocation' expresses the same logic but defines the input and output types consistent with other parts of the model:

Previous syntax:

isEvent Allocation <"...">    WorkflowEvent -> businessEvent -> primitives count = 1    and WorkflowEvent -> businessEvent -> primitives -> allocation exists

Updated syntax:

func Allocation: <"...">    [qualification event]    inputs: workflowEvent WorkflowEvent(1..1)    output: is_event boolean (1..1)      assign-output is_event:        workflowEvent -> businessEvent -> primitives count = 1        and workflowEvent -> businessEvent -> primitives -> allocation exists

The change for InterestRate_IRSwap_Basis expresses the same logic but defines the input and output types consistent with other parts of the model:

Previous syntax:

isProduct InterestRate_IRSwap_Basis    [synonym ISDA_Taxonomy_v1 value "InterestRate_IRSwap_Basis"]    EconomicTerms -> payout -> interestRatePayout -> rateSpecification -> floatingRate count = 2    and EconomicTerms -> payout -> interestRatePayout -> rateSpecification -> fixedRate is absent    and EconomicTerms -> payout -> interestRatePayout -> rateSpecification -> inflationRate is absent    and EconomicTerms -> payout -> interestRatePayout -> crossCurrencyTerms -> principalExchanges is absent    and EconomicTerms -> payout -> optionPayout is absent

Updated syntax:

func InterestRate_IRSwap_Basis:    [qualification product]    inputs: economicTerms EconomicTerms (1..1)        output: is_product boolean (1..1)        [synonym ISDA_Taxonomy_v1 value "InterestRate_IRSwap_Basis"]            assign-output is_product:        economicTerms -> payout -> interestRatePayout -> rateSpecification -> floatingRate count = 2        and economicTerms -> payout -> interestRatePayout -> rateSpecification -> fixedRate is absent        and economicTerms -> payout -> interestRatePayout -> rateSpecification -> inflationRate is absent        and economicTerms -> payout -> interestRatePayout -> crossCurrencyTerms -> principalExchanges is absent        and economicTerms -> payout -> optionPayout is absent

The change for forwardFX alias also expresses the same logic but defines the input and output types consistent with other parts of the model:

Previous syntax:

alias forwardFX    ForwardPayout -> underlier -> underlyingProduct -> foreignExchange

Updated syntax:

func ForwardFX:    inputs:        forwardPayout ForwardPayout(1..1)    output: result ForeignExchange (1..1)    assign-output result: forwardPayout -> underlier -> underlyingProduct -> foreignExchange

2.21.7

Model Optimisation: Quantity Rector - Remove Deprecated Types and Attributes

What is being released

  • Remove deprecated attributes Quantity.currency as it now defined by ResolvablePayoutQuantity.assetIdentifier.currency as part of the new generic quantity model.
  • Refactor type Underlier so it contains attribute underlyingProduct, and remove deprecated types SingleUnderlier and Basket.

Review Directions

In the Textual Browser, review types Quantity, ResolvablePayoutQuantity and Underlier.

2.21.6

Model Optimisation: Remove Deprecated Type ContractualQuantity

What is being released

Following the recent quantity refactor, the synonyms and data rules for all products have been migrated to the new product-agnostic, generic quantity model.

The unused ContractualQuantity type has been deleted as well as some associated sub-attributes. The quantityBeforeQuantityChange and quantityAfterQuantityChange logic has been reduced to use a single quantity attribute as found in the top-level QuantityNotation object. This means that the logic for the QuantityChangePrimitive is now completely transparent and contains no product-specific logic.

Review Directions

In the Textual Browser, search for quantityBeforeQuantityChange and quantityAfterQuantityChange aliases which have been compressed into one product-agnostic statement.

Model Optimisation: Quantity Refactor for CD Options, Swaptions and Bond Options

What is being released

Following the recent quantity refactor, migrate synonyms to the new model for products CD Options, Swaptions and Bond Options.

Remove synonyms from deprecated model attributes:

  • Contract.contractualProduct.economicTerms.payout.*.quantity
  • Execution.product.contractualProduct.economicTerms.payout.*.quantity

Add synonyms to refactored model attributes:

  • Contract.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.*
  • Contract.executionQuantity.quantityNotation.*
  • Execution.product.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.*
  • Execution.executionQuantity.quantityNotation.*

Review Directions

In the Ingestion Panel, try one of the following samples:

  • products > credit > cd-swaption-usi.xml
  • products > credit > cd-swaption-uti.xml
  • products > credit > cdx-index-option-uti.xml
  • products > credit > itraxx-index-option-uti.xml
  • products > rates > bond-option-uti.xml
  • bundles > transfer-physical-exercise-bundle.xml

2.21.5

Root Type annotation

What is being released

A new annotation of "rootType" that will be used to drive behaviour of ingestion, validation, projection etc

Review Directions

A few initial classes have already been annotated as root types - WorkflowEvent, Contract, LegalAgreement

2.21.3

Model Optimisation: Quantity Refactor for Resetting Xccy Swaps, Repo and BRL CDI Swaps

What is being released

Following the recent quantity refactor, migrate synonyms to the new model for products Resetting Xccy Swaps, Repo and BRL CDI Swaps.

Remove synonyms from deprecated model attributes:

  • Contract.contractualProduct.economicTerms.payout.*.quantity
  • Execution.product.contractualProduct.economicTerms.payout.*.quantity

Add synonyms to refactored model attributes:

  • Contract.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.*
  • Contract.executionQuantity.quantityNotation.*
  • Execution.product.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.*
  • Execution.executionQuantity.quantityNotation.*

Remove deprecated model types, attributes and aliases: ContractualQuantity.quantity, ContractualQuantity.notionalSchedule, ContractualQuantity.fxLinkedNotional, ContractualQuantity.futureValueNotional, NotionalSchedule, NotionalStepRule, StepRelativeToEnum, NonNegativeAmountSchedule, NonNegativeSchedule, quantityAfterQuantityChange and quantityBeforeQuantityChange.

Review Directions

In the Ingestion Panel, try one of the following samples:

Resetting Xccy Swaps:

  • products > rates > ird-ex25-fxnotional-swap-usi-uti.xml
  • products > rates > cdm-xccy-swap-before-usi-uti.xml
  • products > rates > cdm-xccy-swap-after-usi-uti.xml

Repo:

  • products > repo > repo-ex01-repo-fixed-rate.xml
  • products > repo > repo-ex02-repo-open-fixed-rate.xml
  • products > repo > repo-ex03-repo-fixed-rate.xml
  • products > repo > repo-ex04-repo-floating-rate.xml
  • products > repo > repo-ex05-repo-fixed-rate.xml
  • products > repo > repo-ex06-repo-fixed-rate.xml
  • events > inception-repo.xml

BRL CDI Swaps:

  • products > rates > ird-ex33-BRL-CDI-swap-versioned.xml
  • cme-cleared-confirm-1-17 > IRD_EX33_BRL_CDI_SWAP.xml

2.21.1

Infrastructure changes: Ingestion Error Handler

What is being released

Infrastructure changes to add more error details for ingestion.

2.21.0

Model Optimisation: Quantity Refactor for FRAs

What is being released

Following the recent quantity refactor, migrate FRA producs synonyms to the new model.

Migrate synonyms from:

  • Contract.contractualProduct.economicTerms.payout.*.quantity
  • Execution.product.contractualProduct.economicTerms.payout.*.quantity

To:

  • Contract.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.* and
  • Contract.executionQuantity.quantityNotation.*
  • Execution.product.contractualProduct.economicTerms.payout.*.payoutQuantity.assetIdentifier.*
  • Execution.executionQuantity.quantityNotation.*

Review Directions

In the Ingestion Panel, try one of the following samples:

  • products > rates > ird-ex08-fra.xml and ird-ex08-fra-no-discounting.xml
  • products > equity > eqs-ex01-single-underlyer-execution-long-form.xml and eqs-ex10-short-form-interestLeg-driving-schedule-dates.xml
  • cme-cleared-confirm-1-17 > FRA_New_Trade.xml and USD_FRA_ClearingConfirm.xml
  • cme-submission-irs-1-0 > USD_FRA_Submission.xml

2.20.9

Infrastructure / Regression Test Improvements

What is being released

Regression test changes to allow more granular model validation test assertions.

Instance Viewer Changes

What is being released

  • Fixed bug where some edges where self referencing so they would leave empty arrows on the nodes in the graph.
  • Switched to a unified approach to word wrapping inside each node in the graph.
  • Implemented a change that will pass the node ancestry on to the UI thereby allowing us to populate edges with parent access fields such as ‘before’ and ‘after’.

2.20.8

CDM Instance Viewer and Projection Tiles

What is being released

CDM Instance Viewer and Projection Tiles are now available in the CDM Portal.

The CDM Instance Viewer Tile visually represents CDM Event and CDM Event Sequences. Users drag-and-drop CDM JSON documents in to the UI, which generates the corresponding visual representation. The visualisation displays relationships between Events in a sequence and key CDM objects within each Event.

Projection Tile translates CDM Documents into FpML 5.10. Users again drag-and-drop CDM JSON documents in to the UI, which generates the FpML document.

Review Directions

Users are invited to navigate to the CDM Portal where the above Tiles are available.

2.20.7

Clear and Terminate Functions

What is being released

  • Added Terminate function spec to the CDM. The Terminate function takes a Contract as an input and return a Contract with a 0 quantity an the closed state enum set to Terminated.

  • Added a Clear function to replicate the agency clear model that will create an Event with 5 primitives: QuantityChange to terminate the alpha, an Execution and ContractFormation for the creation of the beta and an Execution and ContractFormation for the creation of the gamma. This is fully implemented in the CDM and code generated in Java.

Review Directions

In the Textual Browser, see:

  • Terminate function def
  • Clear function def

In the Instance Viewer, open the IRS CLEARING example and see the visualisation of the execution of the Clear function.

2.20.4

ISDA Create Ingestion Mappings

What is being released

  • Added ISDA Create synonym mappings for LegalAgreementBase.partyInformation and conditional mapping for csdInitialMargin2016EnglishLaw, csaInitialMargin2016JapaneseLaw and csaInitialMargin2016NewYorkLaw attributes ensure only 2016 agreements are mapped (e.g. not 2018 agreements).

Review Directions

In the Ingestion Panel, see:

  • ISDA-Create > any file, following ingestion see that partyInformation and csdInitialMargin2016EnglishLaw/ csaInitialMargin2016JapaneseLaw/csaInitialMargin2016NewYorkLaw are now mapped correctly.

2.20.3

ISDA Create Ingestion Mappings

What is being released

  • Further updates related to ISDA Create document structure.
  • Added ISDA Create synonyms for LegalAgreement.identifier and Csa.documentationIdentification.masterAgreement.masterAgreementDate.

Review Directions

In the Ingestion Panel, see:

  • ISDA-Create > any file, following ingestion see that identifier and masterAgreementDate are now mapped.

2.20.2

ISDA Create Document Structure

What is being released

  • Update ISDA Create synonyms and ingestion to use their latest document structure.
  • Bug fix for ISDA Create synonyms mapping of MinimumTransferAmount and Threshold.

Review Directions

In the Ingestion Panel, see:

  • ISDA-Create > any file, and see that the new document structure is now mapped into the CDM.
  • ISDA-Create > any file, following ingestion see that MinimumTransferAmount and Threshold are now correctly mapped.

2.20.1

ISDA Create Document Structure

What is being released

  • Bug fix for ISDA Create synonyms mapping of MinimumTransferAmount and Threshold.

Review Directions

In the Ingestion Panel, see:

  • ISDA-Create > any file, following ingestion see that MinimumTransferAmount and Threshold are now correctly mapped.

2.19.2

ISDA Create Projection

What is being released

  • Bug Fix - small bug related to the Projection mapping of CDM type CustodyArrangements for CsaInitialMargin2016NewYorkLaw documents.

Review Directions

In the Projection Panel in Rosetta Core, see:

  • Drag and drop any ISDA Create Initial Margin 2016 NY Law CDM document and will now be projected into JSON.

2.19.1

ISDA Create Ingestion

What is being released

  • ISDA_Create_1_0 synonyms added to increase the Ingestion mapping coverage of CDM types MinimumTransferAmount, Threshold and PartyInformation.

Review Directions

In the Ingestion Panel, see:

  • ISDA-Create > any file, and see that the MinimumTransferAmount, Threshold and PartyInformation fields are now mapped.

ISDA Create Projection

What is being released

  • Projection mapping coverage added for CDM types MinimumTransferAmount, Threshold PartyInformation and CsaInitialMargin2016NewYorkLaw.

Review Directions

In the Projection Panel, see:

  • Drag and drop any ISDA Create Initial Margin 2016 NY Law CDM document and will now be projected into JSON.

2.18.0

Quantity and Price Refactoring - Initial Use Case: FX

What is being released

This is a follow-on from the quantity refactoring stream, which is now supplemented by a refactoring of the price concept too. In essence both the quantity and price are abstracted away from the contractual product definition, and positioned alongside it in either the contract and execution.

The refactoring is driven from the initial use case of representing FX products, starting with simple FX (spot and forward).

The changes aim at introducing the new price concept as well as furthering the clean-up of the quantity concept, following feedbacks received in the WG:

  • Introducing the PriceNotation type, similar to QuantityNotation, which is a generic type designed to capture different styles of prices. At this point only the CashPrice and ExchangeRate price styles have been represented, with a view to augment that list over time.
  • Introducing the AssetIdentifier type, which is both used in QuantityNotation and PriceNotation to uniquely identify the asset being quantified or priced.
  • Removing the QuantityTypeEnum and PriceTypeEnum types and corresponding quantityNotationTag attribute, which are now redundant since the type can be inferred from the assetIdentifier attribute.
  • Mapping of assetIdentifier attribute for currency and equity types, both outside the product (in the QuantityNotation) and inside the product (in the ResolvablePayoutQuantity). This allows, for instance, to uniquely identify where to position quantities in the legs of a XC Swap or in the underlyer of an Equity Swap.
  • Mapping of exchangeRate attribute in the PriceNotation object for (simple) FX products. The price attributes have now been extracted away from the FX product definition.
  • Mapping of options premium and other cash payment components as part of the cashPrice for contractual products.
  • Positioning of the price and contractualPrice attributes under the Execution / Contract objects, and unification of the price attribute in the former for both cash and contractual products, with the specialisation handled by the PriceNotation.
  • Plus some clean-up related to those changes.

This is only an initial implementation of the price refactoring and further work will be required to solidify the implementation for simple FX products scope first, then tackle more complex FX product (like options), and then move on to other product types.

Review Directions

In the textual Browser in the CDM Portal, see:

  • QuantityNotation and PriceNotation types and their use of the assetIdentifier attribute
  • Contract now shows all three contractualProduct, contractualQuantity and contractualPrice positioned side by side.
  • Execution shows the price and product attributes, generically across product types. Note that the quantity and executionQuantity still need to be unified.

In the Ingestion Panel, see:

  • Products > Rates > any XC Swap, and see that the currency has been kept as assetIdentifier as part of the quantity at the individual leg level
  • Products > Equity, and see that the asset identifier is now positioned in the contractualQuantity
  • Products > Rates > any Swaption, and see that the premium is now positioned as part of the contractualPrice.

Further synonym syntax consistency - hint, meta and mapper

  • Following restructuring of the synonym syntax to use quoted elements for both path and value, other synonym components such as hint, meta and mapper have been migrated to be quoted for consistency.

Review Directions

  • All synonyms now have consistent syntax. An example of the change is in the synonyms in the type BusinessEvent.

2.17.1

What is being released

  • Infrastructure change to support ingestion of ISDA Create in Rosetta Core
  • Bug fix of mapped internal paths for ingested JSON files.

2.16.0

Addition of WorkflowEventState and new ClearedTrade event qualification

What is being released

The isEvent ClearedTrade definition has been update as part of the Clearing process in the CDM. It is now defined by the termination of a contract (alpha) and an execution and contract formation of the beta and gamma with a party role of ClearingOrganisation.

The new WorkflowEventState type is where the status of the clearing process will be held (i.e. Accepted, Rejected). The type EventWorkflow has been renamed to WorkflowEventState so that it is not confused with the EventWorkflow type.

Review direction

Search for isEvent ClearedTrade to see the definition of ClearedTrade.
Navigate to WorkflowEvent and see the last attribute to see the usage of WorkflowEventState.

2.15.0

CDM to ISDA Create Projection

What is being released

Infrastructure work to support the projection from CDM into ISDA Create JSON documents. Initial projection service implementation and a simple mapping class support the projection of 'LegalAgreement CDM objects for English Law. Further mapping classes will be added soon.

Bug Fix This is a fix that will prevent incomplete sequence sample files from being generated. These files are generated for use within Rosetta Core Instance Viewer for seeding the visualisation with sample data.

Review direction

The projection functionality will be made available in Rosetta Core, and linked from CDM Portal, where users can drag and drop CDM JSON files in, which will be projected into ISDA Create documents and displayed as JSON.

2.14.1

Introduce the concept of Workflow Event

What is being released

WorkflowEvent is a higher-level concept on top of BusinessEvent (and contains it), to be used by implementors to build their own workflow rule-book that eventually leads to a state-transition (as expressed in the BusinessEvent).

  • Renamed the type Event to WorkflowEvent
  • Positioned the BusinessEvent type to be an attribute of the new WorkflowEvent
  • Renamed the Rosetta_Workbench synonym to Workflow_Event

Event Sequence Sample Testing event sequence sample files are located in the CDM codebse and used to generate visualisations in CDM Portal. These files will now be automatically tested to ensure that they are valid sueqences at the CDM Portal build time. This will ensure that they will allways be compatible with any model changes that are made.

Review direction

Visit the ISDA CDM Portal and navigatge to WorkflowEvent`.

2.13.3

CDM Portal - Introductory Video

What is being released

As part of on-going improvement, visual material is added to facilitate understanding of ISDA CDM and its supporting infrastructure. In this release an introductory video is added to the Home Page of the CDM Portal that explains the main features in the ISDA CDM and how to make use of them.

Additionally, the DerivHack 2019 Tile has been removed.

Review direction

Visit the ISDA CDM Portal to find the video on the Home Page.

2.13.2

Syntax Upgrade - Consistency across Synonym syntax

What is being released

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when contributing to the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This is the fifth release in a series of that will cover the scope described in the Rosetta Syntax Upgrade Wiki[1].

In this release, the Synonym syntax used on types and enums have been consolidated to bring consistency. All Synonym syntax now follow a single set of grammar rules and are represented by a single meta-model (Ecore) for each of code generation. An enumeration of changes below:

  1. Synonym Values, Synonym Path Values should both be inside double-quotes " ... "
  2. All model paths are represented with the arrow syntax ->. This applies to:
    1. CDM model attribute paths i.e. Event -> party -> assignedIdentifier;
    2. Enumeration values i.e. PartyRoleEnum -> Seller;
    3. Synonym path values i.e. [synonym DTCC_11_0 value "OTC_RM" path "Header", "OTC_Matching" path "Body" set when "Header->OTC_RM->Manifest->TradeMsg->TransType" = "Trade”]

For readability, auto-formatting feature was added to the new Syntax such that all CDM files and future contributions will have a consistent style in terms of white space i.e. new-lines, spaces and indentation.

This release also includes the following, related Bug Fix. Support was added to the as-key keyword such that it can operate on attributes with multiple cardinality. CDM will be updated to make use of this bug fix in the following releases.

Review direction

Make use of the Textual Browser Tile to inspect the new model syntax.

[1] https://github.com/REGnosys/rosetta-dsl/wiki/Rosetta-Syntax-Upgrade

2.12.1

What is being released

  • Added new type called BusinessEvent to capture just the collection of Primitive Events.
  • Changed the cardinality of BusinessEvent.primative from 1..1 to 1..*.
  • Changed the cardinality of all attributes of PrimitiveEvent from 0..* to 0..1 and introduced a one-of constraint.
  • Moved all primitive types to their own file for ease of navigating the model files.
  • Renamed primitives to have consistent naming convention (e.g. Inception changed to InceptionPrimitive)
  • Updated all qualifications to work with the primitives cardinality change.

Review direction

View the BusinessEvent type and PrimitiveEvent type in the CDM Portal to see the changes.

2.11.1

What is being released

Added tiles to the CDM Portal to allow users to directly link to functionality in Rosetta Core. The following links have been added:

  • CDM Instance Viewer - drag and drop CDM JSON events which will be displayed visually.
  • Projection - drag and drop CDM JSON files which will be projected into FpML 5.10 and displayed as XML.

Review direction

Clicking on either CDM Portal link will log the user into Rosetta Core and open the relevent panel.

2.10.0

CDM to FpML Projection

What is being released

Infrastructure work to support the projection from CDM into FpML 5.10 documents. Initial projection service implementation and mapping classes support the projection of products that qualify as InterestRate_IRSwap_FixedFloat.

Review direction

The projection functionality will be made available in Rosetta Core, where users can drag and drop CDM JSON files in, which will be projected into FpML 5.10 and displayed as XML.

2.9.1

DerivHack Feedback - Support Assignment of References

What is being released

From Barclays DerivHack 2019 event feedback, users requested the Function Syntax to support assigning references in addition to assigning values. This is necessary when specifying how the Lineage object should be populated, in the Function Syntax’s assign-output statements.

The Function Syntax now supports the as-key keyword within the context of an assign-output statement that effectively communicates to the reader (and to the underlying generated code) that it is the reference that will be assigned and not the value itself.

For example, in the below code snippet, we assign the global key of the Execution Event to the appropriate element on the Lineage object.

assign-output allocationEvent -> lineage -> eventReference:  executionEvent as-key

Review direction

In the Textual Browser, see the Execute, Allocate and Settle Functions where examples of where the new keyword is being used. The change has also been affected in the generated java code which can be used by CDM adopters.

2.8.0

Rosetta Syntax Upgrade - Data Types

What is being released

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when contributing to the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This is the fourth release in a series of that will cover the scope described in the Rosetta Syntax Upgrade Wiki[1].

In this release, the representation of data types were upgraded to bring greater readability of data types in the model and greater consistency of syntax between data types and functions.

The new syntax focuses on the essence of a data type definition and moves related extra details into annotations, such as the metadata attributes scheme and reference. These annotations can then be flexibly hidden from view for easier consumption of the model in textual or graphical form (to come in future releases). Technical symbols such as semi-colons and curly-braces were removed to bring further consistency between data types and functions.

Validation logic concerning a data type is now represented directly on the type to more closely associate these model facets. Data Rules, Choice Rules and One Of (rules) are now all represented within the ‘condition’ block on the data type. This eliminates the need to explicitly associate validation rules to data types, which also removes the need for the inconsistent syntax that was in use previous between the Data and Choice Rules.

The new syntax that represents data types is characterised by the type keyword, moving away from the class keyword, which can draw erroneous and confusing comparisons to Java classes. The Rosetta Type is different in that Rosetta Types represent data structures and data validation only - no further functionality is allowed on the type.

Review direction

To see the new syntax, make use of the Textual Browser in the CDM Portal. See especially the Interest Rate Payout object (line 8360) which gives a good representation of the changes.

The key keyword has been moved into an annotation under the type’s name as it is not critical to the data definition itself. The semi-colons at the end of each attribute has also been eliminated, along with the curly-braces. All validation logic associates with the Interest Rate Payout are now defined directly on the Interest Rate Payout type.

[1] https://github.com/REGnosys/rosetta-dsl/wiki/Rosetta-Syntax-Upgrade)

2.7.3

Event Qualification for Execution and ContractFormation Event Types

As part of the work relating to equity swaps and the refactoring of the Inception event, we are adding associated qualifiers for the recently introduced (Execution and ContractFormation) events, which fully realises the visual representation of the Equity Swap Reset workflow with all nodes and edges labelled correctly.

What is being released

  • Execution Qualifier - The qualification of an execution event from the fact that the only component is an execution.
  • Contract Formation Qualifier - The qualification of a contractFormation event from the fact that the only component is a contractFormation.

Review direction

  • The equity swap in the functions UI will now correctly qualify with the correct event types.
  • The new execution qualifier can be found on line 7622 of the textual browser.
  • The new contract formation qualifier can be found on line 7625 of the textual browser.

2.6.2

Quantity Refactoring: Credit Products Migrated

As presented in the 30-Jul-2019 CDM WG meeting, the essence of the restructuring is to abstract away the quantity from the contractual product definition, such that a contractual product is defined as a "unit" of that product, similar to how non-contractual products (e.g. securities) work. The actual quantity is handled as part of a separate QuantityNotation object, while the product uses the ResolvablePayoutQuantity type to implement the quantity mechanics in the various Payout legs of the product.

What is being released

Credit products (CDS, CD Index etc.) have been migrated to the new quantity representation.

As part of this release, the quantity referencing mechanism has been augmented with an additional attribute, to distinguish between different assets which quantities are being specified. So ResolvablePayoutQuantity now uses both Tag and Asset as identifiers to build its quantity reference. This is applicable in the XC Swap case, where the currency will be used as the Asset identifier.

Review direction

In the Ingestion Panel of the CDM Portal:

  • Look at Products / Credit and search for keyword quantity in the output, to see where respective elements are now positioned.

2.6.1

Quantity Refactoring: Credit Products Migrated

As presented in the 30-Jul-2019 CDM WG meeting, the essence of the restructuring is to abstract away the quantity from the contractual product definition, such that a contractual product is defined as a "unit" of that product, similar to how non-contractual products (e.g. securities) work. The actual quantity is handled as part of a separate QuantityNotation object, while the product uses the ResolvablePayoutQuantity type to implement the quantity mechanics in the various Payout legs of the product.

What is being released

Credit products (CDS, CD Index etc.) have been migrated to the new quantity representation.

As part of this release, the quantity referencing mechanism has been augmented with an additional attribute, to distinguish between different assets which quantities are being specified. So ResolvablePayoutQuantity now uses both Tag and Asset as identifiers to build its quantity reference. This is applicable in the XC Swap case, where the currency will be used as the Asset identifier.

Review direction

In the Ingestion Panel of the CDM Portal:

  • Look at Products / Credit and search for keyword quantity in the output, to see where respective elements are now positioned.

2.5.19

What is being released

  • Infrastructure and documentation changes

2.5.17

What is being released

  • Fix Allocate and Settle sample function implementations
  • Add sample functions and test to the ISDA examples distribution

2.5.16

What is being released

  • Fix Allocate and Settle sample function implementations
  • Add sample functions and test to the ISDA examples distribution

2.5.15

What is being released

  • Update DerivHack 2019 Tile to point to CDM version 2.5.11

2.5.14

What is being released

  • Add additional resources to CDM Portal

2.5.11

What is being released

  • Enable CDM Portal to Rosetta Core link button for all users

2.5.10

What is being released

  • New tiles in the CDM Portal to support the up comming Barclays DerivHack 2019 event

2.5.8

What is being released

  • Patch: Add support for bulk adding users to CDM Portal and Rosetta Core
  • Patch: Fixes to the Equity Reset event model and associated generated code (no data changes)

2.5.4

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

  • Added Event parameter to Allocate and Settle functions to allow the previous event to be assigned to the output event Lineage.

Review Directions

  • In the CDM Textual Browser review functions Allocate and Settle.

2.5.3

Re-releasing 2.5.2 with updated release notes.

Rosetta Syntax Upgrade

What is being released

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when adding to, and editing the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This is the third release in a series of that will cover the scope described in the Rosetta Syntax Upgrade Wiki[1].

In this release, usability features were added to support contributing to the CDM. Content Assist features make suggestions as you edit the CDM. Validation features check for correct use of types and cardinality of model elements when making model references, which is especially important when specifying Functions.

Generated Java code has also been consolidated such that all Functions generate Java code in the same structure. This makes reuse of the internal meta-model and will make external code generators easier to create and make the generated Java code easier for users to understand.

Review Directions

For the usability features, look out for the announcement of the soon to be released Rosetta Core Community Edition application that will allow users to edit and contribute directly to the CDM.

For the generated Java artefacts: in the CDM Distribution Pack (accessible via the Downloads UI of the Portal), inspect the generated Java code

[1] https://github.com/REGnosys/rosetta-dsl/wiki/Rosetta-Syntax-Upgrade)

Proposed model changes as part of an on-going effort to augment the product coverage with securities

What is being released

  • Added sample implementation of existing function Settle which focuses on the securities use case.

Review Directions

  • In the downloaded CDM Distribution review sample function implementation SettleImpl.java and SettleTest.java.

2.5.2

Rosetta Syntax Upgrade

What is being released

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when adding to, and editing the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This is the third release in a series of that will cover the scope described in the Rosetta Syntax Upgrade Wiki[1].

In this release, usability features were added to support contributing to the CDM. Content Assist features make suggestions as you edit the CDM. Validation features check for correct use of types and cardinality of model elements when making model references, which is especially important when specifying Functions.

Generated Java code has also been consolidated such that all Functions generate Java code in the same structure. This makes reuse of the internal meta-model and will make external code generators easier to create and make the generated Java code easier for users to understand.

Review Directions

For the usability features, look out for the announcement of the soon to be released Rosetta Core Community Edition application that will allow users to edit and contribute directly to the CDM.

For the generated Java artefacts: in the CDM Distribution Pack (accessible via the Downloads UI of the Portal), inspect the generated Java code

[1] https://github.com/REGnosys/rosetta-dsl/wiki/Rosetta-Syntax-Upgrade)

Proposed model changes as part of an on-going effort to augment the product coverage with securities

What is being released

  • Added sample implementation of existing function Settle which focuses on the securities use case.

Review Directions

  • In the downloaded CDM Distribution review sample function implementation SettleImpl.java and SettleTest.java.

2.4.14

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

  • Added sample implementation of existing functions NewTransferPrimitive which focuses on the securities use case.
  • Refactor function spec Settle to use new syntax feature assign-output.

Review direction

  • In the CDM Textual Browser review function Settle.
  • In the downloaded CDM Distribution review sample function implementation NewTransferPrimitiveImpl.java.

2.4.11

What is being released

Reset Model Improvements - Phase 2

This release implements the proposals to improve the Reset Model such that the Reset Primitive is consistent with other Primitive Events (i.e. that it contains both the “before” and “after” states). The before and after states are represented by the Contract State object, which is to be use to hold a history of reset values to be used in calculations which depend on multiple values. The subsequent cash flow that results from a Reset Event is now captured in a separate Cash Transfer Event.

At this stage, the full history of Resets have not been captured in the Contract State object, however it will do so in a future iteration.

In addition to changes to the data model, new Functions were introduced to specify how CDM users should transition a Contract through a a Reset and Payment Event.

New Functions to specify the Reset Event: Reset, NewResetPrimitive, ResolveUpdatedContract, ResolveEquityContract.
New Functions to specify the Cash Transfer Event: TransferCash, NewCashTransferPrimitive, ResolveCashflow, EquityCashSettlementAmount

Contract Creation Model Improvements

Additionally in this release, new Functions are added to specify how Executions and Contracts should be created. This reflects the previously approved proposal to split the Inception Primitive into Execution and ContractFormation Primitives and adds support for the Allocation use case.

New Functions to specify the Execution and Contract Formation: Execute, NewExecutionPrimitive, FormContract, NewContractFormationPrimitive

Review direction

Equity Reset Model

To review the above changes, we make use of the Equity Reset use case as context. In the Functions UI, the equity-swap Event Sequence now describes the steps involved in creating an Equity Swap Execution which results in an Equity Swap Contract, then a subsequent Reset and Payment Event.

The visualisation showcases the outputs of each Function as it is executed as well as how the output of one function is used in the inputs to the next. The output JSON represent the results of example implementations of the Functions specified in the CDM and thus the JSON objects will not have satisfied all cardinality and data constraints.

2.4.9

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

  • Added sample implementations of existing functions Allocate and NewAllocationPrimitive which focuses on the securities use case.
  • On Execution, mark the attribute Party as a reference. This is allows the Execution.party to be specified as a value (e.g. for a standalone Execution instance) or as a reference (e.g. when the Execution is part of an Event, where the Execution.party can be a reference to Event.party).
  • On Position, add attribute cashBalance to allow the cash settlement amounts to be aggregated.
  • On Lineage, add attribute transferReference so any previous transfers can be conveniently linked.

Review direction

  • In the CDM Textual Browser:
    • Review classes Execution, Position and Lineage.
    • Review functions Allocate and NewAllocationPrimitive.
  • In the downloaded CDM Distribution, review sample function implementations AllocateImpl.java and NewAllocationPrimitiveImpl.java and corresponding tests AllocateTest.java.

2.4.7

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

Added function EvaluatePortfolioState which takes Portfolio as an input and calculates the PortfolioState, including a list of Position based on the given AggregationParameters.

Review direction

  • In the CDM Textual Browser, review function EvaluatePortfolioState.
  • In the downloaded CDM Distribution, review sample function implementation EvaluatePortfolioStateImpl.java and test EvaluatePortfolioStateTest.java.

2.4.4

What is being released

Proposed model changes related to Confirmationand Affirmation classes as part of an on-going effort to augment the product coverage with securities

  1. Add lineage and status attributes.
  2. Fix minimum Party and PartyRole cardinality.

Review direction

In the CDM Textual Browser:

  • Review classes Confirmationand Affirmation.

2.4.2

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

  1. Add executionReference attribute to Lineage class.
  2. Add post-condition to Settle function to assert that the executionReference has been set.

Review direction

In the CDM Textual Browser:

  • Review class Lineage and function Settle.

2.4.1

Quantity Refactoring: several IR product types migrated

As presented in the 30-Jul-2019 CDM WG meeting, the essence of the restructuring is to abstract away the quantity from the contractual product definition, such that a contractual product is defined as a "unit" of that product, similar to how non-contractual products (e.g. securities) work. The actual quantity is handled as part of a separate QuantityNotation object, while the product uses the ResolvablePayoutQuantity type to implement the quantity mechanics in the various Payout legs of the product.

What is being released

Following previous (initial) release on Equity Swaps, several Interest Rates product types have been migrated to the new quantity mechanism: Swap (through Swap Stream), Swaption, CapFloor, Xccy Swap and Variable Notional. The Bond Option case has yet to be handled.

For Equity Swaps, a bug where the equity notional amount was not captured in the QuantityNotation has been fixed.

At the moment the mapping to existing FpML documents is being done "as-is". E.g. where the notional is represented 2x in each leg of a swap , we will have 2 quantityNotation attributes with the same value. Whereas in a xccy swap, they have different values but are also associated with different currencies. In "native" CDM objects, this attribute should either be unique, or have an associated data rule to verify that multiple instances do not have conflicting values.

The migration will carry-on gradually to encompass more product types, with credit derivatives as likely next candidate.

Review direction

In the Ingestion Panel of the CDM Portal:

  • Look at products / rates for the above product type examples, and search for keyword quantity in the output, to see where respective elements are now positioned.

Tutorials Page

What is being released

To aid users of CDM, a Tutorials page has been created, in which video tutorials will demonstrate the various ways to make use of CDM’s generated code artefacts. Initially, we have created a simple “Getting Started” video that shows how to access the ISDA CDM's generated code artefacts and setup the Maven project correctly in order to download all project dependencies.

More tutorials will be uploaded in the coming weeks and as always, all feedback is welcome, please share them via the usual channels.

Review direction

In the CDM Portal:

  • Look for the new Tutorial tile

2.3.0

What is being released

Move the DAML code generator into the external generators project where it can be maintained as an open source project

  1. Remove the hard coded DAML generator from the DSL project
  2. Create the DAML gnerator as a new project in the code generators repository
  3. Create a class to configure the build of CDM to run the DAML generation

Generate function specs for DAML

Review direction

In the CDM Textual Browser:

  • View download of CDM sources. Most files have only minor changes but there is a new Functions.daml

2.2.9

What is being released

Proposed model changes as part of an on-going effort to augment the product coverage with securities

  1. Affirmation specifies the information required when affirming a trade.
  2. Add post-trade processing states Confirmed and Affirmed to WorkflowStatusEnum.
  3. During trade post-processing, confirmation and affirmation can occur in any order. Change EventWorkflow to store all workflowStatus so all previous states can be checked. E.g. it can be checked whether workflowStatus contains both Confirmed and Affirmed.
  4. The TransferSettlementEnum (e.g. DeliveryVsPayment etc) is known at execution time, therefore it can be specified as part of the SettlementTerms.
  5. Proposals for Settle and NewTransferPrimitive funcs, initially supporting the use case of security settlement via DeliveryVsPayment method.

Review direction

In the CDM Textual Browser:

  • Review classes Affirmation, EventWorkflow and WorkflowStatusEnum, SettlementTerms.
  • Review functions Settle and NewTransferPrimitive.

2.2.6

What is being released

Further bug fix related Date serialization which affected reg reporting functionality in Rosetta Core.

2.2.5

What is being released

Rosetta Syntax Upgrade

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when adding to, and editing the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This is the second release in a series of that will cover the scope described in the Rosetta Syntax Upgrade Wiki[1].

In this release, the func syntax and supporting infrastructure were upgraded to support all remaining use-cases of spec, function and calculation. This consolidation of syntax simplifies the writing of Functions in the model and forces syntactic consistency across the model.

Other Changes

Fixed bug related Date serialization which affected reg reporting functionality in Rosetta Core, and caused failures in the testing infrastructure.

Review directions

From the CDM Portal, make use of the Textual Browser to inspect syntax changes in the model. Download the CDM Distribution Pack to inspect the change to generated Java code artefacts.

[1] https://github.com/REGnosys/rosetta-dsl/wiki/Rosetta-Syntax-Upgrade)

2.2.1

Initial quantity refactoring: Equity Swap

What is being released

As part of an on-going effort to restructure the handling of "quantity" in the CDM, this initial release implements the new structure in the model and applies it for Equity Swap products. Other product types will be migrated to this new structure over time (likely starting with Interest Rate Swap products).

As was presented in the 30-Jul-2019 CDM WG meeting, the essence of the restructuring is to abstract away the quantity from the contractual product definition, such that a contractual product is defined as a "unit" of that product, similar to how non-contractual products (e.g. securities) work.

To this end, 2 new main types are being introduced: QuantityNotation and ResolvablePayoutQuantity, that both leverage the existing Quantity type:

  1. QuantityNotation specifies the actual transacted quantity of a given product. It is meant to be specified alongside but separate from the ContractualProduct, as an additional attribute in an Execution or a Contract. The reason for the "notation" qualifier is that this object characterises the type of quantity being specified with a tag, taken from an enumeration value called QuantityNotationEnum. The types of quantities that can be specified include: Notional, NumberOfSecurities and the list is expected to grow over time as more product types get migrated. Multiple quantityNotation attributes can be specified for the same product: e.g. for Equity Swaps, both the number of securities and the notional can be specified (and a validation logic will need to be implemented to verify consistency as notional = no. securities x initial price).

  2. ResolvablePayoutQuantity, as its name suggests, is a resolvable quantity concept that applies to each of the underlying Payout legs through the payoutQuantity attribute. The principle is that a resolvable quantity can always be resolved into one number, based on: (i) the quantityNotationTag attribute that must be specified alongside the contractualProduct description, and (ii) a given date, where a schedule is applicable.

For instance: an EquityPayout leg may specify Notional as the tag for its payoutQuantity, in which case the notional will have to be fetched from the corresponding Notional quantity notation, which must be provided upon execution, to resolve the product. In addition to the base case where quantity is specified either directly as a number or indirectly through this quantity notation mechanism, the use-cases for ResolvablePayoutQuantity are:

  • Quantity based on some pre-defined schedule: e.g. amortising notional
  • Quantity based on some pre-defined events: e.g. resetting cross-currency notional
  • Quantity set as reference to another quantity: e.g. equity notional as no. securities x price

In practice, the Contract object has a contractualQuantity attribute containing the (potentially multiple) quantityNotation attributes, plus other information such as whether there is a pre-agreed mechanism to amend such quantity in future. synonyms have been implemented for the QuantityNotation and ResolvablePayoutQuantity classes for the Equity Swaps use-case only. Other product types have been left untouched. For technical reasons a (new but temporary placeholder) type called ExecutionQuantity is used for the contractualQuantity attribute, until such time when it will be renamed as, and supersede, the existing ContractualQuantity type which will be progressively "emptied-out".

Review direction

In the CDM Textual Browser:

  • Review the Contract type with the additional contractualQuantity attribute and its underlying quantityNotation attribute.
  • Review the InterestRatePayout and EquityPayout types, that implement the new PayoutBase containing the payoutQuantity attribute.

In the CDM Ingestion panel:

  • Test the products/equity use-cases, and see the structure of the newly ingested CDM. The actual quantity numbers (number of securities and notional) have been extracted away and replaced by tags in the product description. The actual numbers now sit under the contractualQuantity attribute that is part of the Contract object.

2.1.0

Rosetta Syntax Upgrade

As part of on-going improvements, the Rosetta syntax has been upgraded to consolidate language features. This work aims to simplify the syntax needed when adding to, and editing the CDM. This will become increasingly important as the number of CDM contributors increase and as CDM contributions starting coming from a variety of sources.

This release marks the first in a series of that will cover the scope described in this wiki. We start by focusing on the migration from calculation, function and spec to func as these objects provide the largest benefit from consolidation.

func offers a consistent syntax that can be used to express all 3 language features:

  • functions that represents only the inputs and outputs. A function’s implementation is to be provided by the implementor
  • specs that define the inputs, outputs and a set of condition that must be valid for a function to have been correctly implemented
  • calculations that are concrete and full implementations of functions.

Examples showing the before and after of this change in relation to the above language features (and otrhers) are also available on the wiki.

alias will also migrate to func, but will be addressed in a following release.

The code generators have also been simplified as a result of migrating to func, which makes contributions to the open sourced code generators easier, also.

See the Textual Browser for changes to the syntax and the Download Pack for changes to generated Java code.

2.0.136

Introduced function specs to build an Allocation Event and an AllocationPrimitive, and associated classes required to specify the allocation instructions.

2.0.128

  • Introduced Confirmation as an initial proposal to model a trade confirmation e.g. the document which parties to a derivativesor securities transaction use to acknowledge the details of the transaction.

  • Based on feedback in 30 Jul Design WG meeting, the clean price has been modelled as part of Price. As an initial implementation, the attribute cleanNetPrice has been added, consistent with the approach used in FpML.

2.0.127

A bug fix for CDM portal function example event-sequences/equity-swap.

Review directions

On the CDM portal Functions page, select file event-sequences > equity-swap and invoke function # 1.

2.0.126

Following model changes in 2.0.123, corresponding changes have been made to the AggregationParameters to support Event filtering for securities.

2.0.125

New aggregated documentation site

There is now a dedicated site for all the documentation: https://docs.rosetta-technology.io/
This will eventually host all relevant documentation.
The 'ISDA CDM' documentation link in the portal is now pointing at this site.

2.0.124

Initial instalment of the reset primitive refactoring

As part of the reset primitive refactoring effort introduced at the 30 Jul Design WG meeting, the ResetPrimitive class is being upgraded to work with before and after attributes, in line with other primitive events.

Those attributes are of (existing) ContractState type, which class is also being upgraded to reflect the contract lifecycle mechanism. The state contains both a reference to the original contract and a contract with reset (updated) values, both of type Contract. This is further completed by a resolution function: ResolveContractState which, given a contract state, returns a contract object that knows how to calculate future events (like cashflows) based on the populated reset values.

Further developments (not part of this release) will consolidate the mechanism by which the CDM cleanly delineates the original contract reference and the reset values (as a schedule), that are meant to be passed as inputs to the contract state resolution function. This will ensure that the CDM is designed to accommodate implementations that can optimise memory footprint. Note for instance that at present, the original contract is not passed as a reference but as the entire object, due to a technical limitation that will be lifted in a later release.

Due to the fundamental change in handling of reset as a before/after, existing reset mechanism as previously demonstrated in the CDM Portal (e.g. ingestion of a reset event) has been disabled, to be replaced by a reset event process demonstration.

Review directions

Look a ResetPrimitive, ContractState and the ResolveContractState function spec.

2.0.123

  • Upgrade DAML code generation to use latest version.
  • Model changes to augment the CDM product coverage for securities

Additional attributes added to Execution:

  1. Quantity - used to specify the transacted amount and units.
  2. Price – used to specify the price, accrued interest and traded currency. This initial implementation models the transacted dirty price as the netPrice attribute, and models the difference between the clean and dirty prices as the accruedInterest attribute.
  3. SettlementTerms – used to specify the settlement amount and currency.

Data rules added to validate the Execution object for security transactions:

  1. Validate partyRole contains party references for both PartyRoleEnum.Buyer and PartyRoleEnum.Seller.
  2. Validate partyRole contains party references for both PartyRoleEnum.ExecutingEntity and PartyRoleEnum.Counterparty.
  3. Validate Quantity, Price and SettlementTerms exists.

2.0.119

  • Two additional ISDA Create NY Law documents were added to the ingestion/isda_create menu
  • Fix the display of portal apps based on the user’s role.

2.0.116

Further Documentation Update

Following the documentation overhaul in previous release 2.0.115, some further upgrade has been implemented, notably:

  1. Expanded explanation about the key implementation in the Rosetta DSL documentation. JSON snippet has been provided to illustrate implementation of the ‘internal’ and ‘external’ cross-referencing mechanism, whilst making it clear that this is part of the default Rosetta implementation but not part of the model itself (i.e. implementors can choose to do it differently and may choose to discard the ‘external’ references for instance).

  2. Refactored the CDM ‘Product Model’ section to enhance explanation about the model composability.

Review directions

Go to the Documentation / ISDA CDM tile in the CDM Portal, also directly accessible here:
https://portal.cdm.rosetta-technology.io/modeldoc/index.html

2.0.115

Updated Documentation

CDM Documentation as available on the portal has been entirely revisited. Notable changes and additions are:

  1. Clean separation of the documentation for the “Rosetta DSL”, which is now attached to the Rosetta DSL repo (https://github.com/REGnosys/rosetta-dsl). This follows the recent open-sourcing of the Rosetta DSL, which requires an associated (and stand-alone) documentation.
  2. Update to reflect recent work on Function Specification, both in terms of the syntax in the Rosetta DSL documentation, and usage as part of the CDM documentation, in particular for event specifications. Function specifications have been folded as part of a broader Function category in the CDM documentation, which also comprises the calculation components, so that the two can be compared and contrasted.
  3. Updated components diagram at the top of the documentation, aligned onto the structure of the various GitHub repos. The naming of model artefacts presented as CDM components in the diagram has been aligned onto the CDM artefacts presented in the documentation.
  4. Significantly improved readability through a combination of form and content work. Documentation has been re-designed to flow more easily by re-thinking some of the ordering and indexing and a better use of bullet points. A number of explanations have been altered or plainly re-written and some examples have been adjusted.
  5. Updated examples following recent alterations in the model, in particular regarding the calculation syntax.
  6. Small update to reflect recent work on Equity Swap, with examples.
  7. Notes provided where some re-assessment or refactoring or current status-quo should be considered.

Note: The Rosetta DSL documentation is referred by a link in the CDM documentation. This links takes the user to a GitHub page where documentation is displayed in a different theme than the one on the portal. More work will be required so that both the CDM and Rosetta DSL documentations can be merged and displayed under the same page and theme in the portal.

Review directions

Go to the Documentation / ISDA CDM tile in the CDM Portal, also directly accessible here:
https://portal.cdm.rosetta-technology.io/modeldoc/index.html

2.0.113

Functions UI

To better demonstrate Function Specifications or specs a new UI was built to demonstrate an example sequence of events that includes making use of specs.

The Functions UI starts by loading data into a “database”, which is done by converting a set of XML or FpML documents into CDM objects. Objects in that “database” are then used to invoke spec implementations which in turn produces further CDM objects as output. Specs implementations can be invoked one after another to form a chain of invocations.

The results of the initial data loading as well as subsequent spec invocations can be graphically visualised in a diagram that shows (in blue arcs) the Event Lineage and (in grey arrows) the essence of what each CDM object contains within it.

This UI replaces the Lineage UI.

Review directions

In the Portal, see the Functions UI, in the drop-down select the equity-swap example. In the section labelled Sequence Data are the external FpML Equity Swaps Confirmation message, its corresponding CDM Contract object (in JSON format) and all the associated CDM objects that were extracted from that Contract.

Below that, in the Invoke Function section, see the spec inputs and output. In parenthesis are the Global Keys of the objects being used in the function invocation. Those Global Keys will correspond to those found in the tab headings of the Sequence Data section.

Invoking a function will display the result of that invocation, which will be a CDM object in JSON format. The Lineage visualisation also updates as a result, reflecting creation of new CDM objects.

Spec Implementation

Each spec requires an implementation and for the purposes of producing the equity-swap example in the Functions UI, a number of example implementations were created to demonstrate how a CDM user could choose to proceed. It highlights what logic needs to be implemented versus what is provided by the spec itself.

Review Directions

In the CDM Distribution pack, unzip the cdm-sources Java Archive and see folder src/main/java/org/isda/cdm/functions/example for examples of Spec Implementations. NewContractEvent.java and NewExecutionFromProduct.java are good examples to start with. Note: take care to inspect RosettaFunctionExamples.java on how dependency injection is managed.

2.0.111

Rosetta Grammar and Code Generator support for Function Specifications.

Continuing from previous work that added support for Function Specifications or specs for short, the Rosetta Grammar was upgraded to support all the expressions required to define the specs released from version 2.0.88 and onwards.

Specifically, grammatical rules for exists, is absent, contains, if statements and references to other specs were added, making re-use of infrastructure that was in place for data rules.

Java Code Generation support was added for specs. For each spec a corresponding abstract Java class will be generated which defines the inputs, outputs, pre-conditions and post-conditions of a function. It also asks implementors to provide a concrete implementation of an “enrichment” function that should deal aspects of CDM object construction that are not captured by the spec itself.

Logic inside the generated Java classes reside mainly in the pre and post conditions, where code generation now supports in Java the full set of operators available in the grammar.

Review directions

In the Textual Browser, where sections of specs were disabled with TODO:s marking instances where upgrades to grammar and code generation were required.

In the CDM Distribution pack, unzip the cdm-sources Java Archive and see folder /src/generated/java/org/isda/cdm/functions for examples of generated Java code. NewContractEvent.java and QuantityChange.java are good examples of where to start looking.

2.0.106

Rosetta DSL and code generators are now public

We have made the following github repositories open source under the Apache 2.0 licence and publicly available:

https://github.com/REGnosys/rosetta-code-generators

https://github.com/REGnosys/rosetta-dsl

2.0.105

Calculation Bug-Fix

Fix for the interest rate calculation page in the CDM Portal, which had recently been broken as a side-effect of other changes to the model.

Review directions

Visit the “Calculation” page in the CDM Portal and try some calculations.

2.0.104

1. Underlier Refactoring

Usage of the Underlier is being refactored to be consistent across all pay-out types that make reference to it, namely:

  • EquityPayout (where Underlier was being uniquely used before)
  • OptionPayout (which was using Product before)
  • ForwardPayout (which directly specified the types of underlying products which could be used before)

As part of this refactoring, the settlementTerms attribute has also been rationalised within the ForwardPayout class, which now works in the same way as the OptionPayout class. The previous settlementDate attribute has been deprecated and moved to the broader settlementTerms one.

Note: a valueDate attribute of type date needed to be added within settlementTerms in order to make this work with ForeignExchange pay-outs because date is specified in hard, not adjustable. This should be fixed and merged with the existing settlementDate attribute, once the usage of various types of dates (absolute, adjustable or relative) is being refactored.

Review directions

See OptionPayout and ForwardPayout, and the “Ingestion” page on the CDM Portal for option and fx products.

2. DAML Download Disabled

Compiler has changed on DAML side, such that DAML code generated from CDM no longer builds. This will have to be looked as part of a subsequent release.