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

This is the Credit Derivatives part of the validation rule set accompanying the FpML 4.5 Trial 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/2008/FpML-4-5

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

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: ISDA1999Credit
(context: Trade) (context: Contract) At least one of documentation/contractualDefinition element and documentation/masterConfirmation/masterConfirmationType element exists and contains the string "ISDA1999Credit", otherwise false().

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

Condition: 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".
Condition: 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".
Condition: LongForm
(context: Trade) (context: Contract) documentation/masterConfirmation and documentation/contractualMatrix do not exist and SingleName condition applies.
Condition: SingleName
(context: Trade) (context: Contract) 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.

Rules

Unique contexts:

cd-1 (Mandatory)
English Description:
Context: Trade (complex type)
if creditDefaultSwap/generalTerms/referenceInformation exists, tradeHeader/tradeDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Formal Description:
Context: Trade (complex type)
[exists(creditDefaultSwap/generalTerms/referenceInformation)]
tradeHeader/tradeDate lt creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [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
Formal Description:
Context: Trade (complex type)
[CreditIndex] [exists(creditDefaultSwap/generalTerms/effectiveDate)]
tradeHeader/tradeDate ge creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Valid] [Invalid]
cd-1c (Mandatory)
English Description:
Context: Contract (complex type)
If creditDefaultSwap/generalTerms/referenceInformation exists, then header/contractDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Formal Description:
Context: Contract (complex type)
[exists(creditDefaultSwap/generalTerms/referenceInformation)]
header/contractDate lt creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid]
cd-1d (Mandatory)
English Description:
Context: Contract (complex type)
If condition CreditIndex is true, and if creditDefaultSwap/generalTerms/effectiveDate exists, then header/contractDate must be after creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Formal Description:
Context: Contract (complex type)
[CreditIndex] [exists(creditDefaultSwap/generalTerms/effectiveDate)]
header/contractDate ge creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Valid] [Invalid]
cd-2 (Mandatory)
English Description:
Context: Trade (complex type)
calculationAgent may contain only calculationAgentPartyReference elements or calculationAgentParty with the value "AsSpecifiedInMasterAgreement"
Formal Description:
Context: Trade (complex type)
[exists(calculationAgent)]
child::calculationAgent = (calculationAgentPartyReference, calculationAgentParty eq "AsSpecifiedInMasterAgreement")
Test cases: [Valid] [Valid] [Invalid]
cd-2b (Mandatory)
English Description:
Context: Contract (complex type)
calculationAgent may contain only calculationAgentPartyReference elements or calculationAgentParty with the value "AsSpecifiedInMasterAgreement"
Formal Description:
Context: Contract (complex type)
[exists(calculationAgent)]
child::calculationAgent = (calculationAgentPartyReference, calculationAgentParty eq "AsSpecifiedInMasterAgreement")
Test cases: [Valid] [Valid] [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".
Formal Description:
Context: ContractualTermsSupplement (complex type)
[ISDA1999Credit]
not(start-with(type, "ISDA2003Credit"))
Test cases: [Valid] [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"
Formal Description:
Context: ContractualTermsSupplement (complex type)
[ISDA2003]
not(start-with(type, "ISDA1999Credit"))
Test cases: [Valid] [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
Formal Description:
Context: GeneralTerms (complex type)
[exists(effectiveDate)] [exists(scheduledTerminationDate)]
effectiveDate/unadjustedDate lt scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-6 (Mandatory)
English Description:
Context: GeneralTerms
The @href attribute of buyerPartyReference must not be equal to the @href attribute of sellerPartyReference
Formal Description:
Context: GeneralTerms
buyerPartyReference/@href ne sellerPartyReference/@href
Test cases: [Valid] [Invalid]
cd-7 (Mandatory)
English Description:
Context: GeneralTerms (complex type)
If condition LongForm is true, then effectiveDate/dateAdjustments or effectiveDate/dateAdjustmentsReference must exist.
Formal Description:
Context: GeneralTerms (complex type)
[LongForm]
exists(effectiveDate/dateAdjustments) or exists(effectiveDate/dateAdjustmentsReference)
Test cases: [Valid] [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.
Formal Description:
Context: GeneralTerms (complex type)
[LongForm] [exists(scheduledTerminationDate)]
exists(scheduledTerminationDate/adjustableDate/dateAdjustments) or exists(scheduledTerminationDate/adjustableDate/dateAdjustmentsReference)
Test cases: [Valid] [Invalid]
cd-9 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referenceObligation/primaryObligorReference exists, then the attribute @href of referenceObligation/primaryObligorReference must be equal to the @id attribute of referenceEntity
Formal Description:
Context: ReferenceInformation (complex type)
[exists(referenceObligation/primaryObligorReference)]
The attribute @href of referenceObligation/primaryObligorReference eq the @id attribute of referenceEntity
Test cases: [Valid] [Invalid]
cd-10 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referenceObligation/guarantorReference exists, then the attribute @href of referenceObligation/guarantorReference must be equal to the @id attribute of referenceEntity
Formal Description:
Context: ReferenceInformation (complex type)
[exists(referenceObligation/guarantorReference)]
The attribute @href of referenceObligation/guarantorReference eq the @id attribute of referenceEntity
Test cases: [Valid] [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.
Formal Description:
Context: ReferenceInformation (complex type)
[LongForm] [ISDA2003]
exists(allGuarantees)
Test cases: [Valid] [Invalid]
cd-12 (Mandatory)
English Description:
Context: ReferenceInformation (complex type)
If referencePrice exists, referencePrice must be greater or equal to 0
Formal Description:
Context: ReferenceInformation (complex type)
[exists(referencePrice)]
referencePrice ge 0
Test cases: [Valid] [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference)]
protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference/@href eq generalTerms/buyerPartyReference/@href
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference)]
protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference/@href eq generalTerms/sellerPartyReference/@href
Test cases: [Valid] [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".
Formal Description:
Context: CreditDefaultSwap (complex type)
[count(generalTerms/referenceInformation/referenceObligation) eq 1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod = ("Market", "Highest")
Test cases: [Valid] [Valid] [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".
Formal Description:
Context: CreditDefaultSwap (complex type)
[count(generalTerms/referenceInformation/referenceObligation) eq 1] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod = ("AverageMarket", "Highest", "AverageHighest")
Test cases: [Valid] [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".
Formal Description:
Context: CreditDefaultSwap (complex type)
[count(generalTerms/referenceInformation/referenceObligation) gt 1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod = ("BlendedMarket", "BlendedHighest")
Test cases: [Valid] [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".
Formal Description:
Context: CreditDefaultSwap (complex type)
[count(generalTerms/referenceInformation/referenceObligation) gt 1] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod = ("AverageBlendedMarket", "AverageBlendedHighest")
Test cases: [Valid] [Valid] [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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[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: [Valid] [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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[ISDA2003]
not(exists(protectionTerms/obligations/notContingent))
Test cases: [Valid] [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, 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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[ShortForm] [SingleName]
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/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: [Valid] [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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[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))
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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[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: [Valid] [Invalid]
cd-23 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
If the condition LongForm is true, then cashSettlementTerms or physicalSettlementTerms must exist.
Formal Description:
Context: CreditDefaultSwap (complex type)
[LongForm]
exists(cashSettlementTerms) or exists(physicalSettlementTerms)
Test cases: [Valid] [Valid] [Valid] [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.
Formal Description:
Context: CreditDefaultSwap (complex type)
[LongForm]
exists(protectionTerms/creditEvents/creditEventNotice) and exists(protectionTerms/obligations) and exists(generalTerms/referenceInformation/referencePrice)
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[LongForm] [exists(physicalSettlementTerms)]
exists(physicalSettlementTerms/settlementCurrency) and exists(physicalSettlementTerms/physicalSettlementPeriod) and exists(physicalSettlementTerms/escrow) and exists(physicalSettlementTerms/deliverableObligations/accruedInterest)
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(feeLeg/singlePayment/adjustablePaymentDate)]
feeLeg/singlePayment/adjustablePaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(feeLeg/singlePayment/adjustablePaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/singlePayment/adjustablePaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(feeLeg/periodicPayment/firstPaymentDate)]
feeLeg/periodicPayment/firstPaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(feeLeg/periodicPayment/firstPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/firstPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [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
Formal Description:
Context: CreditDefaultSwap (complex type)
[exists(feeLeg/periodicPayment/lastRegularPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/lastRegularPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-31 (Mandatory)
English Description:
Context: PeriodicPayment (complex type)
If firstPaymentDate exists, and if lastRegularPaymentDate exists, then firstPaymentDate must be before lastRegularPaymentDate
Formal Description:
Context: PeriodicPayment (complex type)
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
firstPaymentDate lt lastRegularPaymentDate
Test cases: [Valid] [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.
Formal Description:
Context: PeriodicPayment (complex type)
[LongForm] [exists(fixedAmountCalculation/calculationAmount)]
exists(fixedAmountCalculation/dayCountFraction)
Test cases: [Valid] [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
Formal Description:
Context: PeriodicPayment (complex type)
[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: [Valid] [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
Formal Description:
Context: DeliverableObligations (complex type)
[category eq "ReferenceObligationsOnly"]
No other elements may be contained in the deliverable obligations element
Test cases: [Valid] [Invalid]
cd-35 (Mandatory)
English Description:
Context: CreditEvents (complex type)
At least one child element must exist.
Formal Description:
Context: CreditEvents (complex type)
count(//*) ge 1
Test cases: [Valid] [Invalid]
cd-36 (Mandatory)
English Description:
Context: PubliclyAvailableInformation (complex type)
Either standardPublicSources or at least one publicSource element must exist.
Formal Description:
Context: PubliclyAvailableInformation (complex type)
exists(standardPublicSources) or count(publicSource) ge 1
Test cases: [Valid] [Valid] [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
Formal Description:
Context: CashSettlementTerms (complex type)
[quotationAmount] [minimumQuotationAmount] [same-currency((quotationAmount,minimumQuotationAmount))]
quotationAmount/amount ge minimumQuotationAmount/amount
Test cases: [Valid] [Valid] [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.
Formal Description:
Context: ReferencePool (complex type)
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
Formal Description:
Context: BasketReferenceInformation (complex type)
[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
Formal Description:
Context: Tranche (complex type)
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.
Formal Description:
Context: GeneralTerms (complex type)
[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.
Formal Description:
Context: GeneralTerms (complex type)
[not(exists(basketReferenceInformation))]
not(exists(substitution))
Test cases: [Invalid]
cd-43 (Mandatory)
English Description:
Context: CreditDefaultSwap (complex type)
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
Formal Description:
Context: CreditDefaultSwap (complex type)
[SingleName] [exists(feeLeg/initialPayment)]
feeLeg/initialPayment/payerPartyReference/@href eq generalTerms/sellerPartyReference/@href and feeLeg/initialPayment/receiverPartyReference/@href eq generalTerms/buyerPartyReference/@href
Test cases: [Invalid] [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

cd-3 (Mandatory)
DEPRECATED: Context: Trade; Condition: ISDA1999Credit; Description: 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).
cd-4 (Mandatory)
DEPRECATED: Context: Trade; Condition: ISDA2003; Description: 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).

Removed rules