# FpML 5.3 Validation Rules - Rules for Credit Derivatives (CD)

This is the Credit Derivatives part of the validation rule set accompanying the FpML 5.3 Working Draft #2. 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
- Conditions
- Functions
- Rules
- Rules with comments
  - cd-1
  - cd-1b

## Namespace

default element namespace = http://www.fpml.org/spec/fpml-5-3-2-wd-2

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

## Conditions

The context of the rule is NOT carried through to the condition.

Condition: ISDA1999Credit
(context: Trade) At least one of documentation/contractualDefinition element and documentation/masterConfirmation/masterConfirmationType element exists and contains the string "ISDA1999Credit".

Formal description: some $document in (//element(*, Trade) | //element(*, Contract))/documentation/(contractualDefinitions | masterConfirmation/masterConfirmationType) satisfies contains($document, "ISDA1999Credit")

Condition: ISDA2003
(context: Trade) 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".
Condition: ShortForm
(context: Trade) documentation/masterConfirmation exists, or documentation/contractualMatrix exists, or documentation/contractualTermsSupplement exists and documentation/contractualTermsSupplement/type begins with string "iTraxx" or "CDX".
Condition: LongForm
(context: Trade) documentation/masterConfirmation and documentation/contractualMatrix do not exist and SingleName condition applies.
Condition: SingleName
(context: Trade) creditDefaultSwap/generalTerms/referenceInformation exists.
Condition: CreditIndex
(context: CreditDefaultSwap) generalTerms/indexReferenceInformation exists and generalTerms/indexReferenceInformation/tranche does not exist.
Condition: quotationAmount
(context: CashSettlementTerms) quotationAmount exists.
Condition: minimumQuotationAmount
(context: CashSettlementTerms) minimumQuotationAmount exists.

## Functions

The following shared functions are used in the rules.

- same-currency

## Rules

#### Unique contexts:

- Trade (complex type): cd-1 cd-1b cd-2
- ContractualTermsSupplement (complex type): cd-3b cd-4b
- GeneralTerms (complex type): cd-5 cd-6 cd-7 cd-8 cd-41 cd-42
- ReferenceInformation (complex type): cd-9 cd-10 cd-11 cd-12
- CreditDefaultSwap (complex type): cd-13 cd-14 cd-15 cd-16 cd-17 cd-18 cd-19 cd-20 cd-21 cd-21b cd-22 cd-23 cd-24 cd-25 cd-26 cd-27 cd-28 cd-29 cd-30
- PeriodicPayment (complex type): cd-31 cd-32 cd-33
- DeliverableObligations (complex type): cd-34
- CreditEvents (complex type): cd-35
- PubliclyAvailableInformation (complex type): cd-36
- CashSettlementTerms (complex type): cd-37
- ReferencePool (complex type): cd-38 cd-44
- BasketReferenceInformation (complex type): cd-39
- Tranche (complex type): cd-40
- Deprecated rules
- Removed rules

cd-1 (Mandatory)
English Description:
Context: Trade (complex type)
if creditDefaultSwap/generalTerms/referenceInformation exists, tradeHeader/tradeDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
XPath Description:
Context: Trade
[exists(creditDefaultSwap/generalTerms/referenceInformation)]
tradeHeader/tradeDate lt creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Comment: This rule may be updated in the third working draft for version 4.6 to support Standard Single Name trades.
Test cases: [Invalid]
cd-1b (Mandatory)
English Description:
Context: Trade (complex type)
If condition CreditIndex is true, and if creditDefaultSwap/generalTerms/effectiveDate exists, then tradeHeader/tradeDate must be after creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
XPath Description:
Context: Trade
[CreditIndex] [exists(creditDefaultSwap/generalTerms/effectiveDate)]
tradeHeader/tradeDate ge creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Comment: This rule may be updated in the third working draft for version 4.6 to support Standard Single Name trades.
Test cases: [Invalid]
cd-2 (Mandatory)
English Description:
Context: Trade (complex type)
calculationAgent may contain only calculationAgentPartyReference elements or calculationAgentParty with the value "AsSpecifiedInMasterAgreement"
XPath Description:
Context: Trade
[exists(calculationAgent)]
every $calculationAgent in calculationAgent satisfies (($calculationAgent/calculationAgentParty eq "AsSpecifiedInMasterAgreement") or $calculationAgent/calculationAgentPartyReference)
Test cases: [Invalid]
cd-3b (Mandatory)
English Description:
Context: ContractualTermsSupplement (complex type)
If condition ISDA1999Credit is true, then the content of type must not begin with the string "ISDA2003Credit".
XPath Description:
Context: ContractualTermsSupplement
[ISDA1999Credit]
not(start-with(type, "ISDA2003Credit"))
Test cases: [Invalid]
cd-4b (Mandatory)
English Description:
Context: ContractualTermsSupplement (complex type)
If condition ISDA2003 is true, then the content of type must not begin with the string "ISDA1999Credit"
XPath Description:
Context: ContractualTermsSupplement
[ISDA2003]
not(start-with(type, "ISDA1999Credit"))
Test cases: [Invalid]
cd-5 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If effectiveDate exists, and if scheduledTerminationDate exists, then effectiveDate/unadjustedDate must be before scheduledTerminationDate/adjustableDate/unadjustedDate
XPath Description:
Context: GeneralTerms
[exists(effectiveDate)] [exists(scheduledTerminationDate)]
effectiveDate/unadjustedDate lt scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Invalid] [Invalid]
cd-6 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
The @href attribute of buyerPartyReference must not be equal to the @href attribute of sellerPartyReference
XPath Description:
Context: GeneralTerms
buyerPartyReference/@href ne sellerPartyReference/@href
Test cases: [Invalid]
cd-7 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If condition LongForm is true, then effectiveDate/dateAdjustments or effectiveDate/dateAdjustmentsReference must exist.
XPath Description:
Context: GeneralTerms
[LongForm]
exists(effectiveDate/dateAdjustments) or exists(effectiveDate/dateAdjustmentsReference)
Test cases: [Invalid]
cd-8 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If condition LongForm is true, and if scheduledTerminationDate exists then scheduledTerminationDate/adjustableDate/dateAdjustments or scheduledTerminationDate/adjustableDate/dateAdjustmentsReference must exist.
XPath Description:
Context: GeneralTerms
[LongForm] [exists(scheduledTerminationDate)]
exists(scheduledTerminationDate/adjustableDate/dateAdjustments) or exists(scheduledTerminationDate/adjustableDate/dateAdjustmentsReference)
Test cases: [Invalid]
cd-9 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referenceObligation/primaryObligorReference exists, then the attribute @href of every referenceObligation/primaryObligorReference must be equal to the @id attribute of referenceEntity
XPath Description:
Context: ReferenceInformation
[exists(referenceObligation/primaryObligorReference)]
id(referenceObligation/primaryObligorReference/@href) is referenceEntity
Test cases: [Invalid]
cd-10 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referenceObligation/guarantorReference exists, then the attribute @href of every referenceObligation/guarantorReference must be equal to the @id attribute of referenceEntity
XPath Description:
Context: ReferenceInformation
[exists(referenceObligation/guarantorReference)]
id(referenceObligation/guarantorReference/@href) is referenceEntity
Test cases: [Invalid]
cd-11 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If condition LongForm is true, and if condition ISDA2003 is true, then allGuarantees must exist.
XPath Description:
Context: ReferenceInformation
[LongForm] [ISDA2003]
exists(allGuarantees)
Test cases: [Invalid]
cd-12 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referencePrice exists, referencePrice must be greater or equal to 0
XPath Description:
Context: ReferenceInformation
[exists(referencePrice)]
referencePrice ge 0
Test cases: [Invalid]
cd-13 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference exists, then the @href attribute of protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference is equal to the @href attribute of generalTerms/buyerPartyReference
XPath Description:
Context: CreditDefaultSwap
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference)]
protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference/@href eq generalTerms/buyerPartyReference/@href
Test cases: [Invalid]
cd-14 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference exists, then the @href attribute of protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference must be equal to the @href attribute of generalTerms/sellerPartyReference
XPath Description:
Context: CreditDefaultSwap
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference)]
protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference/@href eq generalTerms/sellerPartyReference/@href
Test cases: [Invalid]
cd-15 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If there's exactly one generalTerms/referenceInformation/referenceObligation, and if cashSettlementTerms/valuationDate/singleValuationDate exists, then the value of cashSettlementTerms/valuationMethod must be equal to "Market" or "Highest".
XPath Description:
Context: CreditDefaultSwap
[count(generalTerms/referenceInformation/referenceObligation) eq 1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod = ("Market", "Highest")
Test cases: [Invalid]
cd-16 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If there is exactly one generalTerms/referenceInformation/referenceObligation, and if cashSettlementTerms/valuationDate/multipleValuationDates exists, then the value of cashSettlementTerms/valuationMethod must be equal to "AverageMarket", "Highest", or "AverageHighest".
XPath Description:
Context: CreditDefaultSwap
[count(generalTerms/referenceInformation/referenceObligation) eq 1] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod = ("AverageMarket", "Highest", "AverageHighest")
Test cases: [Invalid]
cd-17 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If there is more than one generalTerms/referenceInformation/referenceObligation, and if cashSettlementTerms/valuationDate/singleValuationDate exists, then the value of cashSettlementTerms/valuationMethod must be equal to "BlendedMarket" or "BlendedHighest".
XPath Description:
Context: CreditDefaultSwap
[count(generalTerms/referenceInformation/referenceObligation) gt 1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod = ("BlendedMarket", "BlendedHighest")
Test cases: [Invalid]
cd-18 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If there is more than one generalTerms/referenceInformation/referenceObligation, and if cashSettlementTerms/valuationDate/multipleValuationDates exists, then the value of cashSettlementTerms/valuationMethod must be equal to "AverageBlendedMarket" or "AverageBlendedHighest".
XPath Description:
Context: CreditDefaultSwap
[count(generalTerms/referenceInformation/referenceObligation) gt 1] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod = ("AverageBlendedMarket", "AverageBlendedHighest")
Test cases: [Invalid]
cd-19 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition ISDA1999Credit is true, then 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.
XPath Description:
Context: CreditDefaultSwap
[ISDA1999Credit]
not(exists(protectionTerms/creditEvents/creditEventNotice/businessCenter)) and not(exists(protectionTerms/creditEvents/restructuring/multipleHolderObligation)) and not(exists(protectionTerms/creditEvents/restructuring/multipleCreditEventNotices)) and not(exists(generalTerms/referenceInformation/allGuarantees)) and not(exists(generalTerms/indexReferenceInformation)) and not(exists(generalTerms/substitution)) and not(exists(generalTerms/modifiedEquityDelivery))
Test cases: [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-20 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition ISDA2003 is true, then protectionTerms/obligations/notContingent must not exist.
XPath Description:
Context: CreditDefaultSwap
[ISDA2003]
not(exists(protectionTerms/obligations/notContingent))
Test cases: [Invalid]
cd-21 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition ShortForm is true, and if the condition SingleName is true, then the following elements must not exist: cashSettlementTerms/settlementCurrency, cashSettlementTerms/valuationDate, cashSettlementTerms/valuationTime, cashSettlementTerms/quotationMethod, cashSettlementTerms/quotationAmount, cashSettlementTerms/minimumQuotationAmount, cashSettlementTerms/dealer, cashSettlementTerms/cashSettlementBusinessDays, cashSettlementTerms/accruedInterest, cashSettlementTerms/valuationMethod, 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.
XPath Description:
Context: CreditDefaultSwap
[ShortForm] [SingleName]
not(exists(cashSettlementTerms/settlementCurrency)) and not(exists(cashSettlementTerms/valuationDate)) and not(exists(cashSettlementTerms/valuationTime)) and not(exists(cashSettlementTerms/quotationMethod)) and not(exists(cashSettlementTerms/quotationAmount)) and not(exists(cashSettlementTerms/minimumQuotationAmount)) and not(exists(cashSettlementTerms/dealer)) and not(exists(cashSettlementTerms/cashSettlementBusinessDays)) and not(exists(cashSettlementTerms/accruedInterest)) and not(exists(cashSettlementTerms/valuationMethod)) and not(exists(physicalSettlementTerms)) and not(exists(feeLeg/periodicPayment/fixedAmountCalculation/calculationAmount)) and not(exists(feeLeg/periodicPayment/fixedAmountCalculation/dayCountFraction)) and not(exists(protectionTerms/obligations)) and not(exists(generalTerms/referenceInformation/allGuarantees)) and not(exists(generalTerms/referenceInformation/referencePrice)) and not(exists(generalTerms/effectiveDate/dateAdjustments)) and not(exists(generalTerms/effectiveDate/dateAdjustmentsReference)) and not(exists(generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustments)) and not(exists(generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustmentsReference)) and not(exists(generalTerms/dateAdjustments))
Test cases: [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-21b (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition ShortForm is true, and if the condition CreditIndex is true, then 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.
XPath Description:
Context: CreditDefaultSwap
[ShortForm] [CreditIndex]
not(exists(cashSettlementTerms)) and not(exists(physicalSettlementTerms)) and not(exists(feeLeg/periodicPayment/fixedAmountCalculation/calculationAmount)) and not(exists(feeLeg/periodicPayment/fixedAmountCalculation/dayCountFraction)) and not(exists(protectionTerms/obligations)) and not(exists(generalTerms/effectiveDate/dateAdjustments)) and not(exists(generalTerms/effectiveDate/dateAdjustmentsReference)) and not(exists(generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustments)) and not(exists(generalTerms/scheduledTerminationDate/adjustableDate/dateAdjustmentsReference)) and not(exists(generalTerms/dateAdjustments)) and not(exists(protectionTerms/creditEvents))
Test cases: [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-22 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition ShortForm is true, then the following elements must not exist: protectionTerms/creditEvents/bankruptcy, protectionTerms/creditEvents/failureToPay, protectionTerms/creditEvents/repudiationMoratorium, protectionTerms/creditEvents/obligationDefault, protectionTerms/creditEvents/obligationAcceleration.
XPath Description:
Context: CreditDefaultSwap
[ShortForm]
not(exists(protectionTerms/creditEvents/bankruptcy)) and not(exists(protectionTerms/creditEvents/failureToPay)) and not(exists(protectionTerms/creditEvents/repudiationMoratorium)) and not(exists(protectionTerms/creditEvents/obligationDefault)) and not(exists(protectionTerms/creditEvents/obligationAcceleration))
Test cases: [Invalid] [Invalid] [Invalid] [Invalid]
cd-23 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition LongForm is true, then cashSettlementTerms or physicalSettlementTerms must exist.
XPath Description:
Context: CreditDefaultSwap
[LongForm]
exists(cashSettlementTerms) or exists(physicalSettlementTerms)
Test cases: [Invalid]
cd-24 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition LongForm is true, then the following elements must exist: protectionTerms/creditEvents/creditEventNotice, protectionTerms/obligations, generalTerms/referenceInformation/referencePrice.
XPath Description:
Context: CreditDefaultSwap
[LongForm]
exists(protectionTerms/creditEvents/creditEventNotice) and exists(protectionTerms/obligations) and exists(generalTerms/referenceInformation/referencePrice)
Test cases: [Invalid] [Invalid] [Invalid] [Invalid]
cd-25 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition LongForm is true, and if physicalSettlementTerms exists, then physicalSettlementTerms must contain settlementCurrency, physicalSettlementPeriod, escrow and deliverableObligations/accruedInterest
XPath Description:
Context: CreditDefaultSwap
[LongForm] [exists(physicalSettlementTerms)]
exists(physicalSettlementTerms/settlementCurrency) and exists(physicalSettlementTerms/physicalSettlementPeriod) and exists(physicalSettlementTerms/escrow) and exists(physicalSettlementTerms/deliverableObligations/accruedInterest)
Test cases: [Invalid] [Invalid] [Invalid] [Invalid]
cd-26 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If feeLeg/singlePayment/adjustablePaymentDate exists, then feeLeg/singlePayment/adjustablePaymentDate must be after generalTerms/effectiveDate/unadjustedDate
XPath Description:
Context: CreditDefaultSwap
[exists(feeLeg/singlePayment/adjustablePaymentDate)]
feeLeg/singlePayment/adjustablePaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Invalid] [Invalid]
cd-27 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If feeLeg/singlePayment/adjustablePaymentDate exists, and if generalTerms/scheduledTerminationDate/adjustableDate exists, then feeLeg/singlePayment/adjustablePaymentDate must be before generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
XPath Description:
Context: CreditDefaultSwap
[exists(feeLeg/singlePayment/adjustablePaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/singlePayment/adjustablePaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Invalid] [Invalid]
cd-28 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If feeLeg/periodicPayment/firstPaymentDate exists, then feeLeg/periodicPayment/firstPaymentDate must be after generalTerms/effectiveDate/unadjustedDate
XPath Description:
Context: CreditDefaultSwap
[exists(feeLeg/periodicPayment/firstPaymentDate)]
feeLeg/periodicPayment/firstPaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Invalid]
cd-29 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If feeLeg/periodicPayment/firstPaymentDate exists, and if generalTerms/scheduledTerminationDate/adjustableDate exists, then feeLeg/periodicPayment/firstPaymentDate must be before generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
XPath Description:
Context: CreditDefaultSwap
[exists(feeLeg/periodicPayment/firstPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/firstPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Invalid]
cd-30 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If feeLeg/periodicPayment/lastRegularPaymentDate exists, and if generalTerms/scheduledTerminationDate/adjustableDate exists, then feeLeg/periodicPayment/lastRegularPaymentDate must be before generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
XPath Description:
Context: CreditDefaultSwap
[exists(feeLeg/periodicPayment/lastRegularPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/lastRegularPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Invalid] [Invalid]
cd-31 (Mandatory)
English Description:
Context: PeriodicPayment (complex type)
If firstPaymentDate exists, and if lastRegularPaymentDate exists, then firstPaymentDate must be before lastRegularPaymentDate
XPath Description:
Context: PeriodicPayment
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
firstPaymentDate lt lastRegularPaymentDate
Test cases: [Invalid] [Invalid]
cd-32 (Mandatory)
English Description:
Context: PeriodicPayment (complex type)
If condition LongForm is true, and if fixedAmountCalculation/calculationAmount exists, then fixedAmountCalculation/dayCountFraction must exist.
XPath Description:
Context: PeriodicPayment
[LongForm] [exists(fixedAmountCalculation/calculationAmount)]
exists(fixedAmountCalculation/dayCountFraction)
Test cases: [Invalid] [Invalid]
cd-33 (Mandatory)
English Description:
Context: PeriodicPayment (complex type)
If firstPaymentDate exists, and if lastRegularPaymentDate exists, then lastRegularPaymentDate must fall precisely on a date reachable by adding an integer multiple of the period in paymentFrequency to firstPaymentDate
XPath Description:
Context: PeriodicPayment
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
lastRegularPaymentDate must fall precisely on a date reachable by adding an integer multiple of the period in paymentFrequency to firstPaymentDate
Test cases: [Invalid] [Invalid]
cd-34 (Mandatory)
English Description:
Context: DeliverableObligations (complex type)
If category is equal to "ReferenceObligationsOnly", then no other elements may be contained in the deliverable obligations element
XPath Description:
Context: DeliverableObligations
[category eq "ReferenceObligationsOnly"]
No other elements may be contained in the deliverable obligations element
Test cases: [Invalid]
cd-35 (Mandatory)
English Description:
Context: CreditEvents (complex type)
At least one child element must exist.
XPath Description:
Context: CreditEvents
count(//*) ge 1
Test cases: [Invalid]
cd-36 (Mandatory)
English Description:
Context: PubliclyAvailableInformation (complex type)
Either standardPublicSources or at least one publicSource element must exist.
XPath Description:
Context: PubliclyAvailableInformation
exists(standardPublicSources) or count(publicSource) ge 1
Test cases: [Invalid]
cd-37 (Mandatory)
English Description:
Context: CashSettlementTerms (complex type)
If condition quotationAmount is true, and if condition minimumQuotationAmount is true, and if both amounts have the same-currency, then quotationAmount/amount must be greater or equal to minimumQuotationAmount/amount
XPath Description:
Context: CashSettlementTerms
[quotationAmount] [minimumQuotationAmount] [same-currency((quotationAmount,minimumQuotationAmount))]
quotationAmount/amount ge minimumQuotationAmount/amount
Test cases: [Invalid]
cd-38 (Mandatory)
English Description:
Context: ReferencePool (complex type)
The sum of referencePoolItem/constituentWeight/basketPercentage is equal to 1 or no referencePoolItem/constituentWeight exists.
XPath Description:
Context: ReferencePool
sum(referencePoolItem/constituentWeight/basketPercentage) eq 1 or not(exists(referencePoolItem/constituentWeight))
Test cases: [Invalid]
cd-39 (Mandatory)
English Description:
Context: BasketReferenceInformation (complex type)
If nthToDefault exists, and if mthToDefault exists, then nthToDefault must be less than mthToDefault
XPath Description:
Context: BasketReferenceInformation
[exists(nthToDefault)] [exists(mthToDefault)]
nthToDefault lt mthToDefault
Test cases: [Invalid]
cd-40 (Mandatory)
English Description:
Context: Tranche (complex type)
attachmentPoint must be less or equal to exhaustionPoint
XPath Description:
Context: Tranche
attachmentPoint le exhaustionPoint
Test cases: [Invalid]
cd-41 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If indexReferenceInformation/tranche does not exist, then modifiedEquityDelivery must not exist.
XPath Description:
Context: GeneralTerms
[not(exists(indexReferenceInformation/tranche))]
not(exists(modifiedEquityDelivery))
Test cases: [Invalid]
cd-42 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If basketReferenceInformation does not exist, then substitution must not exist.
XPath Description:
Context: GeneralTerms
[not(exists(basketReferenceInformation))]
not(exists(substitution))
Test cases: [Invalid]
cd-44 (Mandatory)
English Description:
Context: ReferencePool (complex type)
All referencePoolItem/constituentWeight must have the same name of child element
Test cases: [Invalid]

#### Deprecated rules

#### Removed rules

cd-3 (Mandatory)
REMOVED: Context: Trade; Condition: ISDA1999Credit; Description: The content of documentation/contractualSupplement must not begin with the string "ISDA2003Credit". Rationale for removal: the rule has been replaced by the reference rule number 3b (cd-3b).
cd-4 (Mandatory)
REMOVED: Context: Trade; Condition: ISDA2003; Description: Every documentation/contractualSupplement must not begin with the string "ISDA1999Credit". Rationale for removal: the rule has been replaced by the reference rule number 4b (cd-4b).
cd-43 (Mandatory)
REMOVED: If condition SingleName is true, and 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. Rationale for removal: To support Standard Single Name trades.