FpML 4.5 Validation Rules - Rules for Interest Rate Derivatives (IRD)

This is the Interest Rate Derivatives part of the validation rule set accompanying the FpML 4.5 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

Namespace

default element namespace = http://www.fpml.org/2008/FpML-4-5

namespace xs = http://www.w3.org/2001/XMLSchema

namespace functx = http://www.functx.com

Definitions

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: iff(period elements are equal, If the period multipliers of a pair of frequencies are equivalent then they are equal). For the purpose of calculating multiples of periods, the following additional rule holds:
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:
Term: the schedule implied by
The schedule defined by the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs, and the calculation period frequency.

Conditions

The Validation Conditions only apply when specific rules reference them. The following conditions 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 condition.

Condition: isFloating
(context: InterestRateStream) resetDates exists.
Condition: hasInitialStub
(context: InterestRateStream) paymentDates/firstPaymentDate exists.

Functions

The following shared functions are used in the rules.

Rules

Unique contexts:

ird-1 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
resetDates must exist if and only if a floatingRateCalculation or inflationRateCalculation exists in the calculationPeriodAmount/calculation element
Formal Description:
Context: InterestRateStream (complex type)
iff(exists(resetDates), exists(calculationPeriodAmount/calculation/floatingRateCalculation) or exists(calculationPeriodAmount/calculation/inflationRateCalculation))
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-2 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
paymentDates/paymentFrequency is equal to an integer multiple (could be 1) of calculationPeriodDates/calculationPeriodFrequency. See also: frequency equivalence
Test cases: [Valid] [Valid] [Valid] [Invalid] [Invalid]
ird-3 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
paymentDates/firstPaymentDate is equal to one of the unadjusted calculation period dates
Test cases: [Valid] [Valid] [Valid] [Invalid] [Invalid] [Invalid]
ird-4 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
paymentDates/lastRegularPaymentDate is equal to one of the unadjusted calculation period dates
Test cases: [Valid] [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-5 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The frequency in calculationPeriodDates/calculationPeriodFrequency must be an integer multiple of the frequency in resetDates/resetFrequency. See also: frequency equivalence
Formal Description:
Context: InterestRateStream (complex type)
[(cashflows/cashflowsMatchParameters eq true) or (not(exists(cashflows)))] [exists(resetDates)]
The frequency in calculationPeriodDates/calculationPeriodFrequency must be an integer multiple of the frequency in resetDates/resetFrequency. See also: frequency equivalence
Test cases: [Valid] [Valid] [Invalid] [Invalid]
ird-6 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
If paymentDates/firstPaymentDate exists, and if calculationPeriodDates/effectiveDate exists, then paymentDates/firstPaymentDate must be after calculationPeriodDates/effectiveDate/unadjustedDate
Formal Description:
Context: InterestRateStream (complex type)
[exists(paymentDates/firstPaymentDate)] [exists(calculationPeriodDates/effectiveDate)]
paymentDates/firstPaymentDate gt calculationPeriodDates/effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid]
ird-7 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The existence of compoundingMethod is required when the frequencies differ, and prohibited when they are the same
Formal Description:
Context: InterestRateStream (complex type)
exists(calculationPeriodAmount/calculation/compoundingMethod) eq different-frequencies((paymentDates/paymentFrequency, calculationPeriodDates/calculationPeriodFrequency))
Test cases: [Valid] [Valid] [Invalid] [Invalid]
ird-8 (Mandatory)
English Description:
Context: InterestRateStream
The @href attribute of payerPartyReference must not be equal to the @href attribute of receiverPartyReference
Formal Description:
Context: InterestRateStream
payerPartyReference/@href ne receiverPartyReference/@href
Test cases: [Valid] [Invalid]
ird-9 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
If calculationPeriodAmount/calculation/compoundingMethod exists, then resetDates must exist
Formal Description:
Context: InterestRateStream (complex type)
[exists(calculationPeriodAmount/calculation/compoundingMethod)]
exists(resetDates)
Test cases: [Valid] [Invalid]
ird-10 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
The first day is the day of the month from firstRegularPeriodStartDate if it exists, otherwise from effectiveDate/unadjustedDate. The second day is the lesser of the rollConvention, and the firstRegularPeriodStartDate if it exist or the effectiveDate/unadjustedDate if it doesn't. The first day must equal the second day.
Formal Description:
Context: CalculationPeriodDates (complex type)
[calculationPeriodFrequency/rollConvention is a number]
dayFromDate((firstRegularPeriodStartDate, effectiveDate/unadjustedDate)[1]) = min(calculationPeriodFrequency/rollConvention, dayFromDate(functx:last-day-of-month((firstRegularPeriodStartDate, effectiveDate/unadjustedDate)[1])))
Comment: Reference: http://www.xqueryfunctions.com/xq/functx_last-day-of-month.html
Test cases: [Valid] [Valid] [Valid] [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-11 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If lastRegularPeriodEndDate exists, then the end date is lastRegularPeriodEndDate, else the end date is terminationDate/unadjustedDate. 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, else the day of the end date must be the last day of the month of that date.
Formal Description:
Context: CalculationPeriodDates (complex type)
[calculationPeriodFrequency/rollConvention is a number]
dayFromDate((lastRegularPeriodEndDate, terminationDate/unadjustedDate)[1]) = min(calculationPeriodFrequency/rollConvention, dayFromDate(functx:last-day-of-month((lastRegularPeriodEndDate, effectiveDate/unadjustedDate)[1])))
Test cases: [Valid] [Valid] [Valid] [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-12 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
The frequency specified in calculationPeriodFrequency must divide the 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.
Test cases: [Valid] [Valid] [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-14 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
terminationDate/unadjustedDate must be after effectiveDate/unadjustedDate
Formal Description:
Context: CalculationPeriodDates (complex type)
terminationDate/unadjustedDate gt effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
ird-16 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If firstRegularPeriodStartDate exists within any element of type CalculationPeriodDates, then terminationDate/unadjustedDate must be after firstRegularPeriodStartDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(//element(*, CalculationPeriodDates)/firstRegularPeriodStartDate)]
terminationDate/unadjustedDate gt firstRegularPeriodStartDate
Test cases: [Valid] [Invalid] [Invalid]
ird-17 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If lastRegularPeriodEndDate exists, then terminationDate/unadjustedDate must be after lastRegularPeriodEndDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(lastRegularPeriodEndDate)]
terminationDate/unadjustedDate gt lastRegularPeriodEndDate
Test cases: [Valid] [Invalid]
ird-18 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If firstRegularPeriodStartDate exists, and if lastRegularPeriodEndDate exists, then lastRegularPeriodEndDate must be after firstRegularPeriodStartDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(firstRegularPeriodStartDate)] [exists(lastRegularPeriodEndDate)]
lastRegularPeriodEndDate gt firstRegularPeriodStartDate
Test cases: [Valid] [Invalid] [Invalid]
ird-20 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If lastRegularPeriodEndDate exists, then lastRegularPeriodEndDate must be after effectiveDate/unadjustedDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(lastRegularPeriodEndDate)]
lastRegularPeriodEndDate gt effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid]
ird-21 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If firstPeriodStartDate exists, then firstPeriodStartDate/unadjustedDate must be before effectiveDate/unadjustedDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(firstPeriodStartDate)]
firstPeriodStartDate/unadjustedDate lt effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
ird-22 (Mandatory)
English Description:
Context: CalculationPeriodDates (complex type)
If firstPeriodStartDate exists, and if firstRegularPeriodStartDate exists, then firstPeriodStartDate/unadjustedDate must be before firstRegularPeriodStartDate
Formal Description:
Context: CalculationPeriodDates (complex type)
[exists(firstPeriodStartDate)] [exists(firstRegularPeriodStartDate)]
firstPeriodStartDate/unadjustedDate lt firstRegularPeriodStartDate
Test cases: [Valid] [Invalid] [Invalid]
ird-23 (Mandatory)
English Description:
Context: StubCalculationPeriodAmount (complex type)
if stubCalculationPeriodAmount/initialStub exists, the calculationPeriodDates element referenced by the @href attribute of stubCalculationPeriodAmount/calculationPeriodDatesReference contains firstRegularPeriodStartDate
Formal Description:
Context: StubCalculationPeriodAmount (complex type)
[exists(stubCalculationPeriodAmount/initialStub)]
exists(id(stubCalculationPeriodAmount/calculationPeriodDatesReference/@href)/firstRegularPeriodStartDate)
Test cases: [Valid] [Valid] [Invalid]
ird-24 (Mandatory)
English Description:
Context: StubCalculationPeriodAmount (complex type)
finalStub exists if and only if the calculationPeriodDates element referenced by calculationPeriodDates/@href contains a lastRegularPeriodEndDate element
Formal Description:
Context: StubCalculationPeriodAmount (complex type)
iff(exists(finalStub), exists(id(calculationPeriodDates/@href)/lastRegularPeriodEndDate)
Test cases: [Valid] [Invalid]
ird-25 (Mandatory)
English Description:
Context: Schedule (complex type)
If step does not exist, then initialValue must not be equal to 0
Formal Description:
Context: Schedule (complex type)
[not(exists(step))]
initialValue ne 0
Test cases: [Valid] [Valid] [Invalid]
ird-27 (Mandatory)
English Description:
Context: MandatoryEarlyTermination (complex type)
cashSettlement/cashSettlementPaymentDate must not exist
Formal Description:
Context: MandatoryEarlyTermination (complex type)
not(exists(cashSettlement/cashSettlementPaymentDate))
Test cases: [Valid] [Invalid]
ird-29 (Mandatory)
English Description:
Context: Calculation (complex type)
If compoundingMethod exists, then fixedRateSchedule must not exist
Formal Description:
Context: Calculation (complex type)
[exists(compoundingMethod)]
not(exists(fixedRateSchedule))
Test cases: [Valid] [Invalid]
ird-30 (Mandatory)
English Description:
Context: CalculationPeriod (complex type)
unadjustedStartDate exists or adjustedStartDate exists
Formal Description:
Context: CalculationPeriod (complex type)
exists(unadjustedStartDate) or exists(adjustedStartDate)
Test cases: [Valid] [Valid] [Invalid]
ird-31 (Mandatory)
English Description:
Context: CalculationPeriod (complex type)
unadjustedEndDate exists or adjustedEndDate exists
Formal Description:
Context: CalculationPeriod (complex type)
exists(unadjustedEndDate) or exists(adjustedEndDate)
Test cases: [Valid] [Valid] [Invalid]
ird-33 (Mandatory)
English Description:
Context: Fra (complex type)
adjustedTerminationDate must be after adjustedEffectiveDate
Formal Description:
Context: Fra (complex type)
adjustedTerminationDate gt adjustedEffectiveDate
Test cases: [Valid] [Invalid]
ird-34 (Mandatory)
English Description:
Context: PaymentCalculationPeriod (complex type)
Either unadjustedPaymentDate or adjustedPaymentDate must exist
Formal Description:
Context: PaymentCalculationPeriod (complex type)
exists(unadjustedPaymentDate) or exists(adjustedPaymentDate)
Test cases: [Valid] [Valid] [Invalid]
ird-35 (Mandatory)
English Description:
Context: PaymentDates (complex type)
If firstPaymentDate exists, and if lastRegularPaymentDate exists, then firstPaymentDate must be before lastRegularPaymentDate
Formal Description:
Context: PaymentDates (complex type)
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
firstPaymentDate lt lastRegularPaymentDate
Test cases: [Valid] [Invalid] [Invalid]
ird-36 (Mandatory)
Formal Description:
Context: PaymentDates (complex type)
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
The period defined by the dates firstPaymentDate and lastRegularPaymentDate must be an integer multiple of paymentFrequency
Test cases: [Valid] [Invalid]
ird-39 (Mandatory)
English Description:
Context: EarlyTerminationEvent (complex type)
adjustedExerciseDate must be before or equal to adjustedEarlyTerminationDate
Formal Description:
Context: EarlyTerminationEvent (complex type)
adjustedExerciseDate le adjustedEarlyTerminationDate
Test cases: [Valid] [Valid] [Invalid]
ird-40 (Mandatory)
English Description:
Context: EarlyTerminationEvent (complex type)
adjustedExerciseDate must be before or equal to adjustedCashSettlementValuationDate
Formal Description:
Context: EarlyTerminationEvent (complex type)
adjustedExerciseDate le adjustedCashSettlementValuationDate
Test cases: [Valid] [Valid] [Invalid]
ird-41 (Mandatory)
English Description:
Context: EarlyTerminationEvent (complex type)
adjustedCashSettlementValuationDate must be before or equal to adjustedCashSettlementPaymentDate
Formal Description:
Context: EarlyTerminationEvent (complex type)
adjustedCashSettlementValuationDate le adjustedCashSettlementPaymentDate
Test cases: [Valid] [Valid] [Invalid]
ird-42 (Mandatory)
English Description:
Context: ExtensionEvent (complex type)
adjustedExerciseDate must be before adjustedExtendedTerminationDate
Formal Description:
Context: ExtensionEvent (complex type)
adjustedExerciseDate lt adjustedExtendedTerminationDate
Test cases: [Valid] [Invalid] [Invalid]
ird-43 (Mandatory)
English Description:
Context: FxLinkedNotionalAmount (complex type)
At least one element must exist
Formal Description:
Context: FxLinkedNotionalAmount (complex type)
count(//*) ge 1
Test cases: [Valid] [Invalid]
ird-44 (Mandatory)
English Description:
Context: MandatoryEarlyTerminationAdjustedDates (complex type)
adjustedEarlyTerminationDate must be before or equal to adjustedCashSettlementValuationDate must be before or the same as adjustedCashSettlementPaymentDate
Formal Description:
Context: MandatoryEarlyTerminationAdjustedDates (complex type)
adjustedEarlyTerminationDate le adjustedCashSettlementValuationDate le adjustedCashSettlementPaymentDate
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-46 (Mandatory)
English Description:
Context: OptionalEarlyTermination (complex type)
The cashSettlement/cashSettlementValuationDate/dateRelativeTo/@href attribute is equal to the cashSettlement/cashSettlementPaymentDate/@id attribute
Formal Description:
Context: OptionalEarlyTermination (complex type)
[exists(cashSettlement/cashSettlementValuationDate)]
cashSettlement/cashSettlementValuationDate/dateRelativeTo/@href eq cashSettlement/cashSettlementPaymentDate/@id
Test cases: [Valid] [Invalid]
ird-47 (Mandatory)
English Description:
Context: OptionalEarlyTermination (complex type)
The cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo/@href attribute is equal to the americanExercise/@id, bermudaExercise/@id or europeanExercise/@id, whichever one exists
Formal Description:
Context: OptionalEarlyTermination (complex type)
[exists(cashSettlement/cashSettlementPaymentDate)]
cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo/@href eq (americanExercise/@id, bermudaExercise/@id, europeanExercise/@id)
Test cases: [Valid] [Invalid]
ird-48 (Mandatory)
English Description:
Context: Swaption (complex type)
The cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo/@href attribute is equal to the @id attribute of americanExercise, bermudaExercise or europeanExercise, whichever one exists
Formal Description:
Context: Swaption (complex type)
[exists(cashSettlement/cashSettlementPaymentDate)]
cashSettlement/cashSettlementPaymentDate/relativeDate/dateRelativeTo/@href eq (americanExercise/@id, bermudaExercise/@id, europeanExercise/@id)
Test cases: [Valid] [Invalid]
ird-49 (Mandatory)
English Description:
Context: ResetFrequency (complex type)
weeklyRollConvention should exist if and only if the period is "W"
Formal Description:
Context: ResetFrequency (complex type)
iff(exist weeklyRollConvention, period eq "W")
Test cases: [Valid] [Valid] [Invalid] [Invalid]
ird-50 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The dates in calculationPeriodAmount/calculation/notionalSchedule/notionalStepSchedule/step/stepDate must be unadjusted calculation period dates in the schedule implied by calculationPeriodDates.
Comment: The rule states that stepDates must be unadjusted period dates in calculationPeriodDates - but the only explicit dates in calculationPeriodDates are the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs. These dates, in conjunction with the calculation period frequency, imply a schedule of unadjusted period dates; it is this implied schedule which the values of notionalStepSchedule//stepDate must match.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid]
ird-51 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The dates in calculationPeriodAmount/calculation/notionalSchedule/fixedRateSchedule/step/stepDate must be unadjusted calculation period dates in the schedule implied by calculationPeriodDates.
Comment: The rule states that stepDates must be unadjusted period dates in calculationPeriodDates - but the only explicit dates in calculationPeriodDates are the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs. These dates, in conjunction with the calculation period frequency, imply a schedule of unadjusted period dates; it is this implied schedule which the values of fixedRateSchedule//stepDate must match.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-52 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The dates in calculationPeriodAmount/calculation/floatingRateCalculation/capRateSchedule/step/stepDate must be unadjusted calculation period dates in the schedule implied by calculationPeriodDates.
Comment: The rule states that stepDates must be unadjusted period dates in calculationPeriodDates - but the only explicit dates in calculationPeriodDates are the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs. These dates, in conjunction with the calculation period frequency, imply a schedule of unadjusted period dates; it is this implied schedule which the values of capRateSchedule//stepDate must match.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-53 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The dates in calculationPeriodAmount/calculation/floatingRateCalculation/floorRateSchedule/step/stepDate must be unadjusted calculation period dates in the schedule implied by calculationPeriodDates.
Comment: The rule states that stepDates must be unadjusted period dates in calculationPeriodDates - but the only explicit dates in calculationPeriodDates are the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs. These dates, in conjunction with the calculation period frequency, imply a schedule of unadjusted period dates; it is this implied schedule which the values of floorRateSchedule//stepDate must match.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-54 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
The dates in calculationPeriodAmount/knownAmountSchedule/step/stepDate must be unadjusted calculation period dates in the schedule implied by calculationPeriodDates
Comment: The rule states that stepDates must be unadjusted period dates in calculationPeriodDates - but the only explicit dates in calculationPeriodDates are the effective- and termination-Date, together with the "RegularPeriod" dates which may appear optionally in the presence of stubs. These dates, in conjunction with the calculation period frequency, imply a schedule of unadjusted period dates; it is this implied schedule which the values of knownAmountSchedule//stepDate must match.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
ird-57 (Mandatory)
English Description:
Context: CalculationPeriodFrequency (complex type)
When the period is "M" or "Y," the rollConvention cannot be a week day, "NONE" or "SFE"
Formal Description:
Context: CalculationPeriodFrequency (complex type)
[period eq ("M", "Y")]
not(rollConvention = ("NONE", "SFE", "MON", "TUE", "WED", "THU", "FRI", "SAT","SUN"))
Test cases: [Valid] [Valid] [Valid] [Valid] [Invalid]
ird-58 (Mandatory)
English Description:
Context: CalculationPeriodFrequency (complex type)
When the period is "W", the rollConvention must be a week day, "SFE" or "NONE"
Formal Description:
Context: CalculationPeriodFrequency (complex type)
[ period eq "W"]
rollConvention = ("NONE", "SFE", "MON", "TUE", "WED", "THU", "FRI", "SAT","SUN")
ird-59 (Mandatory)
English Description:
Context: InterestRateStream (complex type)
If resetDates exists, in resetDates/calculationPeriodDatesReference, the @href attribute is equal to the @id attribute of calculationPeriodDates in the same swapStream
Formal Description:
Context: InterestRateStream (complex type)
[exists(resetDates)]
id(resetDates/calculationPeriodDatesReference/@href) is calculationPeriodDates
Test cases: [Invalid]
ird-60 (Mandatory)
English Description:
Context: CalculationPeriodFrequency (complex type)
When the period is "T", the rollConvention must be "NONE"
Formal Description:
Context: CalculationPeriodFrequency (complex type)
[ period ="T"]
rollConvention eq "NONE"

Deprecated rules

ird-15 (Mandatory)
DEPRECATED: Context: CalculationPeriodDates; condition: exists(firstPeriodStartDate) Description:terminationDate/unadjustedDate gt firstPeriodStartDate/unadjustedDate Rationale for deprecation: ird-14 and ird-21 make ird-15 redundant
ird-19 (Mandatory)
DEPRECATED: Context: CalculationPeriodDates; conditions: exists(firstPeriodStartDate), exists(lastRegularPeriodEndDate) Description: lastRegularPeriodEndDate gt firstPeriodStartDate/unadjustedDate Rationale for deprecation: ird-20 and ird-21 make ird-19 redundant
ird-26 (Mandatory)
DEPRECATED: Context: BusinessCentersReference; Description: The @href attribute must match the @id attribute of a businessCenters element somewhere within the document. Rationale for deprecation: the rule has been replaced by the reference rule number 39 (ref-39)
ird-28 (Mandatory)
DEPRECATED: Context: MandatoryEarlyTermination; Description: If cashSettlement/cashSettlementValuationDate exists, the cashSettlement/cashSettlementValuationDate/dateRelativeTo/@href attribute is equal to the mandatoryEarlyTerminationDate/@id attribute. Rationale for deprecation: the rule has been replaced by the reference rule number 38 (ref-38)
ird-32 (Mandatory)
DEPRECATED: Context: Discounting; Description: If discountRate is absent then discountRateDayCountFraction must also be absent. Rationale for deprecation: the rule has been replaced by a schema constraint.
ird-38 (Mandatory)
DEPRECATED: Context: StubCalculationPeriodAmount; Description: Either initialStub or finalStub must exist. Rationale for deprecation: the rule has been replaced by a schema constraint.
ird-55 (Mandatory)
DEPRECATED: Context: InterestRateStream Description: The paymentDates/calculationPeriodDatesReference/@href attribute is equal to the calculationPeriodDates/@id attribute. Rationale for deprecation: the rule is an uneeded subset of reference rule number 8 (ref-8)
ird-56 (Mandatory)
DEPRECATED: Context: InterestRateStream; Condition: [exists(paymentDates/resetDatesReference)] [exists(resetDates)]; Description: The paymentDates/resetDatesReference/@href attribute is equal to the resetDates/@id. Rationale for deprecation: the rule is an uneeded subset of reference rule number 12 (ref-12)

Removed rules