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 Working Draft. 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
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