단일 스마트베타를 이용하여
적립식 투자를 하는것도 굉장히 유용하지만
변동성을 줄이기 위해 멀티팩터로 분산 투자하는 것이
여러 측면에서 효율적입니다.
가장 심플한 방법으로는
월별로 동일가중으로 맞추는게 편하지만
모멘텀을 이용한 비중배분을 해보도록 하겠습니다.
먼저 선정된 전략은
ETF로 실제 투자가 가능한
고배당 / 로우볼 / 모멘텀 / 퀄리티밸류 입니다.
먼저, 각각의 기초지수에 대한 결과입니다.
### 년도별 수익률 ###
고배당
|
로우볼
|
모멘텀
|
퀄리티밸류
|
|
2001
|
77.98%
|
55.90%
|
81.50%
|
71.56%
|
2002
|
15.39%
|
3.79%
|
-3.11%
|
8.86%
|
2003
|
47.04%
|
28.03%
|
59.50%
|
38.75%
|
2004
|
28.93%
|
33.33%
|
10.44%
|
33.56%
|
2005
|
43.82%
|
72.94%
|
87.64%
|
111.67%
|
2006
|
14.98%
|
14.80%
|
21.72%
|
10.58%
|
2007
|
37.60%
|
37.42%
|
89.85%
|
39.23%
|
2008
|
-43.35%
|
-29.34%
|
-36.23%
|
-32.58%
|
2009
|
50.50%
|
32.37%
|
50.69%
|
48.51%
|
2010
|
22.26%
|
17.38%
|
29.58%
|
20.10%
|
2011
|
-6.86%
|
3.93%
|
9.19%
|
-0.51%
|
2012
|
4.80%
|
16.64%
|
8.47%
|
15.92%
|
2013
|
4.12%
|
17.19%
|
-1.91%
|
15.99%
|
2014
|
-1.50%
|
0.51%
|
7.57%
|
8.86%
|
2015
|
6.78%
|
6.44%
|
7.92%
|
3.59%
|
### 요약 통계량 ###
고배당
|
로우볼
|
모멘텀
|
퀄리티밸류
|
|
Cum Return
|
9.01
|
11.39
|
19.92
|
19.84
|
Ann Return
|
16.02%
|
17.64%
|
21.68%
|
21.65%
|
Ann Std Dev
|
23.89%
|
17.04%
|
26.57%
|
23.17%
|
Sharpe (Rf=0%)
|
0.67
|
1.03
|
0.82
|
0.93
|
MDD
|
52.98%
|
38.68%
|
51.48%
|
44.74%
|
다음은 전략별, 그리고 동일가중 포트폴리오의
년도별 수익률 비교입니다.
이번에는 본격적으로, 모멘텀을 이용한
비중조절 수익률 입니다.
방법은 간단합니다.
각 전략별 과거 6개월 수익률로
1~4위 까지 순위를 매긴 후,
순위가 높을 수록 많은 weight를 줍니다.
동일가중을 시작으로,
순위별 비중차이가 점점 벌어지게 테스트 하였습니다.
RANK
|
Cum
Return |
Ann
Return |
Ann
Std Dev |
Sharpe
|
MDD
|
||||
1st
|
2nd
|
3rd
|
4th
|
||||||
(1)
|
25%
|
25%
|
25%
|
25%
|
10.27
|
16.82%
|
20.44%
|
82.30%
|
44.67%
|
(2)
|
28%
|
26%
|
24%
|
22%
|
10.41
|
16.91%
|
20.56%
|
82.28%
|
45.05%
|
(3)
|
30%
|
27%
|
23%
|
20%
|
10.53
|
16.99%
|
20.64%
|
82.32%
|
45.23%
|
(4)
|
40%
|
30%
|
20%
|
10%
|
10.97
|
17.27%
|
21.11%
|
81.82%
|
46.57%
|
(5)
|
50%
|
30%
|
20%
|
0%
|
11.15
|
17.38%
|
21.64%
|
80.32%
|
48.55%
|
(6)
|
50%
|
50%
|
0%
|
0%
|
12.77
|
18.33%
|
21.84%
|
83.93%
|
44.19%
|
(1) 번의 경우 동일가중이며,
(5) 번과 (6) 번은 하위 전략의 비중을
0% 로 하였습니다.
비중차이가 점점 커질수록
수익률은 높아지며,
변동성 또한 커집니다.
(1)
|
(2)
|
(3)
|
(4)
|
(5)
|
(6)
|
|
2001(*)
|
20.84%
|
21.26%
|
21.53%
|
22.96%
|
24.59%
|
23.35%
|
2002
|
6.55%
|
6.72%
|
6.88%
|
7.38%
|
7.47%
|
10.13%
|
2003
|
43.28%
|
43.31%
|
43.34%
|
43.38%
|
43.26%
|
44.14%
|
2004
|
26.39%
|
26.08%
|
25.87%
|
24.85%
|
23.85%
|
23.66%
|
2005
|
78.04%
|
79.81%
|
81.07%
|
87.03%
|
92.42%
|
97.19%
|
2006
|
15.63%
|
15.61%
|
15.56%
|
15.51%
|
15.75%
|
13.76%
|
2007
|
50.65%
|
51.38%
|
51.91%
|
54.25%
|
56.06%
|
59.36%
|
2008
|
-35.18%
|
-35.17%
|
-35.11%
|
-35.15%
|
-35.64%
|
-32.75%
|
2009
|
45.92%
|
45.27%
|
44.87%
|
42.68%
|
40.22%
|
41.90%
|
2010
|
22.49%
|
22.29%
|
22.17%
|
21.48%
|
20.72%
|
21.18%
|
2011
|
1.79%
|
2.03%
|
2.22%
|
2.92%
|
3.19%
|
5.79%
|
2012
|
11.48%
|
11.17%
|
10.94%
|
9.94%
|
9.17%
|
7.70%
|
2013
|
8.69%
|
9.11%
|
9.48%
|
10.82%
|
11.39%
|
16.62%
|
2014
|
3.89%
|
3.94%
|
3.96%
|
4.13%
|
4.42%
|
3.59%
|
2015
|
6.41%
|
6.35%
|
6.27%
|
6.08%
|
6.21%
|
4.04%
|
2016
|
-1.29%
|
-1.51%
|
-1.66%
|
-2.35%
|
-2.90%
|
-3.86%
|
* 모멘텀을 위해 6개월 수익률이 필요한 관계로
2001년 7월~12월의 수익률 입니다.
##############################################
########## 설치가 안된 패키지는 ##############
##### install.package("패키지이름") 으로 #####
############# 설치해 주세요 ##################
library(zoo)
library(quadprog)
library(PerformanceAnalytics)
library(quantmod)
multi = read.csv("multi.csv", row.names = 1)
ret = as.matrix(Return.calculate(multi))
ret_port = as.matrix(apply(ret,1,mean))
colnames(ret_port) = c("Equal Weight")
ret_mom = matrix(0,nrow(ret), ncol(ret))
for (i in 6 : nrow(ret)) { ret_mom[i, ] = apply(ret[ (i -5): i, ] + 1,2, prod) - 1 }
###############################################
ret_stra = matrix(0,nrow(ret),1)
rownames(ret_stra) = rownames(ret)
colnames(ret_stra) = c("Momentum Weight")
for (i in 7 : (nrow(ret) - 1) ) {
con = matrix(0,2,ncol(ret))
con[1,] = rank(-ret_mom[i, ])
con[2, which(con[1, ] == 1)] = 0.50
con[2, which(con[1, ] == 2)] = 0.50
con[2, which(con[1, ] == 3)] = 0.00
con[2, which(con[1, ] == 4)] = 0.00
ret_stra[i+1] = con[2,] %*% ret[i+1, ]
}
###############################################
Return.cumulative(ret)
rbind(table.AnnualizedReturns(ret), maxDrawdown(ret))
Return.cumulative(ret_port)
rbind(table.AnnualizedReturns(ret_port), maxDrawdown(ret_port))
Return.cumulative(ret_stra)
rbind(table.AnnualizedReturns(ret_stra), maxDrawdown(ret_stra))
charts.PerformanceSummary(ret, main="Each Smart Beta")
charts.PerformanceSummary(ret_port)
charts.PerformanceSummary(ret_stra)
cbind(apply.yearly(ret, Return.cumulative), apply.yearly(ret_port, Return.cumulative),apply.yearly(ret_stra, Return.cumulative))
barplot(t(cbind(apply.yearly(ret, Return.cumulative), apply.yearly(ret_port, Return.cumulative))), beside = TRUE, col = 1:5)
legend('topright', c("고배당", "로우볼","모멘텀", "퀄리티밸류", "동일가중"), lty = 1, col = 1:5, bty='n', cex = 1.2)
안녕하세요. 블로그 글 잘 읽고 있습니다. 최근에 R 코드를 자주 올리시는데,
답글삭제관심이 있으시면 R 코드에 Syntax HIghlighting을 적용해보시는 것은 어떨까요?
참고가 될만한 링크를 아래에 첨부합니다.
How to insert code blocks in Blogger posts
http://rusya7.blogspot.kr/2015/02/how-to-insert-code-blocks-in-blogger.html
How to Format Code and Syntax Highlighting to Blogger
http://www.danielhansen.net/2014/06/how-to-format-code-and-syntax.html
SyntaxHighlighter Brush for the R Language
http://yihui.name/en/2010/09/syntaxhighlighter-brush-for-the-r-language/
Using SyntaxHighlighter and R Brush in Blogger
http://thebiobucket.blogspot.kr/2011/11/using-syntaxhighlighter-and-r-brush-in.html
A Prism Syntax Highlighter for R
http://mathematicalcoffee.blogspot.kr/2013/05/a-prism-syntax-highlighter-for-r.html
해외 블로그에서 이기능 많이 보긴했는데
삭제설치하려니 많이 어렵네요...
이틀 동안 고생을 했으나 자꾸 뻑이나네요
삭제제가 xml 쪽은 아예 몰라서 디버깅 어떻게 해야되는지도 모르겠고요...
그냥 간단하게 블로그스팟에서 R 코드 삽입하는 법 정리된 걸 알려주시면
매우 감사하겠습니다.
http://dkang0121.blogspot.kr/2016/07/r-code-block-syntax-highlighting-httpwww_22.html
삭제블로그스팟이 생각보다 까다롭네요. 원래 자바스크립트 한두줄이면 끝날 것을..
http://ddmix.blogspot.kr/2015/11/syntax-highlighter-blogger.html
주로 참고했고 highlight.js(https://highlightjs.org/static/demo/)사용해서 구현했습니다.
Ctrl+U 누르면 브라우저 소스코드를 볼 수 있으니 참고하시구요.
아 덕분에 적용 잘 했습니다.
삭제일단은 github 로 스타일 적용했고,
마음에 드는 스타일은 이상하게
작동을 안하네요...
차차 해결해보도록 하겠습니다.
감사합니다.!!