#title UPRO-TMF EWMA 역변동성 전략 작성 중... 작성 중... 작성 중... 작성 중... t0은 그냥 그 시점의 값 EWMA(t) = a * x(t) + (1-a) * EWMA(t-1) {{{#!html }}} ==== EWMA Volatility ==== * {{{EWMA: Exponentially Weighted Moving Average}}} * λ = 0.94 --> JP모건에서 일별 람다는 이렇게 하라고 한다. 열심히 계산해 봤겠지 뭐. {{{#!html
$$ \sigma_t^2 = (1-\lambda)\cdot\gamma_t-1^2 + \lambda\cdot\sigma_t-1^2 $$ $$ where, $$ $$ \ \ \sigma : 표준편차 $$ $$ \ \ \lambda: 가중치 $$ $$ \ \ \gamma : 수익률 $$ $$ \ \ t : 시점 $$










}}} ==== 구현 ==== {{{ #install.packages("RiskPortfolios") library(tidyquant) library(MTS) library(scales) library(qpcR) library(TTR) options("getSymbols.warning4.0"=FALSE) options("getSymbols.yahoo.warning"=FALSE) # Downloading Apple price using quantmod ewma.func <- function(rets, lambda) { sig.p <- 0 sig.s <- vapply(rets, function(r) sig.p <<- sig.p*lambda + (r^2)*(1 - lambda), 0) return(sqrt(sig.s)) } cash <- 0.4 from_dt <- as.character(today()-20) to_dt <- today() tickers = c("UPRO", "TMF") getSymbols(tickers, from = from_dt, to = to_dt,warnings = FALSE, auto.assign = TRUE) #tail(UPRO) #tail(TMF) UPRO_sd <- sd(ewma.func(as.numeric(UPRO$UPRO.Close), 0.94)) TMF_sd <- sd(ewma.func(as.numeric(TMF$TMF.Close), 0.94)) p1 <- TMF_sd/(UPRO_sd+TMF_sd) p2 <- UPRO_sd/(UPRO_sd+TMF_sd) p1 <- round(p1*(1-cash),2) p2 <- round(p2*(1-cash),2) p3 <- 1 - (p1 + p2) print(paste("UPRO=",percent(p1),"TMF=",percent(p2), "현금=",percent(p3))) }}}