module FinancialMath::SimpleInterest

Public Instance Methods

bank_discount(future_value:, discount_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 31
def bank_discount(future_value:, discount_rate:, periods: 0, frequency: 1)
  factor_val = factor(periods: periods, frequency: frequency)
  (future_value * discount_rate * factor_val).round(2)
end
discount_rate(interest_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 19
def discount_rate(interest_rate:, periods: 0, frequency: 1)
  divisor = 1 + interest_rate * factor(periods: periods,
                                       frequency: frequency)
  (interest_rate / divisor).round(2)
end
future_value(present_value:, interest_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 3
def future_value(present_value:, interest_rate:, periods: 0, frequency: 1)
  factor_val = factor(periods: periods, frequency: frequency)
  (present_value * (1 + interest_rate * factor_val)).round(2)
end
interest_rate(discount_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 13
def interest_rate(discount_rate:, periods: 0, frequency: 1)
  divisor = 1 - discount_rate * factor(periods: periods,
                                       frequency: frequency)
  (discount_rate / divisor).round(2)
end
present_value(future_value:, interest_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 8
def present_value(future_value:, interest_rate:, periods: 0, frequency: 1)
  factor_val = factor(periods: periods, frequency: frequency)
  (future_value / (1 + interest_rate * factor_val)).round(2)
end
rational_discount(present_value:, interest_rate:, periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 25
def rational_discount(present_value:, interest_rate:,
                      periods: 0, frequency: 1)
  factor_val = factor(periods: periods, frequency: frequency)
  (present_value * interest_rate * factor_val).round(2)
end

Private Instance Methods

factor(periods: 0, frequency: 1) click to toggle source
# File lib/financial_math/simple_interest.rb, line 38
def factor(periods: 0, frequency: 1)
  periods / frequency.to_f
end