FpML 4.5 Validation Rules - Rules for FX Derivatives
This is the FX part of the validation rule set accompanying the FpML 4.5 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
default element namespace = http://www.fpml.org/2008/FpML-4-5
namespace xs = http://www.w3.org/2001/XMLSchema
Definitions
Term: calculated schedule dates Correctly evaluating rule fx-12 requires generation of a schedule of observation dates based on the observation start date,
the observation end date, a calculation period frequency, a date roll convention, and a business day calendar for business
center where fixing occurs. The calculation should proceed as follows:
- generatedDates := [null];
- unadjustedDate := observationStartDate;
- while unadjustedDate le observationEndDate do
- begin
- adjustedDate := dateRoll (unadjustedDate,dateRollConvention,businessDayCalendar);
- if adjustedDate [doesn't belong at] generatedDates then
- generatedDates := generatedDate [union] adjustedDate;
- unadjustedDate := unadjustedDate + calculationPeriodFrequency;
- end;
- return (generatedDates);
The algorithm assumes that implementations can add a time period (e.g. 1D, 1W, 2M, 6M, 1Y, etc.) to dates and understands
how perform standard financial date rolls (e.g. following, modified preceding, etc.) against a business day calendar. Implementations
must be capable of working with dates that MAY contain time zone offset information.
Functions
The following shared functions are used in the rules.
Rules
Unique contexts:
fx-1 (Mandatory)
Context:
ExchangeRate (complex type)
fx-2 (Mandatory)
Context:
ExchangeRate (complex type)
English Description:
spotRate must exist.
fx-3 (Mandatory)
Context:
ExchangeRate (complex type)
fx-4 (Mandatory)
Context:
ExchangeRate (complex type)
fx-5 (Mandatory)
Context:
ExchangeRate (complex type)
fx-6 (Mandatory)
Context:
ExchangeRate (complex type)
fx-7 (Mandatory)
Context:
FxAmericanTrigger (complex type)
fx-8 (Mandatory)
Context:
FxAmericanTrigger (complex type)
fx-9 (Mandatory)
Context:
FxAverageRateObservationSchedule (complex type)
fx-10 (Mandatory)
Context:
FxAverageRateObservationSchedule (complex type)
English Description:
The observation period defined by observationStartDate and observationEndDate should be an integer multiple of the calculationPeriodFrequency
fx-11 (Mandatory)
Context:
FxAverageRateOption (complex type)
English Description:
The value of each observedRates/observationDate shall be unique
fx-12 (Mandatory)
Context:
FxAverageRateOption (complex type)
English Description: The values of
observedRates/observationDate should match the
calculated schedule dates derived from parameters defined within the
averageRateObservationSchedule element and the business day calendar implied by
fixingTime/businessCenter
fx-13 (Mandatory)
Context:
FxAverageRateOption (complex type)
English Description:
Each observedRates/observationDate must match one of the dates defined by averageRateObservationDate/observationDate
fx-14 (Mandatory)
Context:
FxBarrier (complex type)
fx-15 (Mandatory)
Context:
FxBarrierOption (complex type)
fx-16 (Mandatory)
Context:
FxDigitalOption (complex type)
fx-17 (Mandatory)
Context:
FxEuropeanTrigger (complex type)
fx-18 (Mandatory)
Context:
FxLeg (complex type)
fx-19 (Mandatory)
Context:
FxLeg (complex type)
fx-20 (Mandatory)
Context:
FxLeg (complex type)
fx-21 (Mandatory)
Context:
FxLeg (complex type)
fx-22 (Mandatory)
Context:
FxOptionLeg (complex type)
fx-23 (Mandatory)
Context:
FxOptionLeg (complex type)
fx-24 (Mandatory)
Context:
FxStrikePrice (complex type)
fx-25 (Mandatory)
Context:
FxSwap (complex type)
English Description:
Two or more fxSingleLeg elements must exist.
fx-26 (Mandatory)
Context:
FxSwap (complex type)
fx-27 (Mandatory)
Context:
QuotedCurrencyPair (complex type)
fx-28 (Mandatory)
Context:
SideRate (complex type)
fx-29 (Mandatory)
Context:
SideRate (complex type)
fx-30 (Mandatory)
Context:
SideRate (complex type)
fx-31 (Mandatory)
Context:
SideRates (complex type)
fx-32 (Mandatory)
Context:
TermDeposit (complex type)
fx-33 (Mandatory)
Context:
TermDeposit (complex type)
fx-34 (Mandatory)
Context:
TermDeposit (complex type)
fx-35 (Mandatory)
Context:
TermDeposit (complex type)
fx-36 (Mandatory)
Context:
Trade (complex type)
fx-36b (Mandatory)
Context:
Contract (complex type)
fx-37 (Mandatory)
Context:
Trade (complex type)
fx-37b (Mandatory)
Context:
Contract (complex type)
fx-38 (Mandatory)
Context:
Trade (complex type)
fx-38b (Mandatory)
Context:
Contract (complex type)
fx-39 (Mandatory)
Context:
Trade (complex type)
fx-39b (Mandatory)
Context:
Contract (complex type)
fx-40 (Mandatory)
Context:
Trade (complex type)
fx-40b (Mandatory)
Context:
Contract (complex type)
fx-41 (Mandatory)
Context:
FxBarrier (complex type)
fx-42 (Mandatory)
Context:
FxAverageRateOption (complex type)
English Description:
The value of each averageRateObservationDate/observationDate must be unique
fx-43 (Mandatory)
Context:
FxAverageRateOption (complex type)
fx-44 (Mandatory)
Context:
FxAverageRateOption (complex type)
fx-45 (Mandatory)
Context:
FxDigitalOption (complex type)
fx-46 (Mandatory)
Context:
SideRates (complex type)
English Description:
currency1SideRate/sideRateBasis is equal to either "BaseCurrencyPerCurrency1" or "Currency1PerBaseCurrency".
fx-47 (Mandatory)
Context:
SideRates (complex type)
English Description:
currency2SideRate/sideRateBasis is equal to either "BaseCurrencyPerCurrency2" or "Currency2PerBaseCurrency".
Deprecated rules
Removed rules