public virtual double Capital(Loan loan) { return(RiskAmount(loan) * Duration(loan) * RiskFactorFor(loan)); }
public virtual double Duration(Loan loan) { return(YearsTo(loan.Expiry, loan)); }
protected double RiskFactorFor(Loan loan) { return(RiskFactor.GetFactors().ForRating(loan.RiskRating)); }
protected double YearsTo(DateTime endDate, Loan loan) { return(endDate.Subtract(loan.Start).Days / DAYS_PER_YEAR); }
protected abstract double RiskAmount(Loan loan);