All releases

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.124.0

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.

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.4

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.84.2

2.83.3

Infrastructure: Namespace reclassification

What is being released

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

Review Directions

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

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

2.83.2

Model Optimisation: Extract Party References from Product

What is being released

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

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

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

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

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

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

Review Directions

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

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

CalculationAgent.calculationAgentParty:

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

Cashflow.payerReceiver.payerRelatedParty and receiverRelatedParty:

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

PhysicalExercise:

  • events > exercise-swaption-physical.xml

CashExercise:

  • events > exercise-swaption-cash.xml

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

What is being fixed

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

2.82.8

Product/Event Model: Averaging Model

What is being released

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

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

Review Directions

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

2.82.7

Product/Event Model: Averaging Model

What is being released

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

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

Review Directions

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

2.82.1

Infrastructure: Fix for the broken JavaDocs link

What is being fixed

This broken JavaDocs link on the Documentation page is fixed.

Review Directions

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

2.82.0

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

What is being released

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

Types to be moved to existing namespaces:

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

Objects to be deleted:

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

Review Directions

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

2.81.0

CDM Distribution: C# Language

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

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

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

2.80.0

CDM Distribution: C# Language

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

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

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

2.79.0

CDM Model: Event & Regulation namespace classification

What is being released

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

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

The namespaces contain components used across the CDM for

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

Review Directions

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

CDM Model: Deprecated types & functions

What is being released

Following objects to be marked deprecated.

Types:

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

Functions:

  • EquityAmountPayer
  • ResolvePrice

User Documentation: Regulatory Reporting Syntax

What is being released

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

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

Review Directions

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

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

2.78.0

Model Optimisation: Extract Party References from Product

What is being released

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

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

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

Review Directions

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

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

AdditionalDisruptionEvents.determiningParty:

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

DividendReturnTerms.extraordinaryDividendsParty:

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

OptionPhysicalSettlement.predeterminedClearingOrganizationParty:

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

ExerciseNotice.exerciseNoticeReceiver:

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

2.77.0

CDM Model: Legal Agreement namespace classification

What is being released

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

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

The namespaces contain components used across the CDM for

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

Review Direction

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

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

What is being released

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

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

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

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

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

Review Directions

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

2.73.0

Model Optimisation: Exercise Notice

What is being released

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

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

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

Review Directions

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

2.72.2

Model Optimisation: Extract Party References from Product

What is being released

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

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

Review Directions

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

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

2.72.0

CDM Model: Product namespace classification

What is being released

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

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

The namespaces contain components used across the CDM for

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

Review Direction

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

Extension of EMIR Regulatory Rules

What is being released

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

Review Direction

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

Change in rosetta path conditional mapping

What is being released

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

Review Directions

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

2.71.10

CDM Model: ProductId Refactoring Supplemental Changes

What is being released

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

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

Review Directions

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

2.71.9

CDM Model: Enhancement to Create_ExecutionPrimitive and Create_Execution

What is being released

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

Review Directions

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

2.71.7

CDM Documentation: Java Distribution Guidelines

What is being released

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

Review Direction

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

2.71.6

Infrastructure: Build and Release Process

What is being released

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

2.71.5

Infrastructure: Add Ingestion Environment for ORE XML model

What is being released

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

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

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

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

2.71.3

2.71.2

Model Optimisation: Extract Account References from Product

What is being released

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

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

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

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

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

Review Directions

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

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

2.71.0

CDM Model: Observable namespace classification

What is being released

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

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

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

Review Directions

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

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

2.66.3

CDM Model: ProductIdentifier Refactoring

What is being released

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

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

Review Directions

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

CDM Model: Model Definitions

What is being released

Added definitions for attribute TradableProduct.counterparties and type Counterparty.

2.65.10

Infrastructure: CDM Portal Change Password bug

What is being released

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

2.65.7

Infrastructure: CDM Portal Change Password bug

What is being released

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

2.65.6

Infrastructure: CDM Portal Change Password bug

What is being released

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

2.65.4

Infrastructure: User Extraction API Fix

What is being released

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

Review directions

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

2.65.2

CDM Model: Legal Document Modelling

What is being released

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

The following documents or specific clauses are now supported:

Variation Margin Agreements

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

Master Agreement Schedule

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

Other related changes:

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

Review directions

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

CDM Model: Synonym Externalisation

What is being released

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

  • FpML_5_10
  • CME_SubmissionIRS_1_0
  • CME_ClearedConfirm_1_17

Review directions

The extracted synonyms can be viewed in Rosetta Core:

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

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

Infrastructure: DAML Upgrade

What is being released

Upgrade DAML version to use version 1.3.0 for DAML compilation.

Review directions

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

Infrastructure: Go Code Generation

What is being released

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

Notable changes and updates introduced:

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

Review directions

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

2.64.0

Model Optimisation: Extract Party References from ContractualProduct

What is being released

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

Review direction

In the Textual Browser, review reporting rules:

  • FixedFloatBuyerSeller
  • FixedFixedBuyerSeller
  • SingleCurrencyBasisSwap
  • CrossCurrencySwapBuyerSeller
  • CreditDefaultSwapBuyerSeller

2.63.5

User Documentation: Legal Agreement Section

What is being released

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

Notable changes and updates introduced:

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

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

Review direction

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

2.62.5

CDM Model: Legal Document Modellinge

What is being released

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

Review Directions

In the Ingestion Panel, try samples in folders:

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

2.60.0

Model Optimisation: Extract Party References from ContractualProduct

What is being released

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

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

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

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

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

Review direction

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

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

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

FpML sample containing CounterpartyEnum data in PayerReceiver:

  • products > rates > EUR-Vanilla-uti

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

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

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

  • events > allocation-single

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

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

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

  • products > rates > bond-option-uti

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

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

2.59.1

Infrastructure: Merge multiple ISDA create ingestion environemnts into one

What is being released

Merge the isda-reate ingestion environments

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

2.58.3

Infrastructure: Add override keyword to Rosetta Grammar

What is being released

Adding a new override keyword

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

2.57.8

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues for legal documents:

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

Review direction

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

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

2.57.7

*Event Model: Direct Principal and Agency Clearing Model *

What is being released

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

Notable changes:

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

Review direction

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

  • func Create_CrearedTrade
  • type ClearingInstruction

Infrastructure: Namespace hierarchy to be sorted

What is being released

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

2.57.2

*Event Model: Direct Principal and Agency Clearing Model *

What is being released

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

Notable changes:

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

Review direction

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

  • func Create_CrearedTrade
  • type ClearingInstruction

Infrastructure: Namespace hierarchy to be sorted

What is being released

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

2.56.6

User Documentation: Overview Section

What is being released

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

Notable changes and updates introduced:

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

Review direction

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

Documentation: Add descriptions to Create functions

What is being released

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

Review Direction

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

  • Create_Execution
  • Create_ExecutionPrimitive
  • Create_ContractFormation
  • Create_ContractFormationPrimitive
  • ClearingInstruction

Event Model: Add Create Workflow Step Functions

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

Review Direction

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

Portal Registration Form Bugfix

What is being released

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

2.56.0

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues for legal documents:

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

Review Direction

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

2.55.5

Infrastructure changes: Ingestion

What is being released

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

2.55.4

User Documentation: Consistency of Examples vs Model

What is being released

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

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

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

Review Direction

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

2.55.3

Product Model: Equity Swap Modelling

What is being released

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

Review Direction

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

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

2.55.0

CDM Model: Legal Document Modelling

What is being released

Resolve complex ISDA Create mapping issues:

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

Review Direction

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

User Documentation: Event Model

What is being released

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

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

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

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

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

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

Review Direction

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

CDM Model: Eligible Collateral Modelling

What is being released

Extension of CDM model to incorporate treatment of collateral

  • Concentration Limits
  • Inclusion/Exclusion Criteria

Review Direction

In the Textual Browser, review types CollateralTreatment and ConcentrationLimitCriteria.

2.54.1

Model Optimisation: Initial fees and additional payments

What is being released

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

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

Review Direction

In the Textual Broswer of the CDM Portal:

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

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

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

2.53.5

Product Model: Equity Swap Modelling

What is being released

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

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

Review Directions

In the Ingestion Panel, review sample:

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

2.53.4

Product Model: FpML Equity Swap Mapping

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

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

2.53.0

CDM Model: Namespace Hierarchy Bug fixes

What is being released

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

2.52.4

Event Model: Function test changes based on working group feedback

What is being released

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

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

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

The reject has been removed from the cancel step.

Demonstration of Create_ContractFormation with a Legal Document:

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

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

Review Direction

In the Instance Viewer section of the CDM Portal:

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

2.52.2

Model Optimisation: Remove Inception Primitive

What is being released

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

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

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

Review Direction

In the CDM Portal Review changes:

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

2.51.3

Documentation: Process Model

What is being released

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

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

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

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

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

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

Review Direction

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

CDM Model: Legal Document Modelling

What is being released

Collateral Documentation Changes:

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

Review Direction

In the Ingestion Panel, try samples in folders:

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

2.51.1

CDM Model: Bug fixes

What is being released

Cleanup of tests and some minor bug fixes.

2.51.0

CDM Model: Synonyms & MetaType cleanup

What is being released

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

2.48.3

Documentation: DSL Documentation Overhaul

What is being released

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

The changes include:

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

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

Review Direction

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

CDM Model: Legal Documents Modelling

What is being released

ISDA Create schemas and samples added for Euroclear CTA documents.

Review Directions

In the Ingestion Panel, try samples in folders:

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

2.48.2

CDM Model: Namespace hierarchy representation

What is being released

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

CDM Portal: Bug fix for Graphical Navigator

What is being released

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

2.48.0

CDM Model: Legal Documents Modelling

What is being released

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

Review Directions

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

2.47.0

CDM Model: Legal Documents Modelling

What is being released

Updates to the Legal Documentation model:

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

Review Directions

In the Ingestion Panel, try samples in folders:

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

Event Model: New Correct Cancel Example

What is being released

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

Review Directions

Open Rosetta Core and navigate to the Visualisation section:

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

2.46.4

Event Model: Allocation / Split Business Events

What is being released

Refactor Allocation and Split business events.

Allocation business event contains two types of primitives:

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

Review Directions

In the Textual Browser, review the functions:

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

In the Ingestion Panel, review the samples:

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

2.46.2

Infrastructure: Annotations

What is being released

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

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

Review Directions

In the Textual Browswer, review the EconomicTerms type.

2.45.2

Function Testing: Initial fee and other party payment examples

What is being released

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

Review Directions

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

  • Swap With Initial Fee
  • Swap With Other Party Payment

2.45.0

Infrastructure: Annotation Syntax

What is being released

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

qualification:

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

creation:

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

Review Directions

In the Textual Browser, review annotations qualification and creation.

2.44.3

CDM Documentation: Update

What is being released

General documentation refresh with updated code snippets and explainations.

Review Directions

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

Infrastructure: Legal Documents Modelling

What is being released

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

Review Directions

In the Ingestion Panel, try samples in folders:

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

2.44.1

Event Model: Add Examples and Tests for New Trade Functions

What is being released

New examples for the Execute and FormContract functions.

  • Execute Business Event

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

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

Review Directions

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

2.44.0

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

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

Review Directions

In the Textual Browser, review reporting rules:

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

2.43.2

CDM Model: Legal Documents Modelling

What is being released

Implementation of model to support Security Agreements.

Ability to ingest below documents from ISDA Create:

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

Review Directions

In the Ingestion Panel, review samples in folders:

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

2.43.0

Infrastructure: Legal Documents Modelling

What is being released

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

Review Directions

In the Ingestion Panel, try samples in folders:

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

2.42.9

Infrastructure: Function Testing

What is being released

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

Review Directions

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

2.42.8

Infrastructure: Function Testing

What is being released

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

Review Directions

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

2.42.7

Infrastructure: Function Testing

What is being released

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

Review Directions

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

2.42.6

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

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

Review Directions

In the Textual Browser, review:

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

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

2.42.5

CDM Model: Eligible Collateral Model

What is being released

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

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

Review Directions

In the Textual Browser, review types IssuerCriteria and ProductCriteria.

2.42.4

Model Optimisation: Quantity Refactor

What is being released

Clean up tasks following the recent model quantity refactor:

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

Review Directions

In the Textual Browser, review type ResolvablePayoutQuantity.

2.42.3

CDM Model: Currency Enum

What is being released

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

  • enum ISOCurrencyCodeEnum
  • enum CurrencyCodeEnum extends ISOCurrencyCodeEnum

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

Review Directions

In the Textual Browser, review ISOCurrencyCodeEnum and CurrencyCodeEnum.

2.42.2

CDM Model: Legal Documents Modelling

What is being released

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

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

Review Directions

In the Textual Browser, review LegalAgreement and related types.

2.42.1

Model Enhancements: Adding description to the CDM Model

What is being released

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

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

Review Directions

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

2.42.0

Model Optimisation: Price Refactor

What is being released

Clean up tasks following the recent model price refactor:

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

Review Directions

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

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

2.41.0

Product/Event Model: Collateral Eligibility

What is being released

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

Review Directions

In the Textual Browser, review the following:

  • Type EligibleCollateralCriteria, IssuerCriteria and ProductCriteria.

Product/Event Model: Collateral Documentation

What is being released

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

2.40.5

Product/Event Model: Stock Split Function

What is being released

Updated the StockSplit func and associated type naming and definitions.

Review Directions

In the Textual Browser, review the following:

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

2.40.4

CDM Model: IM CSA New York Law 2018 Modelling

What is being released

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

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

Review Directions

In the Ingestion Panel, try samples in folder:

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

2.40.3

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

What is being released

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

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

Review Directions

In the Textual Browser, review the following:

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

2.40.2

CDM Model: Equity Stock Split Function

What is being released

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

Review Directions

In the Textual Browser, review the following:

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

2.40.1

Infrastructure: ISDA Create Projection

What is being released

Infrastructure changes related to the projection of ISDA Create documents.

2.40.0

CDM Model: IM CSD English Law 2018 Modelling

What is being released

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

Review Directions

In the Ingestion Panel, try the following sample:

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

2.39.1

Model Optimisation: Externalise the DTCC Synonyms into its own namespace

What is being released

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

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

Review Directions

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

2.38.0

Infrastructure: ISDA Create

What is being released

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

Review Directions

In the Ingestion Panel, try the following sample:

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

2.37.0

Model Optimisation: Price Refactor

What is being released

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

Remove synonyms from model attributes from InterestRatePayout.rateSpecification:

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

Add synonyms to refactored PriceNotation attributes:

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

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

Review Directions

In the Textual Browser, review the following types:

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

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

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

CDM Model: Equity Dividend Cash Settlement Amount Calculation

What is being released

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

Review Directions

In the Textual Browser, review func DividendCashSettlementAmount.

2.36.1

CDM Model: Collateral Eligibility Schedules

What is being released

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

Review Directions

In the Textual Browser, review the following:

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

2.36.0

Namespaces: Initial roll-out (Base Package)

What is being released

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

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

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

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

Review Directions

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

2.35.6

CDM Model: Collateral Eligibility Schedules

What is being released

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

Review Directions

In the Textual Browser, review the following:

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

CDM Model: Inception Function

What is being released

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

Review Directions

In the Textual Browser, review the following:

  • func: Inception

2.35.4

Code Generation: TypeScript

What is being released

Added a new TypeScript CDM Distribution in CDM Portal.

Review Directions

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

2.35.3

Infrastructure: Test Configuration

What is being released

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

Review Directions

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

2.35.0

CDM Model: Price Model Refactor Preparation

What is being released

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

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

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

Review Directions

In the Textual Browser, review type TradableProduct.

2.34.2

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

What is being released

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

Review Directions

In the Textual Browser, review the following functions:

  • PostedCreditSupportAmount_IM
  • CreditSupportAmount_IM
  • DeliveryAmount_IM
  • ReturnAmount_IM

2.34.1

CDM Model: AllocationBreakdown and DividendDateReferenceEnum

What is being released

  • Added new enum options for DividendDateReferenceEnum:

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

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

Review Directions

In the Textual Browser, review the following:

  • AllocationBreakdown
  • DividendDateReferenceEnum

Model Optimisation: Clearing Instructions

What is being released

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

Review Directions

In the Textual Browser, review the following:

  • ClearingInstruction
  • Instruction

Model Optimisation: Primitive Event lineage

What is being released

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

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

  • ContractState
  • ExecutionState
  • Trade

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

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

Review Directions

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

Repo Model: Open Repo Handling

What is being released

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

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

Review Directions

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

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

2.34.0

CDM Model: AllocationBreakdown and DividendDateReferenceEnum

What is being released

  • Added new enum options for DividendDateReferenceEnum:

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

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

Review Directions

In the Textual Browser, review the following:

  • AllocationBreakdown
  • DividendDateReferenceEnum

Model Optimisation: Clearing Instructions

What is being released

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

Review Directions

In the Textual Browser, review the following:

  • ClearingInstruction
  • Instruction

Model Optimisation: Primitive Event lineage

What is being released

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

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

  • ContractState
  • ExecutionState
  • Trade

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

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

Review Directions

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

Repo Model: Open Repo Handling

What is being released

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

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

Review Directions

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

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

2.33.0

Model Optimisation: Exchange Rate and Quantity Data Rule

What is being released

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

Review Directions

In the Textual Browser, review the following:

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

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

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

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

What is being released

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

Review Directions

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

  • See that the path that the path is simpliefied:

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

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

2.32.1

CDM Model: Collateral Eligibility Schedules

What is being released

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

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

The type EligibleCollateral now has 5 attributes:

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

Review Directions

In the Textual Browser, review the following:

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

2.32.0

Infrastructure: Projection

What is being released

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

2.31.1

Model Optimisation: Price Refactor for Equity Swaps

What is being released

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

Remove synonyms from deprecated model attributes:

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

Add synonyms to refactored model attributes:

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

Remove deprecated attribute PriceReturnTerms.initialPrice.

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

Review Directions

In the Textual Browser, review the following:

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

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

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

Event Model: Workflow Step Refactor for Clearing

What is being released

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

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

BusinessEvent now contains eventDate, effectiveDate, intent and eventQualification.

Updated the definitions for BusinessEvent and PrimitiveEvent.

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

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

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

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

Review Directions

In the Textual Browser, review the following:

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

2.22.8

CDM Model: Collateral Eligibility Schedules

What is being released

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

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

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

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

Review Directions

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

2.22.5

CDM Model: Collateral Eligibility Schedules

What is being released

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

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

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

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

Review Directions

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

2.22.4

CDM Code Generation: Scala

What is being released

New code generator that projects the CDM into Scala.

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

Review Directions

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

2.22.3

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

What is being released

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

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

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

Review Directions

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

2.22.0

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

What is being released

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

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

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

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

Review Directions

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

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

Previous syntax:

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

Updated syntax:

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

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

Previous syntax:

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

Updated syntax:

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

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

Previous syntax:

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

Updated syntax:

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

2.21.7

Model Optimisation: Quantity Rector - Remove Deprecated Types and Attributes

What is being released

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

Review Directions

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

2.21.6

Model Optimisation: Remove Deprecated Type ContractualQuantity

What is being released

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

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

Review Directions

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

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

What is being released

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

Remove synonyms from deprecated model attributes:

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

Add synonyms to refactored model attributes:

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

Review Directions

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

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

2.21.5

Root Type annotation

What is being released

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

Review Directions

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

2.21.3

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

What is being released

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

Remove synonyms from deprecated model attributes:

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

Add synonyms to refactored model attributes:

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

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

Review Directions

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

Resetting Xccy Swaps:

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

Repo:

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

BRL CDI Swaps:

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

2.21.1

Infrastructure changes: Ingestion Error Handler

What is being released

Infrastructure changes to add more error details for ingestion.

2.21.0

Model Optimisation: Quantity Refactor for FRAs

What is being released

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

Migrate synonyms from:

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

To:

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

Review Directions

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

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

2.20.9

Infrastructure / Regression Test Improvements

What is being released

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

Instance Viewer Changes

What is being released

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

2.20.8

CDM Instance Viewer and Projection Tiles

What is being released

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

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

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

Review Directions

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

2.20.7

Clear and Terminate Functions

What is being released

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

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

Review Directions

In the Textual Browser, see:

  • Terminate function def
  • Clear function def

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

2.20.4

ISDA Create Ingestion Mappings

What is being released

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

Review Directions

In the Ingestion Panel, see:

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

2.20.3

ISDA Create Ingestion Mappings

What is being released

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

Review Directions

In the Ingestion Panel, see:

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

2.20.2

ISDA Create Document Structure

What is being released

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

Review Directions

In the Ingestion Panel, see:

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

2.20.1

ISDA Create Document Structure

What is being released

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

Review Directions

In the Ingestion Panel, see:

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

2.19.2

ISDA Create Projection

What is being released

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

Review Directions

In the Projection Panel in Rosetta Core, see:

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

2.19.1

ISDA Create Ingestion

What is being released

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

Review Directions

In the Ingestion Panel, see:

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

ISDA Create Projection

What is being released

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

Review Directions

In the Projection Panel, see:

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

2.18.0

Quantity and Price Refactoring - Initial Use Case: FX

What is being released

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

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

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

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

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

Review Directions

In the textual Browser in the CDM Portal, see:

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

In the Ingestion Panel, see:

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

Further synonym syntax consistency - hint, meta and mapper

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

Review Directions

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

2.17.1

What is being released

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

2.16.0

Addition of WorkflowEventState and new ClearedTrade event qualification

What is being released

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

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

Review direction

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

2.15.0

CDM to ISDA Create Projection

What is being released

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

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

Review direction

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

2.14.1

Introduce the concept of Workflow Event

What is being released

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

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

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

Review direction

Visit the ISDA CDM Portal and navigatge to WorkflowEvent`.

2.13.3

CDM Portal - Introductory Video

What is being released

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

Additionally, the DerivHack 2019 Tile has been removed.

Review direction

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

2.13.2

Syntax Upgrade - Consistency across Synonym syntax

What is being released

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

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

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

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

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

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

Review direction

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

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

2.12.1

What is being released

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

Review direction

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

2.11.1

What is being released

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

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

Review direction

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

2.10.0

CDM to FpML Projection

What is being released

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

Review direction

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

2.9.1

DerivHack Feedback - Support Assignment of References

What is being released

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

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

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

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

Review direction

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

2.8.0

Rosetta Syntax Upgrade - Data Types

What is being released

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

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

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

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

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

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

Review direction

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

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

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

2.7.3

Event Qualification for Execution and ContractFormation Event Types

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

What is being released

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

Review direction

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

2.6.2

Quantity Refactoring: Credit Products Migrated

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

What is being released

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

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

Review direction

In the Ingestion Panel of the CDM Portal:

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

2.6.1

Quantity Refactoring: Credit Products Migrated

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

What is being released

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

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

Review direction

In the Ingestion Panel of the CDM Portal:

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

2.5.19

What is being released

  • Infrastructure and documentation changes

2.5.17

What is being released

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

2.5.16

What is being released

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

2.5.15

What is being released

  • Update DerivHack 2019 Tile to point to CDM version 2.5.11

2.5.14

What is being released

  • Add additional resources to CDM Portal

2.5.11

What is being released

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

2.5.10

What is being released

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

2.5.8

What is being released

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

2.5.4

What is being released

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

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

Review Directions

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

2.5.3

Re-releasing 2.5.2 with updated release notes.

Rosetta Syntax Upgrade

What is being released

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

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

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

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

Review Directions

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

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

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

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

What is being released

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

Review Directions

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

2.5.2

Rosetta Syntax Upgrade

What is being released

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

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

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

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

Review Directions

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

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

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

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

What is being released

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

Review Directions

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

2.4.14

What is being released

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

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

Review direction

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

2.4.11

What is being released

Reset Model Improvements - Phase 2

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

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

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

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

Contract Creation Model Improvements

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

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

Review direction

Equity Reset Model

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

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

2.4.9

What is being released

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

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

Review direction

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

2.4.7

What is being released

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

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

Review direction

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

2.4.4

What is being released

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

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

Review direction

In the CDM Textual Browser:

  • Review classes Confirmationand Affirmation.

2.4.2

What is being released

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

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

Review direction

In the CDM Textual Browser:

  • Review class Lineage and function Settle.

2.4.1

Quantity Refactoring: several IR product types migrated

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

What is being released

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

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

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

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

Review direction

In the Ingestion Panel of the CDM Portal:

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

Tutorials Page

What is being released

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

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

Review direction

In the CDM Portal:

  • Look for the new Tutorial tile

2.3.0

What is being released

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

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

Generate function specs for DAML

Review direction

In the CDM Textual Browser:

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

2.2.9

What is being released

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

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

Review direction

In the CDM Textual Browser:

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

2.2.6

What is being released

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

2.2.5

What is being released

Rosetta Syntax Upgrade

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

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

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

Other Changes

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

Review directions

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

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

2.2.1

Initial quantity refactoring: Equity Swap

What is being released

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

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

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

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

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

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

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

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

Review direction

In the CDM Textual Browser:

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

In the CDM Ingestion panel:

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

2.1.0

Rosetta Syntax Upgrade

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

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

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

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

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

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

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

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

2.0.136

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

2.0.128

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

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

2.0.127

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

Review directions

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

2.0.126

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

2.0.125

New aggregated documentation site

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

2.0.124

Initial instalment of the reset primitive refactoring

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

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

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

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

Review directions

Look a ResetPrimitive, ContractState and the ResolveContractState function spec.

2.0.123

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

Additional attributes added to Execution:

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

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

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

2.0.119

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

2.0.116

Further Documentation Update

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

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

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

Review directions

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

2.0.115

Updated Documentation

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

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

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

Review directions

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

2.0.113

Functions UI

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

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

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

This UI replaces the Lineage UI.

Review directions

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

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

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

Spec Implementation

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

Review Directions

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

2.0.111

Rosetta Grammar and Code Generator support for Function Specifications.

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

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

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

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

Review directions

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

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

2.0.106

Rosetta DSL and code generators are now public

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

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

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

2.0.105

Calculation Bug-Fix

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

Review directions

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

2.0.104

1. Underlier Refactoring

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

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

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

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

Review directions

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

2. DAML Download Disabled

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