我遇到了障碍,希望能得到一些帮助。
问题陈述:
我正在尝试用 Python 计算 30 多年现金流的 XIRR。
到目前为止我尝试了什么:
但是,似乎没有一个已建立的库(如 numpy 和 pandas)对此提供支持。在做了一些研究之后,我通过这个来源(https://vindeep.com/Corporate/XIRRCalculation.aspx)了解到,通过一些简单的操作,XIRR 可以从 IRR 中计算出来。
所以,我所需要的只是一个实现良好的 IRR 函数。该功能曾经存在于 numpy 中,但已移至另一个包(https://github.com/numpy/numpy-financial)。虽然,这个包有效,但它非常非常慢。这是一个小测试:
import pandas as pd
import numpy as np
import numpy_financial as npf
from time import time
# Generate some example data
t = pd.date_range('2022-01-01', '2037-01-01', freq='D')
cash_flows = np.random.randint(10000, size=len(t)-1)
cash_flows = np.insert(cash_flows, 0, -10000)
# Calculate IRR
start_timer = time()
npf.irr(cash_flows, guess)
stop_timer = time()
print(f"""Time taken to calculate IRR over 30 years of daily data: {round((stop_timer-start_timer)/60, 2)}""")
另一种选择似乎是https://github.com/better/irr - 但是,这有一个边缘案例错误,在 4 年多的时间里没有得到解决。
任何人都可以提供更稳定的实施。感觉如此简单且非常常用的功能以及缺乏良好稳定的实现让我感到惊讶。有人可以指出任何好的资源。
谢谢
乌代