exonio 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a78b47da7f327af032c2c2eb15b19873b3633216
4
- data.tar.gz: c307fa7b9e8e3b8072e14fa2ad9f56fdf660eab8
3
+ metadata.gz: c9595c1bffef30730dadb4b4274742bc3113ef5e
4
+ data.tar.gz: 335f53e02bb83504bfcaaa8186d0debfeb7f09cd
5
5
  SHA512:
6
- metadata.gz: 6cb43b81c45f8fd358a3ec755bfb92c9f76d90de0cc81c8bbe50db6eed48df939ae2e45d48b7e660295bf1445e15c08216a790d610cc7ff81284287695186b3b
7
- data.tar.gz: 5d63764dfe31e91ad66ad82b30567a1c68d41450c536cefc0a3ee0361eed55fef9b5a146b05e4d583f512f817f2b0f88766bc1770ff6ba0e503ed662a7bbb25d
6
+ metadata.gz: e656084a10f77e0d48f7a32be71625863a6427bc34532229daf3692fef734784b9d0ded1ed556f67304ef9cbefb890d659fba7dcb3c6b94fa216cc752d67af02
7
+ data.tar.gz: 53bf0c5c0f905d0d86d1f7deb15b3e3c9cbffa4c7134ca6dbd92129ca62c797359688ef74e19943e6b4a7b662e6939935291357107741b481836f446e4816d28
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- exonio (0.1.1)
4
+ exonio (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -67,6 +67,20 @@ In order to pay-off (i.e., have a future-value of 0) the $200,000 obtained
67
67
  today, a monthly payment of $1,854.02 would be required. Note that this
68
68
  example illustrates usage of `fv` (future value) having a default value of 0.
69
69
 
70
+ ### PV
71
+
72
+ What is the present value (e.g., the initial investment) of an investment
73
+ that needs to total $20,000.00 after 10 years of saving $100 every month?
74
+ Assume the interest rate is 5% (annually) compounded monthly.
75
+
76
+ ```ruby
77
+ Exonio.pv(0.05 / 12, 12 * 10, -100, 20_000) # ==> -2715.0857731569663
78
+ ```
79
+
80
+ By convention, the negative sign represents cash flow out (i.e., money not available today).
81
+ Thus, to end up with $20,000.00 in 10 years saving $100 a month at 5% annual
82
+ interest, an initial deposit of $2715,09 should be made.
83
+
70
84
  ## TODO
71
85
 
72
86
  There's a lot of formulas to be implemented, including:
@@ -82,7 +96,6 @@ There's a lot of formulas to be implemented, including:
82
96
  * MIRR
83
97
  * NPV
84
98
  * PPMT
85
- * PV
86
99
  * RATE
87
100
  * SLN
88
101
  * SYD
@@ -66,5 +66,27 @@ module Exonio
66
66
 
67
67
  -(fv + pv * temp) / fact
68
68
  end
69
+
70
+ # Calculates the present value of an annuity investment based on
71
+ # constant-amount periodic payments and a constant interest rate.
72
+ #
73
+ # @param rate [Float] The interest rate as decimal (not per cent) per period
74
+ # @param nper [Integer] The number of payments to be made (number of periods)
75
+ # @param pmt [Float] The amount per period to be paid
76
+ # @param fv [Float] The future value remaining after the final payment has been made
77
+ # @param end_or_begining [Integer] Whether payments are due at the end (0) or
78
+ # beggining (1) of each period
79
+ #
80
+ # @return [Float]
81
+ #
82
+ # @example
83
+ # Exonio.pv(0.05/12, 12*10, -100, 20_000) # ==> -2715.0857731569663
84
+ #
85
+ def pv(rate, nper, pmt, fv = 0, end_or_beginning = 0)
86
+ temp = (1 + rate) ** nper
87
+ fact = (1 + rate * end_or_beginning) * (temp - 1) / rate
88
+
89
+ -(fv + pmt * fact) / temp
90
+ end
69
91
  end
70
92
  end
@@ -1,3 +1,3 @@
1
1
  module Exonio
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exonio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Izidoro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler