FpML Issues Tracker

743: ln-8 has incorrect definition

June 6, 2008

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

  • Leave an update

    You must be logged in to post an update.