![](/img/trans.png)
[英]How can I loop through the r tvm "XIRR" function to calculate xirr for different trade strategies?
[英]XIRR function from tvm package delivers different outcome than XIRR from Excel
我正在嘗試從以下現金流量計算 IRR,並使用 tvm::xirr 與 Excel 的 XIRR 相比得到略有不同的結果。
Dates= c("2020-12-31", "2021-12-31")
CF = c(-18965299.53, 18884929.89)
library(tvm)
xirr(CF, Dates, comp_freq = Inf)
= -0.004270912
與使用 Excel 的 -0.00423772 相比(即使我修改了 comp_freq,結果也不匹配)。
這是一個簡化的例子,但在其他情況下差異會更大。
有人知道如何調整公式以使其得到與 Excel 相同的結果嗎?
我知道我可以構建自己的代碼來計算 IRR,但我更願意使用這個 function,因為我有一個龐大的數據庫,每天的現金流量不規律。
謝謝
我閱讀了 TVM 和 Excel XIRR 的文檔。 如果你使用相同的arguments,你會發現相同的結果(你可以選擇精度級別)。
我在 R 中復制 excel 的代碼是:
library(tvm)
Dates= c("2020-12-31", "2021-12-31")
DatesReal= as.Date(Dates)
CF = c(-18965299.53, 18884929.89)
xirr(CF, DatesReal, comp_freq = 1, maxiter=100, tol=0.00000001)
TVM使用名為uniroot的算法來查找 IRR。 因此,您可以包括 arguments,例如找到結果的最大迭代次數 (maxiter) 和所需的精度/收斂公差 (tol)。
Excel也使用了交互技術。 XIRR 循環計算,直到結果准確度在 0.000001% 以內(相當於 tol=0.00000001)並且有 100 次迭代的限制(相當於 maxiter=100)。
在您的示例中,兩種技術的結果都是 -0.00423772。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.