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

Marc Gratacos Updated Qualifying functions for Known Amount ZC #2560

Conversation

regnosys-prod-user
Copy link
Collaborator

No description provided.

Copy link

netlify bot commented Nov 30, 2023

Deploy Preview for finos-cdm ready!

Name Link
🔨 Latest commit 7182a16
🔍 Latest deploy log https://app.netlify.com/sites/finos-cdm/deploys/6569dcbe0bf0fe00075d4e99
😎 Deploy Preview https://deploy-preview-2560--finos-cdm.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@mgratacos
Copy link
Contributor

This PR replaces Eric's PR 2540 #2540

@mgratacos
Copy link
Contributor

mgratacos commented Nov 30, 2023

Please add the following labels to this PR:
Category: Modelling
Complexity: Minor Change
Criticality: High
Target: Production

@mgratacos
Copy link
Contributor

mgratacos commented Nov 30, 2023

Background

The qualification function for a zero-coupon swap is too restrictive in CDM, since it requires that all the payout legs should feature one unique payment at Term. Normally a zero coupon only points out that at least one leg has a unique payment made at term.

This release fixes this, along with some inaccurate provisions of qualifying functions regarding zero-coupon swaps. In addition, a new Qualify_Transaction_ZeroCoupon_KnownAmount function was added to facilitate the classification of Zero Coupon swaps with a Known Amount.

This release also removes the use of conditional synonym mappings from FpML to CDM of the PrincipalPayments element for Zero-Coupon Swaps with Known Amount cases. The Qualify_SubProduct_FixedFloat qualification function has also been updated to not require the use of this PrincipalPayments element.

What is being released?

  • Minor changes to existing Zero-Coupon Swap qualification functions
  • Addition of a new Zero-Coupon Swap Known Amount qualification function
  • Removed the conditional synonym mappings from FpML to CDM for the PrincipalPayments element in scenarios with Zero-Coupon Swaps with Known Amount.

Qualification

  • Updated Qualify_Transaction_ZeroCoupon function to accurately qualify Zero-Coupon swaps.
  • Updated Qualify_SubProduct_FixedFloat function to include Zero-Coupon swaps with Known Amount.
  • Updated Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon function to include Zero-Coupon swaps with Known Amount.
  • Updated Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon function to include Zero-Coupon swaps with Known Amount.
  • Created new Qualify_Transaction_ZeroCoupon_KnownAmount function.
  • Updated the annotations of Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon, Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon and Qualify_InterestRate_InflationSwap_Basis_ZeroCoupon functions to accurately describe the qualified products.

Translate

  • Deprecated use of synonym mapping from FpML to CDM for the PrincipalPayments element for Zero-Coupon Swaps with Known Amount cases.

Review directions

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

Inspect Pull Request: #2560

* Fixed CVE scan

* Added JAVA_HOME env

* Fixed versioning

* Fixed versioning

* Fixed versioning
* Corrected action workflows

* Test

* Test

* Fixed

* Cleaned
@@ -1084,7 +1095,7 @@ func Qualify_InterestRate_IRSwap_Basis: <"Qualifies a product as a Basis (Float-
and Qualify_SubProduct_Basis(economicTerms) = True
and Qualify_Transaction_OIS(economicTerms) = False

func Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon: <"Qualifies a product as a Fixed-Float Zero Coupon Interest Rate Swap based on the economic terms and the following criteria: 1) An interest rate product with one fixed and one floating leg and more than one payment, 2) without inflation features or cross-currency features, and 3) where the floating leg is not based on an OIS index.">
func Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon: <"Qualifies a product as a Fixed-Float Zero Coupon Interest Rate Swap based on the economic terms and the following criteria: 1) An interest rate product with one fixed and one floating leg, 2) where the fixed leg represents one singular payment agreed upon execution and to be made at maturity, 3) where the floating leg is not based on an OIS index and 4) without any inflation features or cross-currency features.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function should call Qualify_Transaction_ZeroCoupon_KnownAmount

@@ -1191,7 +1202,7 @@ func Qualify_InterestRate_InflationSwap_FixedFloat_YearOn_Year: <"Qualifies a pr
* and Qualify_InterestRate_InflationSwap_Basis_ZeroCoupon (economicTerms) = False
* and Qualify_InterestRate_InflationSwap_Basis_YearOn_Year (economicTerms) = False
*/
func Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon: <"Qualifies a product as a Fixed-Float Inflation Swap with a single accrual period based on the economic terms and the following criteria: 1) An interest rate product with one fixed and one inflation rate leg and more than one payment, and 2) without cross-currency features.">
func Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon: <"Qualifies a product as a Fixed-Float Inflation Swap based on the economic terms and the following criteria: 1) An interest rate product with one fixed and one inflation rate leg, 2) where the fixed leg represents one singular payment agreed upon execution and to be made at maturity, 3) where the inflation leg features an inflation floating rate and 4) without cross-currency features.">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function should call Qualify_Transaction_ZeroCoupon_KnownAmount

Qualify_SubProduct_FixedFloat(economicTerms) = True and
Qualify_Transaction_ZeroCoupon(economicTerms) = True and
(economicTerms -> payout -> interestRatePayout
filter item -> priceQuantity exists and rateSpecification is absent and paymentDates -> paymentFrequency -> periodMultiplier = 1 and paymentDates -> paymentFrequency -> period = PeriodExtendedEnum -> T then exists)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the logic should rather check that if rateSpecification is present it is a fixed rate. The peer review group indicated that a Zerocoupon_knownamount can also feature accruals but they have to be deterministic i.e. fixed rate.

Copy link
Contributor

@mgratacos mgratacos Dec 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it doesn't include the fixed rate. That's the whole point about ZC with a Known Amount. There is no fixed rate in the fixed leg. The Known Amount is the result of the accrued fixed rate calculations so the fixed rate is not included as part of the product representation, only the resulting calculated amount.

@hugohills-regnosys hugohills-regnosys changed the base branch from master to 5.x.x December 1, 2023 13:17
Updated the Qualifying functions for Known Amount Zero Coupon Swaps.
@hugohills-regnosys hugohills-regnosys force-pushed the mgratacos_auth0_5bbb11b408c77d25edcf5ac2-ZCKnownAmount branch from 7cb1008 to 506f6ac Compare December 1, 2023 16:39
@rvincentISDA
Copy link
Contributor

I just saw that there is a problem potentially. I don't think the following is correct for Qualify_InterestRate_IRSwap_FixedFloat_ZeroCoupon and for Qualify_InterestRate_InflationSwap_FixedFloat_ZeroCoupon
"and (Qualify_Transaction_ZeroCoupon(economicTerms) = True or qualify_Transaction_ZeroCoupon_KnownAmount(economicTerms) = True)"

@rvincentISDA rvincentISDA self-requested a review December 1, 2023 17:32
@hugohills-regnosys
Copy link
Contributor

Replaced by #2571

@hugohills-regnosys hugohills-regnosys deleted the mgratacos_auth0_5bbb11b408c77d25edcf5ac2-ZCKnownAmount branch December 1, 2023 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants