finos / common-domain-model

The CDM is a model for financial products, trades in those products, and the lifecycle events of those trades. It is an open source standard that aligns data, systems and processes and is available as code in multiple languages for easy implementation across technologies.
Other
126 stars 56 forks source link

Evergreen Roll event #2334

Open chrisisla opened 1 year ago

chrisisla commented 1 year ago

Background An evergreen contract is a type of agreement that automatically renews itself indefinitely or until either party decides to terminate it. There are two main events associated to evergreen contracts:

The CDM supports evergreen contracts but currently does not support the events described above. In the proposal below I outline how we could process and qualify the Rolling event, and also raise some questions for feedback from the community. I will raise another Issue with details of the Termination event.

Proposal To add new event and qualification functions to the model to support the rolling of an evergreen.

Rolling an evergreen The existing TermsChange processing can manage this event. However, it is suggested that a new event function is created named Create_EvergreenRollInstruction.

There are two main reasons for adding a new function instead of using a TermsChange event:

  1. It is entirely possible that the terms of the evergreen may need to be updated without performing a roll. The vanilla TermsChange processing can be used for this purpose.
  2. The evergreen termination event cannot be supported by a vanilla TermsChange event, requiring a bespoke function be created for that event. For consistency it will thus be preferable to have a new function for this event too.

The new function will effectively just build a TermsChangeInstruction and call the TermsChange event processing.

To roll an evergreen the following details would be required:

[!IMPORTANT] The evergreen provisions must be present on the before trade as we need to qualify that this is an evergreen contract before we attempt to roll it. However, these details could also be included in the economicTerms of the instruction too.

Question: Should we use the evergreen provisions from the before trade, or, if the provisions are included in the instruction, should we use them instead? Similarly, if we use the details in the instruction, should these now become the evergreen provisions in the after trade?

My suggestion would be that we always use the provisions on the before trade. If the user would like to update the provisions before performing a roll then they should update them using a TermsChange event prior to executing the roll.

In the result of the Create_EvergreenRollInstruction we should expect:

Qualifying the roll of an evergreen To qualify that we have rolled an evergreen we need to confirm:

chrisisla commented 1 year ago

@finos/cdm-maintainers @tomhealey-icma @iansloyan Any feedback you have on this proposal will be gratefully received.