Class: XirrNewtonCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/xirr_newton_calculator.rb

Defined Under Namespace

Classes: FlowStruct

Constant Summary collapse

EPS =
10 ** -7

Instance Method Summary collapse

Constructor Details

#initialize(flows, init_rate, max_iteration = 10_000) ⇒ XirrNewtonCalculator

Returns a new instance of XirrNewtonCalculator.



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/xirr_newton_calculator.rb', line 12

def initialize(flows, init_rate, max_iteration=10_000)
  initial_date = Date.parse flows[0].date.to_s
  @flows = flows.collect do |flow|
    FlowStruct.new(
      flow.amount,
      (Date.parse(flow.date.to_s) - initial_date) / 365.0
    )
  end
  @x_n = init_rate
  @max_iteration = max_iteration
end

Instance Method Details

#calculate(eps = EPS) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/xirr_newton_calculator.rb', line 24

def calculate(eps = EPS)
  @max_iteration.times do
    f(@x_n)
    break if @f_xn.abs < eps
    @x_n = next_value(@x_n)
  end
  @x_n
end