#' Estimate Stop Loss Parameter based on Volatility of Time Series Data
#'
#' @param data OHLC object
#'
#' @return list containing 5 stop loss / trailing stop loss pairs
#' @importFrom magrittr %>%
#' @importFrom quantmod OHLC
#' @importFrom TTR volatility
#' @export suggestStopLoss
#'
#' @examples suggestStopLoss(msci_world)
suggestStopLoss <- function (data) {
mean_volatility <- mean( TTR::volatility(OHLC(data)), n = 30, na.rm=TRUE )
x <- c(0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.5)
mean_volatility <- x[which.min(abs(x - mean_volatility))]
SL_min = x[which.min(abs(x - mean_volatility * 0.25))]
SL_max = x[which.min(abs(x - mean_volatility * 0.75))]
TS_min = x[which.min(abs(x - mean_volatility * 0.5))]
TS_max = x[which.min(abs(x - mean_volatility * 1.5))]
SL_sequence <- subset(x, x>=SL_min & x<=SL_max)
TS_sequence <- subset(x, x>=TS_min & x<=TS_max)
list(c(SL_sequence[1], TS_sequence[1]),
c(SL_sequence[2], TS_sequence[2]),
c(SL_sequence[2], TS_sequence[length(TS_sequence)-1]),
c(tail(SL_sequence, 1), TS_sequence[length(TS_sequence)-1]),
c(tail(SL_sequence, 1), tail(TS_sequence, 1))
) %>% unique(.)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.