我正在寻找一个 Python 的金融库,它可以让我进行贴现现金流分析。我环顾四周,找到了 QuantLib,这对于我想做的事情来说太过分了。我只需要一个小库,我可以用它来输入一系列现金流并让它输出净现值和内部收益率。有人有类似的东西或知道我在哪里可以找到它吗?
问问题
7467 次
2 回答
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']
并且有必要注意时机。
于 2010-08-25T02:57:51.003 回答
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%。
于 2010-02-13T23:02:19.323 回答