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 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
http://www.fpml.org/spec/fpml-4-4-4-wd-3
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)
The documentation/contractualDefinitions element begins with the substring ISDA2003Credit (this includes ISDA2003CreditJapan, etc.) or the documentation/masterConfirmation/masterConfirmationType element begins with the substring ISDA2003Credit or ISDA2004Credit.
Precondition: ShortForm
(context: Trade)
(context: Contract)
documentation/masterConfirmation exists or documentation/contractualMatrix exists or documentation/contractualTermsSupplement exists and begins with substring iTraxx or CDX.
Precondition: LongForm
(context: Trade)
(context: Contract)
documentation/masterConfirmation and documentation/contractualMatrix are not present 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 is not present.
Rules
Unique contexts:
Context:
Trade (complex type)
cd-1 (Mandatory)
tradeHeader/tradeDate must be before creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate.
cd-1b (Mandatory)
If creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate is present, tradeHeader/tradeDate must be equal or after creditDefaultSwap/generalTerms/effectiveDate/unadjustedDate.
cd-2 (Mandatory)
If calculationAgent exists, it may contain only calculationAgentPartyReference elements or calculationAgentParty with the value AsSpecifiedInMasterAgreement.
cd-3 (Mandatory)
documentation/contractualSupplement must not begin with the substring ISDA2003Credit.
cd-4 (Mandatory)
documentation/contractualSupplement must not begin with the substring ISDA1999Credit.
Context:
GeneralTerms (complex type)
cd-5 (Mandatory)
If element scheduledTerminationDate/adjustableDate exists, then effectiveDate/unadjustedDate < scheduledTerminationDate/adjustableDate/unadjustedDate.
cd-6 (Mandatory)
buyerPartyReference/@href must not be equal to sellerPartyReference/@href.
cd-7 (Mandatory)
effectiveDate/dateAdjustments or effectiveDate/dateAdjustmentsReference must be present.
cd-8 (Mandatory)
scheduledTerminationDate/adjustableDate/eAdjustments or scheduledTerminationDate/adjustableDate/dateAdjustmentsReference must be present.
cd-40 (Mandatory)
If indexReferenceInformation/tranche is not present then modifiedEquityDelivery must not be present.
cd-42 (Mandatory)
If basketReferenceInformation is not present then substitution must not be present.
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.
cd-10 (Mandatory)
If referenceObligation/guarantorReference exists, then the attribute @href of this element must be equal to the @id attribute of referenceEntity.
cd-11 (Mandatory)
allGuarantees must be present.
cd-12 (Mandatory)
If referencePrice exists, then its value must be greater than or equal to zero.
Context:
CreditDefaultSwap (complex type)
cd-13 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/buyerPartyReference exists, its @href attribute must match that of generalTerms/buyerPartyReference.
cd-14 (Mandatory)
If protectionTerms/creditEvents/creditEventNotice/notifyingParty/sellerPartyReference exists, its @href attribute must match that of generalTerms/sellerPartyReference.
cd-15 (Mandatory)
If there is exactly one generalTerms/referenceInformation/referenceObligation, and cashSettlementTerms/valuationDate/singleValuationDate occurs, then the value of cashSettlementTerms/valuationMethod must be Market or Highest.
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.
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.
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.
cd-19 (Mandatory)
The following elements must not be present: protectionTerms/creditEvents/creditEventNotice/businessCenter, protectionTerms/creditEvents/restructuring/multipleHolderObligation, protectionTerms/creditEvents/restructuring/multipleCreditEventNotices, generalTerms/referenceInformation/allGuarantees, generalTerms/indexReferenceInformation, generalTerms/substitution, generalTerms/modifiedEquityDelivery.
cd-20 (Mandatory)
protectionTerms/obligation/notContingent must not be present.
cd-21 (Mandatory)
The following elements must not be present: 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.
cd-21b (Mandatory)
The following elements must not be present: 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)
The following elements must not be present: protectionTerms/creditEvents/bankrupcy, protectionTerms/creditEvents/failureToPay, protectionTerms/creditEvents/repudiationMoratorium, protectionTerms/creditEvents/obligationDefault, protectionTerms/creditEvents/obligationAcceleration.
cd-23 (Mandatory)
cashSettlementTerms or physicalSettlementTerms must be present.
cd-24 (Mandatory)
The following elements must be present: protectionTerms/creditEvents, protectionTerms/creditEvents/creditEventNotice, protectionTerms/obligations, generalTerms/referenceInformation/referencePrice.
cd-25 (Mandatory)
If physicalSettlementTerms exists them it must contain settlementCurrency, physicalSettlementPeriod, escrow and deliverableObligations/accruedInterest.
cd-26 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate exists, then feeLeg/singlePayment/adjustablePaymentDate > generalTerms/effectiveDate/unadjustedDate.
cd-27 (Mandatory)
If feeLeg/singlePayment/adjustablePaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/singlePayment/adjustablePaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
cd-28 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate exists, then feeLeg/periodicPayment/firstPaymentDate > generalTerms/effectiveDate/unadjustedDate.
cd-29 (Mandatory)
If feeLeg/periodicPayment/firstPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/periodicPayment/firstPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
cd-30 (Mandatory)
If feeLeg/periodicPayment/lastRegularPaymentDate and generalTerms/scheduledTerminationDate/adjustableDate are present, then feeLeg/periodicPayment/lastRegularPaymentDate < generalTerms/scheduledTerminationDate/adjustableDate/unadjustedDate.
cd-43 (Mandatory)
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
Context:
PeriodicPayment (complex type)
cd-31 (Mandatory)
If both element firstPaymentDate and lastRegularPaymentDate exist, then firstPaymentDate < lastRegularPaymentDate.
cd-32 (Mandatory)
If fixedAmountCalculation exists, it must contain calculationAmount and dayCountFraction.
cd-33 (Mandatory)
If both firstPaymentDate and lastRegularPaymentDate are present, then lastRegularPaymentDate must fall precisely on a date reachable by adding an integer multiple of the period in paymentFrequency to firstPaymentDate.
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.
Context:
CreditEvents (complex type)
cd-35 (Mandatory)
At least one child element must be present.
Context:
PubliclyAvailableInformation (complex type)
cd-36 (Mandatory)
Either standardPublicSources or at least one publicSource element must be present.
Context:
CashSettlementTerms (complex type)
cd-37 (Mandatory)
quotationAmount/amount >= minimumQuotationAmount/amount, if both elements are present.
Context:
ReferencePool (complex type)
cd-38 (Mandatory)
The sum of referencePoolItem/constituentWeight/basketPercentage is equal to 1 or no referencePoolItem/constituentWeight exists.
Context:
BasketReferenceInformation (complex type)
cd-39 (Mandatory)
If nthToDefault exists and mthToDefault exists then nthToDefault must be less than mthToDefault.
Context:
Tranche (complex type)
cd-40 (Mandatory)
attachmentPoint must be less than or equal to exhaustionPoint.
Deprecated rules
Removed rules