Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed refactoring of Asset, Product and Observable in the CDM to address model limitations #2805

Closed
LionelSG-REGnosys opened this issue Mar 21, 2024 · 6 comments · Fixed by #3022, #3044, #3127 or #3178

Comments

@LionelSG-REGnosys
Copy link
Contributor

Background

Over the last two years, the capabilities of the Common Domain Model have been significantly expanded to include many more financial products and business events. While most of this has been successful, there are a few issues (at least 15 evidenced here in GitHub) with the implementation. Furthermore, in certain cases, the model is not optimal or is breaking the design principles.

This issue proposes some re-factoring of the key Product, Observable and Asset data types to improve the model, enhance the normalisation and composition of financial products, and address as many of the outstanding issues as possible.

A new Task Force, endorsed by the Steering WG, is being formed to accelerate the design and implementation of model refactoring with a target of releasing updates in the next major release, CDM 6.0, at the start of the third quarter.

What - Current Challenges

Objectives 

  • Product Qualification: address inability to identify some financial instruments using the product qualification rules because there are trade or instrument-specific terms and conditions which are not modelled in "Economic Terms".
    • Contract Details: desire to associate with a Product
  • Index: rationalise the current multiple ways to model an Index to improve consistency, maintain  the composable design objective, and enable re-use and the ability to extend the model.
  • Observable: address inconsistent use and barriers to extension and re-use for more complex financial instruments.
    • Basket: need to rationalise and enhance capabilities.
    • Foreign exchange: improve consistency with other similar products are treated
  • Price Quantity: Enable better targeting of quantity change events.

How - Model Refactoring

  • Refactor of the existing Product structure.
  • Creation of a new Asset data type.
  • Improvements to Observable, Basket and Index.
  • Model refactoring in product qualification related to the above.

Implementation and Governance

The Steering Working Group and Contribution Review Working Group have approved the formation of a task force - the Asset Refactor Task Force - to tackle this issue. See the ARTForce CRWG 18Mar24.pptx. This deck also includes details on the issues and the proposed refactoring.

Asset Refactor Task Force:

  • Invite participation from maintainers, industry SMEs and all trade associations.
  • Meet regularly (propose weekly; to be agreed with participants).
  • Follow FINOS practices (meetings, documentation).
  • Chaired by Lionel Smith-Gordon @Oblongs.

Implementation Plan:

  • Plan Phase – target end of March
    • Prepare a formal proposal
    • Initiate meeting cadence.
  • Build Phase
    • Deliver phased PRs into Dev – April through end of May.
    • Test & review cycle – June.
    • Ready for Release in CDM 6.0 – end of June.
@LionelSG-REGnosys
Copy link
Contributor Author

Detailed Proposal with Examples

Work in progress - to be discussed, extended, improved and finalised by the ARTForce.

Asset-Product-Observable Examples v1.pptx

@LionelSG-REGnosys
Copy link
Contributor Author

ARTForce Participants

Further engagement welcomed!

@iansloyan
Copy link
Contributor

iansloyan commented Apr 16, 2024

Hey @Oblongs - apologies for coming to this party late. But I have reviewed the initial documentation and work. It is great to see this being addressed.

If easier to have a quick call - send me an email or github message to organise - apologies if everything has been discussed in the working group calls.

Quick one on the point on Product Qualification - What does this mean ? "Contract Details: desire to associate with a Product"

At the high level design, I have some initial questions:

What is a "transferable" or "nontransferable" product? I do not recognise this distinction and I don't think it is correct to define something in this way within product. why is an interest rate swap contract not transferable but a privately issued security transferable - this is not a useful distinction even if it can be made categorically?

Why is observable defined in contrast to product? products may have public "observations" - I am not sure this is correct either. I guess what is intended is that the observable is an abstraction of a trade in a product's price - often many aggregated together into a index or public average price that can be observed. I always thought that Observable and Product should be from the same base type to reflect this.

I have other questions about things like the DigitalAsset type being restricted from covering tokenisation, why assetpool and basket should persist separately, and other detailed stuff but probably best to understand the high level vision for the structure first.

@LionelSG-REGnosys
Copy link
Contributor Author

@iansloyan: I will set up some time with you.

Contract and Product: this is in relation to some specific requests from some participants, eg: #2216 and #2365.

Transferable/Nontransferable and Product intersection with Observable will be discussions for upcoming sessions of the Asset Refactoring Task Force. AssetPool (currently) has some very specific modelling, different from Basket, although this may be an opportunity for rationalisation.

@lolabeis
Copy link
Contributor

Reopening as only partially addressed (Phase 1 of 3)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment