Python基本金融库
我在找一个适合Python的财务库,想用它来做折现现金流分析。我查了一下,发现了QuantLib,但对我来说这个库太复杂了。我只需要一个小一点的库,能让我输入一系列的现金流,然后输出净现值和内部收益率。有没有人知道类似的库,或者知道我可以在哪里找到?
3 个回答
可能我回答这个问题有点晚了。我在研究生院和工作中学到了估值的知识,主要是从估值领域的专家,达莫德兰博士那里学到的。在学习了如何评估公司和在Excel中建立模型后,我尝试了很多Python库来进行折现现金流(DCF)估值,但每一个都有一些不足之处。因此,我最终用Python编写了一个DCF模型,构建方式与达莫德兰博士在电子表格中建立的DCF模型相似。此外,我还在Python中创建了一个DCF蒙特卡洛模拟模型。为了让那些可能对在Python中进行内在估值感兴趣的人有所帮助,我制作了一个关于如何使用DCF模型的教程视频。
我花了两年多的时间来完成这个项目,我希望这能为那些想在Python中进行内在商业或股票估值的人节省不少时间。希望你们觉得这些内容有用。
如果你只是想计算净现值(也就是现金流和折现因子的内积)和内部收益率(这其实是一个简单的迭代查找过程),那么你可以直接写代码来实现。
我更常用的是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>
这个代码建立了一个包含现金流和折现因子的两列数据结构,并计算净现值,方法是将它们的乘积相加。所以,一个(简单的)六年期债券,年利率为2%,在1%的平坦收益率曲线下,价值105.80。
对于内部收益率,我们几乎做的是一样的事情,只不过让净现值成为利率的一个函数:
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%。
为了完整起见,虽然我来得有点晚: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']
而且需要注意时间的安排。