All releases

2.170.0

CDM Model: Realignment between Namespaces and Filenames

Background

Subsequent to the multiple versions of the CDM, the .rosetta filenames and namespaces have become inconsistent.

What is being released?

This release re-synchronises the filenames and namespaces.

Review Directions

In the CDM Portal, you can download a CDM distribution and inspect filenames versus namespaces.

2.169.3

Event Model - Mapping CME and DTCC events

Background

This release follows the recent work on the event model, which introduced a composable model for representing business events. Recent releases have updated FpML synonyms to re-map from the old to the new model.

What is being released?

This release updates the CME and DTCC synonym mappings to use the composable Event model.

Review Directions

In the CDM Portal, select Ingestion and review the samples in the cme-cleared-confirmed-1-17 and dtcc-11-0 folders.

In the CDM Portal, select Instance Viewer, and review the above samples in the cme-cleared-confirmed-1-17 and dtcc-11-0 folders.

2.169.2

Product Model - Party Contact Information

Background

This release extends the Party model to include Party Contact Information.

What is being released?

The ContactInformation data type has been added to Party and NaturalPerson to allow representation of Party address related information.

The PartyContractInformation data type has been removed from the CDM model. The data type handles concepts specific to Regulatory Reporting that will be handled in the DRR model.

Synonym mappings have been updated to reflect the model changes.

Review Directions

In the CDM Portal, select Textual Browser and reviw the data types above.

In the CDM Portal, select Ingestion and review the samples below:

  • isda-create > test-pack > production > 2018-im-csa-ny-law/2.2 > tp2-metadata2_cdm
  • fpml-5-10 > incomplete-products > loan > Loan_Bulk_ex100

Product Model - Product Identification Synonym Mapping

Background

This release extends the FpML to CDM synonym mappings for product identification.

What is being released?

The enhancing of the Product Identification mapping to handle a product description and the identification of a CFI code.

Types

base-staticdata-asset-common-enum

  • Added the enumeration Name to the enumeration list ProductIdTypeEnum

Synonyms

synonym-cdm-fpml

  • Added mapping coverage for the description FpML element.
  • Added mapping coverage for an externalProductTypeSource of CFI.

Review Directions

In the CDM Portal, select Ingestion and review the samples below:

  • fpml-5-10 > products > equity > eqd-ex01-american-call-stock-long-form
  • fpml-5-10 > products > credit > cdm-cds-ref-ob-versioned

Product Model - Interest Rate Product Qualification

Background

This release updates the Interest Rate Product Qualification rules to more accurately qualify OIS transactions.

What is being released?

The composable qualification rule Qualify_Transaction_OIS has been updated to include additional OIS Floating Rate Options so that Interest Rate Swap OIS contracts are qualified more accurately.

Review Directions

In the CDM Portal, select Textual Browser and reviw the function above.

In the CDM Portal, select Ingestion and review the samples below:

  • fpml-5-10 > products > rates > NDS-INR-uti

2.169.1

Product Model - FpML mapping of Basic Price Return and Total Return Swaps

Background

The Payout performancePayout was recently introduced to allow for representation of a wider variety of products, both new (Variance, Volatility, Correlation and Dividend Swaps) and already supported products (Basic Price Return and Total Return Swaps). In previous releases, the PerformancePayout was used to represent new products, and the deprecated EquityPayout was used to represent Basic Price and Total Return Swaps.

What is being released?

The FpML synonyms for Basic Price and Total Return Swaps have been moved from EquityPayout to PerformancePayout.

The following types and attributes have been updated:

  • ValuationDates type added to the model
  • EquityValuationDates type renamed as PerformanceValuationDates
  • PerformancePriceReturnTerms type renamed as PriceReturnTerms
  • PerformanceDividendReturnTerms type renamed as DividendReturnTerms
  • DividendPeriod->dividendPeriodStartDate attribute renamed as startDate
  • DividendPeriod->dividendPeriodEndDate attribute renamed as endDate
  • Enum value TradeDateadded to DividendDateReferenceEnum

The following qualification functions have been adapted for PerformancePayout:

  • Qualify_BaseProduct_EquitySwap
  • Qualify_EquitySwap_PriceReturnBasicPerformance_SingleName
  • Qualify_EquitySwap_TotalReturnBasicPerformance_SingleName
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Index
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Index
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Basket
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Basket

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

fpml-5-10/products/equity

  • eqd-ex01-american-call-stock-long-form.xml
  • eqd-ex04-european-call-index-long-form.xml
  • eqs-ex01-single-underlyer-execution-long-form.xml
  • eqs-ex01-single-underlyer-execution-long-form-other-party.xml
  • eqs-ex06-single-index-long-form.xml
  • eqs-ex09-compounding-swap.xml
  • eqs-ex10-short-form-interestLeg-driving-schedule-dates.xml
  • eqs-ex11-on-european-single-stock-underlyer-short-form.xml
  • eqs-ex12-on-european-index-underlyer-short-form.xml
  • eqs-ex13-pan-asia-interdealer-share-swap-short-form.xml
  • eqs-ex14-european-interdealer-share-swap-short-form.xml

2.168.1

Floating Rate Index Reference Data model - Extended FloatingRateIndexDefinition

Background

Since the design of the CDM Floating Rate Index Definition model in 2021, the ISDA 2021 Interest Rate Definitions have expanded the metadata requirements. This change reflects the latest metadata specifications for ISDA Floating Rate Options.

What is being released?

FROs Metadata extensions

Extended FloatingRateIndexDefinition type with:

  • Changed existing fro element from FloatingRateOption type to a new FloatingRateIndexIndentification type

  • Added new FloatingRateIndexIndentification type with:

    • New floatingRateIndex element of FloatingRateIndexEnum type
    • New currency element of ISOCurrencyCodeEnum type
    • New froType element of string type
  • Changed existing supportedDefinition element from ContractualDefinitionsEnum type to a new ContractualDefinition type

  • Added new ContractualDefinition type with:

    • New choice between:
      • New contractualDefinitionIdentifier element of ContratcualDefinitionIdentifier type
        • New contractualDefinitionType element of ContractualDefinitionsEnum type
        • New contractualDefinitionVersion element of string type
      • Existing identifier element of identifier type
    • New publicationDate element of date type
  • Extended existing FloatingRateIndexMap type with:

    • New choice between:
      • New contractualDefinitionIdentifier element of ContratcualDefinitionIdentifier type
        • New contractualDefinitionType element of ContractualDefinitionsEnum type
        • New contractualDefinitionVersion element of string type
      • Existing identifier element of identifier type
  • Changed cardinality of externalStandard element within FloatingRateIndexExternalMap type. From required (lower bound eq 1) to optional (lower bound eq 0)

  • Extended existing FloatingRateIndexCalculationDefaults with:

    • Changed cardinality of fixing element of FloatingRateIndexFixingDetails type. From upper bound eq 1 to unbounded.
    • Removed fixingTime and fixingOffset elements
    • New publicationCalendar element of BusinessCenterEnum type
  • Added new inLoan element of boolean type

  • Added new history element of FroHistory type

    • Added new FroHistory type with:
      • New startDate element of date type
      • New firstDefinedIn element of ContractualDefinition type
      • New updateDate element of date type
      • New lastUpdateIn element of ContractualDefinition type
      • New endDate element of date type
  • Added new administrator element of Administrator type

    • Added new Administrator type with:
      • New name element of string type
      • New website element of string type
  • Added new deprecationReason element of string type

  • Added new fpmlDescription element of string type

  • Extended existing FloatingRateIndexFixingDetails with:

    • Changed cardinality of fixingTime element. From unbounded to upper bound eq 1
    • Removed alternativeFixingTime element
    • Changed cardinality of fixingOffset element. From unbounded to upper bound eq 1
  • Extended existing FloatingRateIndexFixingTime with:

    • New fixingTimeDefinition of string type
    • New fixingReason of string type
  • Extended existing BusinessDayOffset with:

    • New fixingTimeDefinition of string type
    • New fixingReason of string type

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect the FloatingRateIndexDefinition type.

Event Model - Mapping FpML novation events

Background

The FpML mapping for business events was previously adjusted to map FpML event messages to a WorkflowStep instruction, i.e., a WorkflowStep containing a proposed BusinessEvent. Consequently a CDM implementer can use the WorkflowStep instruction with function Create_AcceptedWorkflowStepFromInstruction to create the corresponding fully-specified WorkflowStep event.

What is being released?

This release extends the FPML synonym mappings to address novation events.

Review Directions

In the CDM Portal, select Ingestion and review the samples below, which have been mapped to WorkflowStep instructions:

  • fpml-5-10/processes/msg-ex52-execution-advice-trade-partial-novation-C02-00.xml
  • fpml-5-10/processes/msg-ex53-execution-advice-trade-partial-novation-correction-C02-10.xml
  • fpml-5-10/processes/msg-novation-from_transferor.xml

In the CDM Portal, select Instance Viewer, and review the above samples in the FpML Processes folder, which create fully-specified WorkflowStep events from the ingested instructions.

2.168.0

Infrastructure

What is being released?

  • Release updated bundle to fix a bug in the CDM release pipeline

2.166.1

Product Model - FX Variance and Volatility Swaps

Background

The new Payout performancePayout was recently introduced to allow for representation of a wider variety of products, not only from the equity asset class, but also from any product involving a return determined by an observation. This release introduces support for the first non-equity products, namely FX variance swaps and FX volatility swaps.

What is being released?

  • Minor changes to Performance Payout to enable it to accommodate FX variance and FX volatility swaps.
  • Mapping coverage for FX variance and FX volatility swaps.
  • Minor adjustments to FX qualification functions.

Functions

  • dayType added to PeriodicDates type (base-datetime-type)
  • priceremoved from EquityObservation type (observable-asset-type)
  • Type of boundedCorrelation changed from BoundedCorrelation to NumberRange (product-asset-type)
  • numberOfObservationDates added to ObservationTerms type (product-common-schedule-type)
  • Unused AveragingObservation type removed (product-common-settlement-type)
  • Type performancePayout moved to product-template-type (product-common-settlement-type)
  • observationTerms added to performancePayout(product-template-type)

Qualification

Minor changes to:

  • Qualify_ForeignExchange_ParameterReturnVariance
  • Qualify_ForeignExchange_ParameterReturnVolatility

Translate

Added mapping coverage for FX variance and FX volatility swaps.

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

fpml-5-10/incomplete-products/fx-derivatives

  • fx-ex30-variance-swap.xml
  • fx-ex31-volatility-swap.xml

2.166.0

Infrastructure - Function Java Code Generation

What is being released?

This release updates the Java code generation for functions to ensure the function output object is cleaned of any empty objects, which can cause issues in implementing systems.

Review Directions

In the CDM Portal, select Instance Viewer and review the function outputs on the Visualisation panel.

2.165.0

Product Model - Performance Payout - Variance and Dividend Options

Background

The new Payout performancePayout was recently introduced to allow for representation of a wider variety of products. In this release, support for Options with a performance underlier has been introduced. In these products the use of PerformancePayout is not direct, but indirect, as the product underlying the option.

What is being released?

  • Minor changes to Performance Payout to enable it to accommodate Variance and Dividend Options.
  • Mapping coverage for Variance and Dividend Equity Options.
  • Qualification functions for Variance, Volatility, Correlation and Dividend Options.

Types

product-asset-type

  • Removed extraordinaryEvents from VarianceReturnTerms type.
  • Removed extraordinaryEvents from VolatilityReturnTerms type.
  • Added multipleExchangeIndexAnnexFallback to Valuation type.
  • Added componentSecurityIndexAnnexFallback to Valuation type.

product-template-type

  • Added EquitySpecificAttributes condition to PerformancePayout type.
  • Added expirationTimeType attribute to EuropeanExercise type.

Enumerations

  • Added ExpirationTimeTypeEnum.

Translate

synonym-cdm-fpml

Added mapping coverage for Variance, Volatility, Correlation and Dividend Options:

  • Qualify_EquityOption_ParameterReturnVariance_SingleName
  • Qualify_EquityOption_ParameterReturnVariance_Index
  • Qualify_EquityOption_ParameterReturnVariance_Basket
  • Qualify_EquityOption_ParameterReturnVolatility_SingleName
  • Qualify_EquityOption_ParameterReturnVolatiliy_Index
  • Qualify_EquityOption_ParameterReturnVolatiliy_Basket
  • Qualify_EquityOption_ParameterReturnCorrelation_Basket
  • Qualify_EquityOption_ParameterReturnDividend_SingleName
  • Qualify_EquityOption_ParameterReturnDividend_Index
  • Qualify_EquityOption_ParameterReturnDividend_Basket

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

fpml-5-10/products/variance-swaps

  • eqvs-ex06-variance-option-transaction-supplement
  • eqvs-ex07-variance-option-transaction-supplement-pred-clearing

fpml-5-10/products/dividend-swaps

  • div-ex04-dividend-swap-option-transaction-supplement
  • div-ex05-dividend-swap-option-gs-example
  • div-ex06-dividend-swap-option-pred-clearing

Product Model - FpML mappings for Equity

What is being released?

This release fixes FpML product synonym mapping issues for FpML equityOption samples, focusing on settlement type and currency.

Review Directions

In the CDM Portal, select Ingestion and review the samples specified below.

  • fpml-5-10/incomplete-products/equity-options
  • fpml-5-10/products/equity

2.164.0

Product Model - Party and Person Identification

Background

This release contains a set of changes to Partyand Person identification. The model now supports the enumeration of the nature of an identifier for both partyId and personIdinstead of relying on FpML metadata schemes to qualify the source of the identifier.

In addition, this release fixes an issue with a missing mapping for FpML knownAmountSchedule.

What is being released?

  • Change to partyId structure
    • Added new type PartyIdentifier allowing a Party to be represented by an identifier and an enumeration
    • partyId updated to be of type PartyIdentifier
    • Added new PartyIdentifierTypeEnumwith two values, BIC and LEI
  • Change to personId structure
    • Added new type PersonIdentifier allowing a Person to be represented by an identifier and an enumeration
    • personId updated to be of type PersonIdentifier
    • Added values NPID and PLID, and removed values BIC and LEI from PersonIdentifierTypeEnum
  • Updated model to model mappings as a result of the partyId and personId changes
  • Fix for knownAmountSchedule mapping

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect the updated partyId and personId structures and the associated enumerations PartyIdentifierTypeEnum and PersonIdentifierTypeEnum.

In the CDM Portal, select Ingestion and review the following sample trade to see partyId and personId changes:

  • fpml 5-10 > products > rates> USD-Vanilla-swap

2.163.4

Product Model - FpML mappings for Commodity and Credit

What is being released?

This release fixes various FpML product synonym mapping issues for commodity and credit samples.

  • Commodity - synonyms added to map FpML commoditySwaption samples that were previously unmapped.
  • Credit - synonyms updated to fix the mapping of FpML periodicPayment elements into paymentDates->paymentDateSchedule->interimPaymentDates->periodicDates.

Review Directions

In the CDM Portal, select Ingestion and review the samples specified below.

  • fpml-5-10/incomplete-products/commodity-derivatives

    • com-ex22-physical-gas-option-multiple-expiration.json
    • com-ex23-physical-power-option-daily-expiration-efet.json
    • com-ex29-physical-eu-emissions-option.json
    • com-ex31-physical-us-emissions-option.json
    • com-ex47-physical-eu-emissions-option-pred-clearing.json
  • fpml-5-10/incomplete-products/credit-derivatives (all samples)

2.163.2

Event Model - Mapping to CDM representation of business event

Background

The current mapping of FpML event messages to CDM requires pointing to BusinessEvent with a set of PrimitiveEvent. This approach deviates from the recommended design that uses a set of after TradeState and a set of Instruction, each including a before Tradestate. Structurally, many FpML events messages are analogous to the latter. A few model changes have been made and synonyms have been adjusted to enable a more systematic mapping to a WorkflowStep instruction. The latter can then be processed by a CDM function to create the corresponding fully-specified WorkflowStep event.

What is being released?

This release focuses on the synonym mapping and infrastructure changes to map FpML events to WorkflowStep instruction and subsequently invokes a function to create a WorkflowStep event.

Model changes

  • Add new type EventInstruction to group the attributes required for BusinessEvent creation, i.e., List of Instruction, an optional EventIntentEnum and an event date.
  • Update WorflowStep attributes proposedEvent and nextEvent to use the type EventInstruction.
  • Add new function Create_AcceptedWorkflowStepFromInstruction to create a fully-specified WorkflowStep event from an input WorkflowStep instruction.

Ingestion and infrastructure changes

  • The FpML_Processes samples for Contract Formation and Termination events have been mapped to WorkflowStep instruction.
  • The changes in synonym-cdm-fpml-processes.rosetta are focused on types WorkflowStep, EventInstruction and Instruction.
  • The WorkflowStep instructions are then processed by the Create_AcceptedWorkflowStepFromInstruction function to create a WorkflowStep event.

Review Directions

In the CDM Portal, select the Textual Browser and review types and functions mentioned above.

In the CDM Portal, select Ingestion and review the samples below, which have been mapped to WorkflowStep instructions:

  • fpml-5-10/processes/msg-ex51-execution-advice-trade-initiation-C01-00.xml
  • fpml-5-10/processes/msg-ex58-execution-advice-trade-initiation-F01-00.xml
  • fpml-5-10/processes/msg-ex63-execution-advice-trade-initiation.xml
  • fpml-5-10/processes/msg-partial-termination.xml

In the CDM Portal, select Instance Viewer, and review the samples in the FpML Processes folder, which create WorkflowStep events from the ingested instructions.

2.162.4

Legal Agreement Model - Features to categorise CSA documents

What is being released?

This change allows the explicit categorisation of the ISDA Credit Support documents. This is particularly helpful for documents published since 2016 that currently carry the margin type (Variation or Initial) only in the agreement name. The adjustments include:

  • New attribute creditSupportAgreementMarginType added to data type name AgreementName
  • Conditions added to ensure that a CSA margin type is only specified if a credit support agreement type is specified as an agreement name, and it published year vintage is > = 2016
  • A new enumeration list CreditSupportAgreementMarginTypeEnum with options for VariationMargin and InitialMargin

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect the addition of creditSupportAgreementMarginType as an attribute to the data type AgreementName.

Please also inspect the related conditions that have been updated in the model named CSAMarginType under the data types listed here:

  • LegalAgreementIdentification
  • AgreementName

Inspect the associated enumeration list CreditSupportAgreementMarginTypeEnum and its contents VariationMargin.

Collateral Model - Features to link transactions and collateral portfolios

What is being Released

This change represents the association between a trade, the corresponding collateral portfolios and balances as prescribed by underlyig legal agreements (e.g. IM/VM CSA). The following is included:

  • New attributes added to data type Collateral for portfolioIdentifier and collateralPortfolio. This allows users to identify collateral portfolios related to a trade and to list the collateral components and resulting balances.
  • New attribute payerReceiver added to data type CollateralBalance. This allows the representation of both the Payer Receiver (party1 or party2) and the Collateral direction (posted or received)
  • New attribute collateralAgreement added to data type CollateralPortfolio. This allows the direct association of a portfolio with a collateral agreements.
  • The data type CollateralPortfolio has been made a [root Type] to allow for independent use in the model

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect the additions laid out above across the following data types:

  • Collateral
  • CollateralBalance
  • CollateralPortfolio

2.162.3

Reporting - CFTC

Background

This release will fix the regulatory rule ReportingTimestamp to output the correct ISO8601 date time format.

What is being released

  • The Now function used in CFTC reporting has now been updated to generate the correct timestamp format.

Review Directions

  • In Rosetta open up a DRR workspace and navigate to the Reports tab
  • Select Report CFTC / Part45 and Dataset CFTC Event Scenarios
  • Scroll to column 97 Reporting timestamp and notice the new format

2.162.2

Product Model - Commodity Swaps

Background

This release enhances the financial commodity products coverage in CDM by adding a set of structures needed to fully describe commodity products. Particularly, a new Schedule structure allows full representation of a commodity swap and supports standard schedule customization. It expresses all the dates, quantities, and pricing data in a non-parametric way.

What is being released

  • A new schedule structure added for commodity swaps, available in the FixedPricePayout and the CommodityPayout.
  • A new fixed price schedule added to FixedPricePayout to support a fixed price with steps.
  • Updated quantitySchedule inside PayoutQuantity to better support a quantity with steps.
  • A new commodity description element has been added.
  • Fixed FpML mapping issue for instrumentId to be able to support Commodity Reference Prices.
  • Added missing FpML mapping values for quantityFrequency.

Types

base-staticdata-asset-common-type

Added the description element, of type string, within Commodity.

observable-asset-type

Created the FixedPrice type, which contains fixedPriceSchedule of type NonNegativePriceSchedule.

product-common-schedule-type

Updated the NonNegativeQuantitySchedule type, allowing the specification of the steps at the same level as the initial quantity, not within an unnecessary stepSchedule element.

Created the NonNegativePriceSchedule type, with the structure described before.

product-common-settlement-type

Added the schedule element, of type CommoditySchedule, within CommodityPayout.

product-template-type

Updated the FixedPricePayout type:

  • Changed the type of fixedPrice from Price to FixedPrice.
  • Added the schedule element, of type CommoditySchedule.

Created the CommoditySchedule type, which contains:

  • unitOfAmount and perUnitOfAmountof type UnitType.
  • priceExpression of type PriceExpression.
  • The repeatable element schedulePeriod of typeSchedulePeriod.

Created the SchedulePeriod type, which contains:

  • quantity, totalQuantity and price of type number.
  • paymentDate of type date.
  • calculationPeriod and fixingPeriod of type TimeInterval.

Created the TimeInterval type, which contains two elements: startDate and endDate of type date.

Functions

product-asset-calculation-func

Updated the GetQuantityScheduleStepValues function due to the new structure of the quantity schedule.

Synonyms

synonym-cdm-fpml

Added mapping coverage for the FpML element instrumentId, mapped it into productIdentifier inside the commodity underlier.

Expanded the coverage on the mapping of the quantity frequency by adding the synonyms for the FpML codes PerMonth, PerCalculationPeriod and Term.

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

  • fpml-5-10/products/commodity
  • fpml-5-10/incomplete-products/commodity-derivatives

2.162.0

Product Model - Correlation and Dividend Swaps

Background

The PerformancePayout was recently introduced to allow for representation of a wider variety of equity products including Price and Total Return Swaps, plus a new range of Equity Return Swaps, namely variance (including its dispersion variant), volatility, correlation and dividend swaps. The first release included mapping coverage for variance and volatility, while the present one adds coverage for correlation and dividend swaps.

What is being released

  • Mapping coverage for correlation swaps
  • Mapping coverage for dividend swaps
  • Minor adjustments to equity qualification functions
  • Fixes for variance and volatility mappings

Functions

product-common-func

Added only exists replacing exists for conditions specifying the type of underlier or the type of returnTerms required in variance, volatility, correlation and dividend qualification functions.

Updated functions:

  • Qualify_EquitySwap_ParameterReturnVariance_SingleName
  • Qualify_EquitySwap_ParameterReturnVariance_Index
  • Qualify_EquitySwap_ParameterReturnVariance_Basket
  • Qualify_EquitySwap_ParameterReturnVolatility_SingleName
  • Qualify_EquitySwap_ParameterReturnVolatility_Index
  • Qualify_EquitySwap_ParameterReturnVolatility_Basket
  • Qualify_EquitySwap_ParameterReturnCorrelation_Basket
  • Qualify_EquitySwap_ParameterReturnDividend_SingleName
  • Qualify_EquitySwap_ParameterReturnDividend_Index
  • Qualify_EquitySwap_ParameterReturnDividend_Basket
  • Qualify_ForeignExchange_ParameterReturnVariance
  • Qualify_ForeignExchange_ParameterReturnVolatility
  • Qualify_ForeignExchange_ParameterReturnCorrelation

Removed fixedPricePayout count = 1 condition for dividend swaps, thus allowing for multiple period dividend swaps to be qualified.

Updated functions:

  • Qualify_EquitySwap_ParameterReturnDividend_SingleName
  • Qualify_EquitySwap_ParameterReturnDividend_Index
  • Qualify_EquitySwap_ParameterReturnDividend_Basket

Translate

synonym-cdm-fpml

Fixed volatility and dispersion mapping issues.

Added mapping coverage for correlation swaps and dividend swaps. Correlation swaps use PerformancePayout alone, while dividend swaps use the PerformancePayout structure in combination with one or several FixedPricePayout.

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

fpml-5-10/products/variance-swaps

  • eqvs-ex04-dispersion-variance-swap.xml
  • eqvs-ex05-dispersion-variance-swap-transaction-supplement.xml

fpml-5-10/incomplete-products/volatility-swaps

  • eqvls-ex01-volatility-swap-index-matrix.xml
  • eqvls-ex02-volatility-swap-index-mca.xml

fpml-5-10/products/correlation-swaps

  • eqcs-ex01-correlation-swap.xml
  • eqcs-ex02-correlation-swap.xml
  • eqcs-ex03-correlation-swap.xml
  • eqcs-ex04-correlation-swap.xml

fpml-5-10/products/dividend-swaps

  • div-ex01-dividend-swap.xml
  • div-ex02-dividend-swap-collateral.xml
  • div-ex03-dividend-swap-short-form-japanese-underlyer.xml

User Documentation - Development Guidelines

What is being released

This release consolidates all the development guidelines into a single section in the CDM user documentation, and adds a specific sub-section regarding the agile development approach. It also includes some minor fixes and clean-ups.

In the CDM user documentation, there is now an entire section called "Development Guidelines". This section contains the following sub-sections:

  • Governance (previously part of the "Overview" section)
  • Design Principles (previously part of the "Overview" section)
  • Agile Development Approach (new sub-section)
  • How to Contribute (was previously a stand-alone section)
  • Documentation Style Guide (was previously a stand-alone section)

In the "Overview" section, the governance and design principles parts have been replaced by references with links to that new "Development Guidelines" section of the user documentation.

Review Directions

In the CDM user documentation, navigate to the "Development Guidelines" section shown in the left-hand side panel.

2.161.0

Event Model - Index Transition, Reset, Stock Split visualisation examples

What is being Released

This release follows the recent work on the composable business event model and the corresponding creation function, Create_BusinessEvent. Visualisation examples have been created for Index Transition, Reset and Stock Split business events.

This release also removes deprecated types and functions from the old event model. Some deprecated components from the old event model are still in use, mostly in ingestion examples, which will be migrated to the new event model and removed in future releases.

Review Directions

In the CDM Portal, select the Instance Viewer, review the visualisation examples in the Index Transition Business Event and Stock Split Business Event folders.

2.160.0

Legal Agreement Model - Enhancements for the categorisation of legal agreement

Background

The categorisation of legal agreements has been enhanced and a few data validation rule have been adjusted based on feedback from users.

What is being Released

  1. Change of data type name LegalAgreementType to LegalAgreementIdentification. This change uses a more relevant type name for identifying the legal agreement and avoids the unnecessary use of suffix 'type' in the label.

  2. Conditions have been updated in the model due to the renaming of LegalAgreementType to legalAgreementIdentification.

  3. Data type AgreementName has an additional condition added for creditSupportAgreement This condition ensures a credit support agreement type is specified if the legal agreement is a credit support agreement.

  4. Changes have been made to the logic in haircut percentages and Asset type conditions. In Data type CollateralValuationTreatment the related conditions for HaircutPercentage, FxHaircutPercentage and AdditionalHaircutPercentage, have all been adjusted so the higher range of population is <1 instead of <=1. HaircutPercentage has been adjusted so the lower range is >=0 instead of >0. These changes will address errors reported by users when using the model.

  5. Data type AssetType and its related condition OtherAssetSubType have been changed as foolows (assetType <> AssetTypeEnum to assetType = AssetTypeEnum). These changes will address errors reported by users when using the model.

  6. Within MasterAgreementTypeEnum ISDA has been amended to ISDAMaster, this change was recommended by ISDA legal team and is more in line with the document name and avoids confusion with the publisher used when identifying the agreement type at a higher level in the model. Updates have also been made to the related ISDACreate and FPML synonyms

Review Directions

In the CDM Portal, select the Textual Browser and inspect the changes outlined above

2.159.0

Product Model - New Performance Payout

Background

This change addresses the gap in the CDM product model for representing variance, volatility, correlation, and dividend swaps. The model avoids the proliferation of new payouts with one central new Performance Payout to cover these type of swaps as well other products previously represented with the use of the Equity Payout (e.g price and total return swaps). The singular Performance Payout specifies a specific metric observed and the function applied by the means of different return terms, each of them featuring both shared and return-terms-endemic components. The corresponding structural definition covers all products sharing the following characteristics:

  • Require the observation of an underlier to be made.
  • The return is derived from the observed value of the underlier, either directly (as in price or total return swaps) or by applying a specific function to the observed value (as in variance, volatility, or correlation).

The new performance payout is not equity-exclusive. It cover other performance based products such as foreign exchange variance and volatility swaps, belonging to the Foreign Exchange asset class.

Given the complexity of the change, the previous equity payout has been temporarily maitained along with the new performance payout. All components affected by the change have been duplicated to allow the user to represent equity products either ways (except for the new variance, volatility and correlation, which were not included in the equity payout).

As this coexistence of both equity and performance payouts is devised as a temporary measure until the latter is fully tested, components associated with the older model have been marked as deprecated.

Change summary:

  • New performance payout, intended to:
    • Substitute the equity payout (price, total return products)
    • Represent variance, volatility, correlation and partially dividend
  • Added specific components for variance, volatility, correlation and dividend products.
  • Renamed FixedForwardPayout to FixedPricePayout to better reflect its content and usage.
  • Restructured date system for equity products. The attribute calculationPeriodDates replaced by valuationDates and observationDates for all performance products.
  • Duplicated components to allow the coexistence of old and new representation of equity products (equityPayout/performancePayout and calculationPeriodDates/valuationDates and observationDates).

What is being released?

The summary below is divided into sections for Data Types, Enumerations, Functions and Translate.

Data Types

event-common-type:

Modified

  • SettlementOrigin – Added performancePayout. fixedForwardPayout replaced by fixedPricePayout.
  • Lineage – References to equityPayout deprecated. Equivalent references to performancePayoutAdded

observable-asset-type:

New

  • EquityValuationDates – With respect to EquityValuation, removed price attribute.
  • EquityObservation – Defines how and when a performance type option or performance type swap is to be observed. Structure analogous to that of EquityValuation.
  • DividendApplicability – The parameters which define whether dividends are applicable. Equivalent to the FpML Dividends.model.

Deprecated

  • EquityValuation

product-asset-type:

New

  • PerformanceDividendReturnTerms – Several components removed because they are represented in dividendReturnTerms -> dividendPeriod. Added attribute performance as a placeholder.
  • DividendPeriod – Time bounded dividend payment periods, each with a dividend payment date per period.
  • PerformancePriceReturnTerms – valuationPriceInterim replaced by valuationPriceInitial. Absorbed returnType to distinguish if the payout is part of a total return product, or it is price only. Absorbed elements formerly exclusive to commodity return terms (no longer present in the performance payout), but potentially applicable to equity products as well (rounding, conversionFactor, spread, rollFeature). Added attribute performance as a placeholder.
  • ReturnTermsBase – Contains all common components in variance, volatility and correlation return Terms.
  • VarianceReturnTerms – Contains all specific components required to represent a variance product and, through inheritance from ReturnTermsBase, those common to variance, volatility and correlation.
  • VolatilityReturnTerms – Contains all specific components required to represent a volatility product and, through inheritance from ReturnTermsBase, those common to variance, volatility and correlation.
  • CorrelationReturnTerms – Contains all specific components required to represent a correlation product and, through inheritance from ReturnTermsBase, those common to variance, volatility and correlation.
  • Valuation – Contains all non-date valuation information.
  • EquityUnderlierProvisions – Contains Equity underlier provisions regarding jurisdiction and fallbacks.
  • VarianceCapFloor – Contains possible barriers for variance products, both variance-based and underlier price based.
  • BoundedVariance – Contains conditions which bound variance when the contract specifies one or more boundary levels. These levels are expressed as prices for confirmation purposes.
  • VolatilityCapFloor – Contains containing volatility-based barriers.
  • BoundedCorrelation – Describes correlation bounds, which form a cap and a floor on the realized correlation.

Deprecated

  • DividendPayoutRatio – underlier component deprecated. Following migration to PerformancePayout, underlier can be removed from as it is already present in dividendPeriod, where it can be established for every period.
  • DividendReturnTerms
  • PriceReturnTerms

product-common-schedule-type:

New

  • DateRelativeToValuationDates – Version of the function DateRelativeToCalculationRates using EquityValuationDates as an input instead of CalculationPeriodDates.

product-common-settlement-type:

New

  • PerformancePayoutBase – Removed calculationPeriodDates and replaced by valuationDates and observationDates. Used in the new PerformancePayout.

Modified

  • FxFixingDate – Version of the function ResetDates using EquityValuationDates as an input instead of CalculationPeriodDates.

product-template-type:

New

  • ReturnTerms – Specifies the type of return of a performance payout: price, dividend, variance, volatility or correlation.
  • PerformancePayout – New performance payout. Contains the necessary specifications for all performance payouts, encompassing equity return, dividend, variance, volatility and correlation products.

Deprecated

  • EquityPayout - Note that despite being deprecated, it is still used in the current version to allow for representation of equity products already present in the model through both the existing EquityPayout and the new PerformancePayout.

Modified

  • EconomicTerms – condition ExtraordinaryEvents adapted to include performancePayout.
  • Payout – fixedForwardPayout attribute replaced by fixedPricePayout (name change). Added performancePayout attribute. Corresponding conditions added or modified.
  • TradableProduct – Conditions duplicated or modified to match the new performance structure.
  • FixedForwardPayout – Renamed as FixedPricePayout.

Enumerations

base-math-enum:

  • FinancialUnitEnum – Added Variance and Volatility values.

observable-asset-enum:

  • PriceTypeEnum – Added Variance and Volatility values.

product-asset-enum:

  • RealisedVarianceMethodEnum – The contract specifies which price must satisfy the boundary condition.
  • FPVFinalPriceElectionFallbackEnum – Specifies the fallback provisions in respect to the applicable Futures Price Valuation.

Deprecated

  • ReturnTypeEnum – Values Variance, Volatility and Dividend deprecated, since they now can be identified by their returnTerms. Only Price and Total values left as non deprecated.

Functions

event-common-func:

Duplicates (changed references)

  • ResolvePerformanceValuationDate – References to equityPayout replaced by references to performancePayout.
  • ResolvePerformanceValuationTime – References to equityPayout replaced by references to performancePayout.
  • ResolvePerformanceReset – References to equityPayout replaced by references to performancePayout.

Modified

  • NewEquitySwapProduct – Reference to fixedForwardPayout replaced by reference to fixedPricePayout.

product-asset-func:

New

  • ResolvePerformancePeriodStartPrice – References to equityPayout replaced by references to performancePayout. References to calculationPeriodDates replaced by references to valuationDates.
  • ResolvePerformancePeriodEndPrice – References to equityPayout replaced by references to performancePayout. References to calculationPeriodDates replaced by references to valuationDates.

Deprecated

  • ResolveEquityPeriodStartPrice
  • ResolveEquityPeriodEndPrice

product-common-func:

New

  • Qualify_EquitySwap_ParameterReturnVariance_SingleName – Qualifies a product as an Equity Swap for which the performance is based on the variance changes on a single stock.
  • Qualify_EquitySwap_ParameterReturnVariance_Index – Qualifies a product as an Equity Swap for which the performance is based on the variance changes on an index.
  • Qualify_EquitySwap_ParameterReturnVariance_Basket – Qualifies a product as an Equity Swap for which the performance is based on the variance changes on a basket.
  • Qualify_EquitySwap_ParameterReturnDispersion – Qualifies a product as an Equity Swap for which the performance is based on the variance changes in several legs.
  • Qualify_EquitySwap_ParameterReturnVolatility_SingleName – Qualifies a product as an Equity Swap for which the performance is based on the volatility changes on a single stock.
  • Qualify_EquitySwap_ParameterReturnVolatility_Index – Qualifies a product as an Equity Swap for which the performance is based on the volatility changes on an index.
  • Qualify_EquitySwap_ParameterReturnVolatility_Basket – Qualifies a product as an Equity Swap for which the performance is based on the volatility changes on a basket.
  • Qualify_EquitySwap_ParameterReturnCorrelation_Basket – Qualifies a product as an Equity Swap for which the performance is based on changes in the correlation between the constituents of a basket.
  • Qualify_EquitySwap_ParameterReturnDividend_SingleName – Qualifies a product as an Equity Swap for which the performance is based on the dividend returns of a single stock.
  • Qualify_EquitySwap_ParameterReturnDividend_Index – Qualifies a product as an Equity Swap for which the performance is based on the dividend returns of an index.
  • Qualify_EquitySwap_ParameterReturnDividend_Basket – Qualifies a product as an Equity Swap for which the performance is based on the dividend returns of a basket.
  • Qualify_ForeignExchange_ParameterReturnVariance – Qualifies a product as Foreign Exchange Swap for which the performance is based on the variance of a foreign exchange underlier.
  • Qualify_ForeignExchange_ParameterReturnVolatility – Qualifies a product as Foreign Exchange Swap for which the performance is based on the volatility of a foreign exchange underlier.
  • Qualify_ForeignExchange_ParameterReturnCorrelation – Qualifies a product as Foreign Exchange Swap for which the performance is based on the correlation changes between the constituents of a basket.

Modified

  • Qualify_AssetClass_Equity – Added products with underlier equity baskets as Equity Asset Class products.
  • Qualify_BaseProduct_EquitySwap – Added asset class check using Qualify_AssetClass_Equity to replace the former equityPayout check. Payout check changed from equity Payout to several payout combinations (all containing at least a performance payout) to reflect the payout structures of all the equity products now available.
  • Qualify_EquitySwap_PriceReturnBasicPerformance_SingleName – Qualification adapted to include performance payout. One interest and one performance payout is required.
  • Qualify_EquitySwap_TotalReturnBasicPerformance_SingleName – Qualification adapted to include performance payout. One performance (dividend), one performance (price) and one interest rate payout are required.
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Index – Qualification adapted to include performance payout. One interest and one performance payout is required.
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Index – Qualification adapted to include performance payout. One performance (dividend), one performance (price) and one interest rate payout are required.
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Basket – Qualification adapted to include performance payout. One interest and one performance payout is required.
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Basket – Qualification adapted to include performance payout. One performance (dividend), one performance (price) and one interest rate payout are required.
  • Qualify_Commodity_Swap_FixedFloat – References to equityPayout replaced by references to performancePayout.

product-common-schedule-func:

New

  • ValuationPeriod – Version of the function CalculationPeriod using valuationDates as an input instead of calculationPeriodDates. A Java implementation will be added as part of a future release.
  • ValuationPeriods – Version of the function CalculationPeriods using valuationDates as an input instead of calculationPeriodDates. A Java implementation will be added as part of a future release.

Translate

Added synonym coverage for variance and volatility swaps using the new performance payout. Other equity products not supported by the performance payout yet, but by the existing equity structure. Mappings and full coverage for equity products using the new performance payout are expected to be included in upcoming releases.

Review Directions

In the CDM Portal, select the Textual Browser and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples:

fpml-5-10/incomplete-products/variance-swaps

  • eqvs-ex01-variance-swap-index.xml
  • eqvs-ex02-variance-swap-single-stock.xml
  • eqvs-ex03-conditional-variance-swap.xml
  • eqvs-ex04-dispersion-variance-swap.xml
  • eqvs-ex05-dispersion-variance-swap-transaction-supplement.xml
  • eqvs-ex06-variance-option-transaction-supplement.xml
  • eqvs-ex07-variance-option-transaction-supplement-pred-clearing.xml

fpml-5-10/incomplete-products/volatility-swaps

  • eqvls-ex01-volatility-swap-index-matrix.xml
  • eqvls-ex02-volatility-swap-index-mca.xml

2.158.0

Infrastructure change

  • This release splits the build of the CDM from it's upstream Bundle dependencies

2.156.3

Event Model - Exercise

Background

This release follows the recent work on the composable business event model and the corresponding creation function Create_BusinessEvent.

The Exercise business event is now supported in the CDM through either a functional approach, for physical exercise of Interest Rate and Credit Swaptions only, or a declarative approach for other exercise scenarios.

Functional Model

For Physical exercise of Interest Rate Swaptions or Credit Default Swaptions the CDM functional model can create the required outputs through the use of a an exercise Instruction passed into the Create_BusinessEvent function.

Declarative Model

For Cash exercise, and for Physical exercise of Options that are not Interest Rate or Credit Default Swaptions a declarative model approach needs to be taken where the BusinessEvent is defined by a quantityChange Instruction to close the Option, with an associated transfer for Cash Exercise, or a quantityChange Instruction to close the Option and a separate execution Instruction for the replacement trade for Physical Exercise.

What is being released?

ExerciseInstruction - updated to contain the necessary inputs to functionally instruct an exercise business event.
Create_ExercisePrimitive - new primitive event creation function used to functionally create the result of the physical exercise of an Interest Rate Swaption or Credit Default Swaption.
Create_BusinessEvent - updated to call Create_ExercisePrimitive when input contains an exercise instruction.
Qualify_Exercise - updated to correctly qualify an exercise business event based on the functional or declarative model.

The CDM contains the following visualisation examples to demonstrate the approach described.

  • Swaption Full Cash Exercise
  • Swaption Partial Physical Exercise
  • Swaption Full Physical Exercise
  • Cancellable Swap Exercise

Review Directions

In the CDM Portal, select the Textual Browser and review the data types and functions described above

In the CDM Portal, select Instance Viewer and review the visualisation examples above in the Exercise Business Event folder

2.156.2

Legal Agreement Model - Rationalise Legal Agreement type identification

Background

The representation of legal agreements lacks consistency. Some agreements use the DocumentationIdentification data type and are identified through a series of enumerations that point to individual instances of documents such as Master Agreements, Master Confirmation Agreements, Credit Support Agreements, Confirmations (e.g. Contractual Definitions, Contractual Terms Supplements etc) and Other Agreements. Some agreements use the LegalAgreement data type and are identified through a composable set of attributes allowing the publisher, vintage, governing law and agremeent name to be specified.

The representation of Legal Agreement is therefore refactored through a standardised composition of data types using the LegalAgreement data type as anchor. Credit Support Agreements have been fully refactored to follow this approach. Other documents will be re-factored in future releases.

What is being released?

This release contains the components required to represent Legal Agreements per the above approach. Model to model mappings have been updated. Changes are described based on the data types, attributes, enumerations and functions impacted.

Data Types

AgreementName - This new data type categorises the agreement, describes addtional features and provides for the attributes previously found in DocumentationIdentification.

DocumentationIdentification - This has been removed.

RelatedAgreement - This has been removed. All references have been updated to point to LegalAgreement.

Attributes

attachment - This attribute has been moved to LegalAgreementBase to point to supplementary external documents.

clauseLibrary - This boolean attribute has been moved to AgreementTerms defining whether agreement terms have been negotiated using the Clause Library methodology.

Enumerations

LegalAgreementTypeEnum - This new enumeration identifies the legal agreement type (e.g. Master Agreement, Confirmation, Credit Support Agreement).

CreditSupportAgreementTypeEnum - This enumeration has been adjusted to remove the document publisher, vintage and governing law from their names as this information is now supported with the LegalAgreementType component

This change also adjusts the label names and attributes of some of the related enumerations and data types.

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect each of the changes identified above.

In the CDM Portal, select Ingestion and review the following samples with documentation:

Master Agreement, Master Confirmation and Confirmation

  • fpml-5-10/products/credit/cdx-index-option.xml

Master Agreement and Confirmation

  • fpml-5-10/products/credit/cd-ex01-long-asia-corp-fixreg-versioned.xml

Master Agreement and Credit Support Agreement

  • events/novation-both-parties.xml

2.155.1

DSL Syntax - Remove deprecated DRR report syntax

What is being released?

This release removes the deprecated DSL syntax to specify DRR reports using the with fields keywords.

An example of the previous syntax is as follows:

report CFTC Part43 in T+1 \twhen ReportableEvent \tusing standard ISO_20022 with fields \t\tReportingTimestamp \t\tReportingCounterpartyID \t\tTypeOfIdOfTheOtherCounterparty

Which has now been replaced by the following syntax:

report CFTC Part43 in T+1    when ReportableEvent  \tusing standard ISO_20022  \twith type CFTCPart43TransactionReport   type CFTCPart43TransactionReport:    reportingTimestamp string (1..1)        [ruleReference ReportingTimestamp]    reportingCounterpartyID string (1..1)        [ruleReference ReportingCounterpartyID]    typeOfIdOfTheOtherCounterparty string (1..1)        [ruleReference TypeOfIdOfTheOtherCounterparty]

Review Directions

There is no impact as the usages have already been replaced in DRR by the with type keywords.

2.154.3

Infrastructure - Scheme Importer

What is being released?

This release turns the scheme importer into a reusable component that can be imported and used in models that extend the CDM.

Review Directions

There is no user impact of this release.

2.154.2

Event Model - Partial Novation, Clearing and Allocation Visualisation Samples

What is being released?

This release follows the recent work on the composable business event model and the corresponding creation function, Create_BusinessEvent. Visualisation examples have been created for Partial Novation, Clearing and Allocation business events.

Review Directions

In the CDM Portal, select the Instance Viewer, review the visualisation examples in the Novation Business Event, Clearing Business Event and Allocation Business Event folders.

2.153.4

Infrastructure - CDM Structure

What is being released?

  • Developers can develop/maintain the ingestion tests, demo code, distribution, project and scheme importer so that changes can be made as part of the CDM

2.152.1

Product and Event Model - Migrate Java function implementations to native DSL

What is being released?

Following the recent addition of DSL syntax features, functions that were previously implemented in Java due to unsupported DSL features, have now been migrated to native DSL.

The migrated function namespace and names are listed below:

cdm.base.datetime

  • GetAllBusinessCenters
  • BusinessCenterHolidaysMultiple

cdm.event.common

  • UpdateIndexTransitionPriceAndRateOption
  • FindMatchingIndexTransitionInstruction

cdm.observable.asset.fro

  • IndexValueObservationMultiple

cdm.observable.event

  • ResolveObservationAverage

cdm.product.asset

  • ResolveEquityInitialPrice

cdm.product.asset.calculation

  • GetNotionalAmount
  • GetQuantityScheduleStepValues

cdm.product.asset.floatingrate

  • GetRateScheduleAmount
  • GetRateScheduleStepValues

Review Directions

In the CDM Portal, select Textual Browser and review the functions above.

2.151.0

Event model - Transfer FpML Processes and Record-Keeping mapping

What is being released?

Following the recent Transfer model changes, and the corresponding FpML (Confirmation view) mappings to TradeState, this release adds Transfer mappings for FpML Processes and Record-Keeping view.

Review Directions

In the CDM Portal, select Ingestion and review the following example transactions:

  • fpml-5-10 > incomplete-processes > msg-ex19-cds-execution-allocations
  • fpml-5-10 > incomplete-processes > msg-ex51-execution-advice-trade-initiation-C01-00
  • fpml-5-10 > incomplete-processes > msg-ex58-execution-advice-trade-initiation-F01-00

2.150.5

CDM Documentation

Background

The CDM and its underlying technology (Rosetta) currently share the same documentation site. As the CDM and Rosetta mature, the documentation sites should be split to separate the concerns and have appropriate branding.

What is being released?

With this release, the CDM documentation will move to its own dedicated site. The Rosetta documentation will remain at the existing URL and will link to the CDM documentation.

Review Directions

To view the CDM documentation:

To view the Rosetta documentation:

2.150.2

Event model - Transfers

Background

Transfer components are not represented consistently in the CDM for post-trade events. Initiation trade event generated transfers are represented in a PriceQuantity object attached to a Trade, where as post trade event generated transfers are represented as a Transfer object embedded in a business event instruction. This inconsistency creates ambiguity for implementors and creates complexity when defining functional reporting rules. In addition, for post trade events a Transfer can only be defined in terms that require the CDM functional model to calculate the Transfer amount, implementors cannot provide a pre-determined amount.

The CDM Transfer model is therefore being refactored based on three principles:

  • Develop a standardised approach for the representation of a Transfer which is used consistently across all event types.
  • Align the representation of transfers with the composable BusinessEvent model.
  • Rewrite the functional logic of Transfers so that a Business Event instruction is defined in terms of a defined Transfer amount. The functional model is retained for calculating a Transfer amount but the creation of a Business Event is not dependent on leveraging the functionality.

Following the refactoring any transfers associated with an event would be captured as part of the Instruction to create the BusinessEvent. This would be used to create a TransferHistory associated with the TradeState. The PriceQuantity would therefore contain representation of notional and prices only.

What is being released?

This release contains the components required to represent Transfers in line with the above approach. Visualisation and model to model mappings have been updated to reflect this refactoring. Changes are described based on the data types, enumerations and functions impacted:

Data Types

  • TradeState- contains an attribute transferHistory which has been updated to reference the data type TransferState.
  • TransferState - specifies a Transfer that has been effected by a business or lifecycle event and the state of the Transfer through its lifecycle.
  • Transfer – updated to define a movement of assets between two parties, information about the settlementOrigin and resetOrigin of the transfer, and a transferExpression defining the nature of the transfer amount and its source.
  • TransferStatus – new data type that defines where a Transfer is in its lifecycle.
  • SettlementOrigin - updated data type containing a reference to the payout that was the origin of the transfer amount, where applicable.
  • TransferExpression - defines the nature of the transfer amount in terms of a fee type (e.g. Premium, Termination) or transfer associated with a scheduled or contingent event on a contract (e.g. Exercise, Performance, Credit Event)
  • TransferInstruction – updated to contain a list of defined TransferState to be added to a TradeState
  • CalculateTransferInstruction – contains instructions for calculating a transfer associated with a TradeState with reference to a payout and any necessary resets.
  • Instruction – attribute primitiveInstruction has been updated from multiple to single cardinality so that an instruction is defined in terms of a single primitiveInstruction containing a list of basic primitive instruction attributes.
  • PrimitiveInstruction – has been updated to remove the one-of condition allowing a list of primitive instruction attributes to be defined. A new attribute transfer has been added allowing a list of TransferInstruction to be specified.

Enumerations

  • FeeTypeEnum - updated to be an attribute within TransferExpression defining a transfer amount in terms of a fee type.

Functions

  • Create_TradeState - updated function to add TransferHistory to a TradeState when input Instruction contains a transfer.
  • Create_TransferPrimitive – updated to take input of a TransferInstruction containing a list of TransferState, and creates a TradeState with updated TransferHistory.
  • CalculateTransfer – new function that takes input of a CalculateTransferInstruction, calculates a Transfer amount and creates output of a Transfer.
  • Create_CashTransfer – takes input of a CalculateTransferInstruction, calculates a Transfer amount using function ResolveTransfer and creates output of a Transfer.
  • ResolveTransfer – new function that takes input of a CalculateTransferInstruction containing a Payout and associated ResetHistory and creates output of a Transfer.
  • SecurityFinanceCashSettlementAmount – updated function to create output of a Transfer.
  • EquityCashSettlementAmount – updated function to create output of a Transfer.
  • InterestCashSettlementAmount – updated function to create output of a Transfer.

Visualisations

The following Visualisations have been updated to contain Transfers represented using the updated model.

  • Quantity Change Business Event > Partial Termination Equity Swap
  • Quantity Change Business Event > Partial Termination Vanilla Swap
  • Quantity Change Business Event > Full Termination Equity Swap
  • Quantity Change Business Event > Full Termination Vanilla Swap
  • Execution Business Event > Interest Rate Swap with Initial Fee

Translate

Model to model mappings have been updated to reflect the above model refactoring

Review Directions

In the CDM Portal:

  • Select the Textual Browser and search for the data types, enumerations and functions listed above.
  • Select the Instance Viewer and review the Visualisation samples above.
  • Select Ingestion and review the following example transactions:
    • fpml-5-10 > products > equity > eqd-ex01-american-call-stock-long-form
    • fpml-5-10 > products > rates > ird-initial-fee

2.149.0

Infrastructure – Source enums from FpML scheme where specified

What is being released?

This release adds additional enumerations to CDM sourced from FpML scheme where there is a 1:1 mapping possible. The following four files are enhanced:

  • legalagreement-csa-enum
  • legalagreement-master-enum
  • observable-asset-enum
  • observable-common-enum

with enums sourced from FpML for the following: IndependentAmountEligibilityEnum, HoldingPostedCollateralEnum, MasterAgreementTypeEnum, MasterConfirmationAnnexTypeEnum, MasterConfirmationTypeEnum, InterpolationMethodEnum, SettlementRateOptionEnum, DeterminationMethodEnum.

Review Directions

In the CDM Portal select the bases listed above and view added docReference for the enums detailed.

2.148.0

Product Model – Composable Product Qualification - Equity and Credit

What is being released?

This release refactors Credit and Equity product qualification to leverage the hierarchical approach to product qualification in order to a) eliminate unnecessary repetition in the product qualification functions, and b) create a set of functions that can be reused in the development of the Digital Regulatory Reporting ("DRR") ruleset.

Background

Product Qualification functions are currently written as independent expressions for qualification into the ISDA product taxonomy. This leads to repetition in the model as the functional component identifying the Asset Class and Base Product components of the Taxonomy are repeated. This is in conflict with the CDM design principle of composability and re-usability.

Regulatory reporting rules also refer to classifications of products at a variety of levels as a component of regulatory functional expressions. For this purpose, utility rules have been developed which replicate the same structure.

This release focuses on creating a composable set of qualification rules for Credit and Equity products.

Details

New product qualification rules have been added to the model to describe the hierarchy of Interest Rate products as defined by the ISDA Product Taxonomy:

  • Qualify_AssetClass_CreditDefault - Qualifies a product as having the Asset Class classification Credit Default.
  • Qualify_AssetClass_Equity - Qualifies a product as having the Asset Class classification Equity.
  • Qualify_BaseProduct_EquitySwap - Qualifies a product as having the Base Product Classification Equity Swap.

The following product qualification rules have been updated to leverage the new composable product qualification approach:

  • Qualify_CreditDefaultSwap_SingleName
  • Qualify_CreditDefaultSwap_Index
  • Qualify_CreditDefaultSwap_IndexTranche
  • Qualify_CreditDefaultSwap_Loan
  • Qualify_CreditDefaultSwap_Basket
  • Qualify_CreditDefaultSwaption
  • Qualify_AssetClass_Equity
  • Qualify_EquitySwap_PriceReturnBasicPerformance_SingleName
  • Qualify_EquitySwap_TotalReturnBasicPerformance_SingleName
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Index
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Index
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Basket
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Basket
  • Qualify_EquityOption_PriceReturnBasicPerformance_SingleName

Review Directions

In the CDM Portal, select the Textual Browser and review the functions detailed above.

Event Model - Compression and Novation Visualisation Samples

What is being released

This release follows the recent work on the composable business event model and the corresponding creation function, Create_BusinessEvent. Visualisation examples have been created for compression and novation business events.

Review Directions

In the CDM Portal, select the Instance Viewer, review the visualisation examples in the Compression Business Event and Novation Business Event folders.

2.147.1

Migrate Record Keeping Test Packs

What is being released?

The FpML 5-10 Recordkeeping Translate samples are being moved to the Digital Regulatory Reporting model so that model-to-model mappings can be created and managed next to other regulatory related artefacts.

This release removes the Record Keeping test packs from the CDM model. These test packs are being migrated to the Digital Regulatory Reporting model.

Review Directions

The Recordkeeping Translate test pack is no longer available when reviewing Ingestion in the CDM Portal

2.145.0

DSL Syntax - List operations: sum, min, max, join, sort, first and last

What is being released?

This release introduces a number of syntax keywords related to list operations.

sum

  • Returns a summed total from the items of a list of int or number.

Example

 func SumNumbers: <"Returns the sum of the given list of numbers.">    inputs:        numbers number (0..*)    output:        total number (1..1)    set total:        numbers sum

min/max

  • Returns the maximum or minimum item from a list based on a comparable (e.g. string, int, number, date) item or attribute.

Example

 func FindVehicleWithMaxPower: <"Returns the vehicle with the highest power engine.">    inputs:        vehicles Vehicle (0..*)    output:        vehicleWithMaxPower Vehicle (1..1)    set vehicleWithMaxPower:        vehicles             max [ item -> specification -> engine -> power ]

join

  • Returns a string concatenated from the items of a list, optionally separated with a delimiter string.

Example

 func JoinStrings: <"Concatenates the list of strings, separating each element with a comma (",") delimiter.">    inputs:        strings string (0..*)    output:        result string (1..1)    set result:        strings             join [ "," ]

sort

  • Returns a list in sorted order based on a comparable (e.g. string, int, number, date) item or attribute.

Example

 func SortDatesChronologically: <"Sorts the list of dates chronologically.">    inputs:        dates date (0..*)    output:        sortedDates date (0..*)    set sortedDates:        dates sort

first/last

  • Returns the first or last item from a list.

Example

 func GetFirst: <"Get the first date.">    inputs:        dates date (0..*)    output:        firstDate date (0..1)    set sortedDates:        dates first

Review Directions

In the CDM Portal, select the Textual Browser, and search for syntax keywords.

Product Model - CreditDefaultPayout Index Factor and Seniority

What is being released

Data type IndexReferenceInformation has been extended to include indexFactor and seniority.

  • indexFactor - represents the index version factor
  • seniority - Defines the seniority of debt instruments comprising the index. The enumerated values in the CDM have been populated with linkage to the FpML scheme Credit Seniority Scheme (http://www.fpml.org/coding-scheme/credit-seniority-2-3.xml)
  • FpML mappings have been updated to reflect the above

Review Directions

In the CDM Portal, select Textual Browser, and review the data type and attributes above.

2.143.2

Period Amount Calculations - Clean up

What is being released?

The FixedAmount and FloatingAmount functions have been updated to leverage the FixedAmountCalculation and FloatingAmountCalculation functions released in 2.120.1.

The DayCountFraction function has been retired; it is replaced by YearFraction (from release 2.120.1), which is less dependent on InterestRatePayout structures and so is more generally usable.

The CalculationPeriods function has been added; it returns all calculation periods for an InterestRatePayout.
The FixedAmountCalculation function has been enhanced to return detailed intermediate results.

A few bugs in the floating amount calculations have been corrected, including:

  • Handling of the notional was incorrect in a couple of functions
  • Handling of daily caps and floors on daily calculated (average and compound) was incorrect

Background

An extensive set of enhancements was made in release 2.120.1 to floating and fixed amount calculation logic. These allowed the logic to retrieve more information from the InterestRatePayout structure, and to do new types of calculations. There were some existing uses of the old FixedAmount and FloatingAmount logic that were not updated at that time to use the new calculations. With this release, we retire most of that legacy code, by making small enhancements to the new floating and fixed amount calculation code.

Minor logic errors have been corrected and some minor enhanced functionality has been added to make using the above easier. There has also been some minor redesign to some functions to improve processing efficiency, based on implementation experience.

Details

  • The FixedAmount function has been modified to call the FixedAmountCalculation function. As part of this, the function signature for FixedAmount has changed slightly
  • The FixedAmountCalculation function has been modified to:
    • Allow the notional to be passed in, instead of being looked up from the InterestRatePayout. (If omitted it looks up the notional from the InterestRatePayout)
    • Change/correct the notional representation to use notional->amount instead of quantity->multiplier and to put the currency in notional->unitOfAmount->currency instead of notional->multiplierUnit->currency
    • Return a structure holding intermediate results to explain the calculation
  • The FloatingAmount function has been modified to call the FloatingAmountCalculation function. As part of this, the function signature for FloatingAmount has changed slightly
  • The FloatingAmountCalculation function has been modified to:
    • Allow the notional to be passed in, instead of being looked up from the InterestRatePayout. (If omitted it looks up the notional from the InterestRatePayout)
    • Allow the interest rate to be passed in, instead of being calculated. (If omitted, the floating rate is calculated).
    • Change/correct the notional representation to use notional->amount instead of quantity->multiplier and to put the currency in notional->unitOfAmount->currency instead of notional->multiplierUnit->currency
    • Refactor it into several pieces to allow intermediate calculations to be reused more efficiently
  • The LookupNotionalAmount function has been changed as above to use amount and unitOfAmount.
  • The DayCountFraction function/implementation has been deleted. Use the new YearFraction function instead.
  • The GenerateObservationDatesAndWeights function has been refactored to split it into several smaller functions to allow intermediate results to be reused without being recomputed, to improve efficiency
  • The CalculationPeriods function has been added to product-common-schedule-func.rosetta and a Java implementation has been provided

Event Model - Composable Event - Updates for Execution, Contract Formation and Quantity Change Visualisation Samples

What is being released

This release follows the recent work to compose business events with a list of instructions applied as input to the common business event creation function Create_BusinessEvent. The visualisation examples for the following business events have been refactored and augmented with the details of the input instructions: execution, contract formation, and quantity change.

Review Directions

In the CDM Portal, select the Instance Viewer, review the visualisation examples in the Execution Business Event, Contract Formation Business Event and Quantity Change Business Event folders and inspect how the representation of the input instructions has been embedded in each business event.

Event Model - Business Event Intent

What is being released

This release normalises the representation of intent on a BusinessEvent, as well as on the Instruction passed into the Create_BusinessEvent function. Intent is required when a BusinessEvent cannot be qualified solely with the resulting TradeState and instructions used.

  • The enumeration InstructionFunctionEnum has been removed from the model as it duplicates the functionality of IntentEnum.
  • The enumeration IntentEnum has been renamed EventIntentEnum and been updated to contain a simplified list only containing enumerations which are needed to uniquely qualify a BusinessEvent.
  • BusinessEvent qualification functions have been updated to reflect the refactoring above.

Review Directions

In the CDM Portal, select Textual Browser and review EventIntentEnum.

2.143.0

Infrastructure - Restructure CDM Repository

What is being released

This release restructures the CDM GitHub repository placing the source under its own separate sub-module. This work facilitates the isolation of the CDM testing framework and the Rosetta source.

Review Directions

There is no functional impact on any systems or services from this change.

2.141.0

Infrastructure - Serialise dates to ISO-8601 format

What is being released

This release changes the Java to JSON serialisation format for dates to ISO-8601 format, so that it represents a date starting with the year, followed by the month, and day. For example, "2022-01-31" represents the 31st January 2022.

Previously, the serialised format contained separate fields for day, month and year.

"unadjustedDate" : {    "day": 31,    "month": 1,    "year": 2022}

Now, the serialised format is an ISO-8601 date string.

"unadjustedDate" : "2022-01-31"

Review Directions

In the CDM Portal, select Ingestion and review any sample.

2.140.0

Event Model - Consolidation of workflow information in WorkflowStep

What is being released?

This release consolidates some workflow-related attributes that were previously positioned in the BusinessEvent type into the WorkflowStep type instead.

Details

The following types and attributes have been modified:

  • The WorkflowStepState type has been renamed more succinctly as WorkflowState.

  • The workflowEventState attribute (now of type WorkflowState) has been moved from BusinessEvent into WorkflowStep and renamed simply as workflowState.

  • The tradeWarehouseWorkflow attribute has been removed from BusinessEvent. Its underlying attributes are all included in the workflowState attribute that is now positioned in WorklfowStep:

    • warehouseIdentity
    • warehouseStatus
    • partyCustomisedWorkflow
  • The TradeWarehouseWorkflow type has been deprecated as it is no longer used.

The qualification functions for ClearingSubmission and ClearingRejection have been adjusted to reflect the new structure. These two functions are not tested with sample messages as part of the CDM. In future, the qualification of Rejection / Submission shall operate at the WorkflowStep level rather than the BusinessEvent.

Similarly, the TradeWarehousePositionNotification qualification function was not tested and has been removed. This qualification shall also operate at the WorkflowStep level rather than BusinessEvent.

Synonyms have been adjusted to allow mapping of existing CME and DTCC messages to continue to work with the new structure.

Review Directions

In the CDM Portal Textual Browser search for the types listed above to see the changes.
Use the Ingestion function to review the CME and DTCC examples.

Product Model - Equity option strike price FpML mapping

What is being released?

This release fixes the FpML mapping of strike price for equity options.

Details

The FpML synonym mappings for equity option strike price Price->perUnitOfAmount attribute is updated based on the underlier.

  • For an equity underlier the perUnitOfAmount is mapped to FinancialUnitEnum->Share.
  • For an index underlier the perUnitOfAmount is mapped to FinancialUnitEnum->IndexUnit.

Review Directions

In the CDM Portal, select Ingestion and review the updated samples in the fpml-5-10 > products > equity folder:

  • eqd-ex01-american-call-stock-long-form
  • eqd-ex04-european-call-index-long-form

Infrastructure - Validation of inherited types

What is being released?

This release contains a bug fix related to validation of data types that inherit from other data types.

  • E.g. the type definition is specified using the extends keyword: type InterestRatePayout extends PayoutBase.

Previously, any super type validation failures, such as cardinality or condition failures, were not included in the validation diagnostics.

  • E.g. when validating an InterestRatePayout, validation failures from PayoutBase were ignored.

The super type validation failures are now included in the validation diagnostics.

Review Directions

In the CDM Portal, select Ingestion and review the Validation panel for any sample.

Product Model - Commodity total notional quantity FpML mapping

What is being released?

This release adds FpML mapping of total notional quantity for commodity products.

Details

The FpML synonym mappings for totalNotionalQuantity have been added to PriceQuantity->quantity for both CommodityPayout and FixedForwardPayout.

Review Directions

In the CDM Portal, select Ingestion and review all samples in the fpml-5-10 > products > commodity folder.

2.139.0

Legal Agreement Model - ISDA Create mappings

What is being released

This release moves the ISDA_Create_1_0 synonym mappings into a separate file, synonym-cdm-isda-create.rosetta. Separating the model and synonym mappings improves readability and maintenance, and is consistent with other mappings, such as FpML_5_10.

Review Directions

In the CDM Portal, select the Textual Browser and search for the ISDA_Create_1_0 synonyms.

Event Model - Composable Event Model - Qualification of Full Termination

The Business Event qualification function Qualify_Termination has been updated to qualify a Full Termination of a business event generated using the new composable event model.

Review Directions

In the CDM Portal, select Instance Viewer, and navigate to the Create Termination Business Event -> Full Termination - Equity Swap sample.

2.138.0

User Documentation - CDM Eligible Collateral Representation

What is being released

This release adds Eligible Collateral Representation user documentation to the documentation website. For reference, the document has already had a peer review and has previously been published as a PDF to ISDA members.

Review Directions

DSL Syntax - Reduce keyword to merge or aggregate a list

What is being released

This release introduces the reduce keyword to merge or aggregate the items of a list into a single item based on an expression. The reduce keyword can be used to implement simple operations such as summing a list of numbers, joining a list of strings, or finding a maximum or minimum value in a list, and well as operations on complex objects.

Upcoming releases will contain additional syntax to more concisely specify simple operations sum, join, min and max.

Syntax

reduce <parameter1>, <parameter1> [ <expression to merge or aggregate any two list items, parameter1 and parameter2> ]

Example

In the example below, the input list of numbers are combined by addition.

 func SumNumbers:     inputs:        numbers number (0..*)    output:        total number (1..1)    set total:        numbers             reduce a, b [ a + b ]

Example

In the example below, the input list of strings are concatenated together along with a delimiter. Given a list "a", "b", "c", and a delimiter ",", the resulting string would be "a,b,c".

 func JoinStrings:     inputs:        strings string (0..*)        delimiter string (1..1)    output:        result string (1..1)    set result:        strings             reduce a, b [ a + delimiter + b ]

Example

In the example below, the input list of numbers are aggregated to find the maximum number. Given two list items, n1 and n2; keep the greater item and discard the lesser item.

 func FindMaxNumber:     inputs:        numbers number (0..*)    output:        max number (1..1)    set max:        numbers             reduce n1, n2 [ if n1 > n2 then n1 else n2 ]

Example

In the example below, the input list of Vehicle are aggregated to find the vehicle with the most powerful engine.

 func FindVehicleWithMaxPower:     inputs:        vehicles Vehicle (0..*)    output:        vehicleWithMaxPower Vehicle (1..1)    set vehicleWithMaxPower:        vehicles             reduce v1, v2 [ if v1 -> specification -> engine -> power > v2 -> specification -> engine -> power then v1 else v2 ]

Review Directions

In the CDM Portal, select the Textual Browser, and search for usages such as Sum.

2.137.1

DSL Syntax - Usage of only-element and distinct with list operations

What is being released

This release enables the use of existing keywords only-element and distinct with a list operation (e.g. map, filter etc). Previously they had to be used in a separate function steps. All applicable usages in the model have been updated.

Example

Previously list operations, such as filter or map, had to be in a separate function step from only-element.

 func GetDrivingLicence:     inputs:        drivingLicences DrivingLicence (0..*)        licenceNumber string (1..1)    output:        drivingLicence DrivingLicence (0..1)    alias filteredDrivingLicences:        drivingLicences            filter [ item -> licenceNumber = licenceNumber ]    set drivingLicence:        filteredDrivingLicences only-element

Now only-element can be combined in the same expression.

 func GetDrivingLicence:     inputs:        drivingLicences DrivingLicence (0..*)        licenceNumber string (1..1)    output:        drivingLicence DrivingLicence (0..1)     set drivingLicence:        drivingLicences            filter [ item -> licenceNumber = licenceNumber ]            only-element

Review Directions

In the CDM Portal, select the Textual Browser, and search for usages such as ExtractCounterpartyByRole and ExtractAncillaryPartyByRole.

DSL Syntax - Set and Add keywords for assigning a list or appending to a list

What is being released

The existing function syntax assign-output appends list items to any existing list items. However, it is often necessary to replace the items of the list, and this requires a new syntax to differentiate the two use-cases. New keywords set and add have been introduced for function output assignment, which replace the existing assign-output functionality.
All functions have been updated to use the new syntax.

Example

 func AddDrivingLicenceToVehicleOwnership:    inputs:        vehicleOwnership VehicleOwnership (1..1)        newDrivingLicence DrivingLicence (1..1)    output:        updatedVehicleOwnership VehicleOwnership (1..1)    set updatedVehicleOwnership: vehicleOwnership        // add newDrivingLicence to existing list of driving licences    add updatedVehicleOwnership -> drivingLicence: newDrivingLicence

Example

 func UpdateDateOfRenewal:    inputs:        vehicleOwnership VehicleOwnership (1..1)        newDateOfRenewal date (1..1)    output:        updatedVehicleOwnership VehicleOwnership (1..1)    set updatedVehicleOwnership: vehicleOwnership        // overwrite existing list with an updated list of driving licences    set updatedVehicleOwnership -> drivingLicence:         vehicleOwnership -> drivingLicence            map [ Create_DrivingLicence(                         item -> countryofIssuance,                        item -> licenceNumber,                        item -> dateofIssuance,                        newDateOfRenewal,                        item -> vehicleEntitlement,                        item -> penaltyPoints ) ]

Review Directions

In the CDM Portal, select the Textual Browser, and review all functions.

2.136.6

Event Model – Margin Call Process, Exposure, Collateral Positions and Balance Representation

What is being released

New data types and attributed are proposed to represent margin calls for collateral related processes. These common data elements are intended for the various asset classes where collateral margin call practices exist such as (OTC Derivates, OTC Cleared, Repo, Securities Lending and ETD). The changes include the following:

  1. MarginCallBase – Specifies the generic requirements for all message types
  2. Exposure - Represents positions and aggregate exposure/ valuations required in margin call calculations
  3. MarginCallExposure - Represents exposure for margin call reference and a breakdown of exposure values if required
  4. CollateralBalance – Represents an aggregated collateral balance in a base currency with is settlement status and any haircut factors
  5. CollateralPortfolio – Allows for specification of portfolio identity, individual components of a collateral positions and a collateral balance
  6. CollateralPosition – Extends position for listing individual collateral plus their settlement status and any specific treatment/ haircuts.
  7. MarginCallIssuance - Represents common attributes for margin call issuance communications
  8. MarginCallInstructionType - Represents values to specify the call notification type and specific action types
  9. MarginCallResponseAction - Represents specific actions in response messages such as what collateral is being delivered and whether it is a deliver or return of collateral
  10. MarginCallResponse - Represents common attributes for margin call response communications. Includes agreement of amount, actions for delivery and if the response is (agreed in full, partially or disputed)

Review Directions

In the CDM Portal, select the Textual Browser and search and inspect each of the below data types, their attributes and descriptions. They are all in the event-common-type name space:

  1. MarginCallBase
  2. Exposure
  3. MarginCallExposure
  4. CollateralBalance
  5. CollateralPortfolio
  6. CollateralPosition
  7. MarginCallIssuance
  8. MarginCallInstructionType
  9. MarginCallResponseAction
  10. MarginCallResponse

In the name space event-common-type, review the following conditions:

  1. condition RegIMRoleIMOnly Found in relation to data type MarginCallBase - Specifies a condition to ensure that RegIMRole (Pledgor or Secured Party) is only applicable if the Reg margin type is defined as RegIM (Regulatory Initial Margin)
  2. condition OverallExposureSumOfSimmAndScheduleIM Found in relation to data type MarginCallExposure - Represents a condition to ensure that if Simm IM exposure and Schedule/Grid IM exposure are specified the sum value must equate to overall exposure amount
  3. condition CollateralPositionStatusSettledOrIntransitOnly Found in relation to data type CollateralPosition - Represents a condition to ensure that if a status is defined for a collateral position you must only indicate Settled Amount or In Transit amount from the available enumerations.
  4. condition CallTypeExpectedVisibility Found in relation to data type MarginCallInstructionType - Represents a condition to ensure that a visibility indicator is specifies then the call type must be an expected call.

In the name space event-common-enum please review and inspect each of the enumerations, their values and descriptions as listed below:

  1. CallTypeEnum - Represents the enumeration values that indicate the intended status of message type, such as expected call, notification of a call or a margin call.
  2. MarginCallActionEnum - Represents the enumeration values to identify the collateral action instruction.
  3. CollateralStatusEnum - Represents the enumeration list to identify the settlement status of the collateral.
  4. MarginCallResponseTypeEnum - Represents the enumeration values to define the response type to a margin call.
  5. RegMarginTypeEnum - Represents the enumeration values to specify the margin type in relation to bilateral or regulatory obligation.
  6. RegIMRoleEnum - Represents the enumeration values to specify the role of the party in relation to a regulatory initial margin call.
  7. HaircutIndicatorEnum - Represents the enumeration indicators to specify if an asset or group of assets valuation is based on any valuation treatment haircut.

Within the name space (event-position-type), the following changes have been made, please inspect the following:

  1. Data type Position has had the following attributes removed
  • product
  • quantity
  • postionStatus
    These have been replaced with a new attribute
  • positionComponent which uses PriceQuantity for representation of positions with many price quantities
  1. The attribute tradeReference has been renamed to reference TradeState instead of Trade
  2. Minor spacing issues have been rectified in the descriptions for the following data types:
  • Position
  • PortoflioState

Workflow Model - Intended BusinessEvent of next WorkflowStep

What is being released

Modelling components for the representation of the intended business event that would form the next workflowStep.

Details

nextWorkflowStep has been introduced as an attribute of data type WorkflowStep. This attribute allows the specification of either a nextIntendedEvent which allows the intended event to defined using the existing IntentEnum, or a proposedInstruction. A one-of condition requires one of the attributes to be defined only.

Review Directions

In the CDM Portal, select the Textual Browser and search for WorkflowStep and review the attributes above.
Select the Ingestion Viewer and review the sample fpml-5-10 > record-keeping > record-ex02-vanilla-swap-datadoc containing the Intent to Clear.

Event Model - Equity Swap Quantity Change Visualisations

What is being released

Visualisation examples have been added to demonstrate how an Increase, Partial Termination and Termination of an Equity Swap would be represented in the CDM.

Details

Three visualisation examples can now be reviewed demonstrating how a Quantity Change would be represented for an Equity Swap including representation of multiple TradeLot.

  • Create Increase Business Event - increases the quantity and notional on an existing Equity Swap through the addition of a new TradeLot.
  • Create Partial Termination Business Event - decreases the quantity and notional on an existing Equity Swap by changing the quantity of one TradeLot only.
  • Create Full Termination Business Event- fully terminates an Equity Swap through the reduction of all notionals to zero.

Review Directions

In the CDM Portal, select the Instance Viewer, navigate to the Create Termination Business Event folder and review the examples above.

2.136.1

Product Model - Enhancement for Enumerated Values for Capacity Units

What is being released?

This release updates the existing CapacityUnitEnum. This follows a gap analysis completed on the additional capacity codes being used in the industry for OTC products, including commodities, and ISO 20022 codes. There are two types of proposed changes:

  • Distinction between US and GB codes to improve clarity of the units being used.
  • Addition of new codes that were not supported by the CapacityUnitEnum

The following units have been removed:

  • CWT
  • GAL
  • T
  • ST

The following new units have been added:

  • UST - "Denotes a US Ton as a standard unit" replaces "ST"

  • GBT - "Denotes GB Ton as a standard unit" replaces "T"

  • USCWT - "Denotes US Hundredweight unit as a standard unit" replaces CWT"

  • GBCWT - "Denotes a GB Hundredweight as a standard unit"

  • USGAL - "Denotes a US Gallon as a standard unit" replaces GAL

  • GBGAL - "Denotes a GB Gallon unit as standard unit"

Weight and volume units:

  • BDFT - "Denotes Board Feet as a standard unit"
  • CBM - "Denotes Cubic Meters as a standard unit"
  • MMBBL - "Denotes a Million Barrels as a standard unit"
  • G - "Denotes a Gram as a standard unit"

Environmental units:

  • CRT - "Denotes Climate Reserve Tonnes as a standard unit"
  • ENVCRD - "Denotes Environmental Credit as a standard unit"
  • ENVOFST - "Denotes a Environmental Offset as a standard unit"

Energy units

  • KWDC - "Denotes a Kilowatt Day Capacity as a standard unit"
  • KWHC - "Denotes a Kilowatt Hours Capacity as a standard unit"
  • KWMC - "Denotes a Kilowatt Month Capacity as a standard unit"
  • KWMINC - "Denotes a Kilowatt Minute Capacity as a standard unit"
  • KWYC - "Denotes a Kilowatt Year Capacity as a standard unit"
  • MWDC - "Denotes a Megawatt Day Capacity as a standard unit"
  • MWHC - "Denotes a Megawatt HoursCapacity as a standard unit"
  • MWMC - "Denotes a Megawatt Month Capacity as a standard unit"
  • MWINC - "Denotes a Megawatt Minute Capacity as a standard unit"
  • MWYC - "Denotes a Megawatt Year Capacity as a standard unit"

Review Directions

In the CDM Portal Textual Browser search for CapacityUnitEnum to see the updated list of values.

2.135.1

Product Model - Enhancements for Multiple Underliers

What is being released

This release adds support for multiple underlier products represented through a new Basket product type.

The new Basket product type allows the representation of a list of BasketConstituent which are represented using the CDM Product type.
The Weight and Observable for each basket constituent can be represented through the PriceQuantity element in the model, with the addition of a Weight financial unit enumeration.

Specific to EquityPayout:

  • The cardinality of dividendPayout within DividendReturnTerms has been updated from single to multiple to allow a DividendPayoutRatio to be defined for each BasketConstituent.
  • The naming of the data type DividendPayout has also been updated to DividendPayoutRatio, and an underlier attribute has been added to associate each DividendPayoutRatio with its corresponding basket component.
  • The cardinality of fxFeature has been updated from single to multiple to allow a list of FX features to be defined when required.

Product Qualification functions have been added to the model to qualify products based on the new basket feature.

  • Qualify_EquitySwap_PriceReturnBasicPerformance_Basket
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Basket

FpML to CDM model to model mappings have been enhanced to support the new features.

Review Directions

In the CDM Portal, select the Textual Browser and review the changes by searching for the new and updated data types and enumerations below:

  • FinancialUnitEnum
  • Product
  • Basket
  • EquityPayout
  • DividendPayoutRatio

In the CDM Portal, select Ingestion and review the updated ingestion examples below in the fpml-5-10 > products > equity-swaps folder:

  • eqs-ex03-index-quanto-long
  • eqs-ex07-long-form-with-stub

Event Model - Common Business Event Creation Function

What is being released

This release contains an initial design for a common business event creation function that creates a BusinessEvent based on an Instruction list, and optionally an existing TradeState.

Details

  • Each Instruction contains a list of PrimitiveInstruction which specifies how create or modify a TradeState.
  • Function Create_BusinessEvent processes a list of Instruction; invoking the function Create_TradeState for each Instruction->primitiveInstruction, and assigning the output TradeState to the BusinessEvent.
  • Function Create_TradeState creates or modifies a TradeState based on an input PrimitiveInstruction list.

Review Directions

In the CDM Portal, select the Textual Browser and search for the data types and functions mentioned above.

In Rosetta, use the Visualisation panel to view Quantity Change - Increase function which invokes the Create_BusinessEvent function to create an Increase business event.

DSL Syntax - Flatten Keyword for Collapsing lists and Syntax Validation with List Item Cardinality enhancements for Filter and Map keywords

What is being released

This release contains additional syntax validation for list operations filter and map, and adds support to allow processing of items with multiple cardinality (e.g. a list of lists), and introduces new flatten keyword to convert a list of lists into a list.

Example

 func GetAllDrivingLicencesFromInternationalOwners: <"Get list of driving licences from owners with 2 or more licences.">    inputs:        owners VehicleOwnership (0..*) <"List of owners, each contain a list of driving licences.">    output:        drivingLicences DrivingLicence (0..*) <"Flattened list of driving licences.">    set drivingLicences:         owners            // map each owner item into a list of driving licences            map [ item -> drivingLicence ] // each item is now a list of driving licences            // filter to include only items which contain more than one driving licence            filter [ item count > 1 ] // each item is still a list of driving licences            // flatten list so output is a "flat" list of driving licences (rather that a list where each item is a list of driving licences)            flatten 

2.133.3

Product Model - Representation of Package Transactions

What is being released

Modelling components for the representation of package transactions have been added to the product model and mapped from FpML

Background

A package transaction consists of several trades which, even though they may be represented separately, are tied into a single package and typically executed together. Executing trades as a package has implications for post-trade processes such as reporting or confirmation and therefore requires specific package attributes to be captured.

This capture has 2 components:

  1. When separate trades are executed together as part of a single package, the atomic business event representing such bundled execution needs to record the attributes of that package - i.e. at minimum, an identifier for the package
  2. Individual trades that are part of a package must each refer to such package

Details

The package representation is achieved by introducing the following:

  • A new IdentifiedList data type is designed to represent any list of objects as a list of identifiers (when those objects have an identifier), with an identifier for the list itself. While this data type can be used to represent a package as a list of trade identifiers, the naming is generic to allow potential re-use for other use cases. The identifier attributes use the generic Identifier data type.
  • A new packageInformation attribute of type IdentifiedList has been added to BusinessEvent, to represent a single execution with multiple trades as a package.
  • A new packageReference attribute, also of type IdentifiedList has been added to ExecutionDetails (as contained in a standalone Trade), to provide a reference to the package when that trade was executed as part of a package.

The latter attribute is handled as a reference to preserve referential integrity. The package object, represented as a simple list of trade identifiers, should exists independently of the underlying trades and those trades simply make reference to it.

Several FpML samples representing package transactions (either the packages themselves, or single underlying trades) have been used to test the model and synonym mappings updated accordingly. Those samples are:

  • pkg-ex02-swap-spread-single-trade-execution-notification
  • pkg-ex55-execution-notification
  • pkg-ex60-request-clearing
  • pkg-ex61-clearing-confirmed

Review Directions

In the CDM Portal, select the Textual Browser and search for the above mentioned data types.
Select the Ingestion Viewer and review the above samples.

2.133.2

Business Event model - Composable Event model

Background

Business events in the CDM are currently described using separate instructions and functions to create each potential business event, and those functions are not composable. The various instructions captured in the Instruction data type are not structured consistently with some instructions referencing the before trade state, where as others do not. This contravenes the principle of composability and nullifies the benefit of defining primitive events.

The CDM event model is therefore being refactored based on three principles:

  • Develop a standardised functional logic for each primitive event function, leveraging the existing functional logic developed for business events.
  • Define a set of primitive instructions to be used as inputs in each primitive event function – those primitive instructions should set a consistent treatment of the before trade state.
  • Rewrite the functional logic of business events by composition in terms of those primitive event functions’ logic.

Following the refactoring Business Events will be described in terms of the instructions used to create the events and the after TradeState(s) created. The Primitive Event functions will describe the transformations that occur when the instructions are applied to create a business event.

What is being released

This release introduces core components required to develop the composable event model in the CDM. Changes are described based on the data types, enumerations and functions impacted:

Data types

  • BusinessEvent - new attributes instruction, instructionFunction and after added to describe the instructions that were used to create the event; the functional event defined by the set of instructions; and the after TradeState(s) created, respectively.
  • PrimitiveInstruction - a new data type containing the list of PrimitiveEvent instructions needed to pass into a PrimitiveEvent function
  • Instruction - new attributes primitiveInstruction and before added to describe inputs required to pass into a BusinessEvent described using the composable model.
  • TermsChangeInstruction - a new data type containing the instructions required to pass into the Terms Change primitive event function.

Enumerations

  • InstructionFunctionEnum - enumeration values indicating the Business Event defined by the set of PrimitiveInstructions provided.

Functions

  • Create_BusinessEvent - a new composable function that creates a business event from instructions containing primitive instructions and optionally a trade state.
  • Create_TradeState - a new composable function that creates a trade state from instructions containing primitive instructions and optionally a trade state.
  • Qualify_ContractFormation - qualification function updated to qualify a business event created using the composable model as contract formation.
  • Qualify_Execution - qualification function updated to qualify a business event created using the composable model as execution.
  • Qualify_Partial Termination - qualification function updated to qualify a business event created using the composable model as partial termination.
  • Qualify_Termination - qualification function updated to qualify a business event created using the composable model as termination.
  • Qualify_Renegotiation - qualification function updated to qualify a business event created using the composable model as renegotiation.
  • QuantityDecreased,QuantityIncreased,QuantityDecreasedToZero - compares quantities on a before and after TradeState.
  • QuantityDecreasedPrimitive,QuantityIncreasedPrimitive,QuantityDecreasedToZeroPrimitive - compares before and after quantities on a QuantityChangePrimitive.

Review Directions

In the CDM Portal, select the Textual Browser and search for the data types, enumerations and functions above.

2.132.3

Product Model - Calculation Period Dates for Equity and Commodity Products

What is being released

This release addresses inconsistencies identified in the cardinality of CalculationPeriodDates across different Payouts. These inconsistencies are identified across EquityPayout and CommodityPayout.

Review Directions

In the CDM Portal, select the Textual Browser and search for the EquityPayout, ObservationPayout and review CalculationPeriodDates. Review and inspect all updated cardinalities. These changes span across the following namespaces:

  • product-common-settlement-type
  • product-template-type

2.132.1

Legal Agreement Model - Eligible Collateral Schedule: Description Updates and Refactored Criteria

What is being released

The eligible collateral schedules (ECS) representation, related data types and associated descriptions have been enhanced or refined with additional features: In addition the higher level ECS data structure has been refactored.

  1. ECS representation and related data missing descriptions added

  2. Description of the ECS related data types and attributes updated for consistency.

  3. All descriptions across ECS representation related data reviewed and corrected as per style guide

  4. Data attribute within DebtInterestEnum realigned as not correctly positions in data list

  5. New attribute otherAssetType to data type AssetType for specifying other asset types, with a condition to ensure it exists if other asset types are specified under AssetTypeEnum

  6. Changes to the higher-level data structure EligibleCollateralCriteria and ConcentrationLimitCriteria:

    EligibleCollateralCriteria becomes an extension of newly named CollateralCriteriaBase

    CollateralCriteriaBase contains IssuerCriteria and AssetCriteria

    EligibleCollateralCriteria still connects to IssuerCriteria and AssetCriteria but additionally has CollateralTreatment

    • Within CollateralTreatment, ConcentrationLimitType has been moved to sit within ConcentrationLimitCriteria which also references CollateralCriteriaBase

    • Amendments have been made to the related condition ConcentrationLimitTypeChoice

Review Directions

In the CDM Portal, select the Textual Browser and search for the updated descriptions related to the ECS data CDM model mentioned above. Review and inspect all updated descriptions, these include missing, re written descriptions and any updates needed to be in line with the Rosetta style guide. These changes span across the following namespaces:

•  base-datetime-type•  base-math-enum•  base-staticdata-asset-common-enum•  base-staticdata-asset-common-type•  legalagreement-csa-enum•  legalagreement-csa-type•  observable-asset-enum•  observable-asset-type

Search for the DebtInterestEnum list, please inspect the re alignment of OtherStructured which was originally not properly listed and appeared to follow on from the line above InterestOnly this has now been correctly positioned beneath.

Search for data type AssetType and inspect the changes, an additional attribute has been added to this type called otherAssetType this is represented as a data string with an unlimited cardinality to allow you to represent various other asset types if needed. A related condition is also added beneath that so that if you identify other from the AssetTypeEnum options otherAssetType must exist.

Search for the data type CollateralCriteriaBase and inspect the changes, it has been modified so that EligibleCollateralCriteria extends CollateralCriteriaBase and now only contains the attributes treatment. CollateralCriteriaBase now only houses attributes issuer and asset.

Search for the data type ConcentrationLimit, and inspect the changes. The attribute ConcentrationLimitCriteria has been refactored to extend CollateralCriteriaBase that houses the relevant attributes to define asset and issuer criteria specifically. The data type still contains the attribute ConcentrationLimitType to allow a more generic specification of concentration limits. The related conditions have also been updated to reflect these changes.

2.132.0

DSL Syntax - Filter and Map Keywords for Extracting or Modifying the Items of a List

What is being released?

List Item Filtering

The filter keyword has been introduced to filter the items of a list based on a boolean expression. For each list item, a boolean expression is evaluated to determine whether to include or exclude the item. The resulting list is assigned to output parameter. Note that filtering a list does not change the item type, e.g. when filtering a list of PartyRole, the output list type must also be of PartyRole.

Syntax

 set outputList:     inputList         filter [ Boolean expression – true to include, false to exclude ]

Example

 func FilterPartyRole:     inputs:         partyRoles PartyRole (0..*)         partyRoleEnum PartyRoleEnum (1..1)     output:         filteredPartyRoles PartyRole (0..*)     set filteredPartyRoles:         partyRoles             filter [ item -> role = partyRoleEnum ]

List Item Processing

The map keyword has been added to modify the items of a list based on an expression. For each list item, an expression is invoked to modify the item. The resulting list is assigned to output parameter. The map keyword was chosen as it is the most widely used terms for this use-case, used in languages such as Java, Python, Scala, Perl, Clojure, Erlang, F#, Haskell, Javascript, PHP, and Ruby.

Syntax

 set outputList:     inputList         map [ Expression to modify item ]

Example

 func ExtractPriceType:      inputs:         prices Price (0..*)     output:         priceTypeEnums PriceTypeEnum (0..*)     set priceTypeEnums:         prices              map [ item -> priceType ]

Review Directions

In CDM Portal Textual Browser search the following functions.

Party/Counterparty functions:

  • ExtractCounterpartyByRole
  • ExtractAncillaryPartyByRole
  • ReplaceParty
  • FilterPartyRole

PriceQuantity functions:

  • FilterPrice
  • FilterQuantityByCurrency
  • FilterQuantityByCurrencyExists
  • FilterQuantityByFinancialUnit
  • MergeTradeLot

Transfer functions:

  • TransfersForDate
  • FilterCashTransfers
  • FilterSecurityTransfers

Miscellaneous functions:

  • Create_BillingRecords
  • Create_RelatedAgreementsWithPartyReference
  • ExtractFixedLeg

2.131.6

Product Model - Enumeration Referencing FpML Scheme

What is being released?

This release provides the ability to reference FpML Schemes when modelling enumerations. Upon contribution the enumeration values are then automatically populated based on the source data obtained from the FpML Scheme.

Once an Enumeration has been defined in the CDM a scheme reference annotation is used to indicate the source of information for populated the contents of the enumeration list. The annotation is made of a docReference with a body e.g. ISDA, corpus e.g. FpML_Coding_Scheme and a schemeLocation. An example of this is as follows:

[docReference ISDA FpML_Coding_Scheme schemeLocation "http://www.fpml.org/coding-scheme/floating-rate-index-3-2"]

Review Directions

In CDM Portal Textual Browser search for FloatingRateIndexEnum to see an example of an annotation and an enumeration populated using a reference.

2.131.5

Trade Model - Identification of the nature of a Trade Identifier

What is being released?

This release contains an updated TradeIdentifier data and a new enumeration TradeIdentifierTypeEnum in order to enumerate the nature of a Trade Identifier. Previously this has only been possible through the inclusion of a metadata scheme.

  • The enumeration list TradeIdentifierTypeEnum contains two values: UniqueTransactionIdentifier and UniqueSwapIdentifier

Review Directions

In CDM Portal Ingestion tab review sample trade:

fpml-5-10 > products > rates > cdm-xccy-swap-after-usi-uti

2.131.4

DSL Syntax - DRR - Invoke a Function from Filter When

What is being released?

This release contains DSL change to allow Digital Regulatory Reporting syntax to invoke a function from filter when.

In the code snippet below, the function IsPriceMonetary is called from the filter when clause.

  • filter when IsPriceMonetary( Price ) then

Review Directions

Changes to filter when syntax will be made in an upcoming Digital Regulatory Reporting release.

2.131.1

Event Model - Settlement Origin of a Transfer

What is being released?

This release normalises the settlement origin attribute of a transfer, that provides lineage to the trade component that generated that transfer.

Details

Following recent normalisation of SettlementTerms and the adition of price settlement cashflows to the PriceQuantity object, the origin of a transfer can be normalised to simply point to SettlementTerms object. This settlement origin attribute is now being expressed in the Transfer data type as:

settlementOrigin SettlementTerms (0..1) [metadata reference]

This reference uniquely points to the SettlementTerms object embedded in the trade component generating that transfer, since all transfer-generating components must contain settlement terms.

In turn, the purpose-built SettlementOrigin data type, which was previously used to provide this reference (as a switch between all the different transfer-generating components), is no longer used and has been deprecated.

Review Directions

In the CDM Portal, select the Textual Browser and review the above data types.

2.131.0

*Event Model - Normalisation of the Create Function for Quantity Change Primitive *

What is being released?

This release develops a normalised functional expression of the Create_ function for a quantity change primitive event.

Details

Following the addition of price settlement cashflows to the PriceQuantity structure, the functional expression of Create_QuantityChangePrimitive has been adjusted to account for price settlement cashflow inputs. The function now takes as arguments:

  • PriceQuantity, which can contain price settlement cashflows, instead of just Quantity
  • QuantityChangeDirectionEnum, which is a new enumeration to specify whether the quantity change is an increase, a decrease or a replacement (the quantity change being always specified as a positive number)
  • Identifier to (optionally) specify an identifier for the trade lot being increased or decreased

These attributes have been assembled to form a new QuantityChangeInstruction data type, which has been added to Instruction. That single data type supersedes the previously separate IncreaseInstruction and DecreaseInstruction data types, where the increase/decrease direction is now handled via an enumeration.

The normalised Create_ function for quantity change primitive event is now being utilised in a number of Create_ event functions:

  • Create_StockSplit
  • Create_Termination
  • Create_ClearedTrade
  • Create_Return

The function visualisation samples for Partial and Full Termination have been adjusted to reflect the new function argument structure.

Review Directions

In the CDM Portal, select the Textual Browser and review the aforementioned data types and functions. Select the Instance Viewer and review the following samples:

  • CREATE TERMINATION BUSINESS EVENT

2.130.5

Legal Agreement Model - ISDA Create Document Schema Update

What is being released?

This release contains an update to the JSON schemas used to translate ISDA Create documents to CDM. The ISDA Create schema version changes are detailed below:

  • isda-create > test-pack > production

    • 2018-im-csa-ny-law from 1.2 to 2.2
    • 2019-clearstream-cta to 1.2 to 2.2
    • 2019-isda-bank-custodian-cta to 1.1 to 2.1
    • 2019-isda-bank-custodian-sa-ny-law from 0.3 to 1.1
  • isda-create > test-pack > sandbox

    • 2018-im-csa-ny-law from 1.4 to 2.4
    • 2018-im-csd-eng-law from 1.4 to 2.4
    • 2019-clearstream-cta to 1.2 to 3.2
    • 2019-euroclear-cta to 1.2 to 3.2
    • 2019-isda-bank-custodian-cta to 1.3 to 3.3
    • 2019-isda-bank-custodian-sa-eng-law from 0.7 to 2.1
    • 2019-isda-bank-custodian-sa-ny-law from 0.7 to 1.3
  • isda-create > other > sandbox

    • 2016-clearstream-cta-eng-law from 0.7 to 1.4
    • 2016-clearstream-cta-ny-law from 0.7 to 1.4
    • 2016-im-csa-jpn-law from 0.6 to 1.4
    • 2016-im-csd-eng-law from 0.9 to 2.3
    • 2017-euroclear-cta-eng-law from 0.7 to 1.4
    • 2017-euroclear-cta-ny-law from 0.8 to 1.4
    • 2018-euroclear-cta-ny-law from 0.12 to 3.7
    • 2018-euroclear-sa-bel-law from 0.14 to 1.12

Review Directions

In the CDM Portal, select the Ingestion panel and review folders below:

  • isda-create > test-pack > production
  • isda-create > test-pack > sandbox
  • isda-create > other > sandbox

2.130.2

Event Model - ContractFormationInstruction

What is being released?

The ContractFormationInstruction data type has been updated to optionally take an executionInstruction as an input to be used in events which need to create an execution and fully formed contract in

Details

ContractFormationInstruction can now be defined using an execution or executionInstructions as input. A required choice condition validates that one of the attributes is provided along with an optional legalAgreement.

In addition the Create_ContractFormation business event creation function has been adjusted to use the executionInstruction attribute when defined.

Review Directions

In the CDM Portal, select the Textual Viewer and review the data types and functions mentioned above.

Event Model - Transfer: Remove unused Transfer sub-types

What is being released?

Several unused Transfer-related data types have been removed from the model

Details

The following data types and their corresponding synonyms have been removed:

  • CashTransferBreakdown
  • CashTransferComponent
  • CommodityTransferBreakdown
  • CommodityTransferComponent
  • SecurityTransferBreakdown
  • SecurityTransferComponent
  • TransferorTransferee

Review Directions

In the CDM Portal, select the Textual Viewer and see that the above mentioned data types have been removed.

DSL Syntax - Digital Regulatory Reporting Report Definition

What is being released?

This release contains DSL change to allow Digital Regulatory Reporting syntax to specify the report as a type where each attribute is associated with a regulatory rule, rather than a simple list of fields (e.g. regulatory rule list).

Details

Specifying the report as a type allows the cardinality and type to be specified and validated for each report attribute. Furthermore, the API report output is now structured to allow transformation into other data formats (e.g. ISO 20022) possible.

Review Directions

Changes to report syntax will be made in an upcoming Digital Regulatory Reporting release.

2.129.4

Event Model - Function Update

What is being released?

This release fixes the Create_ContractFormation function for the use case where the instructions include a LegalAgreement. By adding a Java implementation for the Create_RelatedAgreementsWithPartyReference, the provided LegalAgreement is now added to contract formation output Trade->contractDetails->documentation attribute.

Review Directions

In the CDM Portal, select the Visualization panel and review contents of the folder labeled Form Contract Business Event, and compare Fixed/Floating Single Currency Interest Rate Swap Master Agreement with Fixed/Floating Single Currency Interest Rate Swap No Legal Agreement.

Visualise Termination Events Description

What is being released?

Descriptions added to the Full Termination and Partial Termination CDM event visualisations.

Review Directions

In the CDM Portal, select the Instance Viewer (which will redirect you to Rosetta portal (press OPEN on ISDA Common Domain Model if prompted to) and select the following:

  • CREATE TERMINATION BUSINESS EVENT > Full Termination - Vanilla Swap
  • CREATE TERMINATION BUSINESS EVENT > Partial Termination - Vanilla Swap

The descriptions are also available in the CDM distributions.

2.129.3

Visualise Allocation Events

What is being released?

An Allocation workflow visualisation consisting of an Execution, a proposed WorkflowStep containing an AllocationInstruction and finally an accepted WorkflowStep containing an Allocation business event.

Review Directions

In the CDM Portal, select the Instance Viewer (which will redirect you to Rosetta portal {press OPEN on ISDA Common Domain Model if prompted to}) and select:

  • CREATE ALLOCATION BUSINESS EVENT > Vanilla Swap

2.129.2

Product Model - FpML Mapping of Notional

What is being released?

This release corrects the representation of Quantity in cases where notional is referenced between legs in FpML.

The existing FpML synonym mapping of notionals into PriceQuantity is inconsistent across products, which creates challenges for creation of DRR rules.

The following changes standardise location of initial quantity within PayoutBase creating normalized location for capture of value and onward referencing:

  • fxLinkedNotionalSchedule -> initialQuantity has been moved up to payoutQuantity -> quantitySchedule.
  • Funding leg of an Equity Swap has initial notional populated in payoutQuantity -> quantitySchedule with reference to the only PriceQuantity -> quantity.
  • Population of PriceQuantity is unchanged.

Review Directions

In the CDM Portal, select the Ingestion Panel and review the following samples:

  • fpml-5-10 > products > rates > cdm-xccy-swap-after-usi-uti.xml
  • fpml-5-10 > products > rates > cdm-xccy-swap-before-usi-uti.xml
  • fpml-5-10 > products > equity > eqs-ex01-single-underlyer-execution-long-form.xml
  • fpml-5-10 > products > equity > eqs-ex01-single-underlyer-execution-long-form-other-party.xml
  • fpml-5-10 > products > equity > eqs-ex06-single-index-long-form.xml
  • fpml-5-10 > products > equity > eqs-ex09-compounding-swap.xml
  • fpml-5-10 > products > equity > eqs-ex10-short-form-interestLeg-driving-schedule-dates.xml
  • fpml-5-10 > products > equity > eqs-ex11-on-european-single-stock-underlyer-short-form.xml

2.129.1

Event Model - Create Termination Function

What is being released?

This release introduces a creation function for termination and partial termination events.

Details

The function Create_Termination has inputs of type TradeState and TerminationInstructions, and an output of type BusinessEvent that contains a QuantityChangePrimitive, and optionally a TransferPrimitive.

Review Directions

In the CDM Portal, select the Textual Browser and review the type and functions mentioned above.

2.129.0

DSL Syntax - Distinct keyword

What is being released?

This release introduces the new DSL keyword distinct used to remove duplicates from a list.

The distinct keyword can appear after an attribute with multiple cardinality in a path expression, as shown in the example below.

  • quantity -> unitOfAmount -> currency distinct

The operation will return a subset of the list containing only distinct elements. It’s useful for removing duplicate elements from a list, and can be combined with other syntax features such as count to determine if all elements of a list are equal, as shown in the example below.

  • payout -> interestRatePayout -> payoutQuantity -> quantitySchedule -> initialQuantity -> unitOfAmount -> currency distinct count = 1

The product qualification function, Qualify_BaseProduct_CrossCurrency, has been updated to use the distinct keyword to identify when a product has a different currency specified on each InterestRatePayout.

func Qualify_BaseProduct_CrossCurrency:     inputs: economicTerms EconomicTerms (1..1)    output: is_product boolean (1..1)    assign-output is_product:    Qualify_AssetClass_InterestRate_Swap(economicTerms) = True       and economicTerms -> payout -> interestRatePayout count = 2        and (            economicTerms -> payout -> interestRatePayout -> payoutQuantity -> quantitySchedule -> initialQuantity -> unitOfAmount -> currency distinct count = 2         or (             economicTerms -> payout -> interestRatePayout -> payoutQuantity -> quantitySchedule -> initialQuantity -> unitOfAmount -> currency exists             and economicTerms -> payout -> interestRatePayout -> payoutQuantity -> quantityMultiplier -> fxLinkedNotionalSchedule -> varyingNotionalCurrency exists             and economicTerms -> payout -> interestRatePayout -> payoutQuantity -> quantitySchedule -> initialQuantity -> unitOfAmount -> currency &lt;> economicTerms -> payout -> interestRatePayout -> payoutQuantity -> quantityMultiplier -> fxLinkedNotionalSchedule -> varyingNotionalCurrency         )     )

Review Directions

In the CDM Portal, select the Textual Browser and review the following functions:

  • Qualify_BaseProduct_CrossCurrency
  • Qualify_BaseProduct_IRSwap
  • Qualify_BaseProduct_Inflation

In the CDM Portal, select the User Documentation tile and navigate to the Rosetta DSL > Expression > Rosetta Path Expressions section, or review the documentation section directly:

2.128.5

Product Model - FpML Synonym Mapping for Forward Rate Agreements

What is being released?

This release updates the FpML mappings for FRAs to cover PriceQuantity.

Details

FpML represents FRAs in a single fra xml element which is currently mapped into separate fixed and floating InterestRatePayout legs. This release adds logic to also map the PriceQuantity instances that correspond to the fixed and floating InterestRatePayout components of the product.

Review Directions

In the CDM Portal, select the Ingestion Panel and review the following samples:

  • fpml-5-10 > products > ird-ex08-fra.xml
  • fpml-5-10 > products > ird-ex08-fra-no-discounting.xml

Concentration Limit – Refactor value and percentage cap. Addition of concentration limit type (Issue Outstanding Amount)

What is being released?

The data type ConcentrationLimit has various attributes to define a concentration limit by criteria but also provides a means for how to express the concentration limit as a number value or a percentage. The corresponding data attributes valueCap and percentageCap only allowed for expression of a higher limit (cap). These have been renamed and refactored to valueLimit and percentageLimit and will now allow the user to express both an upper and lower limit (cap and floor) as a number value or percentage.

In addition to this, data attribute ConcentrationLimitTypeEnum, an additional option has been added to the enumeration list to specify IssueOutstandingAmount The user can now express concentration limits on an assets outstanding amount issued on the market.

Review Directions

In the CDM Portal, select the Textual Browser and search for the data types mentioned above.

  • Search for the data type ConcentrationLimit and inspect the change to remove data attribute valueCap and percentageCap and replace with valueLimit and percentageLimit and changes to the description and related condition.
  • To support the number (%) and money ranges, additional data types have been added to the base-math-type namespace. Search for data types NumberRange, NumberBound, MoneyRange and MoneyBound, and inspect the logic to support specifying a number and money range lower and upper limits with related conditions to ensure the user specifies at least one ends of the scale. Please also note each option also has a boolean that will indicate if the percentage or money amount inclusive or not.
  • Search for the data type ConcentrationLimit and within find data attribute ConcentrationLimitTypeEnum, inspect the additional option has been added to the enumeration list to specify IssueOutstandingAmount and its supporting description.

Event Model – Function Documentation

This release updates descriptions to the Visualisation panel for a few product in the functions: Execute Business Event and Contract Formation.

Descriptions have been added for the following products:

  • Functions > Execute Business Event > Interest Rate Swap with Other Party Payment

Descriptions have been updated/expanded for the following products:

  • Functions > Execute Business Event > Credit Default Swap
  • Functions > Form Contract Business Event > Fixed/Floating Interest Rate Swap
  • Functions > Form Contract Business Event > Credit Default Swap

Review Directions

In the CDM Portal select the Visualisation panel and review contents of the folders specified above.

2.128.1

Event Model - Map FpML Record-Keeping Novation Event

What is being released?

This release adds FpML Record-Keeping synonyms for the notional amount, and parties of the before and after states representing a Novation event.

Review Directions

In the CDM Portal, select the Ingestion Panel and review the following samples:

  • fpml-5-10 > record-keeping > record-ex113-novation-from_transferor.xml
  • fpml-5-10 > processes > msg-ex52-execution-advice-trade-partial-novation-C02-00.xml
  • fpml-5-10 > processes > msg-ex53-execution-advice-trade-partial-novation-correction-C02-10.xml

Event Model - Map FpML Record-Keeping Clearing Event

What is being released?

This release adds FpML Record-Keeping synonyms for clearing events, including timestamps and the workflow event status.

Review Directions

In the CDM Portal, select the Ingestion Panel and review the following samples:

  • fpml-5-10 > record-keeping > record-ex143-new-trade-CFTC-clearing.xml
  • fpml-5-10 > record-keeping > record-ex149-new-beta-trade-CFTC-SEC-and-canada.xml

Product Model - Additional Day Count Fraction

What is being released?

This release adds the day count fraction ACT/ACT.ISMA to the model denoting a Fixed/Floating Amount that will be calculated in accordance with Rule 251 of the statutes, by-laws, rules and recommendations of the International Securities Market Association.

Review Directions

In the CDM Portal, select the Textual Browser and navigate to the above enumeration.

Product Model - Early Termination Provisions

What is being released?

This release adjusts data types OptionalEarlyTermination and MandatoryEarlyTermination to contain the required settlement terms data type and adds synonym mappings for Optional and Mandatory Early Termination events in the CDM.

Details

  • OptionalEarlyTermination->cashSettlement updated to be of data type SettlementTerms in order to include settlementDate
  • MandatoryEarlyTermination->cashSettlement updated to be of data type SettlementTerms in order to include settlementDate
  • Synonym mappings added to support ingestion of FpML 5.10
  • The following trades contained in the fpml-5-10 > incomplete-products > interest-rate-derivatives folder have been moved to fpml-5-10 > products > rates
    • ird-ex11-euro-swaption-partial-auto-ex
    • ird-ex13-euro-swaption-cash-with-cfs
    • ird-ex14-berm-swaption
    • ird-ex15-amer-swaption
    • ird-ex16-mand-term-swap
    • ird-ex17-opt-euro-term-swap
    • ird-ex18-opt-berm-term-swap
    • ird-ex19-opt-amer-term-swap
    • ird-ex20-euro-cancel-swap
    • ird-ex21-euro-extend-swap
    • ird-ex26-fxnotional-swap-with-cfs
    • ird-ex28-bullet-payments
    • ird-ex31-non-deliverable-settlement-swap
    • ird-ex34-MXN-swap
    • ird-ex35-inverse-floater-inverse-vs-floating
    • ird-ex36-amer-swaption-pred-clearing

Review Directions

In the CDM Portal, select the Textual Browser and navigate to the above data type.
In the CDM Portal, select the Ingestion panel and review sample trades specified above, specifically ird-ex16-mand-term-swap and ird-ex17-opt-euro-term-swap.

Product Model - FINOS - Product Control Consensus Pricing Services

What is being released?

A new object TradePricingReport and new property optionReferenceType has been added to support the Product Control Consensus Pricing Services on Equity Vanilla Options. The additional object and property together with the existing OptionPayout object will be used to form the common template data model that include all the attributes where vendors are expected to require to run valuation processes and return consensus data to the banks.

Details

  • TradePricingReport – Object created with new data attributes PricingTime (data type timezone) and DiscountingIndex (data type FloatingRateIndexEnum) to specify the time and discounting curve used to price an option and existing attribute Trade to specify the option trade details.
  • OptionReferenceType - Added to Observation to allow specification of what product reference source is used to calculate the option price.
  • OptionReferenceTypeEnum – New enum types created and included in OptionReferenceType to capture the reference source type for option pricing; enums include Future and Spot.

Review Directions

In the CDM Portal, select the Textual Browser and review the types and enumerations specified above.

2.127.2

Event Model – Function Documentation

What is being released?

This release adds descriptions to the Visualisation panel for all products in one of the functions: Execute Business Event.

Details

Descriptions have been added for the following products:

  • Functions > Execute Business Event > Swaption
  • Functions > Execute Business Event > Interest Rate Swap with Initial Fee
  • Functions > Form Contract > Basis Swap
  • Functions > Form Contract > Credit Default Swap
  • Functions > Form Contract > FX Forward
  • Functions > Form Contract > Fixed/Floating Single Currency Interest Rate Swap
  • Functions > Form Contract > Forward Rate Agreement
  • Functions > Form Contract > OIS Swap
  • Functions > Form Contract > Swaption
  • Functions > Form Contract > Repo Fixed Rate

Review Directions

In the CDM Portal select the Visualisation panel and review contents of the folders specified above.

Event Model - Map FpML Record-Keeping Termination Event

What is being released?

This release adds FpML Record-Keeping synonyms for the notional amount of the before and after states representing a Termination event.

Review Directions

In the CDM Portal, select the Ingestion Panel and review the following samples:

  • fpml-5-10 > record-keeping > record-ex112-partial-termination.xml
  • fpml-5-10 > record-keeping > record-ex130-partial-termination-xccy.xml
  • fpml-5-10 > record-keeping > record-ex131-partial-termination-xccy-swap.xml

2.127.0

Product Model - Normalisation of the PriceType and CashflowType enumerations

What is being released?

This release normalises the PriceType (formerly contained into a single enumeration) into a composite list of enumerations, each tackling a different dimension used to qualify the type of a price: asset price / interest rate / exchange rate / cash payment, gross / net, clean / dirty etc. This release also separates the CashflowType (formerly contained into a single enumeration) into a composite list of enumerations. Where the CashflowType corresponds to a negotiated event between parties, a dedicated enumeration qualifies the type of lifecycle event the cashflow originates from (termination / novation etc.). This same enumeration is used in turn in PriceType, to further qualify the source of a cash payment price.

Details

  • The list of enumerated values for PriceTypeEnum is reduced to only 5 values.

  • The CashflowTypeEnum is reduced to only qualify cashflows corresponding to scheduled events, with all fee / premium values taken out.

  • The following new enumerations are introduced to capture the other dimensions of a price type:

    • CashPriceTypeEnum
    • GrossOrNetEnum
    • CleanOrDirtyPriceEnum
    • CapFloorEnum
    • SpreadTypeEnum
    • FeeTypeEnum
  • New CashPrice and PriceExpression types are introduced, that use these new enumerations. CashPrice is encapsulated in PriceExpression.

  • A new CashflowType is introduced, that uses these enumerations. CashPrice is also encapsulated in CashflowType, with a required choice between CashPrice or the (reduced) CashflowTypeEnum.

  • The Price type is modified to encapsulate the new composite PriceExpression type, instead of the flat PriceTypeEnum.

  • The Cashflow type is modified to encapsulate the new composite CashflowType, instead of the flat CashflowTypeEnum.

  • FpML synonyms have been adjusted so that the FpML price or cashflow type attributes map to the new structures.

  • Functions have been adjusted to preserve the current behaviour while using the new enumeration structures.

Review Directions

In the CDM Portal, select the Textual Browser and review the types and enumerations specified above. Select the Ingestion Panel and review the new Price structure on the sample output.

2.126.1

Product Model - Mapping to FpML: Addition of incomplete product examples

What is being released?

This release includes additional FpML 5.10 data samples within the model where full synonym mapping has not been completed yet. The new samples are included in an fpml-5-10 -> incomplete-products folder in order to identify them separately to samples in the fpml-5-10 -> products folder where CDM model components exist and synonym mappings have been created to support ingestion. The addition of these examples gives transparency on further work required to support all products contained in the FpML 5.10 Confirmation View Examples download.

Details

Examples contained in the FpML -> CDM 5.10 Confirmation View download which are not contained in the existing CDM ingestion examples have been added in the following folders:

  • fpml-5-10 > incomplete-products > bond-options
  • fpml-5-10 > incomplete-products > commodity-derivatives
  • fpml-5-10 > incomplete-products > correlation-swaps
  • fpml-5-10 > incomplete-products > credit-derivatives
  • fpml-5-10 > incomplete-products > dividend-swaps
  • fpml-5-10 > incomplete-products > equity-options
  • fpml-5-10 > incomplete-products > equity-swaps
  • fpml-5-10 > incomplete-products > fx-derivatives
  • fpml-5-10 > incomplete-products > inflation-swaps
  • fpml-5-10 > incomplete-products > interest-rate-derivatives
  • fpml-5-10 > incomplete-products > variance-swaps
  • fpml-5-10 > incomplete-products > volatility-swaps

Review Directions

In the CDM Portal, select the Ingestion panel and review contents of the folders specified above.

Event Model – Function Documentation

What is being released?

This release adds descriptions to the Visualisation panel for all products in one of the functions: Execute Business Event.

Details

Descriptions have been added for the following products:

  • Functions > Execute Business Event > Basis Swap
  • Functions > Execute Business Event > Credit Default Swap
  • Functions > Execute Business Event > FX Forward
  • Functions > Execute Business Event > Fixed/Floating Single Currency Interest Rate Swap
  • Functions > Execute Business Event > Forward Rate Agreement
  • Functions > Execute Business Event > OIS Swap
  • Functions > Execute Business Event > Repo Fixed Rate

Review Directions

In the CDM Portal select the Visualisation panel and review contents of the folders specified above.

2.126.0

Product Model – Inflation Swaps

What is being released?
Inflation Rate Indices have been added to the CDM so that Inflation Linked products can be represented. In addition synonym mappings have been updated to support ingestion of FpML sample trades.

Details

  • InflationRateIndexEnum added containing enumeration of inflation rate indices.
  • Synonym mappings added to support ingestion of FpML 5.10
  • The following trades containing in the fpml-5-10 > incomplete-products > inflation folder have been moved to fpml-5-10 > products > inflation
    • inflation-swap-ex01-yoy
    • inflation-swap-ex02-yoy-bond-reference
    • inflation-swap-ex03-yoy-initial-level
    • inflation-swap-ex04-yoy-interp
    • inflation-swap-ex05-zc

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant enumeration specified above.

In the CDM Portal, select the Ingestion panel and review sample trades specified above.

2.123.4

Product Model – Added Support for Commodity Options & Refactor of AveragingObservation

What is being released?

OptionPayout has been updated to support vanilla Commodity Options (Bullet European & Asian). The release refactors the AveragingObservation object to AveragingCalculation and introduces a new property, ObservationTerms, to the OptionPayout object. The solution decouples the aspects of observing & averaging a price that were previously both contained within AveragingObservation and also offers support for cross product observations that are possible for Option contracts.

Details

  • AveragingCalculation - New data type created to replace AveragingObservation & defines calculation parameters associated with Average/Asian Options. Modelled in OptionFeature with data attribute averagingRateFeature.
  • ObservationTerms - New data type created and included in OptionPayout to specify terms associated with observing a benchmark price. Contains a number of existing data types to capture; observable, pricingTime, pricingTimeType, primarySource, secondarySource, precision, observationDate & calculationPeriodDates.
  • AveragingStrikeFeature - Object created to keep previous support for average strikes & replaces previous use of AveragingObservation in OptionStrike.
  • ParametricDates - Added to ObservationDates to allow specification of date terms in parametric means typically associated with commodities.

Relevant synonym mappings have been updated so that linkage exists to equivalent FpML structures.

New Ingestion Examples

New FpML examples have been added to the CDM distribution & are available in the ingestion pack to validate the changes being made for the representation of Commodity Options and also Commodity Swaps, that was included in a previous release. The examples are:

  • com-ex2-gas-swap-prices-first-day
  • com-ex3-gas-swap-prices-last-three-days
  • com-ex4-electricity-swap-hourly-off-peak
  • com-ex6-gas-call-option
  • com-ex7-gas-put-option
  • com-ex9-oil-put-option-american
  • com-ex27-wti-put-option-asian-listedoption-date
  • com-ex28-gas-swap-daily-delivery-prices-option-last
  • com-ex39-basket-option-confirmation
  • com-ex41-oil-asian-barrier-option-strip
  • com-ex46-simple-financial-put-option

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

Select the Ingestion view and review the samples in fpml-5-10 > products > commodity.

2.123.2

Product Model – Price and Quantity including Settlement Instructions

What is being released?

Cashflow components have been harmonised such that, except for Foreign Exchange, all the cashflow attributes of an FpML trade are mapped as settlement instructions in the Price/Quantity object of a CDM trade.

Background

Multiple inconsistencies have been identified in the current modelling of settlement terms. This leads to inefficiency in the product model and in the ability to represent functional rules for digital regulatory reporting.

This release follows on recent work to implement the baseline of an atomic settlement structure in the PriceQuantity object, from which a product- and asset-agnostic functional settlement model can be built. It results that the structure of a tradable product's cashflows can be harmonised between the PriceQuantity and Cashflow components. In turns, all the cashflows that are meant to be settled as part of a trade can be extracted from the product definition and represented in PriceQuantity, for example:

  • the premium of an option
  • the upfront fee of a CDS
  • the present value of a swap in case of unwind or novation

This release remaps the remaining cashflow attributes (settlement date and direction) of all FpML and related samples as settlement instructions in the PriceQuantity structure, and removes them from the Cashflow component of the Product object. The exception is Foreign Exchange products, which continue to use Cashflow components to represent the currency flows.

Details

  • The following data types have been updated:

    • A new CashflowDetails data type has been introduced, that represents ancillary information (such as payment discounting, cashflow type etc.) that can be attached to a cashflow. This information was previously found directly on the Cashflow data type.
    • The Cashflow data type has been simplified. It continues to extend PayoutBase, but now only contains one optional cashflowDetails attribute.
    • The same cashflowDetails attribute has been added to PriceQuantity.
    • The paymentDelay attribute (applicable to CMBS and RMBS) has been moved out of Cashflow and positioned in the common SettlementDate component.
  • All the FpML synonyms for the cashflow attribute in Payout have been removed, so that no cashflow components are being mapped as product definition.

  • The synonyms for the cashflow attribute of ForeignExchange have not been modified.

  • Synonyms have been added to the PriceQuantity component to populate its buyerSeller and settlementTerms attributes based on FpML samples.

  • The CDS qualification functions have been updated to account for the case where no cashflow is present, since the upfront fee is now mapped outside of the product.

  • Event model functions that were operating on the Cashflow component have been adjusted to effect the inherited PayoutBase attributes instead.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and functions specified above.

Select the Ingestion Panel and review relevant samples, for example:

  • product>credit>cdindex-ex01-cdx-uti (upfront fee example)
  • product>equity>eqd-ex01-american-call-stock-long-form (premium example)
  • product>rates>GBP-OIS-uti (additional payment example)

2.122.0

Event Model – Contract State deprecation

What is being released?

The ContractState data type and all related types, functions and synonyms are being retired from the model.

Background

This release follows-on from the primitive harmonisation work completed earlier, whereby the event model is now harmonised to operate on the single TradeState data type. All other data types to represent trade states are redundant and unused, so they can be removed from the model.

Details

  • The following data types and the related synonyms have been removed:

    • ContractState
    • PostContractFormationState, inherited from ContractState
  • The following functions have been removed:

    • ContractStateFromTradeState
    • TradeStateFromContractState

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

DSL Syntax - Synonym keyword to remove HTML formatting

What is being released?

This release introduces the new DSL keyword removeHtml for synonyms to specify that all HTML tags should be removed during ingestion.

In the code snippet below, the synonym will map the ISDA_Create_1_0 attribute specify to a CDM attribute. The removeHtml keyword means that any HTML tags contained in the data will be removed.

  • [synonym ISDA_Create_1_0 value "specify" removeHtml]

Review Directions

In the CDM Portal, select the Ingestion view, and review the samples in isda-create.

2.121.0

Product Model – Price and Quantity including Settlement Instructions

What is being released?

The structural definition of the tradable product has been rationalised, with a merged price/quantity structure that now incorporates settlement instructions (i.e. the settlement terms and the buyer/seller direction). Mappings have not been modified in this release, so attributes related to price/quantity settlement (e.g. option premium or upfront fee, foreign exchange etc.) are still mapped to the product and will be remapped at a later stage.

Background

Multiple inconsistencies have been identified in the current modelling of settlement terms. This leads to inefficiency in the product model and in the ability to represent functional rules for digital regulatory reporting.

This release focuses on creating the baseline of an atomic settlement structure from which a product- and asset-agnostic functional settlement model can be built. This structure is based on the principle that a settlement consists of an exchange of a given quantity against a given price between two parties. The existing PriceQuantity structure already captures the price and quantity components of that exchange. It is now extended to include the required settlement attributes such as settlement date, direction etc. These settlement attributes are optional because some price/quantity may not define a straight settlement: instead, such price/quantity may be inputs into a product that will further specify the mechanics of those settlements.

Details

  • The PriceQuantity data type has been extended to describe a harmonised settlement structure that now also includes:

    • a settlementTerms attribute, that describes the settlement method (cash or physical)
    • a buyerSeller attribute, that handles the direction of the settlement
  • The SettlementInstructions data type has been retired, as its attributes have now been merged into the unique PriceQuantity, and the settlementInstructions attribute has been removed from TradableProduct.

  • Each trade lot now describes its own settlement attributes independently, which can be found in tradeLot -> priceQuantity. All functional expressions have been updated to fetch the settlement attributes of TradableProduct from tradeLot -> priceQuantity instead of settlementTerms and settlementInstructions.

  • Some static (java) code has had to be adjusted to work with the restructured model.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

In the Ingestion panel, verify that samples ingestion output has not been altered. The re-mapping of attributes related to the settlement of price/quantity (e.g. option premium) will occur at a later stage.

2.120.1

Product Model - Interest Payout Calculation Enhancements

What is being released?

A set of enhanced types and functions for computing interest rate payout amounts, and in particular floating amounts.

The enhancements are located in the following namespaces:

  • cdm.product.asset.calculation includes enhanced fixed and floating amount calculations, with the capability to look up the notional in effect during the calculation period, and to do day count calculations using a simplified day count implementation that uses the base date library.
  • cdm.product.asset.floatingrate includes floating rate setting and processing, with the capability to look up and apply rate processing such as spreads, multipliers, caps and floors, etc.
  • cdm.observable.asset.calculatedrate includes a preliminary implementation of the new modular calculated floating rates (such as lookback compound or observation shift daily average) defined in the 2021 ISDA definitions. Also supports OIS rate calculations.
  • cdm.observable.asset.fro - includes logic for retrieving Floating Rate Option definitional metadata and index values.
  • cdm.base.datetime.daycount - new day counting logic, independent of calculation period calculations.

The current implementation should be viewed as experimental and is being released for review and feedback. Implementers using these capabilities are cautioned that they should test the results carefully, and report any issues or concerns to the CDM team.

Some of the calculation period amount capabilities that are included in FpML and the ISDA Definitions that are not yet fully supported in these enhancements include:

  • Initial Rate: there is a basic implementation of rates specified for the initial period, but it is not thoroughly tested and may require adjustment to handle all cases correctly.
  • Stubs: There is no support for stub rate calculations at this time.
  • Compounding methods: there is currently only support for calculating the cash flows for a single calculation period. There is some support roughed in for compounding over multiple calculation periods using the CompoundingMethod, such as calculating spread-exclusive rates and cashflows, but this has not been used or tested yet.
  • Reset averaging: there is currently no support for averaging using the resetDates concept, where the reset period is set to more frequent than the calculation period.
  • The US rate treatment logic has a defined entry point but no implementation as yet. It may be that the interface to that function will need adjustment to provide all the necessary information for the calculation, although an attempt has been made to supply the necessary information.

In addition, some logic has been refactored. For example, the DayCountFractionEnum has been moved to cdm.base.datetime.daycount.

We anticipate that some additional cleanup changes will be made in subsequent releases, including:

  • The existing FixedAmount and FloatingAmount functions are likely to be rewritten to use the new calculation logic.
  • The existing DayCountFraction function is likely to be retired, replaced by the new YearFraction function.

Following is a description of each of the functions included in the release.

New functions in cdm.product.asset.calculation include:

  • FixedAmountCalculation: Calculates the fixed amount for a calculation period by looking up the notional and the fixed rate and multiplying by the year fraction
  • LookupFixedRate: Look up the fixed rate for a calculation period
  • FloatingAmountCalculation: Calculate a floating amount for a calculation period by determining the raw floating rate, applying any rate treatments, looking up the calculation period notional, then performing the multiplication of the notional, rate, and year fraction. Floating amount calculations are described in the 2021 ISDA Definitions in Section 6 and 7.
  • LookupNotionalAmount: Look up the notional amount in effect for a calculation period
  • LookupQuantityScheduleAmount: Look up a value from a quantity schedule given a supplied starting date. It will return the value of the last step that is before the supplied starting date, or if none matches, the initial value.
  • FindNonNegativeScheduleSteps: Find all schedule step values whose stepDate is before or equal to the supplied periodStartDate, starting from supplied startingStep number. Returns a list of step values starting from the last matching one and going in reverse order. Done this slightly odd way for efficiency and simplicity in code generation.
  • SelectNonNegativeScheduleStep: Retrieve a single step from a schedule given a step number. This is an entry point to a function written in a native language like Java. Returns the step if it exists, else null. The index is 0-based, so 0 returns the first step.
  • CalculateYearFraction: Calculate the year fraction for a single calculation period, by invoking the base year fraction logic

New functions in cdm.product.asset.floatingrate include:

  • DetermineFloatingRateReset: Get the value of a floating rate by either observing it directly or performing a rate calculation. This function works differently depending on the rate category and style, as described in the 2021 ISDA Definitions, Section 6.6.
  • GetFloatingRateProcessingType: Get a classification of the floating rate is processed. This is based on FRO category, style, and calculation method, as described in the 2021 ISDA Definitions Section 6.6. The categorization information is obtained from the FRO metadata.
  • ProcessFloatingRateReset: Entry point for the function that performs the floating rate resetting operation. There are different variations depending on the processing type (e.g. screen rate, OIS, modular calculated rate).
  • GetCalculatedFROCalculationParameters: Initialize a calculation parameters block for an OIS or a daily average rate. Used to support FROs that include an embedded calculation.
  • ProcessFloatingRateReset(processingType: FloatingRateIndexProcessingTypeEnum->CompoundIndex): Call the compounded index processing logic to calculate the reset.
  • EvaluateScreenRate: Evaluate/lookup the value of a screen rate.
  • DetermineResetDate: Determine the value of the reset date given a reset dates structure and a calculation period for which it is needed. Reset dates are defined in the 2021 ISDA Definition in Section 6.5.5.
  • DetermineFixingDate: Determine the observation (fixing) date needed given a reset dates structure and a reset date.
  • GetFloatingRateProcessingParameters: Determine the processing parameters to use from the InterestRatePayout by looking them up if necessary from the corresponding schedules in the interest rate stream
  • SpreadAmount: Look up the spread amount for a calculation period
  • MultiplierAmount: Look up the multiplier amount for a calculation period
  • CapRateAmount: Look up the cap rate amount for a calculation period
  • FloorRateAmount: Look up the floor rate amount for a calculation period
  • LookupRateScheduleAmount: Look up an amount for a calculation period from a rate schedule
  • FindScheduleSteps: Find all rate schedule step values whose stepDate is before or equal to the supplied periodStartDate, starting from supplied startingStep number. Returns a list of step values starting from the last matching one and going in reverse order. Done this slightly odd way for efficiency and simplicity in code generation. Assumes schedule step are in ascending date order.
  • SelectScheduleStep: Retrieve a single step from a schedule given a step number
  • ApplyFloatingRateProcessing: Perform rate treatments on floating rates, such as applying spreads, multipliers, caps and floors, rounding, and negative interest treatment.
  • ApplyFloatingRatePostSpreadProcessing: Perform post-spread rate treatments on floating rates, such as applying caps and floors, rounding, and negative interest treatment.
  • ApplyCapsAndFloors: Apply any cap or floor rate as a constraint on a regular swap rate, as discussed in the 2021 ISDA Definitions, section 6.5.8 and 6.5.9
  • ApplyUSRateTreatment: Apply the US rate treatment logic where applicable (Bond Equivalent Yield, Money Market Yield, as described in the 2021 ISDA Definitions, section 6.9. (NB: this function does not have an implementation.)
  • ApplyFinalRateRounding: Apply the final rate rounding treatment logic as described in the 2021 ISDA Definitions, section 4.8.1.

New functions in cdm.observable.asset.calculatedrate include:

  • EvaluateCalculatedRate: Evaluate a calculated rate as described in the 2021 ISDA Definitions, Section 7
  • GenerateObservationDatesAndWeights: Apply shifts to generate the list of observation dates and weights for each of those dates
  • ComputeCalculationPeriod: Determine the calculation period to use for computing the calculated rate (it may not be the same as the normal calculation period, for instance if the rate is set in advance)
  • DetermineObservationPeriod: Determine any applicable offsets/shifts for the period for observing an index, and then generate the date range to be used for observing the index, based on the calculation period, plus any applicable offsets/shifts
  • GenerateObservationPeriod: Generate the date range to be used for observing the index, based on the calculation period, plus any applicable offsets/shifts.
  • GenerateObservationDates: Generate the list of observation dates given an observation period
  • DetermineWeightingDates: Determine the dates to be used for weighting observations
  • ProcessObservations: Apply daily observation parameters to rate observation. These are discussed in the 2021 ISDA Definitions, section 7.2.3 and 7.2.4.
  • GenerateWeights: Recursively creates a list of weights based on the date difference between successive days.
  • ApplyCompoundingFormula: Implements the compounding formula: Product of ( 1 + (rate * weight) / basis), then backs out the final rate. This is used to support section 7.3 of the 2021 ISDA Definitions.
  • ApplyAveragingFormula: Implements the weighted arithmetic averaging formula. Sums the weighted rates and divides by the total weight. This is used to support section 7.4 of the 2021 ISDA Definitions.

New functions in cdm.observable.asset.fro include:

  • IndexValueObservation: Retrieve the values of the supplied index on the specified observation date.
  • IndexValueObservationMultiple: Retrieve the values of the supplied index on the specified observation dates.
  • FloatingRateIndexMetadata: Retrieve all available metadata for the floating rate index.
  • ValidateFloatingRateIndexName: Return whether the supplied floating rate index name is valid for the supplied contractual definitions.

New functions in cdm.base.datetime.daycount include:

  • YearFraction: The fraction of a year represented by a date range.
  • YearFractionForOneDay: Return the year fraction represented by a single day, i.e. 1 / dayCountBasis, where dayCountBasis represents the denominator of the day count fraction. This perhaps should take into account leap years, though the ISDA compounding formulas do not cover ACT basis at the moment.
  • DayCountBasis: Return the day count basis (the denominator of the day count fraction) for the day count fraction.

2.119.3

Product Model – FpML Synonym Mappings for Equity Swaps and Equity Options

What is being released?

This release contains a number of FpML synonym mapping fixes for Equity Swaps and Equity Options as detailed below

Details

  • For Equity Options the OptionPayout has a PayoutQuantity populated referencing the PriceQuantity.
  • For all products the ExternalProductType is enumerated based on the metadata scheme associated with the product type value.
  • For specification of Equity Dividend treatment the following attributes and enumerations, and associated synonym mappings, have been added to data type DividendReturnTerms.
    • Attributes nonCashDividendTreatment, dividendComposition and specialDividends.
    • Enumerations DividendCompositionEnum and NonCashDividendTreatmentEnum for specification of Equity Dividend Treatment.
  • Added boolean election mutualEarlyTermination to OptionalEarlyTermination.
  • Added mappings for multipleExercise and partialExercise.

Review Directions

In the CDM Portal, select the Ingestion view and review the samples in fpml-5-10->products->equity.

Product Model – Composable Product Qualification

What is being released?

A hierarchical approach to product qualification has been introduced in order to a) eliminate unnecessary repetition in the product qualification functions, and b) create a set of functions that can be reused in the development of the Digital Regulatory Reporting ("DRR") ruleset.

Background

Product Qualification functions are currently written as independent expressions for qualification into the ISDA product taxonomy. This leads to repetition in the model as the functional component identifying the Asset Class and Base Product components of the Taxonomy are repeated. This is in conflict with the CDM design principle of composability and re-usability.

Regulatory reporting rules also refer to classifications of products at a variety of levels as a component of regulatory functional expressions. For this purpose, utility rules have been developed which replicate the same structure.

This release focuses on creating a composable set of qualification rules for Interest Rate products that can then be extended to cover additional asset classes, and also used to simplify the development of the DRR rules.

Details

New product qualification rules have been added to the model to describe the hierarchy of Interest Rate products as defined by the ISDA Product Taxonomy:

  • Qualify_AssetClass_InterestRate_Swap - Qualifies a product as having the Asset Class classification Interest Rate.
  • Qualify_BaseProduct_IRSwap - Qualifies a product as having the Base Product classification Interest Rate Swap.
  • Qualify_BaseProduct_CrossCurrency - Qualifies a product as having the Base Product classification Cross Currency.
  • Qualify_BaseProduct_Fra - Qualifies a product as having the Base Product classification Forward Rate Agreement.
  • Qualify_BaseProduct_Inflation - Qualifies a product as having the Base Product classification Inflation Swap.
  • Qualify_SubProduct_FixedFloat - Qualifies a product as having the Sub Product classification Fixed Float.
  • Qualify_SubProduct_FixedFixed - Qualifies a product as having the Sub Product classification Fixed Fixed.
  • Qualify_SubProduct_Basis - Qualifies a product as having the Sub Product classification Basis.
  • Qualify_Transaction_ZeroCoupon - Qualifies a product as having the Transaction classification Zero Coupon.
  • Qualify_Transaction_YoY - Qualifies a product as having the Transaction classification Year on Year.
  • Qualify_Transaction_OIS - Qualifies a product as having the Transaction classification OIS.

The following product qualification rules have been updated to leverage the new composable product qualification approach:

  • Qualify_InterestRate_IRSwap_FixedFloat
  • Qualify_InterestRate_IRSwap_FixedFixed
  • Qualify_InterestRate_IRSwap_Basis
  • Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon
  • Qualify_InterestRate_IRSwap_FixedFloat_OIS
  • Qualify_InterestRate_IRSwap_Basis_OIS
  • Qualify_InterestRate_CrossCurrency_FixedFloat
  • Qualify_InterestRate_CrossCurrency_Basis
  • Qualify_InterestRate_CrossCurrency_FixedFixed
  • Qualify_InterestRate_InflationSwap_FixedFloat_YearOn_Year
  • Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon
  • Qualify_InterestRate_InflationSwap_Basis_YearOn_Year
  • Qualify_InterestRate_InflationSwap_Basis_ZeroCoupon
  • Qualify_InterestRate_Fra
  • Qualify_InterestRate_CapFloor

Review Directions

In the CDM Portal, select the Textual Browser and review the functions detailed above.

Infrastructure – CDM Portal Download

  • Fixed CDM portal download link.

Review Directions

In the CDM Portal, select Downloads, and the links to download the CDM distributable are now working.

2.119.0

DSL Syntax - Enhancements for repeatable regulatory rules

What is being released?

This release introduces the new DSL keyword repeatable to model reporting rules that repeat the same reporting logic on a specific set of data. One use case is the CFTC Part 45 regulation. Fields 33-35 require to report the full details of a notional quantity schedule: for each quantity schedule step the notional amount, the effective date and the end date must be reported.

Usage of the repeatable keyword will replicate the following logical template:

  • extract repeatable <ExpressionWithMultipleCardinality> ( <ReportingRule1>, <ReportingRule2> ... <ReportingRuleN> )

The logic prescribes that a set of N reporting rules is applied sequentially but as a collective to each item of the list of data records named ExpressionWithMultipleCardinality.

In the example below, the repeatable keyword in the reporting rule NotionalAmountScheduleLeg1 signifies that the bracketed set of reporting rules should be applied as a collective to each item of the extracted list of quantity notional schedule steps. The rule NotionalAmountScheduleLeg1 will therefore result into a repeating set of reported fields with corresponding values.

reporting rule NotionalAmountScheduleLeg1 <"Notional Amount Schedule">\t[regulatoryReference CFTC Part45 appendix "1" item "33-35" field "Notional Amount Schedule"\t\tprovision "Fields 33-35 are repeatable and shall be populated in the case of derivatives involving notional amount schedules"]    TradeForEvent then        InterestRateLeg1 then            extract repeatable InterestRatePayout -> payoutQuantity -> quantitySchedule -> stepSchedule -> step then            (                NotionalAmountScheduleLeg1Amount,                NotionalAmountScheduleLeg1EndDate,\t\t                NotionalAmountScheduleLeg1EffectiveDate            )reporting rule NotionalAmountScheduleLeg1Amount <"Notional amount in effect on associated effective date of leg 1">\t[regulatoryReference CFTC Part45 appendix "1" item "33" field "Notional amount in effect on associated effective date of leg 1"]\t\tCDENotionalAmountScheduleAmount\t\tas "33/35-$ 33 Notional amount leg 1"reporting rule NotionalAmountScheduleLeg1EffectiveDate <"Effective date of the notional amount of leg 1">\t[regulatoryReference CFTC Part45 appendix "1" item "34" field "Effective date of the notional amount of leg 1"]\t\tCDENotionalAmountScheduleEffectiveDate\t\tas "33/35-$ 34 Effective date leg 1"reporting rule NotionalAmountScheduleLeg1EndDate <"End date of the notional amount of leg 1">\t[regulatoryReference CFTC Part45 appendix "1" item "35" field "End date of the notional amount of leg 1"]\t\tCDENotionalAmountScheduleEndDate\t\tas "33/35-$ 35 End date leg 1"

Review Directions

In the CDM Portal, select the User Documentation tile and navigate to the Rosetta DSL> Rosetta Modelling Components> Reporting Component section, or review the documentation section directly:

Legal Agreement Model - ISDA Create Synonym Mappings

What is being released?

This release contains a number of ISDA Create synonym mapping fixes, as detailed below.

  • Fixed synonym mappings for:
    • CustodianEvent->endDate
    • CollateralTransferAgreementElections->terminationCurrencyAmendment
    • CreditSupportAgreementElections->terminationCurrencyAmendment
    • AmendmentEffectiveDate->specificDate
    • AmendmentEffectiveDate->customProvision
  • Added mapping exclusions for fields not intended to be mapped.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

Select the Ingestion view and review the samples in isda-create > test-pack > production.

2.118.7

Legal Agreement Model - ISDA Create Synonym Mappings

What is being released?

This release contains a number of ISDA Create synonym mapping fixes, as detailled below.

  • Added type PledgeeRepresentativeRider to model the terms of the Rider for the ISDA Euroclear 2019 Collateral Transfer Agreement with respect to the use of a Pledgee Representative, and updated the synonym mappings.
  • Added attribute JurisdictionRelatedTerms->belgianLawSecurityAgreement to model whether the Belgian Law Security Agreement Addendum is deemed applicable by the parties, and updated the synonym mappings.
  • Fixed synonym mappings for:
    • `PostingObligations->partyElection->eligibleCollateral->criteria->treatment->valuationTreatment->fxHaircutPercentage
    • SubstitutedRegime->additionalRegime
    • TerminationCurrencyAmendment->effectiveDate
    • MinimumTransferAmountAmendment->effectiveDate->customProvision
    • TerminationCurrencyAmendment->effectiveDate->customProvision
    • SensitivityMethodology->specifiedMethodology
    • LegalAgreementNameEnum->ClauseLibraryand LegalAgreementNameEnum->MasterAgreement
  • Added mapping exclusions for fields not intended to be mapped.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

Select the Ingestion view and review the samples in isda-create > test-pack > production.

2.118.4

Product Model – 2021 Floating Rate Definitions

What is being released?

The floating rate structure has been extended to include components from the new 2021 ISDA definitions, including new floating rate calculation parameters (observation shift, lookback, lockout, cap/floor) and fallback parameters. The new structure has been validated against FpML 5.12 samples that include the new definitions.

Details

  • A new FloatingRateCalculationParameters type describes the parameters applicable to the new floating rate calculations.

  • New enumerations have been introduced to describe the calculation method:

    • CalculationMethodEnum
    • ObservationPeriodDatesEnum
    • CalculationShiftMethodEnum
  • A new FallbackRateParameters type describes the fallback parameters, including the relevant calculation parameters for the fallback rate.

  • New calculationParameters and fallbackRate attributes have been added to the FloatingRate data type

  • A new FpML 5.12 example: ird-ex40-rfr-avg-swap-obs-period-shift has been added to the ingestion pack, that tests an example of the new structure

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.

Select the Ingestion view and review the sample mentioned above.

Product Model – New 2021 Cash Settlement Terms

What is being released?

New cash-settlement terms for mid-market valuation and replacement value methods have been added in accordance with the 2021 definitions. Synonym mappings have been extended using two new FpML 5.12 examples containing optional early termination terms according to these new valuation methods.

Details

  • CashSettlementMethodEnum includes 5 new cash-settlement methods for mid-market valuation and replacement value:

    • MidMarketIndicativeQuotations
    • MidMarketIndicativeQuotationsAlternate
    • MidMarketCalculationAgentDetermination
    • ReplacementValueFirmQuotations
    • ReplacementValueCalculationAgentDetermination
  • A new CashCollateralValuationMethod data type has been added that includes the parameters required for the new valuation methods.

  • The harmonised CashSettlementTerms data type has been extended to include an optional cashCollateralValuationMethod attribute.

  • Conditions have been added to CashSettlementTerms to ensure data integrity against the new cash settlement method types.

  • CalculationAgentPartyEnum has been renamed more generically as PartyDeterminationEnum, as it now also applies to the protected party determination in the replacement value method.

  • 2 new samples including optional early termination clauses have been added to the FpML 5.12 group:

    • ird-ex47-rfr-compound-swap-lookback-oet-rvfq-FpML_5_12
    • ird-ex46-rfr-compound-swap-lookback-oet-mmviq
  • Their valuation method attributes have been mapped to the extended CashSettlementTerms data type.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types.

In the Ingestion tile, search for the samples specified above.

2.118.3

Legal Agreement Model – Collateral Valuation Treatment/Identification and addition of additional haircuts

What is being released?

The data type CollateralValuationPercentage has been renamed to CollateralValuationTreatment as more relevant. The corresponding data attribute valuationPercentage has been renamed to haircutPercentage and its description reflects haircut rather than the full valuation percentage.

The following functions have been updated with the new names:

  • PostedCreditSupportItemAmount
  • SecurityFinanceCashSettlementAmount
  • ResolveSecurityFinanceBillingAmount

An additional haircut data attribute additionalHaircutPercentage with related description has been added along with conditions as haircutPercentage and fxHaircutPercentage.

Review Directions

In the CDM Portal, select the Textual Browser and search for the data types mentioned above.

Search for the data type CollateralValuationTreatment and inspect the change from CollateralValuationPercentage throughout the model. Inspect the change to data attribute haircutPercentage from valuationPercentage and changes to the description and related conditions.

Check the addition of data attribute additionalHaircutPercentage and inspect the related conditions.

Inspect the addition of condition HaircutPercentageOrMarginPercentage which forces a required choice for haricutpercentage or marginpercentage
In the legalagreement-csa-func file inspect the changes made to the function for haircut calculation to support the changes made.

Credit Notations – Agency Rating Criteria additions and added descriptions

What is being released?

A new enumeration list CreditNotationBoundaryEnum will now denote the boundary of a credit agency rating i.e minimum or maximum. It is used now with the
boundary attribute added to the AgencyRatingCriteria data type.

Descriptions for attributes of CreditNotationMismatchResolution and AgencyRatingCriteria have been added.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

Search for the data type AgencyRatingCriteria and inspect the descriptions added to attributes mismatchResolution and referenceAgency. Also inspect the new added data attribute boundary and its related enumerations CreditNotationBoundaryEnum with descriptions.

Search for CreditNotationMismatchResolutionEnum and inspect the descriptions now populated that where previously missing in the model.

2.118.2

Utility Functions - Vector Math Library

What is being released?

A library of utility functions for working with vectors (ordered collections of numbers) has been added to support modelling functions that require complex mathematical operations. Typical usage will include averaging and compounding calculations for floating amounts..

The functions are located in the namespace base-math-func.

New functions include:

  • ToVector: Creates a vector from a list of numbers.
  • SelectFromVector: Selects a single value from a vector (list of numbers), i.e. result = val[index].
    • Returns null if the specified vector is empty or if the specified index is out of range.
    • Returns the element of the vector at the specified index.
  • LastInVector: Returns the last value in a vector. If the vector is empty, returns null
  • AppendToVector: Appends a single value to a vector
  • VectorOperation: Generates a result vector by applying the specified arithmetic operation to each element of the specified left and right vectors in turn. i.e. result[n] = left[n] [op] right[n], where [op] is the arithmetic operation specified per the ArithmeticOperationEnum enum list. This function can be used to, for example, multiply or add two vectors.
  • VectorScalarOperation: Generates a result vector by applying the specified arithmetic operation and scalar right value to each element of the specified left vector in turn. i.e. result[n] = left[n] [op] right[n], where [op] is the arithmetic operation specified per the ArithmeticOperationEnum enum list. This function can be used, for example, to multiply a vector by a scalar value, or to add a scalar to a vector.
  • VectorGrowthOperation: Generates a result vector where the first component is the specified baseValue (typically 1) and each following nth component is the product of the previous component and the nth element of a seperate specified vector. For example: result[1] = baseValue * factor[1] and result[n] = result[n-1] * factor[n]. Typically factor[n] = 1.1 can represent a 10 percent increase, and 0.9 would correspond to a 10 percent decrease. The resulting vector will have the one more element than the specified list of factors. This function is typically useful for performing compounding calculations.

A new scalar function has been added to better support floating rate processing:

  • RoundToPrecision: Rounds a specified number to a specified precision (in decimal places) using a roundingMode of type RoundingDirectionEnum. This is similar to RoundToNearest but takes a precision rather than an amount, and uses a different rounding mode enumeration that supports more values.

Utility Functions - Basic Date Math Library

What is being released?

A library of utility functions for working with dates and lists of dates has been added to CDM to support modelling functions that require to ma to perform mathematical operations on date. Typical usage will generate list of dates for modular rate calculations in floating amounts.

A simple Java reference implementation accompanies this change. However users can provide their own implementations of these functions using a more robust date math library.

The functions are located in the namespace base-datetime-func.

New functions include:

  • CombineBusinessCenters: Creates a BusinessCenters object that includes the union of business centers in the two specified lists.
  • RetrieveBusinessCenterHolidays: Returns a merged list of holidays for the specified business centers.
  • DayOfWeek: Returns the day of week corresponding to the specified date
  • AddDays: Adds the specified number of calendar days to the specified date. A negative number will generate a date before the specified date.
  • DateDifference: Returns the difference in days between two specified dates. A negative number implies the first specified date is after the second.
  • LeapYearDateDifference: Returns the difference in leap year calendar days between two specified dates. (That is, the number of dates that happen to fall within a leap year.) A negative number implies the first specified date is after second.
  • SelectDate: Selects a date from a list of dates based on index. If not found, return nothing.
  • LastInDateList: Returns the last date in a list of dates
  • AppendDateToList: Adds a date to a list of dates
  • PopOffDateList: Removes the last element from a list of dates

The following are also new functions. A simple Java reference implementation is also provided.

  • IsWeekend: Returns whether the specified date is a weekend. The implementation currently assumes a 5 day week with Saturday and Sunday as holidays. A more sophisticated implementation might use the business centers to determine which days are weekends, but most jurisdictions where derivatives are traded follow this convention.
  • IsHoliday: Returns whether a day is a holiday for the specified business centers
  • IsBusinessDay: Returns an indicator of whether the specified date is a good business date given the specified business centers. True => good date, i.e. not a weekend or holiday. False means that it is either a weekend or a holiday
  • AddBusinessDays: Returns a good business date that has been offset by the given number of business days given the specified business centers. A negative value implies an earlier date (before the specified originalDate), and a positive value a later date (after the specified date).
  • GenerateDateList: Creates a list of good business days starting from the startDate and going to the end date, inclusive, omitting any days that are weekends or holidays according to the specified business centers.

2.118.1

Product Model – Cash Settlement and Physical Settlement Terms

What is being released?

The structural definition of Settlement Terms has been harmonised. This release addresses transaction components related to Physical Settlement of derivative products and Cash Settlement of FX products. A previous release incorporated harmonisation of concepts related to Cash Settlement for credit, cross-currency swaps and swaptions.

Background

Multiple inconsistencies have been identified in the current modelling of settlement terms. This leads to inefficiency in the product model and in the ability to represent functional rules for digital regulatory reporting. The resolution approach creates several modelling components common across products as part of PayoutBase and preserve the elements that are genuinely specific.

Details

  • CashSettlementTerms describes a harmonised cash-settlement structure that works across credit, cross-currency swaps, swaptions and FX products.
  • CashSettlementTerms cardinality updated to allow multiple terms to be provided for FX products.
  • PhysicalSettlementTerms describes a harmonised physical-settlement structure that works across credit and options.
  • CreditDefaultPayout extends PayoutBase to pick up the normalised SettlementTerms structure. Corresponding data types have been removed from CreditDefaultPayout

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above. In the CDM Portal, select the Ingestion view and review the following sample trades:

  • ird ex09 euro swaption explicit physical exercise
  • fx ex07 non deliverable forward
  • cd ex01 long asia corp fixreg versioned

Product Model - Option Denomination Deprecation

What is being released?

As part of the price/quantity normalisation, the option payout structure has been further rationalised by retiring the specialised OptionDenomination type and corresponding attributes:

  • numberOfOptions (number),
  • optionEntitlement (number) and
  • entitlementCurrency (string)

These modeling elements were previously used for Equity and Bond Option products and were all inherited from FpML. This change will see the same information captured by the Quantity structure with the amount, multiplier and multiplierUnit attributes. The relevant synonym mappings have been adjusted so that the corresponding values from FpML samples are populated in the Quantity structure of the CDM representation.

Review Directions

In the CDM Portal, use the Textual Browser to review OptionPayout, where the optionDenomination attribute has been retired

In the Ingestion Panel, try the following samples:

  • products > rates > bond option uti
  • products > rates > cb option usi
  • products > equity > eqd ex01 american call stock long form

2.117.0

Legal Agreement Model - ISDA Create Synonym Mappings

What is being released?

ISDA Create synonym mapping fixes for ApplicableRegime, adding RegulatoryRegimeEnum synonyms for Brazil, United Kingdom, South Africa, South Korea and Hong Kong SFC.

Review Directions

In the CDM Portal, use the Textual Browser to review ApplicableRegime and RegulatoryRegimeEnum.

In the Ingestion Panel, try samples in folders:

  • isda-create > test-pack > 2018-im-csa-ny-law
  • isda-create > test-pack > 2018-im-csd-eng-law
  • isda-create > test-pack > 2019-clearstream-cta
  • isda-create > test-pack > 2019-euroclear-cta
  • isda-create > test-pack > 2019-isda-bank-custodian-cta

2.116.0

Technical Change - Java 8 Support

What is being released?

The generated Java code in the CDM distribution is now compatible with Java version 8 and above.

Review Directions

In the CDM Portal, download the CDM distribution pack to inspect and make use of the generated Java code.

2.115.0

User Documentation - Add Design Principles section

What is being released?

The CDM design priciples have been documented as part of the CDM overview section of the user documentation. They describe the driving principles of the CDM design at a high-level, providing some direct examples from the model to illustrate practical applications of those principles.

Laying-out the design principles in the documentation will facilitate contributions to the CDM by the community, and help users understand the rationale behind some of the CDM design choices. The How to Contribute guide has been adjusted to refer to the design principles documentation.

Review Directions

In the CDM Portal, select the User Documentation tile and navigate to the CDM Design Principles section, or review the documentation section directly:

2.114.0

Product Model – Cash Settlement Terms

What is being released?

The structural definition of Settlement Terms has been harmonised. This release will only impact more consistently the transaction components related to Cash Settlement of derivative products. A further release will incorporate harmonisation of concepts related to Physical Settlement.

Background

Multiple inconsistencies have been identified in the current modelling of settlement terms. This leads to inefficiency in the product model and in the ability to represent functional rules for digital regulatory reporting. The resolution approach creates several modelling components common across products as part of PayoutBase and preserve the elements that are genuinely specific.

Details

Extension of the SettlementTerms data type that is now used consistently:

  • Across payouts through extension of PayoutBase
  • As part of TradableProduct
    CashSettlementTerms describes a harmonised cash-settlement structure that works across credit, cross-currency swaps and swaptions.
    The different cash-settlement methods have been migrated to a specific CashSettlementMethodEnum. Other settlement enums (cash vs physical, DvP etc.) have been positioned in the SettlementBase type.

Removal of the SettlementTerms attribute from Trade and EquityPayout

Addition of a new data type SettlementInstructions that is used in the definition of TradableProduct for event related cashflows.

Addition of a common SettlementDate abstraction layer, in which the different methods are represented as a one-of.

Update of the relevant synonym mappings to reflect the new model structure.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types specified above.
In the CDM Portal, select the Ingestion view and review sample trade fpml-5-10/products/rates/ird-ex12-euro-swaption-straddle-cash.xml

2.113.3

Legal Agreement Model – Conditions added to Concentration Limit

What is being released?

A condition has been added to CDM to ensure that when a concentration limit is used, a choice of concentration type is made to either use ConcentrationLimitCriteria for a specific description of where to apply the concentration limit or ConcentrationLimitType for a higher level generic description of where to apply the concentration limit.
In addition a condition is also added to ensure that when the data type ConcentrationLimit is used, a concentration value choice must be made to either use valueCap or percentageCap.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

  • Search for the data type ConcentrationLimit under the allowed data attributes are 2 additional conditions ConcentrationLimitValueChoice and ConcentrationLimitTypeChoice Please review these conditions to ensure they determine the correct outcomes required.

Legal Agreement Model – Removal of SCSA from Legal Agreement Name enumeration list

What is being released?

Removal of legal agreement type Standard Credit Support Annex from the list of identifiable document names in the LegalAgreementNameEnum list. The reason for this being, the document is no longer widely negotiated and research has indicated less than 5 of these exist operationally. Having it referenced in CDM has confused members and feedback has confirmed consensus agreement to remove from the model.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

  • Search for the data type enum LegalAgreemenyNameEnum and inspect the removal of StandardCreditSupportAnnex
  • Related synonyms in synonym-cdm-fpml where StandardCreditSupportAnnex is referenced have also been removed from CDM.

2.113.2

Legal Agreement Model – Conditions added to Concentration Limit

What is being released?

A condition has been added to CDM to ensure that when a concentration limit is used, a choice of concentration type is made to either use ConcentrationLimitCriteria for a specific description of where to apply the concentration limit or ConcentrationLimitType for a higher level generic description of where to apply the concentration limit.
In addition a condition is also added to ensure that when the data type ConcentrationLimit is used, a concentration value choice must be made to either use valuatiocap or percentagecap.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

  • Search for the data type ConcentrationLimit under the allowed data attributes are 2 additional conditions ConcentrationLimitValueChoice and ConcentrationLimitTypeChoice Please review these conditions to ensure they determine the correct outcomes required.

Legal Agreement Model – Removal of SCSA from Legal Agreement Name enumeration list

What is being released?

Removal of legal agreement type Standard Credit Support Annex from the list of identifiable document names in the LegalAgreementNameEnum list. The reason for this being, the document is no longer widely negotiated and research has indicated less than 5 of these exist operationally. Having it referenced in CDM has confused members and feedback has confirmed consensus agreement to remove from the model.

Review Directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

  • Search for the data type enum LegalAgreemenyNameEnum and inspect the removal of StandardCreditSupportAnnex
  • Related synonyms in synonym-cdm-fpml where StandardCreditSupportAnnex is referenced have also been removed from CDM.

2.113.1

DSL Syntax - Only Exists for multiple attributes

What is being released?

The only exists DSL feature has been enhanced to allow a list of attributes to be evaluated to determine a boolean outcome in a similar way to a single attribute.

The syntax for a single attribute remains the same. The statement below will evaluate to true if interestRatePayout exists and all other attributes of Payout are absent.

  • economicTerms -> payout -> interestRatePayout only exists

The new syntax allows for a list of attributes to be specified. The statement below will evaluate to true only if both interestRatePayout and equityPayout exist and all other attributes of Payout are absent.

  • (economicTerms -> payout -> interestRatePayout, economicTerms -> payout -> equityPayout) only exists

This change allows many of the qualification functions to be simplified.

Review Directions

In the CDM Portal, use the Textual Browser to review the usages of only exists in the model, including the following examples:

  • Product qualification functions - Qualify_InterestRate_IRSwap_FixedFloat, Qualify_Commodity_Swap_FixedFloat, Qualify_CreditDefaultSwap_SingleName.

2.112.3

Event Model - Contribution of ISLA - CDM for Securities Lending

What is being released?

This release contributes modelling components proposed by ISLA to extend the CDM event model in term of Securities Lending products. The release extends existing CDM event model concepts to support allocation, re-allocation, initial Settlement, and part and full return, of a Securities Lending contract. In addition a new product and event model is introduced for the billing function. Visualisation examples are included for all events covered as part of the contribution in a new folder Security Lending.

Changes to existing data types and qualification functions have been made where appropriate to accomodate the additions to the model.

Details

Allocation and Re-Allocation

The Create_Allocation and Create_SplitPrimitive functions have been extended to be fully formed functions that are able to support multiple allocations and the specification of an ancillary party. A new Create_Reallocation function has been introduced to allow specification of a reallocation event through the ReallocationInstruction data type consisting of: the original block trade, existing splits to be decreased, existing splits to be increased, and details of any new splits produced by the reallocation event.

Updates to Existing Data Types, Enumerations and Functions

  • AllocationBreakdown - updated partyReference attribute to counterparty to allow the new party to be specified, and which side of the trade they are being allocated into. Cardinality of quantity updated to allow specification of all quantities associated with the individual split.
  • SplitPrimitive - additional condition added to ensure the quantities of the resulting split trades total that of the block trade.
  • PartyRoleEnum - Role of AgentLender added to the enumeration list
  • IntentEnum - Intent of Reallocation added to the enumeration list
  • Create_SplitPrimitive - assigns a closedState and a positionStatus of Allocated
  • Create_QuantityChangePrimitive - updated input to allow specification of a list of quantities on an input TradeState that require changing.

New Data Types and Functions

  • ReallocationInstruction
  • DecreasedTrade
  • IncreasedTrade
  • Create_Reallocation
  • Qualify_Reallocation

Visualisation

  • See examples Allocation and Reallocation

New, Part and Full Return Settlement

The Create_Transfer function has been extended to support creation of cash and security transfers representing the settlement of a security lending transaction. A new Create_Return function has been introduced to allow specification of the part or full return of a Security Lending Transaction through the ReturnInstruction data type consisting of: the trade being partially or fully returned, the quantity being returned, and the return date.

Updates to Existing Data Types and Functions

  • TransferInstruction - new attribute payerReceiver and quantity added to specify values when part of a return event.
  • Create_Transfer - allow specification of an event date.
  • Create_TransferPrimitive - creates cash and security movements for a Security Finance transaction and sets the PositionStatusEnum to Settled when Transfers have been applied to a Security Finance transaction.
  • Create_CashTransfer - creates cash movements for a Security Finance transaction, assigns settlementOrigin of the payout used to create the cash transfer.
  • Qualify_CashAndSecurityTransfer - updated function to qualify based only on transfers associated with the event date.

New Data Types and Functions

  • ReturnInstruction
  • Create_Return
  • Create_SecurityFinanceTransfer
  • Qualify_FullReturn
  • SecurityFinanceCashSettlementAmount

Visualisation

  • The workflow of the new, partial, and full return settlement events are demonstrated using the CDM workflow event model reflecting the instruction and settlement of each event.
  • See examples New Settlement Workflow, Part Return Settlement Workflow and Full Return Settlement Workflow.

Billing

The process of invoicing fees associated with a Security Lending transaction has been modelled with the addition of the SecurityLendingInvoice data type, to represent the information needing to be passed from one party to the other. The Create_SecurityLendingInvoice function has been introduced to allow specification of the information required to populate an invoice, including calculation of the billing amounts, through the BillingInstruction data type consisting of: the sending and receiving party, the billing start and end date, a BillingRecordInstruction, and a BillingSummaryInstruction.

Updates to Existing Data Types and Functions

  • FloatingAmount and FixedAmount - updated to allow specification of CalculationPeriodData when the period for the calculation is not specified parametrically on the payout (e.g. billing for a partial period of a security lending transaction). calculationPeriod is now aliased as part of each function, either as the specified CalculationPeriodData or the regular period on the interestRatePayout

  • DayCountFraction - all Day Count Fraction functions have been simplified to use alias defined in FloatingAmount or FixedAmount.

New Data Types, Enumerations and Functions

  • SecurityLendingInvoice
  • BillingInstruction
  • BillingRecord
  • BillingSummary
  • BillingRecordInstruction
  • BillingSummaryInstruction
  • RecordAmountTypeEnum
  • Create_SecurityLendingInvoice
  • Create_BillingRecords
  • Create_BillingRecord
  • Create_BillingSummary
  • Create_SecurityFinanceTradeStateWithObservations
  • Create_SecurityFinanceReset
  • ResolveSecurityFinanceBillingAmount

Visualisation

  • See example Billing.

Legal Agreement Model

Updates to Existing Enumerations

  • LegalAgreementEnum - GMSLA added to enumeration list.
  • LegalAgreementPublisherEnum - BNYM, ISLA, and JPMorgan added to enumeration list.

Utility Functions

A number of utility functions have been updated or added to the model in order to facilitate implementation of the above model components.

New Data Types and Functions

  • Create_TradableProduct - creates a tradable product object from a set of given inputs.
  • ConvertToAdjustableOrAdjustedOrRelativeDate - Utility function to convert from AdjustableOrAdjustedOrRelativeDate to AdjustableOrAdjustedOrRelativeDate.
  • FilterQuantityByFinancialUnit - Filter list of quantities based on unit type.
  • UpdateAmountForEachQuantity - Updates all quantities on each price quantity with the new amount.
  • UpdateAmountForEachMatchingQuantity - Updates any quantity from the list of new quantities if the unit of amount matches.
  • DeductAmountForEachMatchingQuantity - Deducts the amount for any quantity from the list of new quantities if the unit of amount matches.
  • Create_Quantity - Create Quantity with given amount and unit of amount.
  • Create_UnitType - Create UnitType with given currency or financial unit.
  • ExtractCounterpartyByRole - Extracts from a list of Counterparty data types, the Counterparty that corresponds to the role i.e. Party1 or Party2.
  • ReplaceParty - Removes the old party, and adds the new party.
  • Create_PayerReceiver - Create PayerReceiver with given payer and receiver.
  • ExtractFixedLeg - Filters a list of InterestRatePayouts to extract a Fixed Leg.
  • CalculationPeriodRange - Outputs CalculationPeriodData for a given start date, end date and business days.
  • Create_TradableProduct - Creates a new TradableProduct with the given inputs.
  • Create_SplitTrades - Loops through each trade and calls Create_SplitTrade.
  • Create_SplitTrade - Creates a split trade from a block trade and a breakdown.

Updates to Existing Data Types and Functions

  • ResolveCashflow - creates cash movements for a Security Finance transaction.
  • Create_TerminationQuantityChangePrimitive - sets a closedState and positionStatus on the Terminated trade
  • CloseTrade - renamed TerminateContract and updated to set a closedState and positionStatus.

Review directions

In the CDM Portal, select the Textual Browser and search for any of the changes specified above.
In Rosetta, select Visualisation and search for any of the examples defined above.

2.111.0

DSL Syntax - New keywords to compare a list to a single data object

What is being released?

New keywords have been introduced in the DSL syntax to compare a list of items to a single data object. Currently comparing a list to single data object will only result to true if all the items of the list match the single data object. The all and any keywords can now be used to extend the comparison outcome with any equality operators: =, <>, >, >=, <, <=.

In the examples below, payout -> interestRatePayout is a list according to the cardinality of its definition in the model.

The all keyword will be used to specify that all items in the list must match the single data object. Accordingly, the statement will evaluate to true if each paymentDates -> paymentFrequency -> period for every item of the list interestRatePayout is equal to T.

  • economicTerms -> payout -> interestRatePayout -> paymentDates -> paymentFrequency -> period all = PeriodExtendedEnum -> T

The any keyword will be used to specify that any item in the list must match the single data object. Accordingly, the statement will evaluate to true if at least one paymentDates -> paymentFrequency -> period for any item of the list interestRatePayout is equal to T.

  • economicTerms -> payout -> interestRatePayout -> paymentDates -> paymentFrequency -> period any = PeriodExtendedEnum -> T

All list comparisons in the model have been updated to use the all or any keywords whilst retaining the original expected logical outcome.

In the CDM Documentation, review the following sections:

Review Directions

In the CDM Portal, use the Textual Browser to review the list comparisons in the model, including the following examples:

  • Event qualification functions - Qualify_CashTransfer, Qualify_Novation
  • Product qualification functions - Qualify_InterestRate_IRSwap_FixedFloat, Qualify_InterestRate_IRSwap_FixedFloat_OIS
  • Conditions - PriceQuantity -> NonNegativeQuantity, CreditDefaultPayout -> FpML_cd_13, CreditDefaultPayout -> FpML_cd_14

2.110.1

Product Model - Observable attribute references

What is being released?

Following the recent price, quantity and observable refactor, this release makes the PriceQuantity->observable attributes referencable by adding location/address annotations to the attributes of type Observable and their corresponding attributes in the Product payouts. Synonyms have also been migrated to the new model for all products including rates, equity, FX, credit and repo, and also all other Event, DTCC and CME synonyms.

  • Add location annotation to Observable->commodity and add address annotation to CommodityPayout->underlier->commodity.
  • Add location annotation to Observable->productIdentifier and add address annotation to PayoutBase->productIdentifier (super type of Security, Loan and Index).
  • Add location annotation to Observable->currencyPair and add address annotation to:
    • optionPayout.exerciseTerms.settlement.fxSettlementTerms.fixing.quotedCurrencyPair
    • forwardPayout.settlementTerms.fxSettlementTerms.fixing.quotedCurrencyPair
    • optionPayout.feature.averagingRateFeature.fxRateObservable.quotedCurrencyPair
  • Add deprecated annotation to ExchangeRate type.

Review Directions

In the CDM Portal, select the textual browser and inspect the types mentioned above.

In the CDM Portal, select ingestion and review the following samples:

Observable->commodity:

  • fpml-5-10/products/commodity/com-ex1-gas-swap-daily-delivery-prices-last
  • fpml-5-10/products/commodity/com-ex5-gas-v-electricity-spark-spread
  • fpml-5-10/products/commodity/com-ex8-oil-call-option-strip

Observable->productIdentifier:

  • fpml-5-10/products/rates/bond-option-uti
  • fpml-5-10/products/equity/eqs-ex01-single-underlyer-execution-long-form.json (Security)
  • fpml-5-10/products/equity/eqd-ex04-european-call-index-long-form.json (Index)

Observable->currencyPair:

  • fpml-5-10/products/equity/fx-ex07-non-deliverable-forward
  • fpml-5-10/products/equity/fx-ex11-non-deliverable-option
  • fpml-5-10/products/equity/fx-ex22-avg-rate-option-specific

DSL Syntax - Deprecation of "includes" keyword

What is being released?

The use of the keyword includes has been deprecated in favor of the equivalent keywordcontains. The former was only used in the definition of the function Create_ClearedTrade.

Review Directions

In the CDM Portal, select the textual browser and inspect that the syntax keyword includes is no longer present.

2.108.3

Product Model - Support for Increase and Decrease as part of a single Trade

What is being released?

The structural definition of a TradableProduct has been adjusted with a new TradeLot data type. This type is introduced to represent the trading of multiple trade lots as part of a single trade. This new feature is particularly needed to support use cases like trade increase (upsize) as well as decrease (unwind).
A Tradableproduct can have multiple TradeLot. They each contain:

  • multiple instances of PriceQuantity,
  • an effectiveDate attribute (optional) to capture the date at which the price and quantity elements become effective in the case of an already open trade
  • a lotIdentifier as unique identifier

Several functions have been updated to reflect the new definition of TradableProduct. For example, the functions that calculate the performance and cash settlement on the return leg of an equity Swap, have been updated to work in the case of a single trade lot only.
Future work will ensure that those functions also work with multiple trade lots. This requires iteration logic which is not yet supported in the Rosetta DSL today.

All the synonym mappings have been adjusted. All the FpML product sample messages have been interpreted with a single trade lot.

The relevant sections in the CDM documentation have been updated.

Review directions

In the CDM Portal, select the textual browser and review the following data types:

  • TradableProduct
  • TradeLot
  • PriceQuantity

To review all the functions that have been modified, in the textual browser search on tradeLot.

In the CDM Portal, select the ingestion panel and review any of the FpML product samples.

In the CDM Documentation, review the following sections:

Event Model - Function Development - Support for Increase and Decrease Events

What is being released?

A new IncreaseInstruction type has been added to cater for the Increase business event use case (also known as upsize) where a new trade lot is added to the trade.

A new DecreaseInstruction type has been added to cater for the Decrease business event use case (also known as unwind) where the trade lots inscribed on a trade will be decreased.

The Instruction type has been augemented with these 2 new types.

The relevant sections in the CDM documentation have been updated.

Review directions

In the CDM Portal, select the textual browser and review the following data types:

  • IncreaseInstruction
  • DecreaseInstruction
  • Instruction

In the CDM Documentation, review the following sections:

2.108.1

Product Model - Mapping to FpML: Add new Record-Keeping samples

What is being released?

New FpML samples (non-public execution report) are added to the set of Record-Keeping samples:

  • Rates: FRA, OIS Swap, Inflation Swap, CapFloor
  • FX: Simple Exotic Barrier and Digital
  • Commodity: Oil Swap

Although synonyms have been adjusted to map a large number of fields in those documents, some more work will be required to allow a complete coverage. Example of fields missing:

  • Rate option for Inflation Swap
  • Cap rate schedule, when a spread schedule is also present
  • Special features for FX Simple Exotic

These samples are included as part of a broader addition of samples for DRR, and having those documents at least partially mapped in CDM allows to proceed with modelling of the reporting logic (for instance, having the premium fields captured for options).

The FpML synonyms and paths have also been cleaned-up to provide a more consistent treatment across product types / asset classes, making the mappings more readable and more easily extensible (for instance in the treatment of option premium).

Review directions

In the CDM Portal, select the Ingestion panel and review the following samples:

  • record-keeping > record ex03 capfloor with premium
  • record-keeping > record ex04 fra
  • record-keeping > record ex05 inflation swap
  • record-keeping > record ex06 ois swap
  • record-keeping > record ex07 capfloor with spread
  • record-keeping > record ex21 fx simpleexotic barrier
  • record-keeping > record ex22 fx simpleexotic digital
  • record-keeping > record ex31 commodity oil swap

Documentation - How to Contribute and Doc Style Guide sections

What is being released?

The documentation has been updated to accomodate an increasing number of contributors to the CDM from the industry community.

The documentation now contains an "How to Contribute" section that details the practical responsibilities of both the Contributor and the Reviewer in the process, in accordance with the CDM governance guidelines, and the subsequent deployment process.

As any contribution needs to include its own documentation update and release notes, a "Documentation Style Guide" section has been provided to ensure on-going consistency in the CDM documentation which may be sourced from many different writers.

Review directions

Review the new sections in the CDM documentation:

2.108.0

Event Model - Function Development - Create Index Transition Business Event

What is being released?

Based on a member contribution, this release contains functions to create a BusinessEvent that represents an index transition on an interest rate product.

Taking as an input IndexTransitionInstruction, the function creates a BusinessEvent that comprises a TermsChangePrimitive containing the update to the floating rate index and any spread adjustment, and also, optionally, a TransferPrimitive, for any required value settlement (cash transfer). The function does not support adjustment to a spread schedule yet.

Review directions

In the CDM Portal, select the Textual Browser, and review type IndexTransitionInstruction and functions Create_IndexTransition, Create_IndexTransitionTermsChangePrimitive.

In the Rosetta application, select the Visualisation tab, and review the Create_IndexTransition examples for Vanilla Swap and Cross Currency Swap.

2.107.2

Product Model - Mapping to FpML: Enables ingestion of FpML 5.12 data samples and adds new illustrative examples

What is being released?

This release enables the ingestion of FpML 5.12 data samples with the model and provides illustrative CDM examples across commodity, credit, equity, fx, rates and repo products. This release does not address yet differences between FpML 5.10 and 5.12. This will be done in future work.

Review directions

In the CDM Portal, select the Ingestion panel, and review the following samples:

  • fpml-5-12 > products > commodity
  • fpml-5-12 > products > credit
  • fpml-5-12 > products > equity
  • fpml-5-12 > products > fx
  • fpml-5-12 > products > rates
  • fpml-5-12 > products > repo

2.107.1

Product Model - Simplify unnecessary nesting when pointing to an Underlier data type

What is being released?

Payouts containing an underlier previously referenced the data type Underlier which contained a single attribute underlyingProduct of type Product. This created an unnecessary extra layer in the model. This release simplifies this unnecessary nesting and removes the redundant data type Underlier. All the payouts that previously contained this data type now point directly to a Product.

Functions and Regulatory Report definitions referencing this model structure have been updated to reflect the simplification of the model.

Review directions

In the CDM Portal, select the Textual Browser, and review the following data types:

  • EquityPayout
  • ForwardPayout
  • ObservationPayout
  • OptionPayout

2.106.7

Event Model - Rate Reset: Fallback Rates

What is being released?

This release adjusts the Reset type and related functions to support Fallback Rates.

Fallback Rates are used, for example, as a substitute for LIBOR on legacy LIBOR contracts that have not been amended to an Adjusted Reference Rate (ARR), and where Fallback contractually applies.

Often in a fallback reset process the reset rate is set in arrears rather than in advance as is the case with rates like LIBOR today, where the rate is reset for the subsequent accrual period. For example, given a trade with 3 month floating rate, and where such as fallback applies, the reset date (defined in the model with existing attribute Reset->resetDate) of 20th April is at the end of the interest accrual period, the Rate Record Date would be 3 months earlier, 19th Jan (e.g. near start of the accrual period because reset rate is set in arrears, defined in the model with new attribute Reset->rateRecordDate).

Typically, if no rate is available on the Rate Record Date of 19th Jan, the observed rate will be taken on the nearest previous date where a rate is available (defined in the model with the existing attribute Reset->observations->observationIdentifier->observationDate).

The related functions Create_Reset, Create_ResetPrimitive and ResolveInterestRateReset have been adjusted to use the new attribute rateRecordDate when specified.

Note that the reset process for equities is unaffected.

Review directions

In the CDM Portal, select the Textual Browser, and review the following types and functions:

  • Reset, ResetInstruction
  • Create_Reset, Create_ResetPrimitive and ResolveInterestRateReset

2.106.4

Legal Agreement Model - Add ISDA Create Samples

What is being released?

This release adds additional ISDA Create sample json files for the legal agreement document types listed below, including samples from their Development, Sandbox and Production environments.

  • 2002-isda-master-agreement
  • 2002-isda-master-agreement-schedule-with-isda-clause-library
  • 2002-isda-master-agreement-with-clause-library
  • 2016-im-csa-ny-law
  • 2018-im-csa-ny-law
  • 2018-im-csd-eng-law
  • 2018-isda-im-csa-ny-law
  • 2018-isda-im-csd-eng-law
  • 2019-clearstream-sa-security-provider-lux-law
  • 2019-clearstream-sa-security-taker-lux-law
  • 2019-euroclear-cta
  • 2019-isda-bank-custodian-cta
  • 2019-isda-bank-custodian-sa-eng-law
  • 2019-isda-bank-custodian-sa-ny-law
  • 2019-isda-bank-custodian-sa-ny-law-sample
  • 2019-isda-clearstream-cta
  • 2019-isda-euroclear-cta
  • 2021-small-sample-document

Review directions

In the CDM Portal, select Ingestion panel, and run samples from the following folders:

  • isda-create/test-pack-2021-05-06/production/
  • isda-create/test-pack-2021-05-06/sandbox/
  • isda-create/test-pack-2021-05-06/development/

2.106.2

Event Model - Transfer components: Rationalised representation of Quantity and Observable attributes

What is being released?

This release adjusts the Transfer type by replacing the PriceQuantity attribute, with separate Quantity and optional Observable attributes. In addition, a data constraint has been added to the Transfer type to validate that when an Observable is specified that the Quantity->unitOfAmount->financialUnit is also specified.

Review directions

In the CDM Portal, select the Ingestion panel, and review in the following samples the details of the transfer history associated to the after state of the transfer primitive that composes the business event.

  • events > exercise-swaption-cash
  • events > increase-xccy
  • events > partial-termination-xccy

Legal Agreement Model - Collateral Taxonomy Sources: EU UK, & US Eligible Collateral Category Listings

What is being released?

Collateral Taxonomy sources and Regulatory Enumeration lists to support the identification/labelling and categorisation of eligible collateral asset types per different regime's regulations, as part of global uncleared derivatives margin rules for posting collateral margin. The lists added to the model are based on those published and supported under the following jurisdictional regulatory bodies:

  • European Union Eligible Collateral Assets classification categories based on EMIR Uncleared Margin Rules
  • United Kingdom Eligible Collateral Assets classification categories based on UK Onshored EMIR Uncleared Margin Rules
  • US Eligible Collateral Assets classification categories based on Prudential Regulators and CFTC Uncleared Margin Rules

Each of the enumerated values has a complete description of the relevant regulatory rules they represent. They are listed as additional Taxonomy sources to those already represented in the CDM

Review directions

In the CDM Portal, select the Textual Browser and search for the relevant data types and review as per the following instructions:

  • Search for TaxonomySourceEnum and inspect the new enum values EU_EMIR_EligibleCollateralAssetClass, UK_EMIR_EligibleCollateralAssetClass,US_CFTC_PR_EligibleCollateralAssetClass. Each corresponds to a regulatory enumeration list for a regime: EU_EMIR_EligibleCollateral contains 18 enum values A to R, UK_EMIR_EligibleCollateral contains 18 enum values A to R, US_CFTC_PR_EligibleCollateralcontains 13 enum values. Each of the enum values has its own complete description based on the corresponding regulations.
  • Search for the new type CollateralTaxonomy under ProductTaxonomy. This new type specifies a TaxonomySource and a value from the enumeration list.
  • New conditions have been added for EU_EMIR_EligibleCollateral,UK_EMIR_EligibleCollateral, US_CFTC_PR_EligibleCollateral. These conditions enforces the specified regulatory enumerated list to match the taxonomy source.
  • A new type CollateralTaxonomyValue lists the available taxonomy value enumeration options as well as a nonEnumeratedTaxonomyValue that caters for taxonomy value outside of the available enumerated lists. A logical condition was added to ensure one collateral taxonomy values is specified.
  • ProductTaxonomy has been replaced with CollateralTaxonomy Within asset criteria and the related condition for optional choice.

2.106.0

Product Model - Commodity: Added Mapping for Commodity Derivative Products

What is being released?

This release introduces mapping for Commodity derivative products. A set of critical attributes has been succesully mapped for Commodity Swaps and a basic framework has been completed for Commodity Options. In addition, one new product qualification and three related ingestion examples have been added in a new Products category called Commodity. Specific changes are listed below:

New synonyms to support Commodity derivative products in existing data types:

  • Price
  • ProductIdentifier
  • Quantity
  • Observable
  • OptionPayout
  • Payout
  • Product
  • TradableProduct
  • Frequency
  • UnitType
  • PeriodEnum
  • QuotationSideEnum
  • CapacityUnitEnum
  • BusinessCenterEnum

New synonyms for new data types that support Commodity derivative products:

  • FixedForwardPayout
  • Commodity

Changes to Product Qualifications:

  • Added Qualify_CommodityOption
  • Added description to Qualify_Commodity_Swap_FixedFloat
  • Added description to Qualify_Commodity_Swap_Basis

Added new ingestion examples:

  • com-ex1-gas-swap-daily-delivery-prices-last
  • com-ex5-gas-v-electricity-spark-spread
  • com-ex08-oil-call-option-strip

Completed the enumerated list for the following:

  • CommodityInformationPublisherEnum

Review directions

In the CDM Portal, select the Textual Browser, search for any of the changes specified above. Also, select the Ingestion Feature, Products->Commodity, and select any of the new examples to see the results of mapping from FpML to a CDM Compliant format, including the applicable Product Qualification.

2.105.3

Legal Agreement Model - Collateral Agreement Elections

What is being released?

Under Credit Support Agreement Elections, mapping exercises identified a number of validation errors due to the model initially focussing on IM documentation, during mapping a VM agreement these were spotted. This release resolves some of the fields which are mandatory for IM only and makes them optional. The elections covered in this release are as follows:

  • generalSimmElections
  • substitutedRegime
  • conditionsPrecedent
  • custodyArrangements

Review Directions

In the CDM portal use the textual browser to review the following:

  • Review enhancements to type CreditSupportAgreementElections
  • Locate generalSimmElections, substitutedRegime, conditionsPrecedent, custodyArrangements
  • Check cardinality changes for each from (1..1) to (0..1)

Legal Agreement Model - Eligible Collateral Schedule

What is being released?

Eligible Collateral Criteria allows specification of a Listing Type in order to define constraints based on the index, sector, or exchange an asset is listed on. The cardinality on these attributes has been changed so that multiple values for each can be specified.

Review Directions

In the CDM portal use the textual browser to review the following:

  • Review enhancements to type ListingType

2.105.2

Product Model - PriceQuantity: FpML synonym mappings for FloatingRateSpecification

What is being released?

The recent PriceQuantity refactoring introduced a new standard set of data types for Price and Quantity and also propagated the related changes throughout most of the model. This release contains a few minor clean up tasks:

The initial floating rate is considered an attribute of the Product. The FpML synonyms have been changed to map the initial floating rate into the FloatingRateSpecification -> initialRate, rather than PriceQuantity -> price.

Review Directions

In the CDM Portal, select Ingestion, and review the following samples:

For FloatingRateSpecification -> initialRate:

  • products > credit > cdindex-ex04-iBoxx-uti.xml
  • products > rates > ird-ex29-non-deliverable-settlement-swap-uti.xml
  • products > rates > ird-ex33-BRL-CDI-swap-versioned.json

Event Model - Event Date: FpML Record-Keeping synonym mappings for BusinessEvent

What is being released?

This release adds an FpML Record-Keeping synonym mapping for BusinessEvent -> eventDate.

Review Directions

In the CDM Portal, select Ingestion, and review the following samples:

For BusinessEvent -> eventDate:

  • record-keeping > record-ex01-vanilla-swap.xml
  • record-keeping > record-ex02-vanilla-swap-datadoc.xml
  • record-keeping > record-ex100-new-trade.xml

2.104.2

CDM Distribution: Kotlin Language

What is being released?

The suite of CDM Distributions has been expanded with a version in Kotlin programming language on the CDM Portal. This version only contains CDM types and enums for now.

Review Directions

  • In the CDM Portal, A new tile in the downloads section offers the option to retrieve the new CDM Kotlin Distribution.

2.103.0

Legal Agreement Model - Updated ISDA Create Samples Names

What is being released?

This release renames the ISDA Create sample json files for the legal agreement document types to be in line with the agreed ISDA Create naming convention.

  • 2016-im-csa-ny-law
  • 2019-clearstream-sa-security-provider-lux-law
  • 2019-clearstream-sa-security-taker-lux-law
  • 2019-isda-bank-custodian-sa-eng-law
  • 2019-isda-bank-custodian-sa-ny-law

Review directions

In the CDM Portal, select Ingestion, and run samples from the following folders:

  • isda-create/test-pack/production/
  • isda-create/test-pack/sandbox/

2.102.0

Product Model - Contribution of ISLA - CDM for Securities Lending - SecurityFinancePayout

What is being released?

This release contributes modelling components proposed by ISLA to extend the CDM in term of Securities Lending products. The release introduces a new Payout SecurityFinancePayout, five additional new data types contained within SecurityFinancePayout, and two new enumerations. The existing SecurityPayout data type and the encapsulated data types and related enumerations have been marked as [deprecated] in the model to reflect the move to using the new SecurityFinancePayout.

Changes to other data types and qualification functions have been made where appropriate to accomodate for the new payout.

Details

New Data Types

  • SecurityFinancePayout
  • DividendTerms
  • CollateralProvisions
  • SecurityFinanceLeg
  • Duration
  • EvergreenProvision

New Enumerations

  • DurationTypeEnum
  • CollateralTypeEnum

Updates to Existing Data Types

  • Payout - added new data attribute securityFinancePayout
  • EligibleCollateral - data type renamed to EligibleCollateralSchedule, attribute scheduleIdentifier of type Identifier added to allow specification of an identified Collateral Schedule within a Legal Agreement.
  • PostingObligationsElection - attribute eligibleCollateral updated to reflect data type name change above.
  • CollateralValuationPercentage - new attribute marginPercentage and data condition MarginPercentage added to support alternate approach to defining margin requirements for Securities Finance transactions.

Updates to Qualification Functions

  • Twenty nine Product Qualification functions for Credit Default Swaps, Equity Swaps and Interest Rate Swaps have been updated or extended to factor the use of the new SecurityFinancePayout.

Data Types marked as Deprecated

  • SecurityPayout
  • InitialMargin
  • InitialMarginCalculation
  • SecurityValuation
  • SecurityValuationModel
  • BondValuationModel
  • BondPriceAndYieldModel
  • UnitContractValuationModel

Enumerations marked as Deprecated

  • MarginTypeEnum
  • RepoDurationEnum

Review directions

In the CDM Portal, select the Textual Browser and search for any of the changes specified above.

2.101.8

Model Change - Modified Choice conditions to rename with unique names

What is being released?

This release modifies the naming of choice conditions in the model that were not previously identified with a unique condition name. Conditions previously identified with the name Choice now have a unique name consisting of the name of the data type with the word Choice as a suffix.

The following data types containing conditions named Choice have been adjusted to reflect the new naming convention.

  • AdjustableDate
  • AdjustableOrRelativeDate
  • AdjustableOrRelativeDates
  • BusinessCenters
  • AdjustableRelativeOrPeriodicDates
  • CommodityProductDefinition
  • DeliveryDateParameters
  • CommodityReferenceFramework
  • Obligations
  • NaturalPerson
  • PartyContactInformation
  • LimitApplicable
  • PartyCustomisedWorkflow
  • Resource
  • ApplicableRegime
  • NotificationTimeElection
  • SubstitutedRegime
  • AssetCriteria
  • FxSettlementRateSource
  • CalculationAgent
  • ExtraordinaryEvents
  • FeaturePayment
  • CreditDefaultPayout
  • GeneralTerms
  • InterestRatePayout
  • BasketReferenceInformation
  • ReferenceInformation
  • PaymentCalculationPeriod
  • AveragingPeriod
  • WeightedAveragingObservation
  • ResolvablePayoutQuantity
  • CashSettlementTerms
  • DeliverableObligations
  • OptionSettlement
  • SettlementTerms
  • SecurityLeg
  • InitialMarginCalculation
  • FxFeature
  • ExerciseFee
  • ExerciseFeeSchedule
  • ExerciseProcedure
  • MultipleExercise

Review directions

In the CDM Portal, select the Textual Browser and search for any of the changes specified above.

2.101.5

Model Change - Modified Money data type to use the new standard Quantity data type

What is being released?

This release modifies the Money type by making it an extension of Quantity, removing the existing attributes in Money, and adding a condition that requires the unitOfAmount to be a currency.

The following functions required minor modifications to point-to/use the new location of currency in the Money data type:

  • Create_Transfer
  • CreditSupportAmount
  • DeliveryAmount
  • EquityCashSettlementAmount
  • PostedCreditSupportItemAmount
  • ReturnAmount
  • UndisputedAdjustedPostedCreditSupportAmount

The following function required no change after the Money data type was changed:

  • SumPostedCreditSupportItemAmounts

The data type for the following attribute was changed from Money to Price:

  • UnitContractValuationModel->unitPrice

The following data types required no change after the Money data type was changed

  • BondPriceAndYieldModel
  • CalculationPeriod
  • Cashflow
  • CashSettlementTerms
  • CashTransferBreakdown
  • CashTransferComponent
  • ConcentrationLimit
  • CreditEvents
  • CustodianTerms
  • ElectiveAmountElection
  • ExerciseFee
  • ExerciseFeeSchedule
  • FailureToPay
  • InitialMargin
  • PartialExercise
  • PaymentCalculationPeriod
  • PaymentDetail
  • PaymentDiscounting
  • PercentageRule
  • Position
  • PostedCreditSupportItem
  • PremiumExpression
  • PrincipalExchange
  • SecurityLeg
  • SimplePayment
  • StubValue

Review directions

In the CDM Portal, select the Textual Browser and search for any of the changes specified above.

2.101.4

Model Change - Modified Money data type to use the new standard Quantity data type

What is being released?

This release modifies the Money type by making it an extension of Quantity, removing the existing attributes in Money, and adding a condition that requires the unitOfAmount to be a currency.

The following functions required minor modifications to point-to/use the new location of currency in the Money data type:

  • Create_Transfer
  • CreditSupportAmount
  • DeliveryAmount
  • EquityCashSettlementAmount
  • PostedCreditSupportItemAmount
  • ReturnAmount
  • UndisputedAdjustedPostedCreditSupportAmount

The following function required no change after the Money data type was changed:

  • SumPostedCreditSupportItemAmounts

The data type for the following attribute was changed from Money to Price:

  • UnitContractValuationModel->unitPrice

The following data types required no change after the Money data type was changed

  • BondPriceAndYieldModel
  • CalculationPeriod
  • Cashflow
  • CashSettlementTerms
  • CashTransferBreakdown
  • CashTransferComponent
  • ConcentrationLimit
  • CreditEvents
  • CustodianTerms
  • ElectiveAmountElection
  • ExerciseFee
  • ExerciseFeeSchedule
  • FailureToPay
  • InitialMargin
  • PartialExercise
  • PaymentCalculationPeriod
  • PaymentDetail
  • PaymentDiscounting
  • PercentageRule
  • Position
  • PostedCreditSupportItem
  • PremiumExpression
  • PrincipalExchange
  • SecurityLeg
  • SimplePayment
  • StubValue

Review directions

In the CDM Portal, select the Textual Browser and search for any of the changes specified above.

2.101.2

Product Model - Credit: Update to Credit Product Qualifications

What is being released?

This release provides an updated set of Credit Product Qualification functions, introducing four new functions, to bring the new total to six. All of the new and revised functions account for currently supported products in a consistent manner. The revised functions align with the ISDA v1 and/or v2 Taxonomy where applicable, are mutually exclusive, and fill gaps from the previous version, e.g. to separately identify single name Credit Default Swaps (CDS) from loan and index CDS.  

The descriptions for each of these functions are compliant with the CDM style guide.  In addition, inline guidance comments have been added to explain each section of code in each of the Credit Product Qualification functions so that implementers can more easily understand the purpose of each group of lines of code.  This release also adds one new Credit Product FpML Ingestion Examples, bringing the total to 21. The new and revised functions are listed below, with the count of CDM ingestion examples shown in parentheses:

New Product Qualification Functions:

  • Qualify_CreditDefaultSwap_Loan (2)
  • Qualify_CreditDefaultSwap_Index (4)
  • Qualify_CreditDefaultSwap_IndexTranche (1 - new)
  • Qualify_CreditDefaultSwap_Basket (2)

Revised Product Qualification Functions:

  • Qualify_CreditDefaultSwap_SingleName (8)
  • Qualify_CreditDefaultSwaption (4)

Review directions

In the CDM Portal, select the Textual Browser to inspect the changes to the functions specified above.  Also, select the Ingestion feature Products->Credit, and choose one or more examples to view, such as cd-ex01-long-asia-corp-fixreg-versioned.xml and note the productQualifier for each in the CDM panel on the right side.

2.101.0

Legal Agreement Model - Add ISDA Create Samples

What is being released?

This release adds additional ISDA Create sample json files for the legal agreement document types listed below, including samples from their both Production and Sandbox environments.

  • 2016 IM CSA (NY Law)
  • 2019 Clearstream SA (Security-provider) (Lux Law)
  • 2019 Clearstream SA (Security-taker) (Lux Law)
  • 2019 ISDA Bank Custodian SA (Eng Law)
  • 2019 ISDA Bank Custodian SA (NY Law)

Review directions

In the CDM Portal, select Ingestion, and run samples from the following folders:

  • isda-create/test-pack/production/
  • isda-create/test-pack/sandbox/

2.100.1

Model Change - Removed New Inline Comments

What is being released?

This release removes inline comments (e.g. ones preceeded by TODO) that were introduced after the last clean up of inline comments. There were eleven rows in the logical model from which these comments were removed.

Review directions

In the CDM Portal, select the Textual Browser, search for any instances of //. The only remaining ones should be as part of a URL or as a guidance comment in a function or synonyum. Also there should not be any instances of /*.

2.100.0

Product Model - PriceQuantity: CDM Cardinality change in Price and minor changes to enumerations in the FinancialUnitEnum

What is being released?

A change to the cardinality of one attribute of the Price data type and minor changes to the FinancialUnitEnum as described below:

  • The cardinality of the perUnitOfAmount attribute in the Price data type has been changed to mandatory singular (1..1) from optional singular (0..1) so that this value will always be populated
  • The enumerated values set in FinancialUnitEnumhave been made singular and a new value ContractualProduct has been added:
    • Contracts has been changed to Contract
    • IndexUnits has been chagned to IndexUnit
    • Shares has been changed to Share
    • ContractualProduct has been added to qualify a price that applies to the complete contractual product, such as a cash premium on an OTC Option

Review directions

In the CDM Portal, select the Graphical Navigator, search any of the data types listed above. Alternatively, select the Textual Browser and search for the data types and attributes listed above.

2.99.16

Product Model - PriceQuantity: PriceQuantity refactoring follow up tasks - minor changes for Reset, OptionStrike, and FloatingRate

What is being released

The recent PriceQuantity refactoring introduced a new standard set of data types for Price and Quantity and also propagated the related changes throughout most of the model. This release continues that propagation in specific areas and includes other minor clean up tasks:

  1. Updated Reset->resetValue and Observation->observationValuetype to use the Price data type.

  2. In OptionStrike

  • Removed metadata address from StrikePrice: This attribute uses the new standard Price data type, but does not require the new metadata address pointing to PriceQuantity because the strike price is not represented there. This change corrects an unintended change from the PriceQuantity refactoring release.
  • For the FpML synonyms, changed the mapping for the FpML StrikePrice to point to the OptionPayout instead of the TradableProduct->PriceQuantity.
  • Changed the condition choice to one of, which is a more streamlined expression that can be used in this case.
  1. Tangentially related to PriceQuantity: Expanded the description for BusinessEvent->EventDate.

Review directions

In the CDM Portal, select the Textual Browser and search for the data types and attributes listed above. Also, see one or more ingestion examples, e.g.
fx ex09 euro op.

2.99.15

Product Model - Equity: Update to Equity Product Qualifications and addition of a generic Index Option Product Qualification

What is being released?

This release provides an updated set of Equity Product Qualification functions, introducing four new functions, revising one, and dropping one to bring the new total to five. The release also adds a generic Index Option Product Qualification function. All of the new and revised functions account for currently supported products in a consistent manner. The revised functions align with the ISDA v1 and/or v2 Taxonomy where applicable, are mutually exclusive, and fill gaps from the previous version, e.g. to separately identify price return products. The descriptions for each of these functions are compliant with the CDM style guide. In addition, inline guidance comments have been added to explain each section of code in each of the IR Product Qualification functions so that implementers can more easily understand the purpose of each group of lines of code.

This release also adds two new Equity Product FpML Ingestion Examples, one for Qualify_EquityOption_PriceReturnBasicPerformance_SingleName and one for Qualify_IndexVanillaOption, which appears in the Equity group, bringing the total to eleven.

This expanded set of function are listed below, with the count of CDM ingestion examples shown in parentheses:

New Product Qualification Functions:

  • Qualify_EquitySwap_TotalReturnBasicPerformance_SingleName (5)
  • Qualify_EquitySwap_PriceReturnBasicPerformance_Index (2)
  • Qualify_EquitySwap_TotalReturnBasicPerformance_Index (1)
  • Qualify_EquityOption_PriceReturnBasicPerformance_SingleName (1)
  • Qualify_IndexVanillaOption(1)

Revised Product Qualification Function:

  • Qualify_EquitySwap_PriceReturnBasicPerformance_SingleName(1)

Dropped Product Qualification Function:

  • Qualify_EquitySwap_ParameterReturnDividend_Basket: Deferred until fully supported in the CDM

Review directions

In the CDM Portal, select the Textual Browser to inspect the changes to the functions specified above. Also, select the Ingestion feature Products->Equity, and choose one or more examples to view, such as eqs-ex01-single-underlyer-execution-long-form-other-party.xml and note the productQualifier for each in the CDM panel on the right side.

2.99.14

Model Change - Upgrade Reset and Transfer Function Model to support Interest Rate Payout

What is being released?

This release introduces upgrades to the Reset and Transfer business event functions by adding support for the InterestRatePayout data type.

Expanding on existing functionality which supports EquityPayout, this upgrade to support InterestRatePayout follows the existing Reset and Transfer mechanism. Namely, the Reset business event function receives as an input the relevant market data Observation values and the relevant Trade object. The Transfer business event function receives the resulting Reset business event values as an input to calculate the quantity of the transfer via a performance calculation, which for an InterestRatePayout would use the existing FixedAmount and FloatingAmount calculation functions.

Further, functions relating to the Transfer business event were renamed and refactored to harmonise cash and security transfers. The below functions were change:

  • func Create_CashTransfer renamed to Create_Transfer, which is now the business event function to associate both cash and security transfers to Trades.
  • func Create_CashTransferPrimitive renamed to Create_TransferPrimitive, which now supports creation of transfers of cash and securities.
  • func Create_Transfer renamed to Create_CashTransfer, which creates instances of the Transfer data type for cash transfers. The corresponding function to create instances of Transfer for security transfers is Create_SecurityTransfer. These two functions are referenced in Create_TransferPrimitive to associate the newly created Transfer to TradeStates.

Review directions

In the CDM Portal, use the Textual Browser to inspect the changes to the function model. Note that no visual examples have yet been created for the Interest Rate Reset and Transfer events.

2.99.12

Product Model: Update to Interest Rate Product Qualifications

What is being released?

This change provides an update to the set of Product Qualification functions for Interest Rate (IR) products. Sixteen of the seventeen pre-existing functions in this category have been revised to account for currently supported products in a consistent manner. The revised functions align with the ISDA v1 and/or v2 Taxonomy where applicable, are mutually exclusive, and fill gaps from the previous version, e.g. to exclude other payout types where applicable, and properly define rules for FRAs and OIS-indexed swaps where applicable.

All 51 FpML IR ingestion examples in the CDM now resolve to the correct qualifications. Previously there were a number of cases for which the feature could not uniquely qualify the product or qualified it as the wrong product. The new descriptions for this set of functions are compliant with the CDM style guide. In addition, inline guidance comments have been added to explain each section of code in each of the IR Product Qualification functions so that implementers can more easily understand the purpose of each group of lines of code. These functions are listed in the code in the logical order shown below, with the count of CDM ingestion examples shown in parentheses:

  • Qualify_InterestRate_IRSwap_FixedFloat (24 examples)
  • Qualify_InterestRate_IRSwap_FixedFixed (0 examples)
  • Qualify_InterestRate_IRSwap_Basis (1 examples)
  • Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon (3 examples)
  • Qualify_InterestRate_IRSwap_FixedFloat_OIS (4 examples)
  • Qualify_InterestRate_IRSwap_Basis_OIS (0 examples)
  • Qualify_InterestRate_CrossCurrency_FixedFloat (4 examples)
  • Qualify_InterestRate_CrossCurrency_FixedFixed (1 examples)
  • Qualify_InterestRate_CrossCurrency_Basis (2 examples)
  • Qualify_InterestRate_InflationSwap_FixedFloat_YearOn_Year (0 examples)
  • Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon (0 examples)
  • Qualify_InterestRate_InflationSwap_Basis_YearOn_Year (0 examples)
  • Qualify_InterestRate_InflationSwap_Basis_ZeroCoupon (0 examples)
  • Qualify_InterestRate_Fra (2 examples)
  • Qualify_InterestRate_CapFloor (3 examples)
  • Qualify_InterestRate_Option_Swaption (5 examples)
  • Qualify_InterestRate_Option_DebtOption (2 examples)

The Qualify_InterestRate_IRSwap_FixedFloat_PlainVanilla function was removed from the CDM because it does not align with market requirements for a product qualification in the CDM. Note that the surviving Qualify_InterestRate_IRSwap_FixedFloat qualification (first item in the list above) represents the most basic IR Swap product type.

Review directions

In the CDM Portal, select the TextualBrowser, click inside the page, search in the text any of the functions listed above.
Also in the CDM Portal, select the Ingestion function, then select Products, then Rates, and review any of the examples, noting the ProductQualifier. For example, select CAD-Long-Initial-Stub-versioned.xml and note that the ProductQualifier is InterestRate_IRSwap_Basis.

2.99.6

CDM Distribution - C# Data Validation

What is being released?

This release introduces support for data validation in the C# distribution, enabling validation based on both cardinality and conditional statements.

Cardinality

The C# code generators now generate a validation rule for each attribute cardinality constraint, so if the cardinality of the attribute does not match the requirement an error will be associated with that attribute by the validation process.

Condition Statement

Data type condition definitions comprises a boolean expression that applies to the type attributes. The C# code generators now support the following language features:

  • conditional statements: if, then, else
  • boolean operators: and, or
  • list statements: exists, is absent, contains, count
  • comparison operators: =, <>, <, <=, >=, >

Choice

Choice rules define a choice constraint between the set of attributes of a type. The C# code generators now support the one-of condition.

Review directions

In the CDM Portal, go to the Downloads section, and download either C# 9 (.NET 5.0) or C# 8 (.NET Standard 2.1).

2.99.5

Model Change - Added Support for Commodity Swaps

What is being released?

This release introduces support for basic Commodity Swaps, featuring new payout data types and an expanded data structure to support the definition of the underlying commodity reference price. Specific changes listed below:

New and revised Payout data types

  • ObservationPayout: Added to represent common attributes for EquityPayout and CommodityPayout
  • CommodityPayout: Added to support the floating leg of a Commodity Swap with data structures that can represent the unique needs of Commodity Swaps
  • FixedForwardPayout: Added to support the fixed leg of a Commodity Swap and may be re-used in other product contexts
  • EquityPayout : Modified as an extension of ObservationPayout and removed the attributes that are now represented in ObservationPayout

New data types to support the CommodityPayoutdata type

  • CommodityPriceReturnTerms: Defines parameters in which the commodity price is assessed
  • RollFeature: Identifies a way in which the futures contracts referenced will roll between periods
  • PricingDates: Specifies dates or parametric rules for the dates on which the price will be determined
  • ParametricDates: Defines rules for the dates on which the price will be determined
  • Lag: The pricing period per calculation period if the pricing days do not wholly fall within the respective calculation period

Modified and new data types to support Commodity Reference Prices as underliers

  • Commodity : Expanded with additional attributes to define the Commodity Reference Prices
  • CommodityProductDefinition : Specifies the commodity underlier in the event that no ISDA Commodity Reference Benchmark exists
  • DeliveryDateParameters: Specifies a date or the parameters for identifying the relevant contract date when the commodity reference price is a futures contract
  • CommodityReferenceFramework: Specifies the type of commodity
  • PriceSource: Specifies a publication that provides the commodity price, including, where applicable, the details of where in the publication the price is published

New functions to support Commodity Swaps

  • Qualify_Commodity_Swap_FixedFloat : Identifies a product as a Commodity FixedFloat swap
  • Qualify_Commodity_Swap_Basis : Identifies a product as a Commodity Basis swap (FloatFloat)

Changes in enums to support Commodity Swaps

  • Added RollSourceCalendarEnum : Identifies a date source calendar from which the pricing dates and the roll to the next contract will be based
  • Added DayDistributionEnum : Denotes the method by which the pricing days are distributed across the pricing period
  • Combined the values from CommodityBusiness with the values in BusinessCenterEnum
  • Modified PeriodExtendedEnum by adding a new enumerated value, C (CalculationPeriod), which is used when the defined the period corresponds to the calculation period, for example, it is used in the Commodity Markets to indicate that a reference contract is the one that corresponds to the period of the calculation period

Review directions

In the CDM Portal, select the Textual Browser, search for any of the changes specified above. For example, begin with Payout and then drill down into ObservationPayout, CommodityPayout, or FixedForwardPayout.

2.99.4

DSL Syntax - Syntax upgrades for regulatory rules

What is being released?

  • Additional validation rules have been added to identify incorrect syntax when using the minBy or maxBy operator.

  • A simplification of the syntax for extracting information from a CDM object. The word multiple is no longer required after extract.

CDM Model - Simplification of regulatory rules

What is being released?

An update for all reporting rules currently using extract multiple syntax. The use of the multiple operator is no longer necessary.
An update of regulatory rule CrossCurrencySwapBuyerSeller which had invalid syntax.
An update of regulatory rule CDSPrice to use syntax which is more human readable.

Model Change

  • Removal of redundant multiple keyword from extract rule.
  • Update of regulatory rule CrossCurrencySwapBuyerSeller
  • Update of regulatory rule CDSPrice

Review directions

In Rosetta Core use the Textual View to inspect the reporting rules.

See reporting rule TradingDateTime, which has had the redundant multiple keyword removed.
See reporting rule CrossCurrencySwapBuyerSeller, which has had the invalid syntax removed.
See reporting rule CDSPrice, which has been rewritten.

2.98.5

CDM Model - Removed unnecessary comments from the logical model

What is being released?

This release provides a cleaner version of the CDM logical model that is viewable in the ISDA CDM Portal. About 500 unnecessary commments were removed from the model in order to minimize distractions while reading the model. These comments were preceded by the symbol // or inserted between the symbols /* and * /. Over 100 of these comments began with the phrase TODO or similar, indicating future work to be considered. All of these comments have been archived and are under review to identify and prioritize work to be done.

The only type of comments that have not been removed are those that provide useful guidance to the users, most typically found in the product qualifications and synonyms where additional explanation is helpful for user interpretation between lines of code.

Review directions

In the CDM Portal, select the Textual Browser, search for the symbol //. The only cases that should be found are examples of guidance comments or the use of // in a URL. Also, search for /* , there should not be any cases of this notation.

Technical Change - Bugfix to Java code

What is being released?

The setXXX methods in RosettaModelObjectBuilders now accept null as an argument. Setting a value to null has the effect of clearing out the value for that attribute.

Review directions

In CDM Portal, use the Downloads icon to access the generated Java code.

2.97.13

Technical Change - Bugfix to Graphical Navigator in CDM Portal

What is being released?

Bugfix. The Graphical Navigator in the CDM Portal was broken such that it failed to show type details in the right panel. The same bug also broke the search functionality.

Review directions

In the CDM Portal, select the Graphical Navigator, search for a data type, e.g. TradableProduct, observe the graphical display of this data type and the type details in the right panel.

2.97.9

Technical Change - Bugfix to Graphical Navigator in CDM Portal

What is being released?

Bugfix. The Graphical Navigator in the CDM Portal was broken such that it failed to show type details in the right panel. The same bug also broke the search functionality.

Review directions

In the CDM Portal, use the Graphical Navigator to inspect the model, clicking on data attributes displays data type details in the right-hand panel. Use the search functionality to search for a data type.

2.97.8

Technical Change - Bugfix to Typescript code generator

What is being released?

Bugfix. The Typescript code generator has been updated to generate a missing interface, which is needed to make use of the generated Typescript code.

Review directions

In the CDM Portal, use the Downloads icon and subsequently the Typescript icon to download and access the generated Typescript files.

Technical Change - Enhanced transparency of CDM data validation for users

What is being released?

Java code has been updated to enhance transparency of CDM data validation issues. It is now easier for technical CDM adopters to see data validation issues as they execute CDM data validation logic in a Java execution environment.

Review directions

In the CDM Portal, navigate to the Downloads icon and then to the Java icon to download all Java code artefacts. Users can make use of the CDM Demo icon (also within Downloads) to see how to invoke CDM data validation logic in Java.

CDM Model: Expanded set of enumerations in RegulatoryRegimeEnum

What is being released?

Additional regimes have been added to the RegulatoryRegimeEnum which is used to express the required regimes for initial margin documentation. The RegulatoryRegimeEnum is used as an enumeration for attributes in the ApplicableRegime and SubstitutedRegime data types within the legal agreements model.

The new enumerated values are BrazilMarginRules, UnitedKingdomMarginRules, SouthAfricaMarginRules, SouthKoreaMarginRules, and HongKongSFCMarginRules, all of which have come into force in January 2021. Each of these enumerated values has a complete description that uses the text provided in the relevant regulatory supplement.

Review directions

In the CDM Portal select the Textual Browser, search for ‘ApplicableRegime’ and ‘SubstitutedRegime’, click on the ‘RegulatoryRegimeEnum’ next to the ‘regime’ attribute and observe the expanded list of regimes, including the ones noted above.

2.97.5

Technical Change - Builder Refactor

What is being released?

Upgraded the CDM code generators to ease future community contributions. This further simplifies the creation of Java function implementations by the CDM project team and the wider community.
Note: this change will not be backwards compatible with current CDM Java implementations.

How to review the change

In the CDM Portal, use the Download icon to inspect the generated Java code. Please note that the structure of the generated Java objects, those that represent CDM data types, have changed.

Technical details of the change

All the CDM types are now being generated in Java as interfaces instead of classes with implementation provided separately e.g. AdjustableDate is now a Java interface with an implementation called AdjustableDateImpl.
CDM Java objects are instantiated using the builder pattern with builder classes like AdjustableDateBuilder. These classes again have been made into interfaces that extends the POJO interfaces. These also have implementation provided e.g. AdjustableDateBuilder is an interface implemented by AdjustableDateBuilder.
The benefit of this change is that an AdjustableDateBuilder is a AdjustableDate, which makes the implementations of the code generators and functions much easier and more maintainable.

Using the new structure

If you are only using CDM objects and functions that have been generated elsewhere you should not need to make any changes.
If you have code that changes CDM objects in Java or instantiates them using the builder classes there are some changes you will need to make. In all these examples XXX stands for the name of a CDM type.

  • The setXXXBuilder(XXXBuilder xxxBuilder) methods have been removed. The setXXX(XXX xxx) methods should be used instead as they will now accept XXXBuilders as they now implement XXX
  • Similarly the addXXXBuilder methods have also been removed and addXXX methods should be used
  • The setXXXRef methods have been renamed to setXXXValue becuase they have always set the value and not the ref
  • Function implementations - Any parameter of a function that was previously of type List should now be List<? extends XXX>

Model Change - Update cardinality constraints for PriceQuantity data type

What is being released?

Update for the cardinality of price and quantity attributes on the PriceQuantity data type to optional. The optionality of price and quantity will allows for these attributes to be used independently when use cases require so, for example the denomination of the notional for the protection leg does not require the price component and the description of an upfront fee to denote a cash price will not require the quantity component.

Review directions

Make use of the CDM Portal and its Ingestion panel to inspect how existing sample documents are represented using the. New PriceQuantity structure.

2.96.4

CDM Model: Event Model - ContractFormationPrimitive

What is Being Released

Bug Fix - The ContractFormationPrimitive event has been updated to remove a redundant condition and correct commentary for the remaining condition to be applied to the event object.

Model Changes
The conditions onContractFormationPrimitive have been rationalised to one condition which continues to ensure that trade details are persisted when a contract is formed from an input trade (i.e. Before contains TradeState) from an execution object (or otherwise).

Review Directions

In the CDM Portal, use the Textual Browser to inspect the data type `ContractFormationPrimitive'.

2.96.1

CDM Model: Function Development - Create_ContractFormation

What is Being Released

The Create_ContractFormation function has been updated to use an instructions object and ensure consistent design of Business Event functions in the CDM.

Background
Consistent design of Business Event Functions will allow for easier adoption of the CDM Event Model. Each Business Event creation function should result in a valid CDM output object based on input instructions. All Business Event creation functions, and Business Event qualification functions should include a description.

Model Changes
The ContractFormationInstruction data type has been added to the model, containing mandatory data attributes required on a Contract Formation Business Event. Create_ContractFormation function updated to contain ContractFormationInstruction as input object. Descriptions on Create_ContractFormation and Qualify_ContractFormation updated.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect the data types and functions referenced above.

2.95.6

Technical change: Compile for java 11

What is Being Released

The generated Java code in the CDM distribution has been upgraded to use Java version 11.
The previous version (Java version 1.8) is no longer supported by Oracle.
Users of the CDM Java distribution 2.95.6 (or higher) will need to use Java with a version 11 or higher.

Review Directions

In the CDM Portal, download the CDM distribution pack to inspect and make use of the generated Java code.

2.95.4

CDM Model: Update to regulatory reporting logic to account for Price Quantity Phase 2 release

What is Being Released

Updates to the logical expressions of the regulatory reporting logic already present in the model, where the new PriceQuantity data structure ought to be used.

Review Directions

In the CDM Portal and Textual Browser, see updates to reporting rule FixedFixedPrice, reporting rule FixedFloatPrice, reporting rule BasisSwapPrice, reporting rule CDSPrice and reporting rule Quantity.

2.95.1

CDM Model: Refactoring of Price and Quantity – Phase 2

What is Being Released

The continuation of the refactoring of the price and quantity data types in the CDM.

Background

This phase of the price and quantity refactoring achieves multiple objectives:

  • Creates revised atomic price and quantity data types that can be used anywhere in the model where a price and/or quantity is required.
  • Inserts those new types into the TradableProduct data type and into specific locations in the Payout data type and other sections of the model.
  • Allows for a product definition that is fully agnostic of the price and quantity for a specific trade.
  • Enables an efficient process for functions whose inputs require product definitions and related price and quantity. The previous version used an arbitrary set of attributes as a proxy to another set of attributes which is not appropriate, because that is the role of a reference – this new release introduces a new referencing mechanism consisting of an address and location pair that allows efficient referencing of price and quantity to the Payout data types for purposes of function inputs while upholding the product agnostic principle for the persisted objects.

Primary Model Changes

  • Added a new base data type, MeasureBase, which represents two common attributes for prices and quantities:

    • amount, which is a number
    • unitOfAmount , which is of type UnitType, a new data type that qualifies the unit by which the amount is measured (e.g. a specific currency, a specific financial unit such as shares, or a capacity unit such as barrels)
  • Added new enumerated sets to support UnitType:

    • WeatherUnitEnum
    • FinancialUnitEnum
    • CapacityUnitEnum, which replaces UnitEnum
  • Revised the Price data type which

    • extends MeasureBase with two attributes
      • the mandatory priceType attribute which is of type PriceTypeEnum, a new enumerated set
      • perUnitOfAmount, which is of type UnitType, and provides an optional attribute to further define the price
    • replaces PriceNotation and the encapsulated data types of ActualPrice, CashPrice, and Price
    • and replaces the old Price data types and the number data type in selected locations within Payout
  • Revised the Quantity data type which

    • extends MeasureBase with two optional attributes
      • multiplier which is a number
      • multiplierUnit which is of type UnitType
    • replaces the QuantityNotation data type throughout the model
  • Revised the Observable data type which

    • specifies the object to be observed for a price – the object could be an asset or a reference
    • replaces AssetIdentifier with a refined data structure, e.g. currency is not included because it is defined in the unitOfAmount where applicable
  • Added a new data type, PriceQuantity which

    • specifies the price, quantity, and optionally the observable for use in a trade or other purposes
    • comprises three attributes
      • price
      • quantity
      • observable
    • includes a new metadata type, called address-location which
      • can be used as a special reference to point to payout data types or other locations
      • are assigned to the price and quantity attributes
  • Revised the TradableProductdata type which

    • replaces priceNotation and quantityNotationwith the priceQuantity attribute which is of the PriceQuantity data type
    • adds settlementTerms, for which the data type is a revised SettlementTerms that replaces assetIdentifier with priceQuantity
  • Removed PriceNotation, QuantityNotation, and AssetIdentifier from the model because they have been replaced by the data types described above

Additional Related Model Changes

  • The following attributes now use the revised Quantity data type and a metadata address that points to PriceQuantity->Quantity:

    • ResolvableQuantity-> resolvedQuantity
    • ResolvableQuantity-> quantitySchedule -> initialQuantity
  • The following attributes now use the modified Price data type and a metadata address that points to PriceQuantity-> Price :

    • RateSchedule-> initialPrice
    • OptionExercise-> strike -> StrikePrice
  • Other modified data types:

    • AllocationBreakdown -> quantity now uses the revised Quantity data type
    • ReferenceInformation -> price now uses the revised Price data type
    • InflationRateSpecification condition now refers to Observable in place of AssetIdentifier
    • EquityValuation -> price now uses the revised Price data type
  • Modified a set of creation functions to use the modified PriceQuantitydata type and/or its encapsulated types:

    • Create_Allocation : Change in Embedded Function
    • Create_ClearedTrade : Change in Alias
    • Create_Execution : Change in Input , Output
    • Create_ExecutionPrimitive : Change in Input , Output
    • Create_Exercise : Change in Condition
    • Create_TransferPrimitive: Change in Condition
  • Modified a set of qualification functions to use the modified PriceQuantitydata type and/or its encapsulated types:

    • Qualify_InterestRate_IRSwap_Basis_OIS : Change in Output
    • Qualify_InterestRate_IRSwap_FixedFloat : Change in Output
    • Qualify_InterestRate_IRSwap_FixedFloat_OIS : Change in Output
    • Qualify_InterestRate_IRSwap_FixedFloat_PlainVanilla : Change in Output
    • Qualify_StockSplit : Change in Alias
  • Modified other functions to use the modified PriceQuantitydata type and/or its encapsulated types:

    • CurrencyAmount : Change in Input
    • Equals : Change in Input, Output
    • EquityCashSettlementAmount : Change in Output
    • EquityPerformance : Change in Embedded Function
    • ExtractQuantityByAsset : Change in Input, Output
    • ExtractQuantityByCurrency : Change in Input , Output
    • FloatingAmount : Change in Embedded Function
    • FxMarkToMarket : Change in Alias
    • GreaterThan : Change in Input, Output
    • GreaterThanEquals : Change in Input, Output
    • NoOfUnits : Change in Input
    • Plus : Change in Input, Output
    • PriceQuantityTriangulation : Change in Input
    • ResolvablePayoutQuantity : Change in Output
    • ResolveEquityInitialPrice : Change in Input , Output
    • ResolveEquityPeriodEndPrice : Change in Output
    • ResolveEquityPeriodStartPrice : Change in Input, Output
    • StockSplit : Change in Alias
    • TerminateContract : Change in Output
  • Removed one function that is no longer needed:

    • Removed the function ExchangeRateQuantityTriangulation which was an embedded function the CashPriceQuantityNoOfUnitsTriangulation function because the new PriceQuantity structure enforces the logic that was defined in this function
  • Modified a set of Reporting Rule changes to use the modified PriceQuantitydata type and/or its encapsulated types:

    • FixedRatePrice
    • FloatingRatePrice
    • SingleCurrencyBasisSwap
    • CrossCurrencySwapBuyerSeller
    • FixedFloatPrice
    • BasisSwapPrice
    • FixedFixedPrice
    • CDSPrice
    • Quantity
  • Added new synonym data types and synonym enums:

    • Price
    • PriceQuantity
    • PriceQuantity
    • UnitType
    • CapacityUnitEnum
    • FinancialUnitEnum
    • PriceTypeEnum
    • WeatherUnitEnum
  • Modified a set of synonym data types to use the modified PriceQuantitydata type and/or its encapsulated types:

    • Price
    • RateSpecificationBase
    • ResolvablePayoutQuantity
    • TradableProduct
    • OptionStrike
  • Synonym data types replaced by the modified PriceQuantity data type and/or its encapsulated types:

    • CashPrice
    • ActualPrice
    • AssetIdentifier
    • PriceNotation
    • QuantityNotation

Review Directions

  • In the CDM Portal, use the Textual Browser or Graphical Navigator to review the data types, attributes, functions, enumerated sets, and synonyms referenced in this note.
  • Review ingestion examples, such as ird ex29 non deliverable settlement swap uti.

2.94.1

CDM Portal: Infrastructure - Registered User Information

What is Being Released

A technical change to also capture which versions of the CDM license, and the Privacy Policy will have been accepted by the user of the CDM portal. This will also record when acceptance is again requested from the user due to updates to the terms of these licenses or policy artefacts.

2.94.0

CDM Model: Function Development - Create_Execution

What is Being Released

The Create_Execution function has been updated to use an instructions object and ensure consistent design of Business Event functions in the CDM.

Background

Consistent design of Business Event Functions will allow for easier adoption of the CDM Event Model. Each Business Event should create a valid CDM output object based on input instructions. All Business Event creation functions, and Business Event qualification functions should include a description.

Model Changes

The ExecutionInstruction data type has been added to the model, containing mandatory data attributes required on an Execution Business Event. ExecutionDetails data type added as an attribute within ExecutionInstruction to specify type and venue of Execution. Create_Execution function updated to contain ExecutionInstruction as input object. Descriptions on Create_Execution and Qualify_Execution updated.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect the data types and functions referenced above.

CDM Model: Primitive Harmonisation - Follow Ups

What is Being Released

Observation Event

As part of the Primitive Harmonisation design, the creation of Observation data object instances should be handled independently and outside the trade life-cycle, the observation is not an event but a piece of data used in a process. Now, Observation object instances will be linked to a trade (via the TradeState data type), which is now done via the reset process.

As such, the ObservationPrimitive and its associated functions are no longer needed in the model and have been removed.

Ingestion examples have also been updated to reflect this change in structure.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect the data types and functions referenced above. The Equity Swap example within the Functions app now exemplifies how the reset process works after Primitive Harmonisation.

Documentation Update

User documentation for CDM has been updated to reflect the changed brought about as part of Primitive Harmonisation. Additionally, code-snippets were checked and updated to reflect the current model syntax. Unit tests to check validity of code-snippets were also updated to catch instances where code-snippets do not match model syntax.

Review Directions

In the CDM Portal, use the Documentation app to inspect the user documentation.

Position data type

The Position data type was updated such that it now mandates a reference to Trade. This change accounts for the normalisation of Contract and Execution data types, which have now been consolidated into the Trade data type.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect the data type.

CDM Model: Ancillary Roles - Validation Rules

What is Being Released

Ancillary Roles

Additional validation rules have been included in the specification of TradableProduct to ensure integrity of the relationship between each ancillary role included in the definition of a product and the ancillary parties included in the definition of the tradable product.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect the TradableProduct data type and the conditions related to ancillaryParty

2.91.2

CDM Model: Primitive Harmonisation Phase 3 - Transfer Primitive

What is Being Released

Primitive harmonisation for Transfer Primitive, which now completes the harmonisation process for all Primitives.

Background

Harmonisation will allow for easier combination of Primitives to form complex business events. Changing before and after attributes to use the same data type eliminates the need for data translations when combining Primitives.

Whilst data translation can be addressed in the Function Model, defining the applicable data types correctly in the Data Model removes the need for additional complexity.

Model Changes

The TransferPrimitive data type has been updated to make use of TradeState data type for both before and after attributes.

TradeState has been updated to additionally include the transferHistory attribute, which is represented by the Transfer data type.

Transfer represents the movement of cash, security or commodities between two parties, which can be a result of negotiated events, for example partial terminations, or scheduled events, for example Interest Rate Swap coupon payments. In either case, the definition of terms relating to settlement can be referenced via the settlementOrigin attribute. Representation of the settlement status is done using the workflow model and as such uses WorkflowStatusEnum (encapsulated by BusinessEvent).

The Create_CashTransfer function defines how Transfers should be created in any given cash transfer event. To support the existing Equity Swap coupon payment example, which focuses on cash transfers, functions such as EquityCashSettlementAmount were updated and referenced from Create_CashTransfer.

Further, descriptions and necessary data types for Allocation, Exercise and Reset business events have been upgraded to reflect the latest model changes.

Sample File Changes

A number of sample files relating to Transfers were removed as they are no longer valid in the new model. Applicable scenarios will be updated and reintroduced as part of subsequent releases.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to inspect changes to the model, referencing the data types and functions mentioned above. Navigate to Functions to inspect the Equity Swap reset example, which has a transfer component.

2.90.3

User Documentation: Namespace section

What is being released

The Namespace section has been added to the CDM user documentation, in line with recent changes to the model.

Notable changes and updates introduced:

  • New Namespace section.
  • Detailed description of individual components within the Namespace concept.
  • Addition of relevant examples to demonstrate model content.

Review direction

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

Updated Product Identification Type Enumeration

What is being released

The enumeration ProductIdSourceEnum has been changed to ProductIdTypeEnum to more accurately define a representation of an enumerated list of Product Identification Types.

Review Directions

In the CDM portal, review the enumeration listed above.

CDM Model: Minor update to regulatory rule logic and regulatory test pack

What is being released

Regulatory rule logic and regulatory test cases were updated to account for recent changes to Primitives.

Review Directions

  • See reporting rule TradeForEvent, which has re-enabled support for events using QuantityChangePrimitive.

CDM Model: Update to Legal Agreement and Eligible Collateral model

What is being released

The Legal Agreement and Eligible Collateral model has been updated to address deficiencies in the model identified following review with ISDA members.

  • Regime - rationalised data type to more efficiently reflect clause structure.
  • Substituted Regime - aligned structure of Substituted Regime data type with Regime data type to achieve consistency in modelling approach.
  • Asset Criteria - added Listing Criteria to filter eligibility based on Exchange, Sector and/or Index.
  • Various small fixes to model descriptions and ISDA Create synonyms.

Review Directions

  • In the CDM portal textual browser review data types Regime, SubstitutedRegime, and ListingType within AssetCriteria.
  • In the CDM review ISDA Create ingestion samples.

2.90.0

CDM Model: Primitive Harmonisation Phase 2 and part of Phase 3

What is being released

Phase 2 and parts of Phase 3 work to harmonise Primitive events to make use of TradeState data type to represent before and after attributes.

Background

Harmonisation will allow for easier combination of Primitives to form complex business events. Migrating before and after states to use the same data type eliminates the need for data translations when combining Primitives.

Whilst data translation can be addressed in the Function Model, defining the applicable data types correctly in the Data Model removes the need for additional complexity.

Model Changes

The following primitives and their corresponding business events have been updated:

  • SplitPrimitive
  • ExercisePrimitive (deleted, replaced with quantity change and contract formation/transfer)
  • ResetPrimitive (deleted, replaced with the ‘Reset’ data type
  • ObservationPrimitive (deleted, observation details now captured in newly created Reset data type)

The corresponding business events for this set of primitives are Allocation, Exercise, and Reset.

The key changes made in relation to each of the primitive events are listed below:

  • SplitPrimitive has been harmonised to use TradeState. However, the SplitOutcome data type has been deleted because, as a result of this change, it is no longer referenced by any other types or functions.
  • ExercisePrimitive was deleted and replaced with a combination of QuantityChangePrimitive, ContractFormationPrimitive, and TransferPrimitive. In addition, the following data types have been deleted, as they were all referenced solely by ExercisePrimitive: ExerciseOutcome, PhysicalExercise, and CashExercise.
  • Reset is a new data type replacing the ResetPrimitive. The Observation-Reset proposal from April 2020 was used as the baseline design for creating this new type and for updating the Reset process. The mechanism of recording reset values utilises the newly introduced Reset data type. Values that are observed in the market in order to fulfil contractual product obligations for resets and other events are now represented in the Observation data type, which is referenced by the Reset data type, removing the need for the ObservationPrimitive data type, which has been deleted. Observation is a root type, meaning data instances can exist independently from others and are decoupled from the event model.

Review Directions

In the CDM Portal, use the Textual Browser or Graphical Navigator to review the types referenced in this note.
Use the Function icon to see the changes to the reset process in the context of an Equity Swap with single underlier.

CDM and Rosetta Documentation

What is being released

Improvements to the documentation of Rosetta and the CDM distribution including

  • Renaming Contract to Trade in documentation to match the previous change in CDM
  • Better explanation of functions and expressions in Rosetta including the precise semantics of various expression operators
  • Better documentation of how to create mappings
  • Details of how to obtain artifacts required to use the CDM Java distribution

Review Directions

On the rosetta docs site https://docs.rosetta-technology.io/ there are new pages for expressions and mapping in the DSL section as well as changes to the existing pages.

Documentation: CDM Documentation site styling update

What is being released

The visual styling of the CDM section of the documentation site has been updated to be consistent with Rosetta, which includes adding the ISDA CDM logo.

Review Directions

See https://docs.rosetta-technology.io/cdm/index.html

2.89.0

DSL Syntax: Disjoint Keyword

What is being released

Added the new disjoint keyword which can be used to write an expression that compares two lists to determine if there are any common elements. If there are no common elements, the lists are disjoint, and the expression will evaluate to true.

Given two lists of floating rate indexes, e.g.

before -> ... -> floatingRateIndex disjoint after -> ... -> floatingRateIndex

Then the expression will evaluate to true if every "after" floating rate index is different from every "before" floating rate index.

Bug Fix: Data Rule Java Code Generation

What is being released

Fix bug in the Java code generation to allow data rules to be invoked after each function invocation.

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.Validation.

2.88.1

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.

Updates the model naming based on feedback from the Architecture Review Committee:

  • Rename RelatedPartyEnum to AncillaryRoleEnum.
  • Rename CounterpartyEnum to CounterpartyRoleEnum.
  • Rename RelatedPartyReference.relatedParty to AncillaryParty.role.
  • Rename Counterparty.counterparty to Counterparty.role.
  • Rename TradableProduct attributes with multiple cardinality to be singular, e.g. TradableProduct.counterparty and TradableProduct.ancillaryParty.

Updates the model to specify the ancillary role consistently regardless of whether the party is a counterparty or not:

  • Remove type CounterpartyOrRelatedParty.
  • Update attributes CalculationAgent.calculationAgentParty, AdditionalDisruptionEvents.determiningParty, DividendReturnTerms.extraordinaryDividendsParty, OptionPhysicalSettlement.predeterminedClearingOrganisationParty and ExerciseNotice.exerciseNoticeReceiver to use enum AncillaryRoleEnum.
  • Add conditions to TradableProduct type to ensure that if an AncillaryRoleEnum is specified in the product, there is a corresponding AncillaryParty entry.

Review Directions

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

In the CDM Portal, use the Ingestion page to compare the samples below, noting that the ancillary roles CalculationAgentIndependent, ExtraordinaryDividendsParty and DisruptionEventDeterminingParty are specified consistently in both samples:

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

2.88.0

Digital Regulatory Reporting: FpML Event Ingestion

What is being released

As part of the Digital Regulatory Reporting workstream, the FpML record-keeping schema, and a corresponding ingestion environment, has been added to demonstrate CDM integration with FpML reporting.

The FpML record-keeping schema is intended to be used for reporting the primary economic terms of derivative transactions to swaps data repositories. FpML messages, such as nonpublicExecutionReport, can now be ingested into a CDM event, e.g. WorkflowStep, which can then be processed by CDM regulatory reporting logic.

Review Directions

In the CDM Portal Ingestion section, review new FpML record-keeping samples:

  • record-keeping > record-ex01-vanilla-swap
  • record-keeping > record-ex02-vanilla-swap-datadoc
  • record-keeping > record-ex100-new-trade

In the Rosetta Core, use the text editor to review the new synonyms in file synonym-cdm-fpml-recordkeeping.rosetta.

2.87.2

FpML Projection: Swaptions

What is being released

Projection is the translation from CDM format to external data formats. This release updates the FpML projection mappings for swaptions. Note that to project a swaption into FpML, the input CDM data must qualify as InterestRate_Option_Swaption.

Review Directions

  • In the Rosetta Core, open the Projection panel, and upload any of the CDM swaption json samples that are provided that are provided in the CDM distribution:

  • rates > ird-ex09-euro-swaption-explicit-physical-exercise

  • rates > ird-ex09-euro-swaption-explicit-versioned

  • rates > ird-ex10-euro-swaption-relative-usi

  • rates > ird-ex12-euro-swaption-straddle-cash

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

2.87.1

CDM Model: Primitive Harmonisation Phase 1

What is being released

Phase 1 of work to harmonise Primitive events such that Primitives use the TradeState data type to represent it's before and after state.

Harmonisation will allow for easier combination of Primitives to form complex business events. Migrating before and after states to use the same data type means no need for data translations when combining Primitives.

Whilst data translation can be addressed in the Function Model, defining the correct data types correctly, upfront in the Data Model removes the need for additional complexity.

Model Changes

The key changes in this release relate to the creation of the TradeState data type. TradeState includes all necessary data definitions to:

  1. Replace trade representations Execution and Contract.
  2. Replace state representations ContractState, PostContractFormationState.

The following Primitives have been harmonised as a result of creating the TradeState data type:

  • Contract Formation
  • Execution
  • Quantity Change
  • Terms Change
  • Reset
  • Split (before state only)

Special Note

Contract represented the root of the Product Model and was referenced extensively in CDM and its associated tooling. All explicit references to Contract have been replaced by TradeState. This involved updating the following model and tooling elements:

  • Ingestion now produces a TradeState data instance.
  • Function Model references to Execution, Contract, ContractState or PostContractFormationState have been updated to use to TradeState instead.
  • Regulatory reporting previously making references to Contract, have been updated to use TradeState.
  • Updated Handwritten java examples of event sequences and visualisations to account for the migration have been updated.

Review Directions

  • In the CDM Portal, use the Textual Browser or Graphical Navigator to review the type TradeState.

2.86.0

New ExerciseInstruction and Create_Exercise Function

What is being released

A data type and function pair that allow for the representation of an instruction to exercise an option and a subsequent function that constructs the contract changes.

  • ExerciseInstruction is a new data type that specifies the information to communicate the intention to exercise, as expressed by the party holding the rights to an option.
  • Create_Exercise function constructs the business event that represents the exercise of an option according to the referenced ExerciseInstruction.

The initial structure of the data type and function are designed to support a use case of a European style Swaption that is exercised for physical settlement. The initial validation of the data type and function have been limited to that use case.

The current structure may be valid for other cases, but these have not yet been validated. Over time, additional use cases will be validated or used as a reference to expand the structure as needed, for example, for cash settlement, other underlying asset types and for American style options.

Review Directions

In the CDM portal, reviews the data type and function listed above, and load examples in the Visualisation function to see an illustration of the use of the function.

2.85.9

Infrastructure: Distribute Source Code

What is being released

  • Include all Rosetta source files in the CDM downloadable distribution.

Review Directions

In the CDM Portal Downloads page, download the ISDA CDM as Java distribution and review contents in folder lib/dependencies. The sources code is now provided for the following CDM dependencies:

  • rosetta-common
  • com.regnosys.rosetta.lib
  • com.regnosys.rosetta.blueprints

2.85.8

Additional FX ingestion samples and product qualifications

What is being released

  • Additional FX ingestion samples have been added to demonstrate CDM support for FX Swaps, FX Options, and FX Options with Averaging Schedules.
  • Qualification functions have been updated in the model to:
    • support explicit qualification of Spot / Forward trades (func Qualify_ForeignExchange_Spot_Forward)
    • support FX Options and other Options with Averaging Schedules (func Qualify_ForeignExchange_VanillaOption)
    • support FX Swaps (e.g. Spot-Forward, Forward-Forward) (func Qualify_ForeignExchange_Swap)
  • Further synonym mappings have been added to synonym-cdm-fpml to enable ingestion of the additional ingestion samples.

Review Directions

In the CDM Portal, in the Ingestion section, review new and revised functions listed above, as well as the synonyms in the file noted above, and the following examples:

  • product > fx > fx-ex03-fx-fwd
  • product > fx > fx-ex08-fx-swap
  • product > fx > fx-ex09-euro-opt
  • product > fx > fx-ex10-amer-opt
  • product > fx > fx-ex11-non-deliverable-option
  • product > fx > fx-ex12-fx-barrier-option
  • product > fx > fx-ex20-avg-rate-option-parametric
  • product > fx > fx-ex22-avg-rate-option-specific

2.85.7

Bugfix Product Qualification Example & Minor Documentation Update

What is being released

  • Bugfix. Fixed the Qualification Java example to make use of the latest CDM Java APIs and additionally indicates where the qualification values should be stored on the CDM object. Added automated tests for several examples to catch code-level failures prior to releases.
  • Documentation Update. Clarification of record types were added to the Rosetta DSL documentation.

Review Directions

  • Bugfix. In the CDM Portal, in the Downloads section, download the CDM Java examples pack and inspect Qualification.java.
  • Documentation Update. See documentation at docs.rosetta-technology.io/dsl/documentation.html#syntax

2.85.6

Model Optimisation: Master Agreement Schedule

What is being released

This change is part of the ongoing modelling of the clauses contained in the 2002 ISDA Master Agreement Schedule.

This particular release adds a further seven clauses to allow specification of:

  • Address for Notices: Clause specifying the address and other details for notices.
  • Dated as of Date: The date specified as the "Dated as of Date" by the parties, which is used when transacting to identify the Master Agreement which shall govern that transaction.
  • Credit Support Provider: A defined term identifying entities that provide credit support in relation to a contractual party.
  • Credit Support Document: A defined term identifying documents that are relevant to the provision of credit support in relation to a contractual party.
  • Governing Law: Clause specifying the choice of governing law.
  • Specified Entity: A clause that allows each party specify its Specified Entities for certain Events of Default and Termination Events.
  • Termination Currency: A clause specifying the currency in which the termination payment is made (including the process by which such currency is determined).

Review Directions

  • In the CDM Portal, use the Textual Browser to review the data type MasterAgreementSchedule containing the data types mentioned above.

2.85.5

Model Optimisation: Legal Agreement Party References

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, and the legal agreements that support the transaction.

This particular release updates the legal model to specify the elective parties using the CounterpartyEnum values Party1 and Party2, replacing the existing approach which uses the text "partyA" and "partyB".

  • Update all party election types under namespace cdm.legalagreement.csa, such as AccessConditionsElections, AdditionalRepresentationElection, CalculationAgentTerms etc, to specify the elective party as type CounterpartyEnum.
  • Add AgreementTerms.counterparty attribute to specify the Party reference and corresponding CounterpartyEnum.
  • Update all isda-create synonyms to use CounterpartyEnum.

Review Directions

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

  • In the CDM Portal, use the Ingestion page to review any isda-create samples.

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.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.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.