Class: XirrNewtonCalculator
- Inherits:
-
Object
- Object
- XirrNewtonCalculator
- Defined in:
- lib/xirr_newton_calculator.rb
Constant Summary collapse
- EPS =
10 ** -7
Instance Attribute Summary collapse
-
#f_xn ⇒ Object
writeonly
Sets the attribute f_xn.
Instance Method Summary collapse
- #calculate ⇒ Object
-
#initialize(flows, init_rate, max_iteration = 1000) ⇒ XirrNewtonCalculator
constructor
A new instance of XirrNewtonCalculator.
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
12 13 14 |
# File 'lib/xirr_newton_calculator.rb', line 12 def f_xn=(value) @f_xn = value end |
Instance Method Details
#calculate ⇒ Object
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 |