pv¶

numpy_financial.
pv
(rate, nper, pmt, fv=0, when='end')¶ Compute the present value.
 Given:
a future value, fv
an interest rate compounded once per period, of which there are
nper total
a (fixed) payment, pmt, paid either
at the beginning (when = {‘begin’, 1}) or the end (when = {‘end’, 0}) of each period
 Return:
the value now
 Parameters
 ratearray_like
Rate of interest (per period)
 nperarray_like
Number of compounding periods
 pmtarray_like
Payment
 fvarray_like, optional
Future value
 when{{‘begin’, 1}, {‘end’, 0}}, {string, int}, optional
When payments are due (‘begin’ (1) or ‘end’ (0))
 Returns
 outndarray, float
Present value of a series of payments or investments.
Notes
The present value is computed by solving the equation:
fv + pv*(1 + rate)**nper + pmt*(1 + rate*when)/rate*((1 + rate)**nper  1) = 0
or, when
rate = 0
:fv + pv + pmt * nper = 0
for pv, which is then returned.
References
 WRW
Wheeler, D. A., E. Rathke, and R. Weir (Eds.) (2009, May). Open Document Format for Office Applications (OpenDocument)v1.2, Part 2: Recalculated Formula (OpenFormula) Format  Annotated Version, PreDraft 12. Organization for the Advancement of Structured Information Standards (OASIS). Billerica, MA, USA. [ODT Document]. Available: http://www.oasisopen.org/committees/documents.php?wg_abbrev=officeformula OpenDocumentformula20090508.odt
Examples
>>> import numpy as np >>> import numpy_financial as npf
What is the present value (e.g., the initial investment) of an investment that needs to total $15692.93 after 10 years of saving $100 every month? Assume the interest rate is 5% (annually) compounded monthly.
>>> npf.pv(0.05/12, 10*12, 100, 15692.93) 100.00067131625819
By convention, the negative sign represents cash flow out (i.e., money not available today). Thus, to end up with $15,692.93 in 10 years saving $100 a month at 5% annual interest, one’s initial deposit should also be $100.
If any input is array_like,
pv
returns an array of equal shape. Let’s compare different interest rates in the example above:>>> a = np.array((0.05, 0.04, 0.03))/12 >>> npf.pv(a, 10*12, 100, 15692.93) array([ 100.00067132, 649.26771385, 1273.78633713]) # may vary
So, to end up with the same $15692.93 under the same $100 per month “savings plan,” for annual interest rates of 4% and 3%, one would need initial investments of $649.27 and $1273.79, respectively.