[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FpML-VAL updated loan rules
I revised some of the proposed rules. These are the rules I changed:
5, 6, 10-13, 17, 20, 22-26, 29
The types of changes I made include:
- Corrected path expressions for
some elements
- Picked a more specific context
- Added SameCurrency
preconditions to some rules
Best Regards,
-Marc
+13472846531
**************************************************************************************************************************
The information contained in either this email and, if applicable, the attachment, are confidential and are intended only for the recipient. The contents of either the email or the attachment may not be disclosed or used by anyone other than the addressee. If you are not the intended recipient(s), any use, disclosure, copying, or distribution is prohibited and may be unlawful. If you have received this communication in error, please notify us by e-mail at isda@xxxxxxxx then delete the e-mail and all attachments and any copies thereof. This communication is part of an ISDA process and is not intended for unauthorized use or distribution.
**************************************************************************************************************************
|
Title: FpML 4.4 Validation Rules - 2008-03-24
FpML 4.4 Validation Rules - Rules for Loan Messages
This is the Loan part of the validation rule set accompanying the FpML 4.4 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
http://www.fpml.org/2007/FpML-4-4
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: SameCurrency
(context: FacilityNotice)
(context: DrawdownNotice)
(context: InterestPaymentNotice)
(context: LoanContractRepayment)
(context: Repayment)
All instances of currency values within the context of this rule must be identical.
Rules
Unique contexts:
Context:
LoanContract (complex type)
ln-1 (Mandatory)
currentInterestRatePeriod/startDate >= effectiveDate.
ln-2 (Mandatory)
If currentInterestRatePeriod/floatingRateIndex = PRIME then currentInterestRatePeriod/rateFixingDate = effectiveDate.
Context:
InterestRatePeriod (complex type)
ln-3 (Mandatory)
endDate >= startDate >= rateFixingDate.
ln-4 (Mandatory)
If mlaCost doesn't exist and interestRate and margin and allInRate exist, then allInRate = margin + interestRate.
ln-5 (Mandatory)
If mlaCost and interestRate and margin and allInRate exist, then allInRate = margin + interestRate + mlaCost
Context:
InterestAccrualSchedule (complex type)
ln-6 (Mandatory)
interestRatePeriod/startDate,lenderLoanContractPeriod/startDate, interestAccrualPeriod/startDate must be equal in each period.
ln-7 (Mandatory)
The [n]th interestRatePeriod/endDate must be the previous calendar day of the [n+1]th interestRatePeriod/startDate.
ln-8 (Mandatory)
The [n]th lenderLoanContractPeriod/endDate must be the previous calendar day of the [n+1]th lenderLoanContractPeriod/startDate.
ln-9 (Mandatory)
The [n]th interestAccrualPeriod/endDate must be the previous calendar day of the [n+1]th interestAccrualPeriod/startDate.
Context:
FacilityNotice (complex type)
ln-10 (Mandatory)
If facilityIdentifier/originalCommitmentAmount and facilityCommitmentPosition/loanContractPosition/loanContractIdentifier/originalAmount/amount exist, then facilityIdentifier/originalCommitmentAmount >= facilityCommitmentPosition/loanContractPosition/loanContractIdentifier/originalAmount/amount.
ln-11 (Mandatory)
If facilityCommitmentPosition and facilityCommitmentPosition/loanContractPosition exist, then facilityCommitmentPosition/currentAmount >= facilityCommitmentPosition/loanContractPosition/currentAmount.
ln-12 (Mandatory)
If facilityCommitmentPosition and loanContractPosition exist, then facilityCommitmentPosition/priorAmount >= facilityCommitmentPosition/loanContractPosition/priorAmount.
Context:
DrawdownNotice (complex type)
ln-13 (Mandatory)
noticeDate <= drawdownPayment/paymentDate.
ln-14 (Mandatory)
If loanContract exists, then drawdownPayment/paymentDate >= loanContract/effectiveDate.
ln-15 (Mandatory)
If dealIdentifier/creditAgreementDate exists, then loanContract/effectiveDate and drawdownPayment/paymentDate >= dealIdentifier/creditAgreementDate.
ln-16 (Mandatory)
If facilityCommitmentPosition/priorAmount/shareAmount exists, then drawdownPayment/shareLoanContractAmount <= facilityCommitmentPosition/priorAmount/shareAmount.
ln-17 (Mandatory)
If loanContract exists, then loanContract/loanContractIdentifier/originalAmount/amount >= drawdownPayment/shareLoanContractAmount/amount.
ln-18 (Mandatory)
If loanContractIdentifier exists, then loanContractIdentifier/originalAmount/amount >= drawdownPayment/shareLoanContractAmount/amount.
ln-19 (Mandatory)
If drawdownEventType = RateSetEvent and loanContract exists, then loanContract/interestRatePeriod/interestRate and loanContract/interestRatePeriod/margin and loanContract/interestRatePeriod/allInRate and loanContract/interestRatePeriod/interestDayBasis and loanContract/interestRatePeriod/FloatingRateIndex/model/indexTenor must exist.
Context:
InterestPaymentNotice (complex type)
ln-20 (Mandatory)
interestPayment/amount/shareAmount/amount must be equal to the sum of all interestAccrualSchedule/interestAccrualPeriod/shareInterestAccrualAmount/amount.
ln-21 (Mandatory)
interestAccrualSchedule/interestRatePeriod/interestRate and interestAccrualSchedule/interestRatePeriod/margin and interestAccrualSchedule/interestRatePeriod/allInRate and interestAccrualSchedule/interestRatePeriod/interestDayBasis and interestAccrualSchedule/interestRatePeriod/FloatingRateIndex/model/indexTenor must exist.
Context:
LoanContractRepayment (complex type)
ln-22 (Mandatory)
If loanContractIdentifier/originalAmount exists, then loanContractIdentifier/originalAmount/amount >= amount/globalAmount/amount.
Context:
Repayment (complex type)
ln-23 (Mandatory)
facilityRepayment/amount/globalAmount/amount must be >= the sum of all loanContractRepayment/loanContractIdentifier/originalAmount/amount.
ln-25 (Mandatory)
facilityRepayment/amount/shareAmount/amount must be >= the sum of all loanContractRepayment/amount/shareAmount/amount.
ln-26 (Mandatory)
If loanContractRepayment/amount/globalAmount exists, then facilityRepayment/amount/globalAmount/amount must be >= the sum of all loanContractRepayment/amount/globalAmount/amount.
Context:
RepaymentNotice (complex type)
ln-24 (Mandatory)
If facilityCommitmentPosition exists, then facilityCommitmentPosition/priorAmount/shareAmount/amount >= repayment/facilityRepayment/amount/shareAmount/amount.
Context:
OneOffFeeNotice (complex type)
ln-27 (Mandatory)
If feePayment/feeType = BreakageFee then loanContractIdentifier must exist.
ln-28 (Mandatory)
If feePayment/feeType = AssignmentFee then loanContractIdentifier must not exist.
Context:
OneOffFeePayment (complex type)
ln-29 (Mandatory)
paymentDate >= effectiveDate.
Deprecated rules
Removed rules