class Doughnut::Expenses
Attributes
inflation_rate[RW]
monthly_expenses[RW]
Public Class Methods
new()
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 7 def initialize @monthly_expenses = 2500 @inflation_rate = 0.0322 end
Public Instance Methods
future_expenses(death_date, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 20 def future_expenses(death_date, discount_rate) output = [] (Date.today..death_date).each do |mydate| output << present_value(mydate, discount_rate) if is_last_day_of_month(mydate) end output end
total_expenses(death_date, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 12 def total_expenses(death_date, discount_rate) output = 0 future_expenses(death_date, discount_rate).each do |h| output += h[:expense] end output end
Private Instance Methods
discount_factor(mydate, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 38 def discount_factor(mydate, discount_rate) t = (mydate - Date.today)/30 ((1 + @inflation_rate/12)/(1 + discount_rate/12))**t end
is_last_day_of_month(mydate)
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 30 def is_last_day_of_month(mydate) mydate.month != mydate.next_day.month end
present_value(mydate, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/expenses.rb, line 34 def present_value(mydate, discount_rate) { date: mydate, expense: @monthly_expenses*discount_factor(mydate, discount_rate) } end