FpML 4.4 Validation Rules - Rules for FX Derivatives

This is the FX part of the validation rule set accompanying the FpML 4.4 Last Call Working Draft. The introductory section in the validation section of the specifications 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. The cut down test cases are non-normative and are provided for the purpose of documentation only.

Content

Namespace

http://www.fpml.org/spec/fpml-4-4-5-lcwd-1

Rules

Unique contexts:

Context: ExchangeRate (complex type)

fx-1 (Mandatory)
The value of rate must be non-negative.
fx-2 (Mandatory)
If forwardPoints is present then spotRate should also be present.
fx-3 (Mandatory)
If spotRate and forwardPoints are both present then rate should be equal to spotRate + forwardPoints.
fx-4 (Mandatory)
sideRates/baseCurrency must be neither quotedCurrencyPair/currency1 nor quotedCurrencyPair/currency2.
fx-5 (Mandatory)
sideRates/currency1SideRate/currency must be the same as quotedCurrencyPair/currency1.
fx-6 (Mandatory)
sideRates/currency2SideRate/currency must be the same as quotedCurrencyPair/currency2.

Context: FxAmericanTrigger (complex type)

fx-7 (Mandatory)
The value of triggerRate must be non-negative.
fx-8 (Mandatory)
If observationStartDate and observationEndDate are both present then observationStartDate <= observationEndDate.

Context: FxAverageRateObservationSchedule (complex type)

fx-9 (Mandatory)
If observationStartDate and observationEndDate are both present then observationStartDate <= observationEndDate.
fx-10 (Mandatory)
The observation period defined by observationStartDate and observationEndDate should be an integer multiple of the calculationPeriodFrequency.

Context: FxAverageRateOption (complex type)

fx-11 (Mandatory)
The value of each observedRates/observationDate shall be unique.
fx-12 (Mandatory)
If averageRateObservationSchedule is present then the values of observedRates/observedDate should match one of the calculated schedule dates.
fx-13 (Mandatory)
If averageRateObservationDate elements are present then each observedRates/observationDate should fall on a date defined by averageRateObservationDate/observationDate.

Context: FxBarrier (complex type)

fx-14 (Mandatory)
If observationStartDate and observationEndDate are both present then observationStartDate <= observationEndDate.

Context: FxBarrierOption (complex type)

fx-15 (Mandatory)
If spotRate is present it must be non-negative.

Context: FxDigitalOption (complex type)

fx-16 (Mandatory)
If spotRate is present it must be non-negative.

Context: FxEuropeanTrigger (complex type)

fx-17 (Mandatory)
The value of triggerRate must be non-negative.

Context: FxLeg (complex type)

fx-18 (Mandatory)
The value of exchangedCurrency1/payerPartyReference/@href must be the same as exchangedCurrency2/receiverPartyReference/@href and exchangedCurrency1/receiverPartyReference/@href must be the same as exchangedCurrency2/payerPartyReference/@href.
fx-19 (Mandatory)
The value of exchangedCurrency1/paymentAmount/currency and exchangedCurrency2/paymentAmount/currency must be different.
fx-20 (Mandatory)
If currency1ValueDate is present then it must be different from currency2ValueDate.
fx-21 (Mandatory)
If nonDeliverableForward is present then exchangeRate/forwardPoints should also be present.

Context: FxOptionLeg (complex type)

fx-22 (Mandatory)
If fxOptionPremium is present then the value of buyerPartyReference/@href and fxOptionPremium/payerPartyReference/@href must be the same and the value of sellerPartyReference/@href must be the same as fxOptionPremium/receiverPartyReference/@href.
fx-23 (Mandatory)
The value of putCurrencyAmount/currency and callCurrencyAmount/currency must be different.
fx-24 (Mandatory)
The value of rate must be non-negative.

Context: FxSwap (complex type)

fx-25 (Mandatory)
Two or more fxSingleLeg elements must be present.
fx-26 (Mandatory)
If two fxSingleLeg elements are present, the fxSingleLeg\valueDate for each one of the legs must be different.

Context: QuotedCurrencyPair (complex type)

fx-27 (Mandatory)
The value of currency1 and currency2 must be different.

Context: SideRate (complex type)

fx-28 (Mandatory)
The value of rate must be non-negative.
fx-29 (Mandatory)
If forwardPoints is present then spotRate should also be present.
fx-30 (Mandatory)
If spotRate and forwardPoints are both present then rate should be equal to spotRate + forwardPoints.

Context: SideRates (complex type)

fx-31 (Mandatory)
The value of baseCurrency must be different to currency1SideRate/currency and currency2SideRate/currency.
fx-32 (Mandatory)
The value of rate must be non-negative.

Context: TermDeposit (complex type)

fx-33 (Mandatory)
The value of initialPayerReference and initialReceiverReference must be different.
fx-34 (Mandatory)
The maturityDate must be after the startDate.
fx-35 (Mandatory)
The value of principal/amount must be positive.
fx-36 (Mandatory)
The fixedRate must be non-negative.

Context: Trade (complex type)

fx-37 (Mandatory)
The value of fxAverageRateOption/expiryDateTime/expiryDate should be after tradeHeader/tradeDate.
fx-38 (Mandatory)
The value of fxBarrierOption/expiryDateTime/expiryDate should be after tradeHeader/tradeDate.
fx-39 (Mandatory)
The value of fxDigitalOption/expiryDateTime/expiryDate should be after tradeHeader/tradeDate.
fx-40 (Mandatory)
The value of fxSingleLeg/valueDate or the value of both fxSingleLeg/valueDate1 and fxSingleLeg/valueDate2 should be after tradeHeader/tradeDate.
fx-41 (Mandatory)
The value of all fxSwap/fxSingleLeg/valueDate, fxswap/fxSingleLeg/valueDate1 and fxSwap/fxSingleLeg/valueDate2 instances should be after tradeHeader/tradeDate.

Deprecated rules

Removed rules