numpy中的金融函数一览:
终值 fv
现值 pv
净现值 npv
每期支付金额 pmt
内部收益率 irr
修正内部收益率 mirr
定期付款期数 nper
利率 rate
终值:fv,计算的是未来的价值。
numpy.fv(rate, nper, pmt, pv[, when='end'])
#参数:
rate:每一期的利率(rate of interest)。数值或矩阵(M, )。
nper:期数。
pmt:payment。
pv:present value,现值。
when:{{‘begin’, 1}, {‘end’, 0}}, {string, int}, optional.
每一期的开头还是结尾付。
# 例子:年利率为5%,存100,然后每个月存100,10年后可以得到多少。【零存】
>>> np.fv(0.05/12, 10*12, -100, -100)
15692.928894335748
【负值代表现金流出,比如存到银行后目前就不可用了。】
如果传入的参数是array性质的,那么计算结果也是array。比如比较不同利率的终值。
>>> a = np.array((0.05, 0.06, 0.07))/12
>>> np.fv(a, 10*12, -100, -100)
array([ 15692.92889434, 16569.87435405, 17509.44688102])
现值:pv,计算未来金额在现在的价值。
numpy.pv(rate, nper, pmt, fv=0.0, when='end')
#参数含义同fv
#例子:年利率5%,每月投入100,需要投入多少本金才可以在10年后的15682.93。
>>> np.pv(0.05/12, 10*12, -100, 15692.93)
-100.00067131625819
每期支付金额:pmt
numpy.pmt(rate, nper, pv[, fv=0, when='end'])
参数:利率,分期数,现金值。
例子:月付,200,000,15年还清,年利率为7.5%
>>> np.pmt(0.075/12, 12*15, 200000)
-1854.0247200054619
每期支付金额之本金:ppmt
- numpy.ppmt(rate, per, nper, pv[, fv, when]) Compute the payment against loan principal.
- per表示目前处在第几个还款期
- 由于在等额还款方式下虽然每期偿还的总金额(本金+利息)相等,但是各期的本金及利息不相等,随着时间的推移,每期偿还的本金逐渐增加,利息逐渐减少。
每期支付金额之利息:ipmt
numpy.ipmt(rate, per, nper, pv[, fv, when]) Compute the interest portion of a payment.
pmt = ppmt + ipmt
分期数:nper
numpy.nper(rate, pmt, pv, fv=0, when='end')
参数:略
例子:如果你以每月150,年利率为7%,来还清8000的贷款,需要多少期?
>>> print(round(np.nper(0.07/12, -150, 8000), 5))
64.07335
同样也可以计算不同利率,做比较。
利率:rate
numpy.rate(nper, pmt, pv, fv[, when='end', guess=0.1, tol=1e-06, maxiter=100])
以上这些都是当前资金和未来资金的转换。
净现值:npv(net present value)
- 净现值是指投资方案所产生的【现金净流量】(流入-流出)以资金成本为贴现率折现之后与原始投资额现值的差额
- 经济意义
- NPV>0表示项目实施后,除保证可实现预定的收益率外,尚可获得更高的收益。
- NPV<0表示项目实施后,未能达到预定的收益率水平,而不能确定项目已亏损。
- NPV=0表示项目实施后的投资收益率正好达到预期,而不是投资项目盈亏平衡。
numpy.npv(rate, values)
参数:
rate: scalar数值,折现率。
values: 现金流。正数代表‘收入’或‘取款’,负数代表‘投资’或‘存款’。
第一个值必须是初始的投资,也就是必须是负数。
公式:
NPV=Σ(CI-CO)(1+i)^(-t)
式中:CI——现金流入,CO——现金流出,(CI-CO)——第t年净现金流量,i——基准折现率
>>> np.npv(0.281,[-100, 39, 59, 55, 20])
-0.0084785916384548798
内部收益率:irr
numpy.irr(values)返回Internal Rate of Return (IRR).
参数:
values: array形式,每一期的现金流。
#用例子来解释:
一个人投资100,然后按照固定的时间间隔进行取款,[39,59,55,20]。
假设最终值是0,那么他投资的100,最终产出是173。
因为阶段性取款,收益率不是简单的做平均。而是用以下公式计算:
-100 + 39/(1+r) + 59/(1+r)^2 + 55/(1+r)^3 + 20/(1+r)^4 = 0
代码:
>>> round(np.irr([-100, 39, 59, 55, 20]), 5)
0.28095
>>> round(np.irr([-100, 0, 0, 74]), 5)
-0.0955
>>> round(np.irr([-100, 100, 0, -7]), 5)
-0.0833
修正内部收益率: mirr(modified internal rate of return)
numpy.mirr(values, finance_rate, reinvest_rate)
参数
values : array_like
现金流(必须有一个正值和一个负值),第一个值可以看做是沉没成本。
finance_rate : scalar
Interest rate paid on the cash flows
reinvest_rate : scalar
Interest rate received on the cash flows upon reinvestment
Returns: float
Modified internal rate of return