使用R的JMP中的XIRR?所有,
我一直在尋找一種解決方案來處理JMP中的XIRR計算。進行中, @ron_horne 非常友好地分享他的一些作品。
我沿著利用R中的一些包進行計算的路徑。我還提出了將XIRR和XNPV功能部署到未來版本的JMP中的功能請求。然而,我注意到的當前問題是 - 我正在利用的R包不會產生我期望的結果,這讓我感到困惑。想知道是否有任何喜歡 @ih 或社區中的任何其他JMP用戶已經看到成功沿著這條道路走下去,或者在XIRR計算成功的情況下朝著不同的方向冒險。
RConn = R Connect();
ConnFlag = R Is Connected();
If(ConnFlag,
R Submit("
# Reprex
# Attach desired packages
suppressPackageStartupMessages(library(tvm))
# Provide input data
CF <- c(-78662, -32491, -32492, 7651, 40300)
d <- as.Date(c('2019-06-30', '2019-09-30', '2019-12-31', '2020-03-31', '2020-06-30'))
# Call the XIRR Function
Res1 <- vector()
Res1 <- sapply(1:length(d), function(i) {
tryCatch({
expr = xirr(i, CF[1:i],
d[1:i])
}, error = function(i) { return(NA) })
})
# Print Results
#print(Res1)
");
Results = R Get(Res1);
RConn << disconnect;
);
上面的計算應該返回NA直到i = 4,但是一旦現金流看到符號變化 - 它應該返回除了NA之外的NA以外的值。任何想法或指導來解決這個問題表示讚賞。
Re:使用R的JMP中的XIRR? @Dahlia_Watkins , @Justin_Chilton - 有沒有人在JMP中嘗試過XIRR?
Re:使用R的JMP中的XIRR? @ih ,
我只發布了一個現金流樣本作為例子。但是,我看到了你的建議的價值,因為我沒有在沒有使用sapply時看到錯誤。 彈出uniroot錯誤,我認為這只是因為-ve現金流。為了規避我把trycatch放到位。
有趣的是Excel能夠解決這些問題並提供結果。但是,謝謝您的建議 - 也會查看他們的存儲庫。
Re:使用R的JMP中的XIRR?你好Uday,
不幸的是,我們使用自己的IRR計算,所以我對R函數的幫助不大。 也就是說,你項目中的現金流都是如此負面,你需要一個非常大的負 IRR使該項目的NPV為零。 您可能需要更多的正現金流來使解算器收斂(IRR不是直接計算的,而是您找到將NPV設置為零的貨幣的時間價值)。
請注意,使用sapply包裝xirr函數調用可能會掩蓋錯誤,我敢打賭,如果直接調用xirr,您將看到與解算器相關的錯誤。
看起來nvm包是鏡像的這裡 ,這可能會幫助您了解包正在做什麼。 例如,你可以使用他們的xnpv定義通過調整i來手動找到irr:
i <- .01
sum(CF / ((1 + i) ^ (as.integer(d - d[1]) / 365)))
JMP有一個方程求解器,所以在JSL中構建它應該是可能的,儘管我還沒有玩過它。