用 Python 计算 XIRR

DaS*_*ode 8 python numpy pandas

我需要计算一段时间内进行的金融投资的 XIRR。numpy、pandas 或普通 python 中是否有任何函数可以执行此操作?

参考:什么是 XIRR?

原问题中接受的答案不正确,可以改进。

Ale*_*sky 10

创建了一个用于快速 XIRR 计算的包PyXIRR

它没有外部依赖性,并且比任何现有的实现都运行得更快。

from datetime import date
from pyxirr import xirr

dates = [date(2020, 1, 1), date(2021, 1, 1), date(2022, 1, 1)]
amounts = [-1000, 1000, 1000]

# feed columnar data
xirr(dates, amounts)

# feed tuples
xirr(zip(dates, amounts))

# feed DataFrame
import pandas as pd
xirr(pd.DataFrame({"dates": dates, "amounts": amounts}))
Run Code Online (Sandbox Code Playgroud)


pyC*_*hon 4

这是从这里获取的实现。

import datetime
from scipy import optimize

def xnpv(rate,cashflows):
    chron_order = sorted(cashflows, key = lambda x: x[0])
    t0 = chron_order[0][0]
    return sum([cf/(1+rate)**((t-t0).days/365.0) for (t,cf) in chron_order])

def xirr(cashflows,guess=0.1):
    return optimize.newton(lambda r: xnpv(r,cashflows),guess)
Run Code Online (Sandbox Code Playgroud)