XIRR in JMP usando R?Tutti,
Ho cercato una soluzione per gestire il calcolo XIRR in JMP. Nel processo, @ron_horne è stato abbastanza gentile da condividere parte del suo lavoro.
Sono andato giù il percorso di sfruttare alcuni pacchetti all'interno di R per il calcolo. Ho anche inserito una richiesta di funzionalità per le funzioni XIRR e XNPV da distribuire nelle versioni future di JMP. Tuttavia, l'attuale problema che ho notato è che il pacchetto R che sto sfruttando non sta dando risultati che mi aspetto e mi confonde. Mi chiedo se piace tanto @ih o altri utenti JMP della comunità hanno visto il successo scendere su questa strada o avventurarsi in una direzione diversa con successo per il calcolo 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;
);
Il calcolo di cui sopra dovrebbe restituire NA fino a i = 4, ma una volta che il flusso di cassa vede un cambiamento di segno - dovrebbe restituire un valore diverso da NA come farebbe Excel. Qualsiasi pensiero o guida per risolvere questo problema è apprezzato.
Ri: XIRR in JMP usando R? @Dahlia_Watkins , @Justin_Chilton - Qualcuno ha tentato XIRR in JMP?
Ri: XIRR in JMP usando R? @ih ,
Ho pubblicato solo un esempio del flusso di cassa come esempio. Tuttavia, vedo il valore del tuo consiglio, perché vedo un errore quando non si usa saply. L'errore uniroot si apre e ho pensato che fosse a causa del flusso di cassa -ve da solo. Per aggirare che ho messo il trycatch sul posto.
Ciò che è interessante è che Excel è in grado di affrontarli e fornire risultati. Ma grazie per il consiglio - guarderà anche attraverso il loro repository.
Ri: XIRR in JMP usando R?Ciao Uday,
Sfortunatamente usiamo il nostro calcolo IRR quindi non sono di grande aiuto con la funzione R. Detto questo, i flussi di cassa del tuo progetto sono tutti così negativi che avresti bisogno di dimensioni incredibilmente grandi negativo IRR per rendere NPV zero di quel progetto. È probabile che sia necessario un flusso di cassa più positivo per il risolutore da convergere (l'IRR non viene calcolato direttamente, ma si trova il valore temporale del denaro che imposta NPV uguale a zero).
Nota che il wrapping della chiamata della funzione xirr con sapply può mascherare errori, scommetto che se chiami xirr direttamente vedrai un errore relativo a un risolutore.
Sembra che il pacchetto nvm sia speculare Qui , questo potrebbe aiutarti a capire cosa sta facendo il pacchetto. Ad esempio, è possibile utilizzare la loro definizione di xnpv per trovare manualmente l'irr dalla regolazione di i:
i <- .01
sum(CF / ((1 + i) ^ (as.integer(d - d[1]) / 365)))
JMP ha un risolutore di equazioni, quindi costruire questo in JSL dovrebbe essere possibile, ma non ho giocato con esso.