class Doughnut::Income
Attributes
income_growth_rate[RW]
monthly_income[RW]
Public Class Methods
new()
click to toggle source
# File lib/doughnut/retirement_calculator/income.rb, line 7 def initialize @monthly_income = 3700 @income_growth_rate = 0.01 end
Public Instance Methods
future_income(death_date, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/income.rb, line 12 def future_income(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
Private Instance Methods
discount_factor(mydate, discount_rate)
click to toggle source
# File lib/doughnut/retirement_calculator/income.rb, line 30 def discount_factor(mydate, discount_rate) t = (mydate - Date.today)/30 ((1 + @income_growth_rate/12)/(1 + discount_rate/12))**t end
is_last_day_of_month(mydate)
click to toggle source
# File lib/doughnut/retirement_calculator/income.rb, line 22 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/income.rb, line 26 def present_value(mydate, discount_rate) { date: mydate, income: @monthly_income*discount_factor(mydate, discount_rate) } end