Skip to content

Releases: finos/common-domain-model

5.11.1

14 May 09:11
5a932a5
Compare
Choose a tag to compare

Product Model - FloatingRateIndexEnum value update

Background

In the previous release 5.11.0 the list of enum values of FloatingRateIndexEnum was updated to match the FpML coding scheme 2.19 where the enum value GBP_SONIA_Refinitiv_Term was removed. However, the removed value is still needed for backwards compatibility and existing dependencies. While an update to the coding scheme import is developed to add but not remove values as they change, the removed value needs to be manually reinstated and the coding scheme reference omitted.

What is being released?

Two changes are made to address this issue:

  • The enum value GBP_SONIA_Refinitiv_Term of the enum FloatingRateIndexEnum is being reinstated.

  • The reference to the FpML coding scheme in FloatingRateIndexEnum is being temporarily omitted. It will be reinstated once changes are implemented to make the coding scheme import as additive-only in the main branch of the CDM.

Review Directions

In Rosetta, select the Textual Browser and inspect the changes identified above.

Changes can be reviewed in PR #2922

Infrastructure - RoundToPrecision Function

Background

This release contains a bug fix for RoundToPrecision function, as described in issue #2915.

What is being released?

This release updates the existing function cdm.base.math.RoundToPrecision to round to the correct number of decimal places.

func RoundToPrecision: <"Round a rate to the supplied precision, using the supplied rounding direction">
    inputs:
        value number (1..1) <"The original (unrounded) number.">
        precision int (1..1) <"The number of decimal digits of precision.">
        roundingMode RoundingDirectionEnum (1..1) <"The method of rounding (up/down/nearest).">
    output:
        roundedValue number (1..1) <"The value to the desired precision">

The following examples show the function behaviour:

  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> NEAREST) = 1023.12346
  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> UP) = 1023.12346
  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> DOWN) = 1023.12345
  • RoundToPrecision(1023.123456789, 0, RoundingDirectionEnum -> NEAREST) = 1023
  • RoundToPrecision(1023.1, 7, RoundingDirectionEnum -> NEAREST) = 1023.1000000

Review Directions

In Rosetta, select the Textual Browser and inspect the changes identified above.

In GitHub, review Java unit tests cdm.base.math.functions.RoundToPrecisionImplTest and cdm.product.asset.floatingrate.functions.ApplyFloatingRateProcessingTest.

Changes can be reviewed in PR #2916

6.0.0-dev.41

10 May 16:27
c4514f3
Compare
Choose a tag to compare

Product Model - Modification of AmericanExercise Condition in ExerciseTerms

Background

The conditions under ExerciseTerms in the refactored OptionPayout are not sufficiently restrictive for American options. More specifically, the AmericanExercise condition should not only control that the expirationDate is present (which it already does through the CommencementAndExpirationDate condition), but that it is also present only once (not currently implemented in the model). This release aims at modifying the AmericanExercise condition to correct this.

What is being released?

  • The AmericanExercise condition under the ExerciseTerms type has been modified to constrain the expirationDate field to only one occurrence.

Backward Incompatible Changes

It should be noted that this proposal contains a backwards incompatible change, given that a condition has been made stricter, but should not impact any of the actual implementations.

Review Directions

In Rosetta, select the Textual Browser and inspect the change identified above.

Changes can be reviewed in PR #2914

6.0.0-dev.40

07 May 15:27
46e48f2
Compare
Choose a tag to compare

CDM Model - RoundToPrecision Function

Background

This release contains a bug fix for RoundToPrecision function, as described in issue #2915.

What is being released?

This release updates the existing function cdm.base.math.RoundToPrecision to round to the correct number of decimal places.

func RoundToPrecision: <"Round a rate to the supplied precision, using the supplied rounding direction">
    inputs:
        value number (1..1) <"The original (unrounded) number.">
        precision int (1..1) <"The number of decimal digits of precision.">
        roundingMode RoundingDirectionEnum (1..1) <"The method of rounding (up/down/nearest).">
    output:
        roundedValue number (1..1) <"The value to the desired precision">

The following examples show the function behaviour:

  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> NEAREST) = 1023.12346
  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> UP) = 1023.12346
  • RoundToPrecision(1023.123456789, 5, RoundingDirectionEnum -> DOWN) = 1023.12345
  • RoundToPrecision(1023.123456789, 0, RoundingDirectionEnum -> NEAREST) = 1023
  • RoundToPrecision(1023.1, 7, RoundingDirectionEnum -> NEAREST) = 1023.1000000

Review Directions

In Rosetta, select the Textual Browser and inspect the changes identified above.

In GitHub, review Java unit tests cdm.base.math.functions.RoundToPrecisionImplTest and cdm.product.asset.floatingrate.functions.ApplyFloatingRateProcessingTest.

Changes can be reviewed in PR #2917

5.11.0

03 May 15:58
f376632
Compare
Choose a tag to compare

Infrastructure - Dependency Update

What is being released?

This release updates the rosetta-bundle dependency.

Version updates include:

  • rosetta-bundle 10.17.1:
    • FpML coding scheme updated to version 2.19. FloatingRateIndexEnum updated to match coding scheme.
    • Bug fix for zonedDateTime serialisation issue #2895.

Review directions

The changes can be reviewed in PR: #2892

4.0.0-dev.39.1

03 May 13:16
e884de4
Compare
Choose a tag to compare

Floating Rate Index Reference Data model

Background

Special release back porting two 2021 ISDA Interest Rate Derivatives Definitions.

What is being released?

Updated FloatingRateIndexEnum type with:

  • MXN_TIIE_ON_OIS_Compound
  • ZAR_ZARONIA_OIS_Compound

Review Directions

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

The changes can be reviewed in PR: #2896

6.0.0-dev.38

02 May 15:33
b1ad451
Compare
Choose a tag to compare

Infrastructure - Dependency Update

What is being released?

This release updates the rosetta-bundle dependency.

Version updates include:

  • rosetta-bundle 10.17.1:
    • FpML coding scheme updated to version 2.19. FloatingRateIndexEnum updated to match coding scheme.
    • Bug fix for zonedDateTime serialisation issue #2895.

Review directions

The changes can be reviewed in PR: #2893

6.0.0-dev.37

19 Apr 17:28
e75a9f7
Compare
Choose a tag to compare

Python Generator v2

What is being released?
This release uses the new version of the Python generator (v2) which includes the following changes:

  • Migration to Pydantic 2.x
  • More comprehensive support for Rosetta's operators
  • Resolves the defect exposed by PR 2766
  • Includes an update to the Python Rosetta runtime library used to encapsulate the Pydantic support (now version 2.0.0)

Review directions

The changes can be reviewed in PR: #2869

Infrastructure - Dependency Update

What is being released?

This release updates the rosetta-bundle and rosetta-dsl dependencies.

Version updates include:

  • rosetta-bundle 10.16.0: FpML Coding schema updated.
  • rosetta-dsl 9.8.0: this release features three new operations - to-date, to-date-time and to-zoned-date-time - to convert a string into a date, dateTime or zonedDateTime respectively. It also adds support to convert these three types into a string using the to-string operation. For further details see DSL release notes: https://github.com/finos/rune-dsl/releases/tag/9.8.0.

There are no changes to the model or test expectations.

Review directions

The changes can be reviewed in PR: #2877

5.10.0

19 Apr 15:37
aedac4d
Compare
Choose a tag to compare

Product Model - Qualification of Foreign Exchange NDS

Background

Currently, Foreign Exchange Non-Deliverable Swaps are not supported in the Common Domain Model. This release adds qualification support for this kind of product.

What is being released?

This release fixes the following functions to ensure an else clause is specified in all nested if statements.

  • Added the function Qualify_ForeignExchange_NDS that qualifies as true if a product has two forward payouts with an FX underlier and the cashSettlementTerms populated.

Review directions

In Rosetta, select the Textual Browser and inspect the changes identified above.

The changes can be reviewed in PR: #2867

Product Model - Qualification of Total Return Swaps (TRS) with a Debt Underlier

Background

Following ESMA Guidelines, Total Return Swaps with a debt instrument as their underlier (bond, loan, etc) must report field 2.11 - Asset Class as 'CRDT', while TRS on an equity index or a basket of equities should report Asset Class as 'EQUI'. Currently in the CDM, a Total Return Swap with a debt underlier is not classified correctly, and thus is being reported incorrectly as well. This release aims at fixing the Qualify_AssetClass_Credit function such that Total Return Swaps on a bond or a loan report AssetClass as 'CRDT'.

What is being released?

  • The function Qualify_AssetClass_Credit is increasing its coverage to include Total Return Swaps with an underlier of a loan or a securityType of debt.

Functions

  • Updated Qualify_AssetClass_Credit function to support Total Return Swap products, defined as having an interestRatePayout and a performancePayout. The function checks the performancePayout that underlier -> loan is present or that underlier -> security -> securityType = Debt.

Review directions

In Rosetta, select the Textual Browser and inspect the changes identified above.

The changes can be reviewed in PR: #2856

Python Generator v2

What is being released?

This release uses the new version of the Python generator (v2) which includes the following changes:

  • Migration to Pydantic 2.x
  • More comprehensive support for Rosetta's operators
  • Resolves the defect exposed by PR 2766
  • Includes an update to the Python Rosetta runtime library used to encapsulate the Pydantic support (now version 2.0.0)

Review directions

The changes can be reviewed in PR: #2856

Infrastructure - Dependency Update

What is being released?

This release updates the rosetta-bundle and rosetta-dsl dependencies.

Version updates include:

  • rosetta-bundle 10.15.7: Translate bug fix to handle enum name clashes.
  • rosetta-bundle 10.15.8: Upgrade of Python Code Generator.
  • rosetta-bundle 10.16.0: FpML Coding schema updated.
  • rosetta-dsl 9.8.0: this release features three new operations - to-date, to-date-time and to-zoned-date-time - to convert a string into a date, dateTime or zonedDateTime respectively. It also adds support to convert these three types into a string using the to-string operation. For further details see DSL release notes: https://github.com/finos/rune-dsl/releases/tag/9.8.0.

There are no changes to the model or test expectations.

Review directions

The changes can be reviewed in PR: #2876

6.0.0-dev.36

18 Apr 15:04
0fe5ca8
Compare
Choose a tag to compare

Product Model - Qualification of Total Return Swaps (TRS) with a Debt Underlier

Background

Following ESMA Guidelines, Total Return Swaps with a debt instrument as their underlier (bond, loan, etc) must report field 2.11 - Asset Class as 'CRDT', while TRS on an equity index or a basket of equities should report Asset Class as 'EQUI'. Currently in the CDM, a Total Return Swap with a debt underlier is not classified correctly, and thus is being reported incorrectly as well. This release aims at fixing the Qualify_AssetClass_Credit function such that Total Return Swaps on a bond or a loan report AssetClass as 'CRDT'.

What is being released?

  • The function Qualify_AssetClass_Credit is increasing its coverage to include Total Return Swaps with an underlier of a loan or a securityType of debt.

Functions

  • Updated Qualify_AssetClass_Credit function to support Total Return Swap products, defined as having an interestRatePayout and a performancePayout. The function checks the performancePayout that underlier -> loan is present or that underlier -> security -> securityType = Debt.

Review directions

In Rosetta, select the Textual View and inspect the change identified above

The changes can be reviewed in PR: #2855

Product Model - Qualification of Foreign Exchange NDS

Background

Currently, Foreign Exchange Non-Deliverable Swaps are not supported in the Common Domain Model. This release adds qualification support for this kind of product.

What is being released?

  • Added the function Qualify_ForeignExchange_NDS that qualifies as true if a product has two forward payouts with an FX underlier and the cashSettlementTerms populated.
    Review directions

In the Rosetta platform, select the Textual View and inspect each of the changes identified above.

PR: #2866

Addition of new enumeration to AvailableInventory

Background

The AvailableInventory type supports two major uses cases:

  1. Where a lender wants to distribute the details of the securities that they have available to lend, and
  2. Where a borrower wants to locate specific securities that they want to borrow.

For the second use case, the SecurityLocate type was created, which extends AvailableInventory but has no additional attributes within it.

When using these two types, there is currently no way to differentiate between when the user is intending to implement use case 1 (i.e. use the AvailableInventory type) or use case 2 (i.e. use the SecurityLocate type).

As an example, the following valid JSON could represent a lender saying they have 10000 shares available of security GB00000000012, or a borrower requesting 10000 shares of the security.

{
  "availableInventoryRecord": [
    {
      "identifier": {
        "identifier": "00001"
      },
      "security": {
        "securityType": "Equity",
        "productIdentifier": {
          "identifier": "GB00000000012",
          "source": "ISIN"
        }
      },
      "availableQuantity": {
        "value": 10000
      }
    }
  ]
}

What is being released?

A new AvailableInventoryTypeEnum enumeration has been added with two options:

  • AvailableToLend - for where a party wants to expose the securities that they have available (i.e. use case 1)
  • RequestToBorrow - for where a party wants to request specific securities from another party (i.e. use case 2)

The new enumeration has been added to the AvailableInventory type and named availableInventoryType. It has been set with (1..1) cardinality, making it mandatory.

The availableQuantity attribute within AvailableInventoryRecord has also been renamed to just quantity to make it more generic and thus applicable to more use cases.

Review directions

The changes can be reviewed in PR: #2810

Compatibility

This change introduces a new mandatory enumeration to an existing type. By definition this means that this is a breaking change, as any pre-existing implementation of the AvailableInventory or SecurityLocate type will no longer work.

6.0.0-dev.35

17 Apr 15:20
0535547
Compare
Choose a tag to compare

Infrastructure - Dependency Update

What is being released?

This release updates the rosetta-bundle dependency.

Version updates include:

  • rosetta-bundle 10.15.7: Translate bug fix to handle enum name clashes.

There are no changes to the model or test expectations.

Review directions

The changes can be reviewed in PR: #2870