Class: XirrNewtonCalculator

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

Constant Summary collapse

EPS =
10 ** -7

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(flows, init_rate, max_iteration = 1000) ⇒ XirrNewtonCalculator

Returns a new instance of XirrNewtonCalculator.



14
15
16
17
18
# File 'lib/xirr_newton_calculator.rb', line 14

def initialize(flows, init_rate, max_iteration=1000)
 @flows = flows
 @x_n = init_rate < 1 ? 1 / (1 + init_rate) : 0.5
 @max_iteration = max_iteration
end

Instance Attribute Details

#f_xn=(value) ⇒ Object (writeonly)

Sets the attribute f_xn

Parameters:

  • value

    the value to set the attribute f_xn to.



12
13
14
# File 'lib/xirr_newton_calculator.rb', line 12

def f_xn=(value)
  @f_xn = value
end

Instance Method Details

#calculateObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/xirr_newton_calculator.rb', line 20

def calculate
	@f_xn = f(@x_n)
	iteration = 0
	while @f_xn.abs >= EPS && iteration <= @max_iteration
		@f_xn = f(@x_n)
  	@x_n = next_value(@x_n)
  	iteration += 1
  end
  discount_factor_to_irr(@x_n)
end