Post List

2018년 11월 3일 토요일

Time Frame Momentum in S&P 500, 이론 및 구글 스프레드시트를 이용한 실제 구현법




장기적인 투자 목적으로 100%에 주식에 투자하는 것은
의외로 꽤나 좋은 선택입니다.



1950년부터 현재까지 70년 가량 미국주식 (SP 500에) 장기투자할 시
연간 대략 7%의 수익률을 기록하게 됩니다.

여러분이 만일 30살이고 60세에 은퇴한다는 가정을 하면
30년간 7%의 수익률만 기록해도 누적으로는
(1+0.07)^30 - 1 = 6.61, 즉 600% 이상의 수익률을
기록할 수 있다는 나이브한 계산이 나오게 됩니다.





From
Trough
To
Depth
Recovery
1
2007-11-30
2009-02-27
2013-03-28
-52.56%
49
2
2000-09-29
2002-09-30
2007-05-31
-46.28%
56
3
1973-01-31
1974-09-30
1980-07-31
-46.18%
70
4
1968-12-31
1970-06-30
1972-05-31
-32.90%
23
5
1987-09-30
1987-11-30
1989-07-31
-30.17%
20


그러나 문제는 이따금 겪게되는 폭락장입니다.
위 그래프와 테이블은 하락의 폭만을 나타낸 것입니다.

2007년 부터 2009년까지는 무려 -52% 손해가 났으며,
이러한 손해가 복구되는데는 무려 49개월이 걸렸습니다.

이 외에도 주식시장에서는 20%이상 손해가 발생하는 경우는 비일비재 합니다.


만일 여러분이 오직 주식에 100% 투자를 한다고 생각해 봅시다.
과연 내 자산 중 절반 가량이 날아가는데
장기적인 미래를 보고 버틸수 있을까요???


답은 No 일겁니다.


이러한 하락을 피하기 위해 종종 사용되는 것이
Time Series Momentum 입니다.

10개월 이동평균선, 혹은 12개월 누적수익률이
0보다 크면 홀딩, 아니면 전량 매도하는 로직이죠.

이는 Meb Faber의 전설적인 논문
A Quantitative Approach to Tactical Asset Allocation 에도
잘 나타나 있습니다.



검은색은 SP500 단순 보유,
붉은색은 매월말 12개월 누적수익률이 0 이상이면 매수,
아니면 매도인 포트폴리오의 비교 입니다.

단순하게 수익률 측면에서는 SP500 보유가 우월한 듯 보입니다.
그러나 차이는 하락 방어에 있습니다.




이따금 발생하는 하락장에서
타이밍 포트폴리오는 월등하게 하락의 폭을 줄여줍니다.



Buy & Hold
Timing
Ann Ret (Arith)
8.25%
6.51%
Ann Ret (CAGR)
7.47%
6.07%
Ann Std Dev
14.23%
10.97%
Ann Sharpe
0.5248
0.5532
MDD
52.56%
30.59%



연율화 수익률은 7.5% vs 6.1% 인 반면
변동성은 타이밍 포트폴리오가 월등히 작습니다.

MDD도 기존 52%에서 30%까지 하락하게 됩니다.



그러나 이러한 포트폴리오의 문제는
전체 투자비중이 0 아니면 1이라는 지나치게 디지털적인 모습이란 것입니다.


하락장에서는 전량 매도하여 하락을 피하지만,
그 후 강한 반등에서는 주식비중이 0 이므로 배를 곪게 되죠,


이를 해결 하기위해 Time Frame Momentum을 적용합니다.
3,4,5,,,,,12개월 누적수익률을 각각 측정한 후
수익률이 0보다 크면 1, 아니면 0의 값을 구합니다.

그 후 10개 숫자의 평균 만큼을 투자하도록 합니다.
이의 예시는 다음과 같습니다.


개월수
누적수익률
>0 여부
3개월
6.01%
1
4개월
9.23%
1
5개월
10.45%
1
6개월
0.99%
1
7개월
-8.48%
0
8개월
2.44%
1
9개월
4.65%
1
10개월
2.31%
1
11개월
-0.78%
0
12개월
-0.19%
0
합계
7


총 7개가 0보다 크므로 투자비중은
7/10 = 70%가 되도록 합니다.


Timing
Time Frame
Ann Ret (Arith)
6.51%
6.15%
Ann Ret (CAGR)
6.07%
5.79%
Ann Std Dev
10.97%
9.99%
Ann Sharpe
0.5532
0.5795
MDD
30.59%
26.93%

단순 수익률로만 보면 둘은 거의 비슷해 보입니다.




S&P 500
Timing
Time Frame
2009
23.45%
6.97%
15.35%
2003
26.38%
11.60%
18.30%
1975
31.55%
-1.64%
7.72%
1970
0.10%
0.00%
4.45%


두 모델의 가장 큰 차이는 폭락 후 반등장에서 있습니다.

Time Frame 모멘텀을 적용할 경우
하락장에서는 비중을 서서히 줄여나가는 반면,
반등장에서는 서서히 비중을 올려나가므로
주식시장의 상승을 어느정도 따라갈 수 있습니다.



다음은 해당모형을 2004년 부터 실제 ETF에 적용한 결과 입니다.
투자하지 않는 비중은 단기채에 투자합니다.

 

SP 500
Time Frame
Ann Ret (Arith)
7.68%
6.00%
Ann Ret (CAGR)
6.21%
5.54%
Ann Std Dev
18.22%
11.05%
Ann Sharpe
0.3408
0.5016
MDD
56.47%
14.94%


수익률은 비슷하지만 MDD가 현격하게 개선되었습니다.


시점별 투자비중입니다
최근에는 미국의 모멘텀이 꺾이며 투자비중이 다소 내려온것이 확인됩니다.


그렇다면 과연 이는 어떻게 투자가 가능할까요?
물론 미국에 상장된 SPY와 같은 ETF에 직접 투자하는 것도 좋지만,
환전 및 환변동, 세금 등의 문제가 번거롭습니다.

국내에도 SP500을 추종하는 ETF가 3개정도 상장되어 있습니다.










세가지 ETF 모두 환헷지 형이라 원달러 간의 영향은 받지 않으며, 
오직 SP 500 수익률만의 영향을 받습니다.

차이점이 있다면,
KODEX와 TIGER ETF는 선물을 통해 복제하며,
ARIRANG ETF는 현물 바스켓을 통해 복제합니다.

현물 복제의 경우 배당금을 받을 수 있겠죠?


그렇다면 SP 500 지수의 Time Frame Momentum 은 어떻게 계산할 수 있을까요?


야후 파이낸스(finance.yahoo.com)에 접속하여 ^GSPC 를 입력하면
SP500 지수에 해당하는 정보를 받을 수 있습니다.
링크는 다음과 같습니다.



그 후 Historical Data 항목에서 Frequency를 Monthly를 설정한 후 Apply를 누르면,
월간기준 SP 500 지수의 정보를 얻을 수 있습니다.




해당 데이터의 바뀐 url을 보면 다음과 같습니다.

https://finance.yahoo.com/quote/%5EGSPC/history?period1=1509691276&period2=1541227276&interval=1mo&filter=history&frequency=1mo

이 중 period1과 period2는 각각
데이터 시작시점과 종료시점을 나타내니다.

해당 url과 구글 스프레드 시트의 크롤링 기능을 이용하면,
위 테이블을 스프레드 시트로 가져올 수도 있습니다.







먼저 시작일과 종료일에 해당하는 time stamp를 만들어 주어야 합니다.

시작일의 start 날짜는 현재일에서 대략 400일 전에 해당하는
=TODAY()-400

종료일은 현재 날짜에 해당하는
=today()

를 입력해 줍니다.

time stamp는 1970년 1월 1일 기준이며,
해당일자와 입력 날짜와의 차이에

시 * 분 * 초 24 * 60 * 60, 즉 86400을 곱해줍니다.

위에서 생성된 timestamp를 yahoo finance의 url에 응용하면 다음과 같습니다.


https://finance.yahoo.com/quote/%5EGSPC/history?period1="&B3&"&period2="&C3&"&interval=1mo&filter=history&frequency=1mo


이중 B3 셀은 start 시점을, C3 셀은 end 시점을 의미하며,
날짜가 지나면 자동으로 갱신됩니다.

또한 IMPORTHTML 함수를 이용하면 해당 url의 테이블 내용을 
구글 스프레드시트로 불러올 수도 있습니다.


IMPORTHTML("https://finance.yahoo.com/quote/%5EGSPC/history?period1="&B3&"&period2="&C3&"&interval=1mo&filter=history&frequency=1mo","table")






17년 7월부터 18년 11월까지의 SP500 지수에 해당하는
야후 파이낸스의 데이터를 불러옵니다.

날짜의 왼쪽에는 1,2,3, ... ,13에 해당하는 인덱스를 직접 입력합니다.




다음은 vlookup 함수를 이용하여
인덱스에 해당하는 날짜와 지수(Close) 부분을 가져옵니다.




마지막으로 타임 프레임별 누적수익률을 구하고,
0 이상인지의 유무를 판단합니다.

2018년 11월 1일을 기준으로 각각 3개월, 4개월,,,, 12개월 전 가격과 비교하여
타임 프레임별 수익률을 구합니다.

그 후 오른쪽에는 if 함수를 사용하여 해당값이 0보다 큰가를 비교합니다

마지막으로 10개 셀의 평균을 구해주면,
현재 시점에서는 SP 500 에 70%를 투자하라는 결과가 나오게 됩니다.

댓글 없음:

댓글 쓰기