From 925e5da49bda39f4f61277afaeefb2666db322e0 Mon Sep 17 00:00:00 2001 From: Payal Khanna <107400406+PayalKhanna@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:05:54 +0100 Subject: [PATCH] Vineet Kumar Story2500_ValuationModelinCDM with updated expectations (#2279) * Story2500_ValuationModelinCDM Valuation Model in CDM * Story2500_ValuationModelinCDM Valuation Model in CDM * Story2500_ValuationModelinCDM Story 2500 Valuation Model in CDM * Story2500_ValuationModelinCDM Story 2500 Valuation Model in CDM * Story2500_ValuationModelinCDM Story 2500 Valuation Model in CDM * Story2500_ValuationModelinCDM Story 2500 Valuation Model in CDM * update expectations * Update RELEASE.md * Update RELEASE.md * Fix typos * Update RELEASE.md --------- Co-authored-by: Vineet Kumar Co-authored-by: rvincentISDA <66018066+rvincentISDA@users.noreply.github.com> Co-authored-by: Hugo Hills <39260692+hugohills-regnosys@users.noreply.github.com> Co-authored-by: Vineet Kumar <84881498+winitall01@users.noreply.github.com> --- RELEASE.md | 15 +++++++++++---- .../eqvs-ex01-variance-swap-index.json | 2 +- .../eqvs-ex02-variance-swap-single-stock.json | 2 +- .../eqvs-ex03-conditional-variance-swap.json | 2 +- .../eqvs-ex04-dispersion-variance-swap.json | 2 +- ...sion-variance-swap-transaction-supplement.json | 2 +- ...06-variance-option-transaction-supplement.json | 2 +- ...tion-transaction-supplement-pred-clearing.json | 2 +- .../eqvls-ex02-volatility-swap-index-mca.json | 2 +- .../src/main/rosetta/event-common-enum.rosetta | 7 +++++++ .../src/main/rosetta/event-common-type.rosetta | 11 +++++++++++ ...g-fpml-confirmation-tradestate-synonym.rosetta | 8 ++++---- .../src/main/rosetta/product-asset-type.rosetta | 6 +++--- 13 files changed, 44 insertions(+), 19 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index a6c9488765..3986a3ad9b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,8 +1,15 @@ -# *Infrastructure - Dependency Updates* +# *Event Model - Representation of trade valuations* _What is being released?_ -This release updates the bundle dependency version. The bundle dependency comprises a number of dependencies that are released together as a bundle, including [rosetta-common](https://github.com/REGnosys/rosetta-common) and [rosetta-code-generators](https://github.com/REGnosys/rosetta-code-generators). +This release introduces the `Valuation` data type that will document the valuation details of a trade during its life cycle. The history of all the valuations will be inscribed in the new `ValuationHistory` attribute of a `TradeState`. Future work will explore how to codify the state transitions for valuations. +Additionally, the existing `valuation` type present in `ReturnsTermsBase` is renamed as `valuationTerms` -- Bundle version upgrade includes: - - 7.4.0: Java function memoization that significantly improves function execution time by caching repeating function calls that share the same signature. No changes are required in the CDM. +_Review Directions_ + +In the CDM Portal, select the textual view or graphical view and inspect: + + - the structural definition of the `Valuation` data type and associated enum type `ValuationTypeEnum`, `ValuationSourceEnum` + - the insertion of the valuationHistory attribute for the `TradeState` data type + - renaming of existing `Valuation` type to `ValuationTerms` + - renaming of existing `valuation` attribute in `ReturnTermsBases` to `valuationTerms` diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex01-variance-swap-index.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex01-variance-swap-index.json index 3b69738cfe..5c853c4673 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex01-variance-swap-index.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex01-variance-swap-index.json @@ -137,7 +137,7 @@ }, "returnTerms" : { "varianceReturnTerms" : { - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "exchangeTradedContractNearest" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex02-variance-swap-single-stock.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex02-variance-swap-single-stock.json index cb100e35b6..5f985e7de3 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex02-variance-swap-single-stock.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex02-variance-swap-single-stock.json @@ -141,7 +141,7 @@ "additionalDividends" : false, "optionsExchangeDividends" : true }, - "valuation" : { + "valuationTerms" : { "optionsPriceValuation" : true }, "exchangeTradedContractNearest" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex03-conditional-variance-swap.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex03-conditional-variance-swap.json index 12c90ad230..fb64a67e4c 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex03-conditional-variance-swap.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex03-conditional-variance-swap.json @@ -95,7 +95,7 @@ "additionalDividends" : false, "optionsExchangeDividends" : true }, - "valuation" : { + "valuationTerms" : { "optionsPriceValuation" : true }, "exchangeTradedContractNearest" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex04-dispersion-variance-swap.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex04-dispersion-variance-swap.json index 58edf6c69b..732be1ed29 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex04-dispersion-variance-swap.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex04-dispersion-variance-swap.json @@ -254,7 +254,7 @@ "returnTerms" : { "varianceReturnTerms" : { "initialLevel" : 0.80, - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "varianceStrikePrice" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex05-dispersion-variance-swap-transaction-supplement.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex05-dispersion-variance-swap-transaction-supplement.json index 5b5164ff5b..774d44b0f1 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex05-dispersion-variance-swap-transaction-supplement.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex05-dispersion-variance-swap-transaction-supplement.json @@ -169,7 +169,7 @@ "returnTerms" : { "varianceReturnTerms" : { "initialLevel" : 0.80, - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "varianceStrikePrice" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex06-variance-option-transaction-supplement.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex06-variance-option-transaction-supplement.json index 14360638a2..39a9c1c5c0 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex06-variance-option-transaction-supplement.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex06-variance-option-transaction-supplement.json @@ -230,7 +230,7 @@ "returnTerms" : { "varianceReturnTerms" : { "expectedN" : 542, - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "varianceCapFloor" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex07-variance-option-transaction-supplement-pred-clearing.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex07-variance-option-transaction-supplement-pred-clearing.json index 717f5d2d12..b60da466c5 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex07-variance-option-transaction-supplement-pred-clearing.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/variance-swaps/eqvs-ex07-variance-option-transaction-supplement-pred-clearing.json @@ -264,7 +264,7 @@ "returnTerms" : { "varianceReturnTerms" : { "expectedN" : 542, - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "varianceCapFloor" : { diff --git a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/volatility-swaps/eqvls-ex02-volatility-swap-index-mca.json b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/volatility-swaps/eqvls-ex02-volatility-swap-index-mca.json index 4bea9cd4f5..ace39bed24 100644 --- a/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/volatility-swaps/eqvls-ex02-volatility-swap-index-mca.json +++ b/rosetta-source/src/main/resources/result-json-files/fpml-5-10/products/volatility-swaps/eqvls-ex02-volatility-swap-index-mca.json @@ -154,7 +154,7 @@ "returnTerms" : { "volatilityReturnTerms" : { "expectedN" : 5, - "valuation" : { + "valuationTerms" : { "futuresPriceValuation" : true }, "volatilityCapFloor" : { diff --git a/rosetta-source/src/main/rosetta/event-common-enum.rosetta b/rosetta-source/src/main/rosetta/event-common-enum.rosetta index 610a829990..ac1d98be61 100644 --- a/rosetta-source/src/main/rosetta/event-common-enum.rosetta +++ b/rosetta-source/src/main/rosetta/event-common-enum.rosetta @@ -143,3 +143,10 @@ enum CreditEventTypeEnum: <"Represents the enumerated values to specify a credit RepudiationMoratorium <"The reference entity, or a governmental authority, either refuses to recognise or challenges the validity of one or more obligations of the reference entity, or imposes a moratorium thereby postponing payments on one or more of the obligations of the reference entity. Subject to the default requirement amount. ISDA 2003 Term: Repudiation/Moratorium."> Restructuring <"A restructuring is an event that materially impacts the reference entity's obligations, such as an interest rate reduction, principal reduction, deferral of interest or principal, change in priority ranking, or change in currency or composition of payment. ISDA 2003 Term: Restructuring."> Writedown <"Results from the fact that the underlier writes down its outstanding principal amount."> + +enum ValuationTypeEnum: <"Method used for the valuation of the transaction by the valuation party."> + MarkToMarket <"Mark-to-Market"> + MarkToModel <"Mark-to-Model"> + +enum ValuationSourceEnum: <"Source for the valuation of the transaction by the valuation party."> + CentralCounterparty <"Central Counterparty's Valuation"> diff --git a/rosetta-source/src/main/rosetta/event-common-type.rosetta b/rosetta-source/src/main/rosetta/event-common-type.rosetta index cda04c7a62..0aca07ec64 100644 --- a/rosetta-source/src/main/rosetta/event-common-type.rosetta +++ b/rosetta-source/src/main/rosetta/event-common-type.rosetta @@ -173,6 +173,7 @@ type TradeState: <"Defines the fundamental financial information that can be cha resetHistory Reset (0..*) <"Represents the updated Trade attributes which can change as the result of a reset event. Only the changed values are captured, leaving the remaining data attributes empty. See Create_Reset function for further details on how TradeState is used in the Reset event. The TradeState data type is used to maintain backwards compatibility with the current Reset mechanism."> transferHistory TransferState (0..*) <"Represents the updated Trade attributes which can change as the result of a transfer event."> observationHistory ObservationEvent (0..*) <"Represents the observed events related to a particular product or process, such as credit events or corporate actions."> + valuationHistory Valuation (0..*) type ObservationEvent: <"Specifies the necessary information to create any observation event."> creditEvent CreditEvent (0..1) <"Specifies the necessary information to create a credit event."> @@ -250,6 +251,16 @@ type SettlementOrigin: <"Defines the origin to the transfer as a reference for l type TradeIdentifier extends Identifier: <"Defines a trade identifier as a special case of the generic identifier type, that also includes the trade identifier class."> identifierType TradeIdentifierTypeEnum (0..1) <"The enumerated classification of the identifier. Optional as a trade identifier may be party-specific, in which case it may not correspond to any established classification."> +type Valuation: <"Defines the value of an investment, asset, or security"> + amount Money (1..1) <"Current value of the outstanding contract"> + timestamp zonedDateTime (1..1) <"Date and time of the last valuation marked to market, provided by the central counterparty (CCP) or calculated using the current or last available market price of the inputs."> + method ValuationTypeEnum (0..1) <"Method used for the valuation of the transaction by the valuation party."> + source ValuationSourceEnum (0..1) <"Source of the valuation of the transaction by the valuation party."> + delta number (0..1) <"The ratio of the change in the price of a derivative transaction to the change in the price of the underlying. This field is applicable only to options and swaptions."> + + condition ValuationType: <"The below condition ensures one and only one of the two attributes: 'Valuation Method' or 'Valuation Source' is allowed. Valuation of a trade or a portfolio is either internally calculated (via M2Market or M2Model methods) or supplied from an external source (e.g Central Counterparty's Valuation). Valuation cannot be based upon internal calculations and external source at the same time."> + required choice method, source + type Trade: <"Defines the output of a financial transaction between parties - a Business Event. A Trade impacts the financial position (i.e. the balance sheet) of involved parties."> [metadata key] [docReference ICMA GMRA namingConvention "Transaction" diff --git a/rosetta-source/src/main/rosetta/mapping-fpml-confirmation-tradestate-synonym.rosetta b/rosetta-source/src/main/rosetta/mapping-fpml-confirmation-tradestate-synonym.rosetta index e9d50ea2c0..ac1056f95d 100644 --- a/rosetta-source/src/main/rosetta/mapping-fpml-confirmation-tradestate-synonym.rosetta +++ b/rosetta-source/src/main/rosetta/mapping-fpml-confirmation-tradestate-synonym.rosetta @@ -171,7 +171,7 @@ synonym source FpML_5_Confirmation_To_TradeState extends FpML // Common for variance, volatility and correlation (ReturnTermsBase) + dividendApplicability [value "amount" set when path = "volatilityLeg"] - + valuation + + valuationTerms [value "valuation" set when path = "volatilityLeg"] // Volatility specific + volatilityStrikePrice @@ -188,7 +188,7 @@ synonym source FpML_5_Confirmation_To_TradeState extends FpML // Common for variance, volatility and correlation (ReturnTermsBase) + dividendApplicability [value "amount" set when path = "varianceLeg"] - + valuation + + valuationTerms [value "valuation" set when path = "varianceLeg"] // Variance specific + varianceStrikePrice @@ -210,7 +210,7 @@ synonym source FpML_5_Confirmation_To_TradeState extends FpML // Common for variance, volatility and correlation (ReturnTermsBase) + dividendApplicability [value "amount" set when path = "correlationLeg"] - + valuation + + valuationTerms [value "valuation" set when path = "correlationLeg"] // Correlation specific + correlationStrikePrice @@ -257,7 +257,7 @@ synonym source FpML_5_Confirmation_To_TradeState extends FpML + lowerBarrier [value "lowerBarrier"] - Valuation: + ValuationTerms: + futuresPriceValuation [value "futuresPriceValuation"] + optionsPriceValuation diff --git a/rosetta-source/src/main/rosetta/product-asset-type.rosetta b/rosetta-source/src/main/rosetta/product-asset-type.rosetta index 95c0649c96..1b7ab26e14 100644 --- a/rosetta-source/src/main/rosetta/product-asset-type.rosetta +++ b/rosetta-source/src/main/rosetta/product-asset-type.rosetta @@ -442,7 +442,7 @@ type PriceReturnTerms: type ReturnTermsBase: <"Contains all common elements in variance, volatility and correlation return Terms."> - valuation Valuation (1..1) <"Contains all non-date valuation information."> + valuationTerms ValuationTerms (1..1) <"Contains all non-date valuation information."> annualizationFactor int (0..1) <"This specifies the numerator of an annualization factor. Frequently this number is equal to the number of observations of prices in a year e.g. 252."> dividendApplicability DividendApplicability (0..1) <"The parameters which define whether dividends are applicable"> equityUnderlierProvisions EquityUnderlierProvisions (0..1) <"Contains Equity Underlyer provisions regarding jurisdiction and fallbacks."> @@ -478,7 +478,7 @@ type VarianceReturnTerms extends ReturnTermsBase: then exchangeTradedContractNearest -> productIdentifier exists condition ReferenceContract: <"If futurePriceValuation is true, an exchange traded contract is used as a reference, therefore such contract must be specified in exchangeTradedContractNearest"> - if valuation -> futuresPriceValuation = True then exchangeTradedContractNearest exists + if valuationTerms -> futuresPriceValuation = True then exchangeTradedContractNearest exists condition StrikePriceMustExist: <"The strike price must be present, but it can be expressed in either variance or volatility terms"> required choice volatilityStrikePrice, varianceStrikePrice @@ -510,7 +510,7 @@ type CorrelationReturnTerms extends ReturnTermsBase: condition CorrelationValue: <"The correlation strike price is a decimal with allowed values only between 1 and -1"> correlationStrikePrice -> value > -1 and correlationStrikePrice -> value < 1 -type Valuation: +type ValuationTerms: futuresPriceValuation boolean (0..1) <"The official settlement price as announced by the related exchange is applicable, in accordance with the ISDA 2002 definitions."> optionsPriceValuation boolean (0..1) <"The official settlement price as announced by the related exchange is applicable, in accordance with the ISDA 2002 definitions"> numberOfValuationDates int (0..1) <"The number of valuation dates between valuation start date and valuation end date.">