Class: Xirr::Bisection

Inherits:
Object
  • Object
show all
Includes:
Base
Defined in:
lib/xirr/bisection.rb

Overview

Methods that will be included in Cashflow to calculate XIRR

Instance Attribute Summary

Attributes included from Base

#cf

Instance Method Summary collapse

Methods included from Base

#initialize, #periods_from_start, #xnpv

Instance Method Details

#xirr(midpoint, options) ⇒ BigDecimal

Calculates yearly Internal Rate of Return An initial guess rate will override the Cashflow#irr_guess

Parameters:

  • midpoint (Float)

Returns:

  • (BigDecimal)


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

def xirr(midpoint, options)

  # Initial values
  left  = [BigDecimal(-0.99999999, Xirr::PRECISION), cf.irr_guess].min
  right = [BigDecimal(9.99999999, Xirr::PRECISION), cf.irr_guess + 1].max
  @original_right = right
  midpoint ||= cf.irr_guess

  midpoint, runs = loop_rates(left, midpoint, right, options[:iteration_limit])

  get_answer(midpoint, options, runs)

end