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 Last Call Working Draft. 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: ISDA1999
(context: Trade) (context: Contract) The documentation/contractualDefinitions element or the documentation/masterConfirmation/masterConfirmationType element contains "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)
Context: Trade (complex type)
Formal Description:
[exists(creditDefaultSwap/generalTerms/referenceInformation)]
tradeHeader/tradeDate lt creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid]
cd-1b (Mandatory)
Context: Trade (complex type)
Formal Description:
[CreditIndex] [exists(creditDefaultSwap/generalTerms/effectiveDate)]
tradeHeader/tradeDate ge creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Valid] [Invalid]
cd-2 (Mandatory)
Context: Trade (complex type)
Formal Description:
[exists(calculationAgent)]
calculationAgent may contain only calculationAgentPartyReference elements or calculationAgentParty with the value "AsSpecifiedInMasterAgreement"
Test cases: [Valid] [Valid] [Invalid]
cd-3b (Mandatory)
Context: ContractualTermsSupplement (complex type)
English Description:
The content of type must not begin with the string "ISDA2003Credit".
Formal Description:
[ISDA1999]
not(start-with(type, "ISDA2003Credit"))
Test cases: [Valid] [Invalid]
cd-4b (Mandatory)
Context: ContractualTermsSupplement (complex type)
English Description:
The content of type must not begin with the string "ISDA1999Credit"
Formal Description:
[ISDA2003]
not(start-with(type, "ISDA1999Credit"))
Test cases: [Valid] [Invalid]
cd-5 (Mandatory)
Context: GeneralTerms (complex type)
Formal Description:
[exists(effectiveDate)] [exists(scheduledTerminationDate)]
effectiveDate/unadjustedDate lt scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-6 (Mandatory)
Context: GeneralTerms
Formal Description:
buyerPartyReference/@href neq sellerPartyReference/@href
Test cases: [Valid] [Invalid]
cd-7 (Mandatory)
Context: GeneralTerms (complex type)
English Description:
effectiveDate/dateAdjustments or effectiveDate/dateAdjustmentsReference must exist.
Formal Description:
[LongForm]
exists(effectiveDate/dateAdjustments) or exists(effectiveDate/dateAdjustmentsReference)
Test cases: [Valid] [Invalid]
cd-8 (Mandatory)
Context: GeneralTerms (complex type)
English Description:
scheduledTerminationDate/adjustableDate/dateAdjustments or scheduledTerminationDate/adjustableDate/dateAdjustmentsReference must exist.
Formal Description:
[LongForm] [exists(scheduledTerminationDate)]
exists(scheduledTerminationDate/adjustableDate/dateAdjustments) or exists(scheduledTerminationDate/adjustableDate/dateAdjustmentsReference)
Test cases: [Valid] [Invalid]
cd-9 (Mandatory)
Context: ReferenceInformation (complex type)
Formal Description:
[exists(referenceObligation/primaryObligorReference)]
The attribute @href of referenceObligation/primaryObligorReference eq the @id attribute of referenceEntity
Test cases: [Valid] [Invalid]
cd-10 (Mandatory)
Context: ReferenceInformation (complex type)
Formal Description:
[exists(referenceObligation/guarantorReference)]
The attribute @href of referenceObligation/guarantorReference eq the @id attribute of referenceEntity
Test cases: [Valid] [Invalid]
cd-11 (Mandatory)
Context: ReferenceInformation (complex type)
English Description:
allGuarantees must exist.
Formal Description:
[LongForm] [ISDA2003]
exists(allGuarantees)
Test cases: [Valid] [Invalid]
cd-12 (Mandatory)
Context: ReferenceInformation (complex type)
Formal Description:
[exists(referencePrice)]
referencePrice ge 0
Test cases: [Valid] [Valid] [Invalid]
cd-13 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference)]
The @href attribute of protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference eq the @href attribute of generalTerms/buyerPartyReference
Test cases: [Valid] [Invalid]
cd-14 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference)]
The @href attribute of protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference eq the @href attribute of generalTerms/sellerPartyReference
Test cases: [Valid] [Invalid]
cd-15 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
The value of cashSettlementTerms/valuationMethod is equal to "Market" or "Highest".
Formal Description:
[count(generalTerms/referenceInformation/referenceObligation)=1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod eq ("Market", "Highest")
Test cases: [Valid] [Valid] [Invalid]
cd-16 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
The value of cashSettlementTerms/valuationMethod is equal to "AverageMarket", "Highest", or "AverageHighest".
Formal Description:
[count(generalTerms/referenceInformation/referenceObligation)=1] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod eq ("AverageMarket", "Highest", "AverageHighest")
Test cases: [Valid] [Invalid]
cd-17 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
The value of cashSettlementTerms/valuationMethod is equal to "BlendedMarket" or "BlendedHighest".
Formal Description:
[count(generalTerms/referenceInformation/referenceObligation) gt 1] [exists(cashSettlementTerms/valuationDate/singleValuationDate)]
cashSettlementTerms/valuationMethod eq ("BlendedMarket", "BlendedHighest")
Test cases: [Valid] [Invalid]
cd-18 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
The value of cashSettlementTerms/valuationMethod is equal to "AverageBlendedMarket" or "AverageBlendedHighest".
Formal Description:
[there is more than one generalTerms/referenceInformation/referenceObligation] [exists(cashSettlementTerms/valuationDate/multipleValuationDates)]
cashSettlementTerms/valuationMethod eq ("AverageBlendedMarket", "AverageBlendedHighest")
Test cases: [Valid] [Valid] [Invalid]
cd-19 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
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:
[ISDA1999]
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)
Context: CreditDefaultSwap (complex type)
English Description:
protectionTerms/obligations/notContingent must not exist.
Formal Description:
[ISDA2003]
not(exists(protectionTerms/obligations/notContingent))
Test cases: [Valid] [Invalid]
cd-21 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
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:
[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)
Context: CreditDefaultSwap (complex type)
English Description:
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:
[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)
Context: CreditDefaultSwap (complex type)
English Description:
The following elements must not exist: protectionTerms/creditEvents/bankruptcy, protectionTerms/creditEvents/failureToPay, protectionTerms/creditEvents/repudiationMoratorium, protectionTerms/creditEvents/obligationDefault, protectionTerms/creditEvents/obligationAcceleration.
Formal Description:
[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)
Context: CreditDefaultSwap (complex type)
English Description:
cashSettlementTerms or physicalSettlementTerms must exist.
Formal Description:
[LongForm]
exists(cashSettlementTerms) or exists(physicalSettlementTerms)
Test cases: [Valid] [Valid] [Valid] [Invalid]
cd-24 (Mandatory)
Context: CreditDefaultSwap (complex type)
English Description:
The following elements must exist: protectionTerms/creditEvents/creditEventNotice, protectionTerms/obligations, generalTerms/referenceInformation/referencePrice.
Formal Description:
[LongForm]
exists(protectionTerms/creditEvents/creditEventNotice) and exists(protectionTerms/obligations) and exists(generalTerms/referenceInformation/referencePrice)
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-25 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[LongForm] [exists(physicalSettlementTerms)]
physicalSettlementTerms must contain settlementCurrency, physicalSettlementPeriod, escrow and deliverableObligations/accruedInterest
Test cases: [Valid] [Invalid] [Invalid] [Invalid] [Invalid]
cd-26 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(feeLeg/singlePayment/adjustablePaymentDate)]
feeLeg/singlePayment/adjustablePaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-27 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(feeLeg/singlePayment/adjustablePaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/singlePayment/adjustablePaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-28 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(feeLeg/periodicPayment/firstPaymentDate)]
feeLeg/periodicPayment/firstPaymentDate gt generalTerms/effectiveDate/unadjustedDate
Test cases: [Valid] [Invalid]
cd-29 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(feeLeg/periodicPayment/firstPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/firstPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid]
cd-30 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[exists(feeLeg/periodicPayment/lastRegularPaymentDate)] [exists(generalTerms/scheduledTerminationDate/adjustableDate)]
feeLeg/periodicPayment/lastRegularPaymentDate lt generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate
Test cases: [Valid] [Invalid] [Invalid]
cd-31 (Mandatory)
Context: PeriodicPayment (complex type)
Formal Description:
[exists(firstPaymentDate)] [exists(lastRegularPaymentDate)]
firstPaymentDate lt lastRegularPaymentDate
Test cases: [Valid] [Invalid] [Invalid]
cd-32 (Mandatory)
Context: PeriodicPayment (complex type)
English Description:
fixedAmountCalculation/dayCountFraction must exist.
Formal Description:
[LongForm] [exists(fixedAmountCalculation/calculationAmount)]
exists(fixedAmountCalculation/dayCountFraction)
Test cases: [Valid] [Invalid] [Invalid]
cd-33 (Mandatory)
Context: PeriodicPayment (complex type)
Formal Description:
[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)
Context: DeliverableObligations (complex type)
Formal Description:
[category eq "ReferenceObligationsOnly"]
No other elements may be contained in the deliverable obligations element
Test cases: [Valid] [Invalid]
cd-35 (Mandatory)
Context: CreditEvents (complex type)
English Description:
At least one child element must exist.
Test cases: [Valid] [Invalid]
cd-36 (Mandatory)
Context: PubliclyAvailableInformation (complex type)
English Description:
Either standardPublicSources or at least one publicSource element must exist.
Formal Description:
exists(standardPublicSources) or count(publicSource) ge 1
Test cases: [Valid] [Valid] [Invalid]
cd-37 (Mandatory)
Context: CashSettlementTerms (complex type)
Formal Description:
[quotationAmount] [minimumQuotationAmount] [same-currency((quotationAmount,minimumQuotationAmount))]
quotationAmount/amount ge minimumQuotationAmount/amount
Test cases: [Valid] [Valid] [Invalid]
cd-38 (Mandatory)
Context: ReferencePool (complex type)
English Description:
The sum of referencePoolItem/constituentWeight/basketPercentage is equal to 1 or no referencePoolItem/constituentWeight exists.
Formal Description:
sum(referencePoolItem/constituentWeight/basketPercentage) eq 1 or not(exists(referencePoolItem/constituentWeight))
Test cases: [Invalid]
cd-39 (Mandatory)
Context: BasketReferenceInformation (complex type)
Formal Description:
[exists(nthToDefault)] [exists(mthToDefault)]
nthToDefault lt mthToDefault
Test cases: [Invalid]
cd-40 (Mandatory)
Context: Tranche (complex type)
Formal Description:
attachmentPoint le exhaustionPoint
Test cases: [Invalid]
cd-41 (Mandatory)
Context: GeneralTerms (complex type)
Formal Description:
[not(exists(indexReferenceInformation/tranche))]
not(exists(modifiedEquityDelivery))
Comment: modifiedEquityDelivery must not exist.
Test cases: [Invalid]
cd-42 (Mandatory)
Context: GeneralTerms (complex type)
Formal Description:
[not(exists(basketReferenceInformation))]
not(exists(substitution))
Comment: substitution must not exist.
Test cases: [Invalid]
cd-43 (Mandatory)
Context: CreditDefaultSwap (complex type)
Formal Description:
[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)
Context: ReferencePool (complex type)
English Description:
All referencePoolItem/constituentWeight must have the same name of child element
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