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

JEAN BAPTISTE ZIADE CorporateActionEnrichment_FRAGMOS #3220

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions rosetta-source/src/main/rosetta/event-common-enum.rosetta
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,22 @@ enum EventIntentEnum: <"The enumeration values to qualify the intent associated
PrincipalExchange <"The intent is to pay or to receive a cash transfer, in accordance with Principal Exchange features.">
Reallocation <"The intent is to reallocate one or more trades as part of an allocated block trade.">
Repurchase <"The intent is to close a repo transaction through repurchase.">
Substitution <"The intent is to subtitute new share to compensate for a prior existing share beign affected by a corporate event, for instance a share-for-share or any other kind of event that may be separatly agreed by the parties. This is quite similar to PortfolioReblancing, yet with Substitution one may expect that the global notional amount of the basket is not affected by the substitution of the shares, that usually coming with formula terms for the purpose of calculating the booking price of the new share e.g. New Share Initial Price = New Share MtM price x ( Old Share Initial Price / Old Share MtM Price ).">

enum PositionEventIntentEnum:
PositionCreation <"The intent is to form a position from a fully formed contract.">
CorporateActionAdjustment <"The intent is to take into effect the occurrence of a Corporate Action and the particular Corporate Action at stake shall be further specified in CorporateActionTypeEnum.">
Decrease <"The intent is to Decrease the quantity of the position.">
Increase <"The intent is to Increase the quantity of the position.">
Transfer <"The intent is to transfer the position to another clearing member.">
Novation <"The intent is to transfer the position to another clearing member.">
Allocation <"The intent is to reallocate one or more trades as part of an allocated block trade.">
OptionExercise <"The intent is to Exercise a position or part of a position.">
Valuation <"The intent is to update the valuation of the position.">

PortfolioRebalancing <"The intent is to rebalance a portfolio, by inserting new derivatives transactions into portfolios of participants to reduce risks linked to those trades. These are offsetting trades that rebalance relationships between different counterparties when it comes to exposure of portfolios to certain types of risk, such as interest rate risk.">
Substitution <"The intent is to subtitute new share to compensate for a prior existing share beign affected by a corporate event, for instance a share-for-share or any other kind of event that may be separatly agreed by the parties. This is quite similar to PortfolioReblancing, yet with Substitution one may expect that the global notional amount of the basket is not affected by the substitution of the shares, that usually coming with formula terms for the purpose of calculating the booking price of the new share e.g. New Share Initial Price = New Share MtM price x ( Old Share Initial Price / Old Share MtM Price ).">
NotionalReset <"The intent is to increase or to decrease the notional of the Trade, in accordance with Notional Reset features e.g. could apply for Cross Currency Swaps, Equity Performance Swaps, etc.">
NotionalStep <"The intent is to increase or to decrease the notional of the Trade, in accordance with Step features attached to a Payout Quantity.">

enum RecordAmountTypeEnum: <"The enumeration of the account level for the billing summary.">
AccountTotal
GrandTotal
Expand Down Expand Up @@ -136,6 +142,10 @@ enum CorporateActionTypeEnum: <"The enumerated values to specify the origin of a
ClassAction <"Corporate action triggered by a Class Action. An action where an individual represents a group in a court claim. The judgment from the suit is for all the members of the group (class). The value maps closely to the ISO code (CLSA) defined as the situation where interested parties seek restitution for financial loss. The security holder may be offered the opportunity to join a class action proceeding and would need to respond with an instruction.">
EarlyRedemption <"Corporate action triggered by an early redemption. The value maps closely to the ISO code (MCAL) defined as the redemption of an entire issue outstanding of securities, for example, bonds, preferred equity, funds, by the issuer or its agent, for example, asset manager, before final maturity.">
Liquidation <"Corporate action triggered by a liquidation. When a business or firm is terminated or bankrupt, its assets are sold (liquidated) and the proceeds pay creditors. Any leftovers are distributed to shareholders. The value maps closely to the ISO code (LIQU) defined as a distribution of cash, assets or both. Debt may be paid in order of priority based on preferred claims to assets specified by the security.">
BankruptcyOrInsolvency <"Corporate action triggered by bankruptcy, insolvency filing or insolvency of the issuer of the Security.">
IssuerNationalization <"Corporate action triggered by the nationalization of the issuer of the Security.">
Relisting <"Corporate action triggered by the relisting of a security from the original stock exchange to another exchange.">
BespokeEvent <"Corporate action triggered by the occurrence of an event which description is seperatly agreed between the parties in the terms of the referenced agreement.">

enum CreditEventTypeEnum: <"Represents the enumerated values to specify a credit event type.">
[docReference ISDA FpML_Coding_Scheme schemeLocation "http://www.fpml.org/coding-scheme/credit-event-type"]
Expand Down
72 changes: 71 additions & 1 deletion rosetta-source/src/main/rosetta/event-common-type.rosetta
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ version "${project.version}"
import cdm.base.*
import cdm.base.math.*
import cdm.base.datetime.*
import cdm.base.datetime.daycount.*
import cdm.base.staticdata.party.*
import cdm.base.staticdata.asset.common.*
import cdm.base.staticdata.asset.rates.*
Expand Down Expand Up @@ -564,7 +565,76 @@ type CorporateAction: <"Specifies the relevant data regarding a corporate action
corporateActionType CorporateActionTypeEnum (1..1) <"The type of corporate action taking place.">
exDate date (1..1) <"The date on which the corporate action is known to have taken place.">
payDate date (1..1) <"The date on which resulting from the corporate action are delivered.">
underlier Product (1..1) <"The entity impacted by the corporate action.">
recordDate date (0..1) <"The date on which the account phyical balance and related underlier ownership is recorded by the custodian.">
announcementDate date (0..1) <"The date on which the corporate action is announced by the issuer.">
underlier Underlier (1..1) <"The asset impacted by the corporate action.">
adjustmentTerms AdjustmentTerms (0..1) <"Specifies any additional details e.g. further descriptions depending on the particular type of Corporate Action, adjustmentFactor, calculations">
informationSource InformationSource (0..1) <"A class defining the source of data used in an Observation for any purposes. The data is either sourced from a Provider, or from a Party.">
dividendObservation PriceSchedule (0..1) <"To record observations of dividends.">
[metadata location]
bespokeEventDescription string (0..1) <"Corporate action triggered by the occurrence of an event which description is separatly agreed between the parties in the terms of the referenced agreement.">

condition DividendObservation: <"Price type is restricted to record observations of dividends.">
if dividendObservation exists
then dividendObservation -> priceType = PriceTypeEnum -> Dividend

condition CorporateActionTypeBespoke: <"When Enum value does not corresponds to standard terms, then bespoke description must be populated.">
if corporateActionType = CorporateActionTypeEnum -> BespokeEvent
then bespokeEventDescription exists


type AdjustmentTerms:<"Describes the terms involved for adjusting the price of the underlier impacted by a Corporate Action.">

adjustmentFactorValue number (1..1) <"The multipler value applied to the price of the underlier impacted by a Corporate Action.">
adjustmentFactorCalculation PriceAdjustmentFactorCalculationTerms (0..1) <"Describes the input terms involved in the calculation of the adjustment factor applied to the price of the underlier impacted by a Corporate Action.">

type PriceAdjustmentFactorCalculationTerms :<"Describes the input terms involved in the calculation of the adjustment factor applied to the price of the underlier impacted by a Corporate Action.">
shareForShareRatio number (0..1)
shareForRightsRatio number (0..1)
shareForBonusRatio number (0..1)
subscriptionPrice Price (0..1)
netFiscalRatioPercentage number (0..1)
spinOffPrice SpinOff (0..1) <"Defines the underlier for both the Parent Company and the Child Compagny involved in Spin Off corporate action, as well as th respective price observation for each.">
mergerPrice Merger (0..1) <"Defines the underlier for both the Purchaser Company and the Acquired Compagny involved in Spin Off corporate action, as well as th respective price observation for each.">
accrualFactor AccrualFactor (0..1) <"The accrual rate and related terms, to adjust the price of an underlier impacted by a Corporate Action when economic impact consists in freezing the underlier price to last fixing and applying accruals for each remaining underlier price fixing date required i.e. for each, adjustedPrice = lastFixingPrice x (1 + accrualRate x DCF).">
lastFixingPrice_priorAdjustment Price (0..1) <"The last fixing price of the Underlier affected by the CorporateAction, before any adjustment with regards to the CorporateAction.">
dividendObservation PriceSchedule (0..1) <"To record observations of dividends.">
[metadata address "pointsTo"=CorporateAction->dividendObservation]
bespokeCalculationFormula string (0..1) <"To describe the formula used to calculate the Adjustment Factor."> // temporary place holder -> plan is to re-use BespokePayoutFormula type designed by Structured Product WG

condition SpinOffOrMerger :
optional choice spinOffPrice, mergerPrice, accrualFactor

type AccrualFactor :<"The accrual rate and related terms, to adjust the price of an underlier impacted by a Corporate Action when economic impact consists in freezing the underlier price to the last fixing then applying accruals per each remaining underlier price fixing date required i.e. for each fixing date, adjustedPrice = lastFixingPrice x (1 + accrualRate x DCF).">
accrualRateValue PriceSchedule (1..1) <"The rate to be applied to the last fixing price, for price accrual calculation purposes. DatedValue may be used for the purpose of representing Price series if such calculation is required for multiple dates.">
[metadata location]
accrualRateCalculationTerms AccrualFactorCalculationTerms (0..1) <"Describes the input terms involved in the calculation of the accrual factor.">

condition AccrualPriceIsRate:
accrualRateValue -> priceType = PriceTypeEnum -> InterestRate

type AccrualFactorCalculationTerms: <"Describes the input terms involved in the calculation of the accrual factor. Optionnally, long and short stub interpolation rates can be specified.">
tenorTillMaturity number (1..1) <"The duration between last fixing date and the payment date of accruals, calculated in accordance with the appropriate DayCountFraction.">
dayCountFraction DayCountFractionEnum (1..1) <"The enumerated values to specify the day count fraction.">
shortStubInterpolationTerms FloatingRateSpecification (0..1) <"Describes the rate and related tenor for the short stub when the accrualRate optionnaly results from an interpolation method.">
longStubInterpolationTerms FloatingRateSpecification (0..1) <"Describes the rate and related tenor for the long stub when the accrualRate optionnaly results from an interpolation method.">

condition TenorExistsInInterpolation:
if shortStubInterpolationTerms exists
or longStubInterpolationTerms exists
then shortStubInterpolationTerms -> rateOption -> indexTenor exists
and longStubInterpolationTerms -> rateOption -> indexTenor exists

type SpinOff :<"Defines the underlier for both the Parent Company and the Child Compagny involved in Spin Off corporate action, as well as th respective price observation for each.">
parentCompanyPrice Observable (1..1) <"Defines the underlier for the Parent Company involved in Spin Off corporate action, as well as the related price observation.">
childCompanyPrice Observable (1..1) <"Defines the underlier for the Child Company involved in Spin Off corporate action, as well as the related price observation.">

type Merger: <"Defines the underlier for both the Purchaser Company and the Acquired Compagny involved in Spin Off corporate action, as well as th respective price observation for each.">
purchaserCompanyPrice Observable (0..1) <"Defines the underlier for the Purchaser Company involved in Merger corporate action, as well as the related price observation.">
acquiredCompanyPrice Observable (0..1) <"Defines the underlier for the Acquired Company involved in Merger corporate action, as well as the related price observation.">

type InterpolationRateCalculationTerms:<"Describes the rate and related tenor, for short stub and long stub respectively, when the accrualRate optionnaly results from an interpolation method.">


type TransferBase:
identifier Identifier (0..*) <"Represents a unique reference to the transfer.">
Expand Down