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