Class: FinancialCalculator::Npv

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

Overview

Calculates the present value of a series of equally spaced cashflows of unequal amounts

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rate, cashflows) ⇒ FinancialCalculator::Npv

Create a new net present value calculation

Parameters:

  • rate (Numeric)

    The discount (interest) rate

  • cashflows (Array<Numeric>)

    An array of cashflows

Raises:

  • (ArgumentError)

See Also:



22
23
24
25
26
27
28
# File 'lib/financial_calculator/npv.rb', line 22

def initialize(rate, cashflows)
  raise ArgumentError.new("Rate must be a Numeric. Got #{rate.class} instead") unless rate.is_a? Numeric

  @rate     = rate
  @cashflows = cashflows
  @result   = solve(rate, cashflows)
end

Instance Attribute Details

#cashflowsArrray<Numeric> (readonly)

Returns An array of cashflow amounts.

Returns:

  • (Arrray<Numeric>)

    An array of cashflow amounts



11
12
13
# File 'lib/financial_calculator/npv.rb', line 11

def cashflows
  @cashflows
end

#rateNumeric (readonly)

Returns The rates used for calculating the present value.

Returns:

  • (Numeric)

    The rates used for calculating the present value



7
8
9
# File 'lib/financial_calculator/npv.rb', line 7

def rate
  @rate
end

#resultDecNum (readonly)

Returns Result of the XNPV calculation.

Returns:

  • (DecNum)

    Result of the XNPV calculation



15
16
17
# File 'lib/financial_calculator/npv.rb', line 15

def result
  @result
end

Instance Method Details

#inspectObject



30
31
32
# File 'lib/financial_calculator/npv.rb', line 30

def inspect
  "NPV(#{result})"
end