-
Notifications
You must be signed in to change notification settings - Fork 95
Georgina Tarres CDM Event Model - Qualification for Termination and Partial Termination #4042
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
base: master
Are you sure you want to change the base?
Georgina Tarres CDM Event Model - Qualification for Termination and Partial Termination #4042
Conversation
CDM Event Model - Qualification for Termination and Partial TerminationBackground The current qualification logic for Termination and Partial Termination events imposes conditions on all This release updates the logic for qualifying partial terminations and full terminations by applying constraints only to relevant quantities. What is being released? This release updates the following functions: Partial Termination qualification
Termination qualification
Termination construction
Additional updates
Review Directions Changes can be reviewed in PR: #4042 Note This comment was generated via Rosetta. |
✅ Deploy Preview for finos-cdm ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…sses/ir-option-debt-option-ex01-term-cdm.xml Removing file uploaded by mistake.
…10-processes.json Removing file uploaded by mistake.
…10-processes.json Removing file uploaded by mistake.
|
@JayasriR can you please investigate why the build is failing and create a separate release PR? |
chrisisla
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've still got a couple of changes to review so will add some further comments when I am able to pick this up again (which should be this week) 👍
Main thing I need to think about is whether there is anything that might prevent the QuantityDecreased functions from taking an instruction as input rather than a tradeState.
| func QuantityDecreasedToZero: | ||
| inputs: | ||
| before TradeState (0..*) | ||
| instruction Instruction (0..*) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same question of cardinality as QuantityDecreased function. Interesting that originally tradeState was (0..*) here but (1..1) for QuantityDecreased.
| set quantityChange -> state -> positionState: | ||
| if newTradeLots -> priceQuantity -> quantity -> value all = 0 | ||
| then PositionStatusEnum -> Closed | ||
| set quantityChange -> state -> positionState: <"Set positionState to Closed if all quantities with the instruction’s unit have decreased to zero."> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not convinced this is correct. For a stock loan against cash you would have 2 quantities, one holding the securities (unit = financialUnit -> Share) and one holding the cash (unit = currency). Both of these quantities would need to be set to zero in order to set the positionState to "Closed".
If the QuantityChange instruction only decreases one of these quantities to zero then this condition I think would still set the trade to Closed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree. If we can have quantities with mixed types of units related to the actual quantities exchanged, then we'll need to rethink this logic.
This has been modelled from a Debt Option perspective, where we expect the trade to be closed even if the option entitlement quantity, which has a unit type of funancialUnit, is not reduced to zero, as this quantity is just a feature of the contract.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah okay, what we may need to do then is check the product to determine what constitutes a Termination, or have separate functions to qualify termination for different product types. Either way it looks like it is not as straightforward as we'd hoped 🙁
|
I have no further review comments. I think that using |
|
What is being released? Fixed input cardinality and optimized unitType logic. Note This comment was generated via Rosetta. |
Added a new commit 9ae7102 adjusting the We'll think about your last comment about the Thanks a lot for the review @chrisisla , |
No description provided.