Skip to content

Latest commit

 

History

History
198 lines (125 loc) · 3.87 KB

量化.金融工具.md

File metadata and controls

198 lines (125 loc) · 3.87 KB

金融工具

引入库文件

import numpy_financial as npf

fv函数

计算未来价值

def fv(rate, nper, pmt, pv, when='end'):
参数rate存款/贷款每期的利率
nper存款/贷款期数
pmt存款/贷款每期支付的金额
pv当前的存款/贷款金额

小明地觉去银行存款,假设年利率是3%,存款为1000,然后每个季度都会存10元,那么五年后能拿到多少钱呢?

"""
年利率是百分之3,那么每个季度显然就是0.03 / 4
每个季度存10元,存五年,那么期数显然是5 * 4期
因此:
每个季度的利率:  rate = 0.3 / 4 
总期数:        nper = 5 * 4
每期存的金额:   pmt = -10
当前金额:      pv = -1000

pmt和pv为什么是负的,可以想象一下存款,相当于是给别人钱,所以是负的,取出来的时候,别人给你,会是正的
"""
result = npf.fv(0.03 / 4, 5 * 4, -10, -1000)
print(result)
1376.0963320407982

pv函数

用于根据未来计算现在的价值

pv函数和fv正好是相反的

def pv(rate, nper, pmt, fv=0, when='end')

rate:存款/贷款每期的利率
nper:存款/贷款期数
pmt:存款/贷款每期支付的金额
fv:未来的存款/贷款金额

小明去银行去钱,假设年利率是3%,然后每个季度都会存10元,如果五年后拿到1376.0963320407982,那么她现在要存多少钱呢?

result = npf.pv(0.03 / 4, 5 * 4, -10, 1376.0963320407982)
print(result)
-1000.0

npv函数

npv(net present value)定义为按照折现率计算的净现金流之和。

npv 大于0 可投资

def npv(rate, values):
rate:存款/贷款每期的利率
values:现金

小明投资100, 收益分别是39,59,55,20,折现率为28.1%,则净现值为:

result = npf.npv(0.281, [-100, 39, 59, 55, 20])
print(result)
-0.00847859163845488

pmt函数

根据本金和利率计算出每期需要支付的金额

def pmt(rate, nper, pv, fv=0, when='end')

rate:存款/贷款每期的利率
nper:存款/贷款期数
pv:存款/贷款金额

小明要买房,房贷20万,准备15年还清,年利率为7.5%,则每个月需要换多少钱

"""
rate:0.075 / 12
nper:15 * 12
pv:这里是贷了200000,所以钱是到自己兜里了,所以是正的
"""
result = npf.pmt(0.051 / 12, 15 * 12, 200000)
print(result)
-1854.0247200054619

rate函数

计算年利率

def rate(nper, pmt, pv, fv, when='end', guess=None, tol=None, maxiter=100):
nper:期数
pmt:每期的存款/贷款金额
pv:present value
fv:future value

小明存了1000元,然后每个季度存款10元,存了5年,五年后拿到了1376.0963320407982,那么年利率是多少呢?

result = npf.rate(5 * 4, -10, -1000, 1376.0963320407982)
print(result * 4)
0.030000000000003947

irr函数

计算内部收益率

一个人投资100,然后按照固定的时间间隔进行取款,39,59,55,20 由于是阶段性区块,收益率不是做简单的平均。而是用以下的公式计算 -100 + 39/(1+r) + 59/(1+r)^2 + 55/(1+r)^3 + 20/(1+r)^4 = 0

result = npf.irr([-100, 39, 59, 55, 20])
print(result)
0.28094842115996066

nper函数

计算出需要付款多少期

def nper(rate, pmt, pv, fv=0, when='end')
rate:存款/贷款每期的利率
pmt:存款/贷款每期的金额
pv:存款/贷款金额

小明房贷20万,年利率为7.5%,每个月还2000,则需要还多少期

"""
rate:0.075 / 12
pmt:每个月支出两千,所以是负的,-200
pv:这里是贷了200000,所以钱是到自己兜里了,所以是正的
"""

result = npf.nper(0.075 / 12, -2000, 200000)
print(result)  # 157.42258584992115
# 说明要还157.42258584992115期
157.42258584992115