Example #1
0
        public void MaturityCompletionDate(Loan loan, double expected)
        {
            var           rule   = new DuchessOfDunderly.LoanRule.MaturityCompletionDate.LoanRule(new Discount.MaturityCompletionDate.Discount());
            LoanException result = rule.CalculateLoanException(loan);

            Assert.Equal(expected, result.Discount);
        }
Example #2
0
        public void InterestProfile(Loan loan, double expected)
        {
            var           rule   = new DuchessOfDunderly.LoanRule.InterestProfile.LoanRule(new Discount.InterestProfile.Discount());
            LoanException result = rule.CalculateLoanException(loan);

            Assert.Equal(expected, result.Discount);
        }
Example #3
0
        public void CurrentLTV(Loan loan, double expected)
        {
            var           rule   = new DuchessOfDunderly.LoanRule.CurrentLTV.LoanRule(new Discount.CurrentLTV.Discount());
            LoanException result = rule.CalculateLoanException(loan);

            Assert.Equal(expected, result.Discount);
        }
Example #4
0
        public override LoanException CalculateLoanException(Loan source)
        {
            LoanException result = new LoanException();

            if (source.MaturityDate < source.CompletionDate)
            {
                result.Trigger(1, exceptionDiscount.CalculateDiscount(source));
            }

            return(result);
        }
Example #5
0
        public override LoanException CalculateLoanException(Loan source)
        {
            LoanException result = new LoanException();

            if (source.CurrentLTV > source.OriginalLTV)
            {
                result.Trigger(3, exceptionDiscount.CalculateDiscount(source));
            }
//                result.Trigger(3, CalculateDiscount(source));

            return(result);
        }
Example #6
0
        public override LoanException CalculateLoanException(Loan source)
        {
            LoanException result = new LoanException();
            double        total_monthly_income = (source.IncomeBorrower1 + source.IncomeBorrower2) / 12;

            if (source.CMS > total_monthly_income)
            {
                result.Trigger(4, exceptionDiscount.CalculateDiscount(source));
            }

            return(result);
        }
Example #7
0
        public override LoanException CalculateLoanException(Loan source)
        {
            LoanException result = new LoanException();

            if (source.CurrentIndex.Equals("FIX", StringComparison.InvariantCultureIgnoreCase) &&
                (source.CurrentMargin.NotEqual(source.CurrentInterestRate)))
            {
                result.Trigger(2, exceptionDiscount.CalculateDiscount(source));
            }

            return(result);
        }
Example #8
0
 public void CalculateLoanGrades()
 {
     foreach (Loan loan in repo.Get())
     {
         LoanGrade grade = new LoanGrade(loan.LoanID);
         foreach (IExceptionRule rule in rules)
         {
             LoanException loanException = rule.CalculateLoanException(loan);
             if (loanException.Triggered)
             {
                 grade.AddException(loanException);
             }
         }
         grade.Recalculate();
         loan.Grade = grade;
         grades.Add(grade);
     }
 }