FpML 4.2 Validation Rules - Rules for Interest Rate Derivatives (IRD)
      
      
         
         
            This is the Interest Rate 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
      
      Definitions
Term: regular period
            	The regular period of a set of calculation period dates is the period between 
            	a start date and an end date. The start date is firstRegularPeriodStartDate, 
            	if present, or effectiveDate/unadjustedDate otherwise. The end date is 
            	lastRegularPeriodEndDate, if present, or terminationDate/unadjustedDate
            	otherwise.
            
         
       Term: frequency equivalence
            	A frequency is specified as a tuple of 
period, which is an integer, 
            	and 
periodMultiplier, which is one of 
            	
D, 
            	
M, 
            	
Y, 
            	
W or 
            	
T, standing for day, month, year, week and term. Between any
            	pair of frequencies, the following is the complete list of equivalences
            	where the period multipliers differ: 
            	
            
If the period multipliers of a pair of frequencies are equivalent, 
            	then they are equal if and only if the 
period elements are equal. For the purpose
            	of calculating multiples of periods, the following additional rule holds:
            	
            
               		
               - Any frequency > 0 is a multiple of 1D
 Term: unadjusted calculation period dates
            	This applies in the context of an 
InterestRateStream. For the 
            	purpose of validation, the unadjusted calculation period dates are determined 
            	as follows: 
            	
            
               		
               - 
                  			cashflows element not present: the unadjusted calculation period
                  			dates are calculated by stepping through the 
                  			regular period at the frequency specified in 
                  			calculationPeriodDates/calculationPeriodFrequency. The first
                  			date is the start date of the 
                  			regular period and the last date is the end date of the 
                  			regular period.
                  		
               
- 
                  			cashflows element is present and cashflowsMatchParameters is 
                  			true: the unadjusted calculation period dates are
                  			calculated from the regular period as in the previous case.
                  		
               
- 
                  			cashflows element is present and cashflowsMatchParameters is 
                  			false: rules that relate elements to unadjusted
                  			calculation period dates do not apply. Instead, the cash flows 
                  			must be validated internally.
                  		
               
 
      Preconditions
Precondition: isParametric
            The ancestor element of type InterestRateStream contains no cashflows
            element, or cashflows/cashflowsMatchParameters contains
            true.      
            
         
       
      Rules
      Unique contexts:
      
      
         
            
            					Context: 
            
            					InterestRateStream (data type)
         
      
      
         ird-1 (Mandatory)
         
         
            	resetDates must be present if and only if a 
            	floatingRateCalculation element is present in the 
            	calculationPeriodAmount/calculation element.
            
         
         
       
      
         ird-2 (Mandatory)
         
         
         
            	paymentDates/paymentFrequency must be an integer multiple (could
            	be 1) of 
calculationPeriodDates/calculationPeriodFrequency. See also: 
            	
frequency equivalence.
            
         
 
         
       
      
      
      
         ird-5 (Mandatory)
         
         
         The frequency in 
            
calculationPeriodDates/calculationPeriodFrequencymust be an
            integer multiple of the frequency in 
            
resetDates/resetFrequency. See also: 
            
frequency equivalence 
      
         ird-6 (Mandatory)
         
         
         
            paymentDates/firstPaymentDate > 
            calculationPeriodDates/effectiveDate/unadjustedDate.
            
         
         
       
      
         ird-7 (Mandatory)
         
         
         
            calculationPeriodAmount/calculation/compoundingMethod is present
            if and only if the frequencies in 
            
paymentDates/paymentFrequency and 
            
calculationPeriodDates/calculationPeriodFrequency are different.
            See also: 
            
frequency equivalence.
         
 
         
       
      
         ird-8 (Mandatory)
         
         
            payerPartyReference/@href and 
            receiverPartyReference/@href must not be the same.
         
         
       
      
         ird-9 (Mandatory)
         
         
            calculationPeriodAmount/calculation/compoundingMethod can 
            only be present if a 
            resetDates element is present.
         
         
       
      
         
            
            					Context: 
            
            					calculationPeriodDates
         
      
      
         ird-10 (Mandatory)
         
         
         This rule applies when calculationPeriodFrequency/rollConvention
            is a number. Let the start date be
            firstRegularPeriodStartDate if it exists, or
            effectiveDate/unadjustedDate otherwise:
            If calculationPeriodFrequency/rollConvention is
            less than or equal to the last day of the month in 
            the start date, then the day of
            the start date must match it. Otherwise the
            day of the start date must be the last day of
            the month of that date.
            
         
         
       
      
         ird-11 (Mandatory)
         
         
         This rule applies when calculationPeriodFrequency/rollConvention is
            a number.
            Let the end date be lastRegularPeriodEndDate if it
            exists, or terminationDate/unadjustedDate otherwise:
            If calculationPeriodFrequency/rollConvention is
            less than or equal to the last day of the month in 
            the end date, then the day of
            the end date must match it. Otherwise the
            day of the end date must be the last day of
            the month of that date.
            
         
         
       
      
         ird-12 (Mandatory)
         
         
         The frequency specified in 
            
calculationPeriodFrequency must divide the 
            
regular period precisely. This means that by stepping
            through the period from the start date at the specified frequency, it
            must be possible to reach the end date.
         
 
      
         ird-14 (Mandatory)
         
         
         
            terminationDate/unadjustedDate > 
            effectiveDate/unadjustedDate. 
            
         
         
       
      
         ird-15 (Mandatory)
         
         
         
            terminationDate/unadjustedDate > 
            firstPeriodStartDate/unadjustedDate. 
            
         
         
       
      
         ird-16 (Mandatory)
         
         
         
            terminationDate/unadjustedDate > 
            firstRegularPeriodStartDate.
         
         
       
      
         ird-17 (Mandatory)
         
         
         
            terminationDate/unadjustedDate > 
            lastRegularPeriodEndDate.
         
         
       
      
         ird-18 (Mandatory)
         
         
         
            lastRegularPeriodEndDate > 
            firstRegularPeriodStartDate.
         
         
       
      
         ird-19 (Mandatory)
         
         
         
            lastRegularPeriodEndDate > 
            firstPeriodStartDate/unadjustedDate.
         
         
       
      
         ird-20 (Mandatory)
         
         
         lastRegularPeriodEndDate >
            effectiveDate/unadjustedDate
         
       
      
         ird-21 (Mandatory)
         
         
         firstPeriodStartDate/unadjustedDate <
            effectiveDate/unadjustedDate
         
       
      
         ird-22 (Mandatory)
         
         
         firstPeriodStartDate/unadjustedDate <
            firstRegularPeriodStartDate
         
       
      
         ird-57 (Mandatory)
         
         
         
            If rollConvention is neither NONE nor 
            SFE, nor a day of the week (
            MON, TUE,  WED,
            THU, FRI,  SAT or SUN)
            then the period must be 
            M or Y.
            
         
         
       
      
         ird-58 (Mandatory)
         
         
         
            If rollConvention is a day of the week (
            MON, TUE,  WED,
            THU, FRI,  SAT or SUN)
            then the period must be W.
            
         
         
       
      
         
            
            					Context: 
            
            					stubCalculationPeriodAmount
         
      
      
         ird-23 (Mandatory)
         
         
            initialStub should only be present if the 
            
calculationPeriodDates element referenced by 
            
calculationPeriodDates/@href contains at least one of: 
            
            
               
               - 
                  firstPeriodStartDate
                  
               
- 
                  firstRegularPeriodStartDate
                  
               
 
         
       
      
         ird-24 (Mandatory)
         
         
            finalStub should only be present if the 
            calculationPeriodDates element referenced by 
            calculationPeriodDates/@href contains a 
            lastRegularPeriodEndDate element.
         
         
       
      
         
            
            					Context: 
            
            					Schedule (data type)
         
      
      
         ird-25 (Mandatory)
         
         If there are no 
            step elements then 
            initialValue must be non-zero.
         
         
       
      
         
            
            					Context: 
            
            					businessCentersReference
         
      
      
         ird-26 (Mandatory)
         
         The 
            @href attribute must match the 
            @id attribute of a 
            businessCenters element somewhere within the
            document.
         
         
       
      
         
            
            					Context: 
            
            					MandatoryEarlyTermination (data type)
         
      
      
         ird-27 (Mandatory)
         
         
            cashSettlement/cashSettlementPaymentDate must not be
            present.
         
         
       
      
         ird-28 (Mandatory)
         
         In 
            cashSettlement/cashSettlementValuationDate/dateRelativeTo, the 
            @href attribute must point to the 
            @id attribute of mandatoryEarlyTerminationDate.
         
         
       
      
         
            
            					Context: 
            
            					Calculation (data type)
         
      
      
         ird-29 (Mandatory)
         
         If 
            compoundingMethod is present then 
            floatingRateCalculation must be present.
         
         
       
      
         
            
            					Context: 
            
            					CalculationPeriod (data type)
         
      
      
         ird-30 (Mandatory)
         
         Must contain either 
            unadjustedStartDate or 
            adjustedStartDate.
         
         
       
      
         ird-31 (Mandatory)
         
         Must contain either 
            unadjustedEndDate or 
            adjustedEndDate.
         
         
       
      
         
            
            					Context: 
            
            					Discounting (data type)
         
      
      
         ird-32 (Mandatory)
         
         If 
            discountRate is absent then 
            discountRateDayCountFraction must also be absent.
         
         
       
      
         
            
            					Context: 
            
            					Fra (data type)
         
      
      
         ird-33 (Mandatory)
         
         
            adjustedTerminationDate> 
            adjustedEffectiveDate.
         
         
       
      
         
            
            					Context: 
            
            					PaymentCalculationPeriod (data type)
         
      
      
         ird-34 (Mandatory)
         
         Either 
            unadjustedPaymentDate or 
            adjustedPaymentDate must be present.
         
         
       
      
         
            
            					Context: 
            
            					PaymentDates (data type)
         
      
      
         ird-35 (Mandatory)
         
         
            firstPaymentDate < 
            lastRegularPaymentDate.
         
         
       
      
         ird-36 (Mandatory)
         
         If both 
            firstPaymentDate and 
            lastRegularPaymentDate are present then the period defined by
            these dates must be an integer multiple of 
            paymentFrequency.
         
         
       
      
         
            
            					Context: 
            
            					StubCalculationPeriodAmount (data type)
         
      
      
         ird-38 (Mandatory)
         
         Either 
            initialStub or 
            finalStub must be present.
         
         
       
      
         
            
            					Context: 
            
            					EarlyTerminationEvent (data type)
         
      
      
         ird-39 (Mandatory)
         
         
            adjustedExerciseDate <= 
            adjustedEarlyTerminationDate
         
       
      
         ird-40 (Mandatory)
         
         
            adjustedExerciseDate <= 
            adjustedCashSettlementValuationDate
         
       
      
         ird-41 (Mandatory)
         
         
            adjustedCashSettlementValuationDate <= 
            adjustedCashSettlementPaymentDate
         
       
      
         
            
            					Context: 
            
            					ExtensionEvent (data type)
         
      
      
         ird-42 (Mandatory)
         
         
            adjustedExerciseDate < 
            adjustedExtendedTerminationDate
         
       
      
         
            
            					Context: 
            
            					FxLinkedNotionalAmount (data type)
         
      
      
         ird-43 (Mandatory)
         
         At least one element must be present
         
       
      
         
            
            					Context: 
            
            					MandatoryEarlyTerminationAdjustedDates (data type)
         
      
      
         ird-44 (Mandatory)
         
         
            adjustedEarlyTerminationDate <= 
            adjustedCashSettlementValuationDate <= 
            adjustedCashSettlementPaymentDate
         
       
      
         
            
            					Context: 
            
            					OptionalEarlyTermination (data type)
         
      
      
         ird-46 (Mandatory)
         
         In 
            cashSettlement/cashSettlementValuationDate/dateRelativeTo, the 
            @href attribute must point to the 
            @id attribute of 
            cashSettlement/cashSettlementPaymentDate.
         
         
       
      
         ird-47 (Mandatory)
         
         In 
            
                     cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo,
            the 
            @href attribute must point to the 
            @id attribute of 
            americanExercise, 
            bermudaExercise or 
            europeanExercise, whichever one is present.
         
         
       
      
         
            
            					Context: 
            
            					Swaption (data type)
         
      
      
         ird-48 (Mandatory)
         
         In 
            
                     cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo,
            the 
            @href attribute must point to the 
            @id attribute of 
            americanExercise, 
            bermudaExercise or 
            europeanExercise, whichever one is present. 
         
         
       
      
         
            
            					Context: 
            
            					ResetFrequency (data type)
         
      
      
         ird-49 (Mandatory)
         
         
            weeklyRollConventionshould be present if and only if the period
            is 
            W
         
       
      
         
            
            					Context: 
            
            					notionalStepSchedule
         
      
      
      
         
            
            					Context: 
            
            					fixedRateSchedule
         
      
      
      
         
            
            					Context: 
            
            					capRateSchedule
         
      
      
      
         
            
            					Context: 
            
            					floorRateSchedule
         
      
      
      
         
            
            					Context: 
            
            					knownAmountSchedule
         
      
      
      
         
            
            					Context: 
            
            					paymentDates
         
      
      
         ird-55 (Mandatory)
         
         
            	If calculationPeriodDatesReference exists it shall match with 
            	calculationPeriodDates in the nearest containing element of type 
            	InterestRateStream
            
         
         
       
      
         ird-56 (Mandatory)
         
         
            	If resetDatesReference exists then it shall match with resetDates 
            	in the nearest containing element of type InterestRateStream.
            
         
         
       
      Deprecated rules