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