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.
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:
Rolling – this is where the contract is automatically renewed for another period
Termination – the contract is no longer renewed and will be closed when it reaches its termination date
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:
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.
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:
In the instruction:
Evergreen provisions
extensionFrequency – see Question below
noticePeriod – see Question
In the before trade:
Evergreen provisions
extensionFrequency – see Question
noticePeriod – see Question
An existing terminationDate
None of the other evergreen provisions are required as they all relate to the termination of an evergreen
[!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:
BusinessEvent -> after -> economicTerms -> terminationDate should be moved on by the period set in the extensionFrequency
No other details should be updated by the function i.e. all other data should be the same in both the before and after trades
Qualifying the roll of an evergreen
To qualify that we have rolled an evergreen we need to confirm:
BusinessEvent -> instruction -> before has an economicTerms -> terminationProvision -> evergreenProvision item present – this confirms that the trade is an evergreen
BusinessEvent -> after has an economicTerms -> terminationProvision -> evergreenProvision item present – this confirms that the trade is still an evergreen after the event has been executed
BusinessEvent -> after -> economicTerms -> terminationDate is in advance of the terminationDate of the before trade – this confirms this is a roll event
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 namedCreate_EvergreenRollInstruction
.There are two main reasons for adding a new function instead of using a
TermsChange
event:TermsChange
processing can be used for this purpose.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 theTermsChange
event processing.To roll an evergreen the following details would be required:
instruction
:extensionFrequency
– see Question belownoticePeriod
– see Questionbefore
trade:extensionFrequency
– see QuestionnoticePeriod
– see QuestionterminationDate
In the result of the
Create_EvergreenRollInstruction
we should expect:BusinessEvent -> after -> economicTerms -> terminationDate
should be moved on by the period set in theextensionFrequency
before
andafter
tradesQualifying the roll of an evergreen To qualify that we have rolled an evergreen we need to confirm:
BusinessEvent -> instruction -> before
has aneconomicTerms -> terminationProvision -> evergreenProvision
item present – this confirms that the trade is an evergreenBusinessEvent -> after
has aneconomicTerms -> terminationProvision -> evergreenProvision
item present – this confirms that the trade is still an evergreen after the event has been executedBusinessEvent -> after -> economicTerms -> terminationDate
is in advance of theterminationDate
of thebefore
trade – this confirms this is a roll event