Exemple #1
0
 private static Loan GetTestLoan(
     AccrualBasis accrualBasis         = AccrualBasis.ActualActual,
     decimal amount                    = 0,
     decimal interestRate              = 0,
     DateTime?interestAccrualStartDate = null,
     DateTime?maturityDate             = null
     ) => new Loan
 {
     AccrualBasis             = accrualBasis,
     Amount                   = amount,
     InterestRate             = interestRate,
     InterestAccrualStartDate =
         interestAccrualStartDate ?? new DateTime(2001, 1, 1),
     MaturityDate = maturityDate ?? new DateTime(2002, 1, 1)
 };
Exemple #2
0
        internal static decimal CalculateTerm(
            LocalDate startDate,
            LocalDate endDate,
            AccrualBasis accrualBasis
            )
        {
            var years =
                Period.Between(startDate, endDate, PeriodUnits.Years).Years;
            var     startPlusYears = startDate.PlusYears(years);
            decimal days           =
                Period.Between(startPlusYears, endDate, PeriodUnits.Days).Days;
            var remainingYearPart = accrualBasis switch
            {
                AccrualBasis.Actual360 => days / 360,
                AccrualBasis.Actual365 => days / 365,
                AccrualBasis.ActualActual =>
                days / CalendarSystem.Gregorian.GetDaysInYear(endDate.Year),
                AccrualBasis.Thirty360 =>
                GetDaysForThirty360(startPlusYears, endDate) / 360,
                _ => throw new InvalidOperationException("shouldn't happen")
            };

            return(years + remainingYearPart);
        }
 private static int GetDaysInYear(AccrualBasis accrualBasis, int year) =>
 accrualBasis switch
 {
Exemple #4
0
 public Loan(string loanId, double originalBalance, double currentBalance, DateTime firstPaymentDate, DateTime factorDate, int originalLoanTerm, int originalAmortTerm, int originalIOTerm, double grossCoupon, double feeStrip, AccrualBasis accrualBasis, string originalPrepaymentString)
 {
     loan = CreateLoan(loanId, originalBalance, currentBalance, firstPaymentDate.toYYYYMMDD(), factorDate.toYYYYMMDD(), originalLoanTerm, originalAmortTerm, originalIOTerm, grossCoupon, feeStrip, accrualBasis, originalPrepaymentString);
 }
Exemple #5
0
 private static extern IntPtr CreateLoan([MarshalAs(UnmanagedType.LPStr)] string loanId, double originalBalance, double currentBalance, int firstPaymentDateYYYYMMDD, int factorDateYYYYMMDD, int originalLoanTerm, int originalAmortTerm, int originalIOTerm, double grossCoupon, double feeStrip, AccrualBasis accrualBasis, string originalPrepaymentString);