Present Value (PV)

pv(rate, nper, pmt[, fv, when])

Compute the present value.

syse.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

Returns:

the value now

Parameters:
  • rate (array_like) – Rate of interest (per period)

  • nper (array_like) – Number of compounding periods

  • pmt (array_like) – Payment

  • fv (array_like, optional) – Future value

  • when ({{'begin', 1}, {'end', 0}}, {string, int}, optional) – When payments are due (‘begin’ (1) or ‘end’ (0))

Returns:

Present value of a series of payments or investments.

Return type:

ndarray, float

Note

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.

Examples:

A German bond that pays annual coupons of 4.5%, has a par value of €1,000, and a YTM of 3.9%. Assuming there are 19 years until maturity, what is the current price of this bond?

import numpy as np
import syse as syse
face_value=1000
coupon_value=4.5
num_coupons=19
ytm=3.9
current_price = syse.pv(0.039, 19, 45, 1000)
print(f"Current price = €{abs(current_price):,.2f}")
Output = Current price = €1,079.48

Gruber Corp. pays a constant $9 dividend on its stock. The company will maintain this dividend for the next 12 years and will then cease paying dividends forever (you should assume the company disappears with no extra payouts). If the required return on this stock is 10%, what is the current share price?

import numpy as np
import syse as syse
rate = 0.10
nper = 12
pmt = 9
share_price = syse.pv(0.10, 12, 9)
print(f"Share Price = ${abs(share_price):.2f}")
Output = Share Price = $61.32