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

This is the Credit Derivatives part of the validation rule set accompanying the FpML 4.4 Recommendation. 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/2007/FpML-4-4

Preconditions

The Validation Preconditions only apply when specific rules reference them. The following preconditions 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 precondition.

Precondition: ISDA1999
(context: Trade) (context: Contract) The documentation/contractualDefinitions element or the documentation/masterConfirmation/masterConfirmationType element contains ISDA1999Credit.
Precondition: ISDA2003
(context: Trade) (context: Contract) Some documentation/contractualDefinitions element begins with the string ISDA2003Credit (this includes ISDA2003CreditJapan, etc.) or the documentation/masterConfirmation/masterConfirmationType element begins with the string ISDA2003Credit or ISDA2004Credit.
Precondition: ShortForm
(context: Trade) (context: Contract) documentation/masterConfirmation exists, or documentation/contractualMatrix exists, or documentation/contractualTermsSupplement exists and documentation/contractualTermsSupplement/type begins with string iTraxx or CDX.
Precondition: LongForm
(context: Trade) (context: Contract) documentation/masterConfirmation and documentation/contractualMatrix do not exist and SingleName precondition applies.
Precondition: SameCurrency
Every element of type Money should have the same currency.
Precondition: SingleName
(context: Trade) (context: Contract) creditDefaultSwap/generalTerms/referenceInformation exists.
Precondition: CreditIndex
(context: CreditDefaultSwap) generalTerms/indexReferenceInformation exists and generalTerms/indexReferenceInformation/tranche does not exist.
Precondition: quotationAmount
(context: CashSettlementTerms) quotationAmount exists.
Precondition: minimumQuotationAmount
(context: CashSettlementTerms) minimumQuotationAmount exists.

Rules

Unique contexts:

Context: Trade (complex type)

cd-1 (Mandatory)
Preconditions: SingleName
tradeHeader/tradeDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-1b (Mandatory)
Preconditions: CreditIndex
If creditDefaultSwap/generalTerms/effectiveDate exists, tradeHeader/tradeDate must be greater than or equal tocreditDefaultSwap/generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Valid] [Invalid]
cd-2 (Mandatory)
If calculationAgent exists, it may contain only calculationAgentPartyReference elements or calculationAgentParty with the value AsSpecifiedInMasterAgreement.
Test cases: [Valid] [Valid] [Invalid]
cd-3 (Mandatory)
DEPRECATED: The content of documentation/contractualSupplement must not begin with the string ISDA2003Credit. Rationale for deprecation: the rule has been replaced by the reference rule number 3b (cd-3b).
Test cases: [Valid] [Invalid]
cd-4 (Mandatory)
DEPRECATED: Every documentation/contractualSupplement must not begin with the string ISDA1999Credit. Rationale for deprecation: the rule has been replaced by the reference rule number 4b (cd-4b).
Test cases: [Valid] [Invalid]

Context: ContractualTermsSupplement (complex type)

cd-3b (Mandatory)
Preconditions: ISDA1999
The content of type must not begin with the string ISDA2003Credit.
Test cases: [Valid] [Invalid]
cd-4b (Mandatory)
Preconditions: ISDA2003
The content of type must not begin with the string ISDA1999Credit.
Test cases: [Valid] [Invalid]

Context: GeneralTerms (complex type)

cd-5 (Mandatory)
If effectiveDate and scheduledTerminationDate both exist, 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 exist.
Test cases: [Valid] [Invalid]
cd-8 (Mandatory)
Preconditions: LongForm
If scheduledTerminationDate exists, then scheduledTerminationDate/adjustableDate/dateAdjustments or scheduledTerminationDate/adjustableDate/dateAdjustmentsReference must exist.
Test cases: [Valid] [Invalid]
cd-41 (Mandatory)
If indexReferenceInformation/tranche does not exist then modifiedEquityDelivery must not exist.
Test cases: [Invalid]
cd-42 (Mandatory)
If basketReferenceInformation does not exist then substitution must not exist.
Test cases: [Invalid]

Context: ReferenceInformation (complex 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 exist.
Test cases: [Valid] [Invalid]
cd-12 (Mandatory)
If referencePrice exists, then its value must be greater than or equal to zero.
Test cases: [Valid] [Valid] [Invalid]

Context: CreditDefaultSwap (complex type)

cd-13 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference exists, its @href attribute must match that of generalTerms/buyerPartyReference.
Test cases: [Valid] [Invalid]
cd-14 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference exists, 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 exists, 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 exist: protectionTerms/creditEvents/creditEventNotice/businessCenter, protectionTerms/creditEvents/restructuring/multipleHolderObligation, protectionTerms/creditEvents/restructuring/multipleCreditEventNotices, generalTerms/referenceInformation/allGuarantees, generalTerms/indexReferenceInformation, generalTerms/substitution, generalTerms/modifiedEquityDelivery.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-20 (Mandatory)
Preconditions: ISDA2003
protectionTerms/obligations/notContingent must not exist.
Test cases: [Valid] [Invalid]
cd-21 (Mandatory)
Preconditions: ShortForm SingleName
The following elements must not exist: cashSettlementTerms, physicalSettlementTerms, 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-21b (Mandatory)
Preconditions: ShortForm CreditIndex
The following elements must not exist: cashSettlementTerms, physicalSettlementTerms, feeLeg/periodicPayment/fixedAmountCalculation/calculationAmount, feeLeg/periodicPayment/fixedAmountCalculation/dayCountFraction, protectionTerms/obligations, generalTerms/effectiveDate/dateAdjustments, generalTerms/effectiveDate/dateAdjustmentsReference, generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustments, generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustmentsReference, generalTerms/dateAdjustments, protectionTerms/creditEvents.
cd-22 (Mandatory)
Preconditions: ShortForm
The following elements must not exist: protectionTerms/creditEvents/bankruptcy, protectionTerms/creditEvents/failureToPay, protectionTerms/creditEvents/repudiationMoratorium, protectionTerms/creditEvents/obligationDefault, protectionTerms/creditEvents/obligationAcceleration.
Test cases: [Valid] [Invalid]
cd-23 (Mandatory)
Preconditions: LongForm
cashSettlementTerms or physicalSettlementTerms must exist.
Test cases: [Valid] [Valid] [Valid] [Invalid]
cd-24 (Mandatory)
Preconditions: LongForm
The following elements must exist: protectionTerms/creditEvents/creditEventNotice, protectionTerms/obligations, generalTerms/referenceInformation/referencePrice.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-25 (Mandatory)
Preconditions: LongForm
If physicalSettlementTerms exists them it must contain settlementCurrency, physicalSettlementPeriod, escrow and deliverableObligations/accruedInterest.
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-26 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate exists, then feeLeg/singlePayment/adjustablePaymentDate > generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-27 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate and generalTerms/scheduledTerminationDate/adjustableDate exist, then feeLeg/singlePayment/adjustablePaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-28 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate exists, then feeLeg/periodicPayment/firstPaymentDate > generalTerms/effectiveDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-29 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate exist, then feeLeg/periodicPayment/firstPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid]
cd-30 (Mandatory)
If feeLeg/periodicPayment/lastRegularPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate exist, then feeLeg/periodicPayment/lastRegularPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
Test cases: [Valid] [Invalid] [Invalid]
cd-43 (Mandatory)
Preconditions: SingleName
If feeLeg/initialPayment exists, then feeLeg/initialPayment/payerPartyReference/@href must be equal to generalTerms/sellerPartyReference/@href and feeLeg/initialPayment/receiverPartyReference/@href must be equal to generalTerms/buyerPartyReference/@href
Test cases: [Invalid] [Invalid]

Context: PeriodicPayment (complex 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/calculationAmount then fixedAmountCalculation/dayCountFraction must also exist.
Test cases: [Valid] [Invalid] [Invalid]
cd-33 (Mandatory)
If both firstPaymentDate and lastRegularPaymentDate exist, 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 (complex 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 (complex type)

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

Context: PubliclyAvailableInformation (complex type)

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

Context: CashSettlementTerms (complex type)

cd-37 (Mandatory)
Preconditions: SameCurrency quotationAmount minimumQuotationAmount
quotationAmount/amount >= minimumQuotationAmount/amount.
Test cases: [Valid] [Valid] [Invalid]

Context: ReferencePool (complex type)

cd-38 (Mandatory)
The sum of referencePoolItem/constituentWeight/basketPercentage is equal to 1 or no referencePoolItem/constituentWeight exists.
Test cases: [Invalid]
cd-44 (Mandatory)
All referencePoolItem/constituentWeight must have the same name of child element.
Test cases: [Invalid]

Context: BasketReferenceInformation (complex type)

cd-39 (Mandatory)
If nthToDefault exists and mthToDefault exists then nthToDefault must be less than mthToDefault.
Test cases: [Invalid]

Context: Tranche (complex type)

cd-40 (Mandatory)
attachmentPoint must be less than or equal to exhaustionPoint.
Test cases: [Invalid]

Deprecated rules

cd-3 (Mandatory)
DEPRECATED: The content of documentation/contractualSupplement must not begin with the string ISDA2003Credit. Rationale for deprecation: the rule has been replaced by the reference rule number 3b (cd-3b).
Test cases: [Valid] [Invalid]
cd-4 (Mandatory)
DEPRECATED: Every documentation/contractualSupplement must not begin with the string ISDA1999Credit. Rationale for deprecation: the rule has been replaced by the reference rule number 4b (cd-4b).
Test cases: [Valid] [Invalid]

Removed rules