inst/BookEx/C13R13.R

## Evaluation of backtest
W <- list(WEP, WMD, WND)
FxRetBack <- FxRet[Eperiods, ]
Equity <- function(x, Eperiods, FxRet){
    WTs <- timeSeries(x, charvec = Eperiods)
    WTsL1 <- lag(WTs, k = 1)
    RetFacPR <- rowSums(FxRetBack / 100 * WTsL1) + 1
    RetFacPR[1] <- 100
    timeSeries(cumprod(RetFacPR), Eperiods)
}
WealthBack <- lapply(W, Equity, Eperiods = Eperiods, FxRet = FxRet)
## plot of wealth trajectories
ypretty <- unlist(lapply(WealthBack, function(x) pretty(range(x))))
ylims <- c(min(ypretty), max(ypretty))
plot(WealthBack[[1]], lwd = 2,
     xlab = "", ylab = "Index",
     main = "",
     ylim = ylims)
lines(WealthBack[[2]], lty = 2, lwd = 2, col = "blue")
lines(WealthBack[[3]], lty = 3, lwd = 2, col = "red")
legend("topleft", legend = c("EP", "Market", "Normal"), lty = 1:3,
       lwd = 2, col = c("black", "blue", "red"))
## portfolio performance/risk measures
PerfM <- function(x){
    EPRet <- returns(x, method = "discrete", percentage = FALSE,
                     trim = TRUE)
    EPRA <- Return.annualized(EPRet[, 1], scale = 52) * 100
    EPSD <- StdDev.annualized(EPRet[, 1], scale = 52) * 100
    EPSRA <- SharpeRatio.annualized(EPRet[, 1], scale = 52)
    EPES <- ES(EPRet[, 1], p = 0.95,
               method = "modified", clean = "boudt") * -100
    EPMDD <- maxDrawdown(EPRet[, 1]) * 100
    EPPerfW <- rbind(EPRA, EPSD, EPSRA, EPES, EPMDD)
    rownames(EPPerfW) <- c("Return (annual)", "Risk (annual, SD)",
                           "Sharpe Ratio", "CVaR (modified, 95%)", "Max Draw Down")
    EPPerfW
}
PerfBack <- lapply(WealthBack, PerfM)
PerfM <- matrix(unlist(PerfBack), ncol = 3)
rownames(PerfM) <- c("Return (annual)", "Risk (annual, SD)",
                     "Sharpe Ratio", "CVaR (modified, 95%)", "Maximum Draw Down")
colnames(PerfM) <- c("EP", "Market", "Normal")
PerfM

Try the FRAPO package in your browser

Any scripts or data that you put into this service are public.

FRAPO documentation built on May 2, 2019, 5:24 p.m.