FpML Issues Tracker
closed
Minor
Always
Validation Rules
Admin
lyteck
Summary
ln-8 has the following problems with its definition:
1. The rule is incorrect because it does not apply to the last lenderLoandContractPeriod. The last period's endDate does not match the next period's startDate because there is no next period.
2. The terms "[n]th" and "[n+1]th" are undefined. In accordance with the FpML VWG Specification Rules these must be defined.
3. Implicit in the concept of "[n+1]th" is a sequence or order. The rule is ambiguous because it does not state what the order is over. I have seen this already misinterpreted as element order, or financial size order. With my experience this appears to be in date order. This should be made clear.
4. The rule is not a rule but an algorithm. It is straightforward to restate this as a rule.
5. In accordance with the VWG Specification of Rules, MultipleLenderLoanContractPeriod should be restated as a function.
6. An explanatory comment could be added for guidance.
The rule today is: " Context: InterestAccrualSchedule (complex type) ln-8 (Mandatory) Preconditions: MultipleLenderLoanContractPeriod The [n]th lenderLoanContractPeriod/endDate must be the previous calendar day of the [n+1]th lenderLoanContractPeriod/startDate. "
Restating the rule and fixing all the problems gives: " ln-8 (Mandatory) Context: InterestAccrualSchedule (complex type)[MultipleLenderLoanContractPeriod(.)] Rule: every $startDate in $interestAccrualSchedule/lenderLoanContractPeriod[startDate > min($interestAccrualSchedule/lenderLoanContractPeriod/startDate)]/startDate satisfies $startDate - xs:dayTimeDuration("P1D") = $interestAccrualSchedule/lenderLoanContractPeriod/endDate Comment: Each lendLoandContractPeriod except the first, starts 1 day after any other lendLoandContractPeriod ends.
Notes:
lyteck
07/25/08 3:29 pm
proposal to change to the following:
”
ln-8 (Mandatory)
Context: InterestAccrualSchedule (complex type)
[if more than one lenderLoanContractPeriod exists] [if lenderLoanContractPeriod is not the first one]
Each lenderLoanContractPeriod, except the first, starts 1 day after the end of the lenderLoanContractPeriod of the previous lenderLoanContractPeriod.
”
1. use of “if… exist” instead of function MultipleLenderLoanContractPeriod()
2. addition of condition [if … is not the first one]
3. modification of the comment (the one suggested by Matthew implied the difference is always 1 day)
4. use of the modified comment as the rule definition. Because anyway the rule is written, it would have to take into account some element order [n]th and [n+1]th
lenderLoanContractPeriod[n]th/startDate – 1 day = lenderLoanContractPeriod/endDate[n-1]th
Therefore, the alternative is to use a plain English description as the rule definition, as suggested above.
This issue is related to http://www.fpml.org/issues/view.php?id=766 (“Loan rules ln-7, ln-8, and ln-9 assume component ordering”)
matthewdr
08/26/08 1:14 pm
Agreed at the VWG to implement as proposed:
“”
ln-8 (Mandatory)
Context: InterestAccrualSchedule (complex type)[MultipleLenderLoanContractPeriod(.)]
Rule: every $startDate in $interestAccrualSchedule/lenderLoanContractPeriod[startDate > min($interestAccrualSchedule/lenderLoanContractPeriod/startDate)]/startDate satisfies $startDate – xs:dayTimeDuration(“P1D”) = $interestAccrualSchedule/lenderLoanContractPeriod/endDate
Comment: Each lendLoandContractPeriod except the first, starts 1 day after any other lendLoandContractPeriod ends.”
lyteck
08/26/08 3:21 pm
implemented as agreed.
matthewdr
08/26/08 3:59 pm
Accepting after review.
matthewdr
08/27/08 12:27 pm
MultipleLenderLoanContractPeriod() must be implemented as a function. The function call is present, but the function definition is missing.
lyteck
08/27/08 1:18 pm
Does it still make sense to implement these functions when they are only used once?
MultipleLenderLoanContractPeriod() ln-8
MultipleInterestRatePeriod() ln-7
MultipleInterestAccrualPeriod() ln-9
we could simply say:
[count(lenderLoanContractPeriod)>1]
[count(interestRatePeriod)>1]
[count(interestAccrualPeriod)>1]
this way readers don’t have to refer to another definition.
matthewdr
08/27/08 2:04 pm
The functions are present only because they were in the original AJ proposal and I didn’t want to change too much at once.
I agree they are un-necessary and can be removed.
lyteck
08/27/08 2:28 pm
implemented as proposed