当前位置: 代码迷 >> python >> Python的基本财务库
  详细解决方案

Python的基本财务库

热度:25   发布时间:2023-07-16 09:47:08.0

我正在寻找一个Python的财务库,这将使我能够进行贴现现金流量分析。 我环顾四周,找到了QuantLib,这对我想做的事情来说太过分了。 我只需要一个小型图书馆,我可以用来输入一系列现金流量,并输出净现值和内部收益率。 任何人都有这样的东西或知道我在哪里可以找到它?

只是为了完整,因为我迟到了:numpy有(非常)基本财务计算的一些功能。 numpy,scipy也可用于从R中的基本公式进行计算。

现金流量净现值

>>> cashflow = 2*np.ones(6)
>>> cashflow[-1] +=100
>>> cashflow
array([   2.,    2.,    2.,    2.,    2.,  102.])
>>> np.npv(0.01, cashflow)
105.79547647457932

获得内部费率或回报

>>> n = np.npv(0.01, cashflow)
>>> np.irr(np.r_[-n, cashflow])
0.010000000000000231

只是基础知识:

>>> [f for f in dir(np.lib.financial) if not f[0] == '_']
['fv', 'ipmt', 'irr', 'mirr', 'np', 'nper', 'npv', 'pmt', 'ppmt', 'pv', 'rate']

并且有必要注意时间是什么。

如果你真的只想计算净现值(= =现金流和折扣因子的向量的内积)和内部收益率(= =一个变量的简单迭代根搜索),那么你可以只编码。

我使用比Python更多,所以这里是一个R解决方案:

R> data <- data.frame(CF=c(rep(2,5), 102), df=1.01^(-(1:6)))
R> data
   CF     df
1   2 0.9901
2   2 0.9803
3   2 0.9706
4   2 0.9610
5   2 0.9515
6 102 0.9420
R> NPV <- sum(data[,1] * data[,2])
R> print(NPV)
[1] 105.8
R> 

这建立了现金流和折扣因子的两列数据结构,并计算NPV作为产品的总和。 所以一个(简单的)6年期债券,1%平收益率曲线的2%票息价值为105.80。

对于IRR,我们做的几乎相同,但使NPV成为速率的函数:

R> irrSearch <- function(rate) { data <- data.frame(CF=c(rep(2,5), 102), 
                                 df=(1+rate/100)^(-(1:6))); 
                                 100 - sum(data[,1] * data[,2]) }
R> uniroot( irrSearch, c(0.01,5) )
R> irr <- uniroot( irrSearch, c(0.01,5) )
R> irr$root
[1] 2
R> 

因此,在平曲线世界中寻找2%债券内部收益率的“根”是......毫不奇怪的是2%。