Python 基础金融库

问题描述 投票:0回答:3

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

python finance
3个回答
12
投票

为了完整起见,因为我迟到了: 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']

并且有必要注意时机。


3
投票

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

我使用 R 的次数比 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 计算为乘积之和。因此,在 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%。


0
投票

可能来不及回答你的问题了。我在研究生院和工作中了解了估值,但主要是从估值系主任达莫德兰博士那里了解的。在学习了如何对公司进行估值并在 Excel 中构建模型后,我尝试了许多 Python 库来进行 DCF 估值,但每个库都有一些缺点。因此,我最终用 Python 编写了一个 DCF 模型,该模型的构建方式与 Damodran 博士在电子表格中构建 DCF 模型的方式相同。此外,我用 Python 创建了 DCF 蒙特卡罗仿真模型。为了完成这个项目的尝试,对于那些可能有兴趣在 Python 中进行内在估值的人,我创建了一个关于如何利用 DCF 模型的教程视频。

我花了 2 年多的时间来构建这个,我认为它可以为那些希望使用 Python 进行内在业务/股票估值的人节省大量时间。我希望您发现它们有用。

YouTube 上的教程

Python 协作文件中的 DCF 模型

GitHub

© www.soinside.com 2019 - 2024. All rights reserved.