FpML 4.2 Validation Rules - Rules for Equity Derivatives (EQD)
This is the Equity Derivatives part of the validation rule set accompanying the FpML 4.2 Trial Recommendation. The introductory
section in the draft contains background information and documentation for this page.
The rules contained on this page contain links to cut down versions of valid and invalid test cases. These test cases have
been analysed using Systemwire's xlinkit rule engine to highlight relevant document portions accessed by a rule. The cut down
test cases are non-normative and are provided for the purpose of documentation only.
Content
Preconditions
The following preconditions are always to be executed relative to the root of the FpML document being validated. The context
of the rule is NOT carried through to the precondition.
Precondition: ISDA1999 The documentation/contractualDefinitions element or the documentation/masterConfirmation/masterConfirmationType element contains ISDA1999Credit.
Precondition: SameCurrency All instances of currency values within the context of this rule must be identical.
Rules
Unique contexts:
Context:
EquityAmericanExercise (data type)
eqd-1 (Mandatory)
commencementDate/adjustableDate/unadjustedDate must be equal to ../../../tradeHeader/tradeDate.
eqd-2 (Mandatory)
expirationDate/adjustableDate/unadjustedDate must be greater than or equal to ../../../tradeHeader/tradeDate.
eqd-3 (Mandatory)
If latestExerciseTimeType is equal to SpecificTime then latestExerciseTime must be present.
Context:
EquityBermudanExercise (data type)
eqd-4 (Mandatory)
commencementDate/adjustableDate/unadjustedDate must be ../../../tradeHeader/tradeDate.
eqd-5 (Mandatory)
expirationDate/adjustableDate/unadjustedDate must be greater than or equal to ../../../tradeHeader/tradeDate.
eqd-6 (Mandatory)
If latestExerciseTimeType is equal to SpecificTime then latestExerciseTime must be present.
eqd-7 (Mandatory)
The elements in bermudanExerciseDates/date should be in order, earliest date first.
eqd-8 (Mandatory)
All dates in bermudanExerciseDates/date must be greater than commencementDate/adjustableDate/unadjustedDate.
eqd-9 (Mandatory)
All dates in bermudanExerciseDates/date must be less than or equal to expirationDate/adjustableDate/unadjustedDate.
eqd-10 (Mandatory)
The dates in bermudanExerciseDates/date must be unique.
Context:
EquityEuropeanExercise (data type)
eqd-12 (Mandatory)
expirationDate/adjustableDate/unadjustedDate must be greater than or equal to ../../../tradeHeader/tradeDate.
Context:
Trade (data type)
eqd-13 (Mandatory)
If equityOption/equityPremium/paymentDate/unadjustedDate exists, it must be greater than or equal to tradeHeader/tradeDate.
eqd-14 (Mandatory)
If brokerEquityOption/equityPremium/paymentDate/unadjustedDate exists, it must be greater than or equal to tradeHeader/tradeDate.
Context:
EquityExercise (data type)
eqd-15 (Mandatory)
If equityValuation/equityValuationDate/adjustableDate exists, and equityEuropeanExercise exists, then equityValuation/equityValuationDate/adjustableDate/unadjustedDate must be equal to equityEuropeanExercise/expirationDate/adjustableDate/unadjustedDate.
Context:
EquityMultipleExercise (data type)
eqd-16 (Mandatory)
minimumNumberOfOptions < maximumNumberOfOptions.
Context:
EquityOption, EquityDerivativeShortFormBase (data type)
eqd-17 (Mandatory)
If equityExercise/equityAmericanExercise/equityMultipleExercise is present, and numberOfOptions is present then: maximumNumberOfOptions * integralMultipleExercise (in equityExercise/equityAmericanExercise/equityMultipleExercise) is less than or equal to numberOfOptions.
eqd-18 (Mandatory)
If equityExercise/equityBermudanExercise/equityMultipleExercise is present, and numberOfOptions is present then: maximumNumberOfOptions * integralMultipleExercise (in equityExercise/equityBermudanExercise/equityMultipleExercise) is less than or equal to numberOfOptions.
eqd-19 (Mandatory)
If notional, equityPremium/percentageOfNotional and equityPremium/paymentAmount are present, then equityPremium/paymentAmount/amount = notional * equityPremium/percentageOfNotional
eqd-20 (Mandatory)
If numberOfOptions, optionEntitlement, equityPremium/paymentAmount and equityPremium/pricePerOption are present then: equityPremium/pricePerOption * numberOfOptions * optionEntitlement = equityPremium/paymentAmount/amount.
Context:
CalculationAgent (data type)
eqd-21 (Mandatory)
calculationAgentPartyReference must be present.
Context:
EquityDerivativeBase (data type)
eqd-22 (Mandatory)
buyerPartyReference/@href must not be equal to sellerPartyReference/@href
eqd-23 (Mandatory)
equityEffectiveDate >= ../../tradeHeader/tradeDate
Context:
EquitySchedule (data type)
eqd-24 (Mandatory)
startDate <= endDate
Context:
BrokerEquityOption (data type)
eqd-25 (Mandatory)
If numberOfOptions, equityPremium/paymentAmount and equityPremium/pricePerOption are present then: equityPremium/pricePerOption * numberOfOptions = equityPremium/paymentAmount/amount.
Deprecated rules