Skip to content

Commit a0373b6

Browse files
Chuks-Ajehwinitall01hugohills-regnosyseacunaISDAPayalKhanna
authored
[6.x.x] Vineet Kumar Product Model - Commodity Qualification Function and Updates to Payout to Cashflow function (Update Expectations) (#4438)
* Product Model - Commodity Qualification Function and Updates to `Payout to Cashflow` function * update exp * update RELASE.md * Update RELEASE.md * Update RELEASE.md * Update RELEASE.md * Fix duplicate text in RELEASE.md Removed duplicate text in the background section. * Update RELEASE.md for commodity qualification changes * update release notes --------- Co-authored-by: Vineet Kumar <vineet.kumar@regnosys.com> Co-authored-by: Hugo Hills <39260692+hugohills-regnosys@users.noreply.github.com> Co-authored-by: Vineet Kumar <84881498+winitall01@users.noreply.github.com> Co-authored-by: eacunaISDA <82891014+eacunaISDA@users.noreply.github.com> Co-authored-by: payal.khanna <payal.khanna@regnosys.com>
1 parent b4ba18f commit a0373b6

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

RELEASE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
# *Product Model - Commodity Qualification and Cashflow function updates*
2+
3+
_Background_
4+
5+
The qualification of Commodity Products is currently incomplete due to a missing condition. Additionally, modification is required in `Create_CashflowFromSettlementPayout` function to address errors in FX Products.
6+
7+
_What is being released?_
8+
9+
This release includes:
10+
1. Modifications made to `Qualify_AssetClass_Commodity`
11+
2. Removal of redundant condition in `Qualify_Commodity_Swap_FixedFloat`
12+
3. Addition of `valueDate` in `SettlementDate` condition
13+
4. Addition of cashflow from `OptionPayout` and `SettlementPayout` in `Create_CashflowFromPayout` function.
14+
15+
_Review Directions_
16+
17+
Changes can be reviewed in PR: [#4438](https://github.com/finos/common-domain-model/pull/4438)
18+
119
# *Product Model - Updating Qualification Functions to Handle `only exists` Syntax*
220

321
_Background_

rosetta-source/src/main/rosetta/product-qualification-func.rosetta

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ func Qualify_AssetClass_Commodity: <"Qualifies a product as having the Asset Cla
213213

214214
set is_product:
215215
// Regular Commodity Swap
216-
(economicTerms -> payout count = 2
216+
((economicTerms -> payout count = 2
217+
or (economicTerms -> payout -> CommodityPayout count = 2 and economicTerms -> payout -> FixedPricePayout count = 2))
217218
and economicTerms -> payout -> CommodityPayout exists
218219
and economicTerms -> payout -> FixedPricePayout exists)
219220
// Commodity Basis Swap
@@ -1737,7 +1738,6 @@ func Qualify_Commodity_Swap_FixedFloat: <"Qualifies a product as a Fixed Float C
17371738
[synonym ISDA_Taxonomy_v2 value "Commodity_Swap_FixedFloat"]
17381739
set is_product:
17391740
Qualify_AssetClass_Commodity(economicTerms) = True
1740-
and economicTerms -> payout count = 2
17411741
and economicTerms -> payout -> CommodityPayout exists
17421742
and economicTerms -> payout -> FixedPricePayout exists
17431743

rosetta-source/src/main/rosetta/product-template-func.rosetta

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,42 @@ func Create_CashflowFromSettlementPayout: <"Generates two opposite cashflows tha
195195

196196
condition SettlementDate: <"Restricts the function's applicability to the adjustable or relative date for the settlement date.">
197197
payout -> settlementTerms -> settlementDate -> adjustableOrRelativeDate exists
198+
or payout -> settlementTerms -> settlementDate -> valueDate exists
198199

199200
condition SinglePriceAndQuantity: <"Restricts the function's applicability to a single quantity and price.">
200201
payout -> priceQuantity -> quantitySchedule -> value exists
201202
and payout -> priceQuantity -> priceSchedule only-element -> value exists
202203

203204
set cashflows: [assetLeg, priceLeg]
205+
206+
func Create_CashflowFromPayout:
207+
inputs:
208+
payout Payout (1..1) <"The settlement payout from which the cashflows are generated.">
209+
output:
210+
cashflows Cashflow (2..2)
211+
alias settlementPayoutFromOptionPayout:
212+
payout -> OptionPayout
213+
extract
214+
SettlementPayout {
215+
priceQuantity:
216+
ResolvablePriceQuantity {
217+
quantitySchedule: item -> priceQuantity -> quantitySchedule,
218+
priceSchedule: item -> strike -> strikePrice,
219+
...
220+
},
221+
underlier: underlier,
222+
settlementTerms: settlementTerms,
223+
payerReceiver: payerReceiver,
224+
...
225+
}
226+
add cashflows:
227+
payout
228+
extract
229+
switch
230+
OptionPayout then
231+
Create_CashflowFromSettlementPayout(
232+
settlementPayoutFromOptionPayout
233+
),
234+
SettlementPayout then
235+
Create_CashflowFromSettlementPayout(payout -> SettlementPayout),
236+
default empty

0 commit comments

Comments
 (0)