【问题标题】:Basic Financial Library for PythonPython 基础金融库
【发布时间】:2011-01-16 14:14:01
【问题描述】:

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

【问题讨论】:

    标签: python finance


    【解决方案1】:

    为了完整起见,因为我迟到了: 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 np的irr方法真是太有趣了
    【解决方案2】:

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

    我使用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。

    对于内部收益率,我们的做法几乎相同,但将 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%。

    【讨论】:

    • 查看这个库:rpy.sourceforge.net/index.html 这将允许您从 Python 调用 R 而不需要太多额外的工作。
    • 是的,但那是在维护模式下。改用较新的 RPy2 可能更明智。
    猜你喜欢
    • 2011-07-13
    • 2012-02-13
    • 2021-11-17
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多