[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FpML-VAL Loans validation rules for review
All,
Further to today's meeting, please find attached the Loans validation
rules for review. My understanding from Karel is that the intention is
to get these rules in Version 4.4, thus the document needs to be
finalised prior to the end of this month. To this end, I would be most
grateful if you could review the document and share your comments with
group - copying Bhavik. If you could provide your comments by the end
of this week with a view to having a conf call at the start of next week
to discuss any contentious comments that may arise, that would be great.
Regards
Pam F-W
Title: FpML 4.4 Validation Rules - 2008-04-04
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/spec/fpml-4-4-5-lcwd-1
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: DrawdownNotice)
(context: InterestPaymentNotice)
(context: FacilityNotice)
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 interestAccrualSchedule/interestRatePeriod/allInRate = interestAccrualSchedule/interestRatePeriod/margin + interestAccrualSchedule/interestRatePeriod/interestRate + interestAccrualSchedule/interestRatePeriod/mlaCost
Context:
InterestAccrualSchedule (complex type)
ln-6 (Mandatory)
interestRatePeriod/startDate,lenderLoanContractPeriod/startDate, First interestAccrualPeriod/startDate must be equal.
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 FacilityNoticeDetails/facilityIdentifier/originalCommitmentAmount and FacilityNoticeDetails/facilityCommitmentPosition/loanContractPosition/loanContractIdentifier/originalAmount/amount exist, then FacilityNoticeDetails/facilityIdentifier/originalCommitmentAmount >= FacilityNoticeDetails/facilityCommitmentPosition/loanContractPosition/loanContractIdentifier/originalAmount/amount.
ln-11 (Mandatory)
If FacilityNoticeDetails/facilityCommitmentPosition and FacilityNoticeDetails/facilityCommitmentPosition/loanContractPosition exist, then FacilityNoticeDetails/facilityCommitmentPosition/currentAmount >= FacilityNoticeDetails/facilityCommitmentPosition/loanContractPosition/currentAmount.
ln-12 (Mandatory)
If FacilityNoticeDetails/facilityCommitmentPosition and FacilityNoticeDetails/loanContractPosition exist, then FacilityNoticeDetails/facilityCommitmentPosition/priorAmount >= FacilityNoticeDetails/facilityCommitmentPosition/loanContractPosition/priorAmount.
Context:
DrawdownNotice (complex type)
ln-13 (Mandatory)
FacilityNoticeDetails/noticeDate <= drawdownPayment/paymentDate.
ln-14 (Mandatory)
If loanContract exists, then drawdownPayment/paymentDate >= loanContract/effectiveDate.
ln-15 (Mandatory)
If FacilityNoticeDetails/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)
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 must be equal to the sum of all interestAccrualSchedule/interestAccrualPeriod/shareInterestAccrualAmount.
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:
RepaymentNotice (complex type)
ln-22 (Mandatory)
If DrawdownNotice/loanContractRepayment/loanContractIdentifier/originalAmount exists, then loanContractRepayment/loanContractIdentifier/originalAmount/amount >= repayment/loanContractRepayment/amount/globalAmount/amount.
ln-23 (Mandatory)
repayment/facilityRepayment/amount/globalAmount/amount must be >= the sum of all repayment/loanContractRepayment/loanContractIdentifier/originalAmount/amount.
ln-24 (Mandatory)
If FacilityNoticeDetails/facilityCommitmentPosition exists, then FacilityNoticeDetails/facilityCommitmentPosition/priorAmount/shareAmount/amount >= repayment/facilityRepayment/amount/shareAmount/amount.
ln-25 (Mandatory)
repayment/facilityRepayment/amount/shareAmount/amount must be >= the sum of all repayment/loanContractRepayment/amount/shareAmount/amount.
ln-26 (Mandatory)
If repayment/loanContractRepayment/amount/globalAmount exists, then repayment/facilityRepayment/amount/globalAmount/amount must be >= the sum of all repayment/loanContractRepayment/amount/globalAmount/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.
ln-29 (Mandatory)
feePayment/paymentDate >= feePayment/effectiveDate.
Deprecated rules
Removed rules
Attachment:
FpMLLoanValidationRules_Phase1_withRuleIDs.xls
Description: MS-Excel spreadsheet