FpML 4.2 Validation Rules - Rules for Credit Derivatives (CD)

This is the IRD part of the validation rule set accompanying the FpML 4.2 Working Draft. The introductory section in the recommendation 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: ISDA2003
The documentation/contractualDefinitions element or the documentation/masterConfirmation/masterConfirmationType element begins with the substring ISDA2003Credit. (This includes ISDA2003CreditJapan, etc.)
Precondition: ShortForm
documentation/masterConfirmation is present.
Precondition: LongForm
documentation/masterConfirmation is not present.
Precondition: SameCurrency
All instances of currency values must be identical.

Rules

Unique contexts:

Context: Trade

cd-1 (Mandatory)
tradeHeader/tradeDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-2 (Mandatory)
If calculationAgent is present, it may contain only calculationAgentPartyReference elements.
Test cases: [Valid] [Invalid]
cd-3 (Mandatory)
Preconditions: ISDA1999
documentation/contractualSupplement must not begin with the substring ISDA2003Credit.
Test cases: [Valid] [Invalid]
cd-4 (Mandatory)
Preconditions: ISDA2003
documentation/contractualSupplement must not begin with the substring ISDA1999Credit.
Test cases: [Valid] [Invalid]

Context: GeneralTerms (data type)

cd-5 (Mandatory)
If element scheduledTerminationDate/adjustableDate exists, then effectiveDate/unadjustedDate < scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-6 (Mandatory)
buyerPartyReference/@href must not be equal to sellerPartyReference/@href.
Test cases: [Valid] [Invalid]
cd-7 (Mandatory)
Preconditions: LongForm
effectiveDate/dateAdjustments or effectiveDate/dateAdjustmentsReference must be present.
Test cases: [Valid] [Invalid]
cd-8 (Mandatory)
Preconditions: LongForm
scheduledTerminationDate/adjustableDate/eAdjustments or scheduledTerminationDate/adjustableDate/dateAdjustmentsReference must be present.
Test cases: [Valid] [Invalid]

Context: ReferenceInformation (data type)

cd-9 (Mandatory)
If referenceObligation/primaryObligorReference exists, then the attribute @href of this element must be equal to the @id attribute of referenceEntity.
Test cases: [Valid] [Invalid]
cd-10 (Mandatory)
If referenceObligation/guarantorReference exists, then the attribute @href of this element must be equal to the @id attribute of referenceEntity.
Test cases: [Valid] [Invalid]
cd-11 (Mandatory)
Preconditions: LongForm ISDA2003
allGuarantees must be present.
Test cases: [Valid] [Invalid]

Context: ReferenceObligation (data type)

cd-12 (Mandatory)
If referencePrice exists, then its value must be greater than or equal to zero.
Test cases: [Valid] [Valid] [Invalid]

Context: CreditDefaultSwap (data type)

cd-13 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference is present, its @href attribute must match that of generalTerms/buyerPartyReference.
Test cases: [Valid] [Invalid]
cd-14 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference is present, its @href attribute must match that of generalTerms/sellerPartyReference.
Test cases: [Valid] [Invalid]
cd-15 (Mandatory)
If there is exactly one generalTerms/referenceInformation/referenceObligation, and cashSettlementTerms/valuationDate/singleValuationDate occurs, then the value of cashSettlementTerms/valuationMethod must be Market or Highest.
Test cases: [Valid] [Valid] [Invalid]
cd-16 (Mandatory)
If there is exactly one generalTerms/referenceInformation/referenceObligation, and cashSettlementTerms/valuationDate/multipleValuationDates exists, then the value of cashSettlementTerms/valuationMethod must be AverageMarket, Highest, or AverageHighest.
Test cases: [Valid] [Invalid]
cd-17 (Mandatory)
If there is more than one generalTerms/referenceInformation/referenceObligation, and cashSettlementTerms/valuationDate/singleValuationDate exists, then the value of cashSettlementTerms/valuationMethod must be BlendedMarket or BlendedHighest.
Test cases: [Valid] [Invalid]
cd-18 (Mandatory)
If there is more than one generalTerms/referenceInformation/referenceObligation, and cashSettlementTerms/valuationDate/multipleValuationDates exists, then the value of cashSettlementTerms/valuationMethod must be AverageBlendedMarket or AverageBlendedHighest.
Test cases: [Valid] [Valid] [Invalid]
cd-19 (Mandatory)
Preconditions: ISDA1999
The following elements must not be present: protectionTerms/creditEvents/creditEventNotice/businessCenter, protectionTerms/creditEvents/restructuring/multipleHolderObligation, protectionTerms/creditEvents/restructuring/multipleCreditEventNotices, generalTerms/referenceInformation/allGuarantees.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-20 (Mandatory)
Preconditions: ISDA2003
protectionTerms/obligation/notContingent must not be present.
Test cases: [Valid] [Invalid]
cd-21 (Mandatory)
Preconditions: ShortForm
The following elements must not be present: cashSettlementTerms, feeLeg/periodicPayment/fixedAmountCalculation/calculationAmount, feeLeg/periodicPayment/fixedAmountCalculation/dayCountFraction, protectionTerms/obligations, generalTerms/referenceInformation/allGuarantees, generalTerms/referenceInformation/referencePrice, generalTerms/effectiveDate/dateAdjustments, generalTerms/effectiveDate/dateAdjustmentsReference, generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustments, generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustmentsReference, generalTerms/dateAdjustments.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-22 (Mandatory)
Preconditions: ShortForm
In protectionTerms/creditEvents, no element except restructuring must be present.
Test cases: [Valid] [Invalid]
cd-23 (Mandatory)
Preconditions: LongForm
cashSettlementTerms or physicalSettlementTerms must be present.
Test cases: [Valid] [Invalid]
cd-24 (Mandatory)
Preconditions: LongForm
The following elements must be present: protectionTerms/creditEvents, protectionTerms/creditEvents/creditEventNotice, protectionTerms/obligations, generalTerms/referenceInformation/referencePrice.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-25 (Mandatory)
Preconditions: LongForm
If physicalSettlementTerms is present them it must contain settlementCurrency, physicalSettlementPeriod, escrow and deliverableObligations/accruedInterest.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-26 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate is present, then feeLeg/singlePayment/adjustablePaymentDate > generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-27 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/singlePayment/adjustablePaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-28 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate is present, then feeLeg/periodicPayment/firstPaymentDate > generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-29 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/periodicPayment/firstPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-30 (Mandatory)
If feeLeg/periodicPayment/lastRegularPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/periodicPayment/lastRegularPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]

Context: PeriodicPayment (data type)

cd-31 (Mandatory)
If both element firstPaymentDate and lastRegularPaymentDate exist, then firstPaymentDate < lastRegularPaymentDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-32 (Mandatory)
Preconditions: LongForm
If fixedAmountCalculation is present, it must contain calculationAmount and dayCountFraction.
Test cases: [Valid] [Invalid] [Invalid]
cd-33 (Mandatory)
If both firstPaymentDate and lastRegularPaymentDate are present, then lastRegularPaymentDate must fall precisely on a date reachable by adding an integer multiple of the period in paymentFrequency to firstPaymentDate.
Test cases: [Valid] [Invalid] [Invalid]

Context: DeliverableObligations (data type)

cd-34 (Mandatory)
If the value of category is ReferenceObligationsOnly, then no other elements may be contained in the deliverable obligations element.
Test cases: [Valid] [Invalid]

Context: CreditEvents (data type)

cd-35 (Mandatory)
At least one child element must be present.
Test cases: [Valid] [Invalid]

Context: PubliclyAvailableInformation (data type)

cd-36 (Mandatory)
Either standardPublicSources or at least one publicSource element must be present.
Test cases: [Valid] [Valid] [Invalid]

Context: CashSettlementTerms (data type)

cd-37 (Mandatory)
Preconditions: SameCurrency
quotationAmount/amount >= minimumQuotationAmount/amount, if both elements are present.
Test cases: [Valid] [Valid] [Invalid]

Deprecated rules