ehaerim

[펌] 계량투자의 핵심중 핵심인 백테스트

ehaerim 업데이트됨   
NASDAQ:AAPL   애플 주식회사
Kangcfa 님의 좋은 글이 있어 여기 퍼왔습니다.

요약
백테스트는 내가 구상하고 싶은 계량전략을 과거에 사용했다면 어느 정도 수익을 벌 수 있었는지 검증하는 작업이다.
백테스트는 계량투자의 핵심 중 핵심이라 봐도 과언이 아니다.
그런데 백테스트는 매우 쉬운 작업이나… 어려워 하시는 분들이 간혹 계신다. 물론 오늘부로 어려움과 궁금증의 상당부분이 해소될 것이다.

*** 원본 : www.snek.ai/alpha/article/108278 by Kangcfa ***

참고로 TradingView 의 백테스팅 기능을 활용해 보시면 좋을 것입니다
TradingView 인터랙티브 차트를 열고 그 아래 전략테스트 탭에서 원하는 지표나 신호를 넣고 직접 해보면 됩니다
코멘트:
1. 백테스트란 무엇인가?

백테스트는 과거에 돌아가서 특정 투자전략을 사용했다면 어느 정도의 수익률을 벌어드릴 수 있었을지 시뮬레이션을 돌려 보는 과정이다. 이 세상에는 사막의 모래보다 많은 투자전략들이 존재한다. 매일매일 새로운 전략들이 탄생하고 있다.

그런데, 이런저런 전략을 통해 실제로 얼마나 돈을 벌 수 있었는지 검증이 필요하지 않겠는가? 이 검증 작업을 백테스팅이라 한다.

성공적인 백테스트를 진행하기 위해서는 과거 데이터가 필요하다. 저자는 Quant Kim 님이 제공하신 데이터

(https://drive.google.com/file/d/0BzFZBBsLH8tPRzNWNWN0NXltTm8/view)를 사용했다.

이번 글을 통해 어떻게 여러분들이 직접 백테스팅을 할 수 있을지 소개해 드리겠다.

참고로 지난번 글들을 보고 느끼셨겠지만, 나는 프로그래밍 스킬이 없고 기본적인 엑셀 작업만 할 수 있는 사람이다. 나보다 스킬이 높으신 분들은 한번 비웃으시고 가셔도 된다. 그리고 다 웃으신 후 나보다 조금 더 효율적인 방법으로 백테스팅 작업을 하시면 된다.
코멘트:
2. 저 PBR(고 B/P) 전략 백테스트 Step by Step

오늘 백테스트 할 전략은 “저 PBR(고 B/P)” 전략이다.

PBR = 시가총액/총자본

B/P = 총자본/시가총액


보시다시피 B/P는 1/PBR라 보시면 된다.

1년 1회 리밸런싱을 가정한다. 최근 5년 데이터를 통해 백테스트를 진행하겠다(15년도 가능하나 귀찮아서 5년으로 한정. 15년도 방법은 동일하다)

여러분이 타임머신을 타고 2011년 6월 30일로 돌아갔다고 가정해 보자.

그렇다면 그 때는 2010년 4분기 재무제표 데이터가 공개되어 있었고, 2011년 6월 30일 주가 및 시가총액을 쉽게 찾아 볼 수 있었을 것이다. 즉 2011.6.30 시가총액을 2010년 4분기 총자본으로 나눠서 PBR를 계산할 수 있었다.

꿀팁: 절대로 2011년 2분기 총자본을 사용하면 안된다. 2011.6.30에 그 데이터는 존재하지 않았다! 2011년 2분기 데이터는 2011.8.15에 공개되었다. 재무재표는 꼭 그 당시 존재하였던 데이터를 사용해야 한다.

Step 1: Quant Kim의 퀀트데이더 4에서 수정주가, 시가총액을, 퀀트데이터 1에서 총자본 5년치를 새로운 엑셀 파일에 베낀다.


cdn.snek.ai/article/...brl20x769lw4osr3.png

어, 시가총액, 수정주가는 가로세로가 반대이던데!!

오리지널 데이터를 복사하고 새로운 시트에 가서 오른쪽 마우스 – 선택하여 붙여넣기 – 행/열 바꿈을 통하면 가로세로를 조정할 수 있다.

Step 2: 우리는 타임머신을 타고 2011.6.30로 돌아갔다. 우리가 알고 싶은 것은 “그 시기에 저 PBR 주식에 1년간 투자했다면 어떤 수익을 얻을 수 있었는가?”

cdn.snek.ai/article/...k1endunv3xdhd0m7.png

그런데 다행이도 우리는 2011.6.30-2012.6.30의 주식수익률을 계산 할 수 있다!

예를 들면 마우스 셀이 보여주는 메리츠화재의 경우 2013.6.30부터 1년 수익이 (12,350/12,700)-1 = -2.76%였다.

IFERROR 함수를 통해 1년 수익률 계산이 불가할 경우(상폐해서 가격이 없는 경우 등) 셀이 비게 만들었다.
코멘트:
Step 3: BP 계산하기

지금 마우스가 놓인 셀은 동화약품의 총자본을 시가총액으로 나눴다. 그런데 총자본은 천원 단위, 시가총액은 백만원 단위이니 이를 유념해야 한다. 그리고 꿀팁 1에서 설명했듯이 2010년 4분기 총자본을 2011.6.30 수정주가로 나눴다. 2011년 2분기 총자본을 쓰면 절대 안 된다!

cdn.snek.ai/article/...dhj705qfo0crw3sd.png

동화약품의 자기자본 2,171.53억 원을 시가총액 1,331.66억 원으로 나누니 B/P는 1.59이다. PBR는 1/(B/P)임으로 0.63이다.


Step 4: 미니멈 필터 만들기, 줄세우기

기본적으로 PBR가 너무 낮으면(즉 B/P가 너무 높으면) 그 기업이 망하기 직전인 경우가 많다.

예를 들면 총자본이 1,000억 원인데 시가총액이 50억 원이면 (PBR = 0.05, B/P= 20),

I. 투자가들이 정말 멍청하거나

II. 기업이 망하기 일보직전이라 투자가들이 주식을 투매하고 도망간 것이다.

물론 멍청한 투자가들은 많지만, 대부분의 경우는 II번이 정답이다.

여기서는 PBR 0.2 이하(즉 B/P 5 이상) 기업들을 제외하였다. 이번에 백테스트를 어떻게 하는지 배우시고 나중에 연습삼아 B/P 5 이상 기업의 백테스트를 해보시기 권장 드린다. 결론부터 말씀드리면 PBR 0.2 이하 기업의 수익률은… 매우 별로이다.
코멘트:
Step 4.1. 필터를 넣고 X열 숫자 내림차 정렬

Step 4.2. 숫자 필터 – 보다 작음 – 5 입력
코멘트:
Step 5: 수익률 베끼기

이제 2011.6.30 B/P가 높은 순위부터 B/P가 높은 순위별로 줄을 세웠고, PBR이 0.2 이하, 즉 B/P가 5 이상인 불순분자들을 제거했다. (아래 그림에서 X 열 참조)

그럼 미래수익으로 돌아가서 1년 수익률이 0%인 주식들을 제거한다(아래 그림 참조).

cdn.snek.ai/article/...xgjg0ovbpa240a7m.png

그 후 2011.6.30 PBR로 나열된 1년 미래수익을 그대로 복사해서 다른 시트에 그대로 베낀다(저 파일에는 ‘백테스트 결과’ 시트)

Step 4-5를 5번 반복한다 (2012.6.30 PBR별로 줄세우기 + 2012.6.30 1년 미래수익을 다른 시트에 베끼기… 등 2015.6.30까지)

그럼 이런 식으로 그림이 나온다.

즉 최근 5년간 1년 수익을 B/P별로 줄 세운 것이다.

cdn.snek.ai/article/...3rabuqs3mqcqdiqs.png
코멘트:
Step 6: 데이터 분석


자, 좀 힘들었지만 이제 제대로 분석에 들어갈 수 있다.

cdn.snek.ai/article/...nq653bmkhmeiuk4s.png

이제 내 지식호기심을 만족하면 된다.
코멘트:
질문 1: 2011.6-2016.6년 모든 주식에 동일하게 투자했다면(동일가중 포트폴리오) CAGR가 어느 정도?

정답: 15.41%이다. CAGR를 계산하려면 수익률에 1을 더하고, GEOMEAN이라는 함수를 쓰면 된다.

뭐? 15.41%? 5년간 KOSPI는 횡보했잖아!

나도 안다. 그러나 KOSPI 비중이 큰 대기업들이 빌빌거려서 그렇지 소형주 주가는 꽤 많이 올랐다.


질문 2: 동 기간 B/P가 가장 높은 50개 기업의 CAGR(5 이상은 제외)는 얼마?

답: 17.81%

질문 3: 그럼 가장 높은 100개 기업의 CAGR은?

답: 20.28%

좀더 계속해 보자.

cdn.snek.ai/article/...mns5c00wrym0rypz.png

질문 4,5: B/P가 최상 10%, 30% 기업에 투자했다면 CAGR는?

정답: 각각 20.94%, 21.93%


질문 6: 그렇다면 B/P가 낮았던 주식의 CAGR는 어땠는가?

가장 낮았던 50개를 샀으면 CAGR가 -6.87%! 으웩…

가장 낮았던 100개를 샀으면 CAGR가 -2.59%! 좀 덜 으웩이지만 그래도 으웩…

B/P 최하위 10%, 30%의 수익은? 각각 1.64%, 7.56%였다.
코멘트:
Step 7. 결론 추출하기

2011.6-2016.6 구간에는 B/P가 높은 기업들의 연 CAGR은 동일가중 포트폴리오보다 약 5-6% 정도 높았다.

2011.6-2016.6 구간에는 B/P가 낮은 기업들의 연 CAGR은 동일가중 포트폴리오보다 약 8% 정도 낮았다.

따라서 B/P가 높은 주식들을 사는 전략은 현명하고 B/P가 낮은 주식을 사는 행위는 멍청해 보인다.


도표로 정리하면 주요 수익률은 아래와 같다.

cdn.snek.ai/article/...kcwc1bxtoxb43vbj.png
코멘트:
3. 백테스팅을 통해 해결할 수 있는 추가 질문

물론 위에 계산한 수익률은 가장 기본적인 지적 호기심만 충족한다. 정말 호기심이 많은 경우 아래 질문을 위 데이터를 통해 답할 수 있다. 대충 떠오르는 몇 개만 적어 보겠다.

- 변동성, 샤프지수, MDD 등 (그런데 이건 월별 데이터를 쓰는게 유리하다)
- 대형주, 중형주, 소형주의 B/P 별 수익
- 가치비중 포트폴리오의 B/P 별 수익
- B/P 구간별(예: 1-2) 수익
- 파산하는 기업(미래수익률 -100%) 비율

B/P와 파산비율은 상관관계가 있는지
- 1년간 100% 이상 오르는 기업의 비율
- 1년간 마이너스 수익을 보이는 고 B/P 기업의 비율


그 후 아래 이슈에 관심이 생길 수 있다. 내가 알고 싶은 것만 한 수백 개는 되지만 4개만 나열하자.

- 부채비율이 낮은 기업에 투자하면 어떨까?
- PER도 낮은 기업에 투자하면 어떨까?
- 모멘텀이 좋고 PBR가 낮은 기업에 투자한다면?
- 5년이 아니라 10년, 15년 결과는 어땠을까?

위 엑셀파일에 베낀 데이터로만은 답변할 수 없다. 그러나 Quant Kim 파일에 저 정도 질문에 답변을 할 수 있을 만한 모든 데이터가 있지 않는가? 엑셀파일에 집어넣고 궁금증을 해결하면 된다. 모든 백테스트는 이번 백테스트에서 배운 내용의 응용이라 보시면 된다.
코멘트:
4. 그런데 우리는 타임머신을 타고 과거에 돌아갈 수 없지 않는가

물론 백테스트 결과는 과거의 결과이다. 그리고 과거수익이 미래수익을 보장해 주지는 않는다.

백테스트 결과가 아름다운 투자전략은 과거 일정 기간에만 유효했을 수도 있고, 특정 증시에서는 높은 수익률을 달성했으나 다른 증시에서는 안 먹힐 수도 있고, 과거에는 유효한 전략이었어도 널리 투자가들에게 알려지면서 알파를 잃어버려서 현재에는 유효하지 않을 수도 있다.

따라서

1. 특정한 투자전략이 한국 증시 말고도 다른 증시에서도 유효한지 백테스팅을 하거나 관련 논문을 찾아 봐야 한다(즉, 다른 사람들이 나 대신 백테스팅을 한 기록). 전략이 미국, 유럽, 일본 등 타국 주식시장에서 알파를 달성했다면 이 전략이 유의미할 가능성은 매우 높아진다.

2. 아울러 전략이 공개된 후 수익률이 변경되었는지 분석이 필요하다. 예를 들면 오늘 소개한 ‘저 PBR 전략’ 은 유진 파마, 케네스 프렌치 교수의 “The Cross Section of Expected Stock Returns(1992)”이라는 논문을 통해 전세계에 널리 알려졌다.

3. 링크: faculty.som.yale.edu...estments/Fama-92.pdf

4. 그렇다면 논문 발표 이후, 즉 전략이 공개된1992년 이후의 수익을 분석해 보는 것이 필수이다. 그리고 1992년 이후에도 저 PBR 전략이 지속적으로 여러 증시에서 알파를 창출한다면 “저 PBR 전략”은 유의미한 전략일 가능성이 매우 높다.

여러분이 선택한 투자전략이 저 두 개의 관문을 통과할 수 있다면 - 즉 여러 국가의 증시에서 알파를 달성하고, 투자전략 공개 이후에도 알파가 유지가 된다면 - 전략에 대한 확신이 더 생기지 않겠는가?

글로벌 시장의 1992-2016년, 즉 논문 발표 이후 PBR 전략의 수익률은 아래와 같다. 다음에 어떻게 글로벌 주식 데이터를 가지고 한국 시장에서 진행한 백테스트 결과를 강화시키는지, 즉 “Robust”하게 만드는지 좀 더 자세히 설명하겠다.

<글로벌 23개국 소, 대형주 B/P별 CAGR, 동일균등 포트폴리아, 월 1회 리밸런싱, 1992-2016년>

cdn.snek.ai/article/...sx885d3nvmwbtgop.png

(데이터: Kenneth French Data Library – Developed Market Factors and Returns – 6 Portfolios Formed on Size and Book-to-Market(2*3) - 6 Global Portfolios Formed on Size and Book-to-Market(2*3) 에서 추출)

* 저 B/P: 최하 30%, 고 B/P: 최고 30%, 중 B/P: 중간 40%


링크: mba.tuck.dartmouth.e...ch/data_library.html


보시다시피 논문 게재 후에도 B/P가 높은 주식의 수익률이 월등히 높으며, 소형주에서는 특히 유효하다. 즉 한국에서 고 P/B 주식이 수익이 높은 것은 한국만의 특정 구간의 우연이 아닐 가능성이 매우 높은 것이다.
코멘트:
5. 백테스트 - 꼭 직접 해야 하는, 투자 고수가 되기 위한 필수적인 관문

논문이나 저자의 글을 보고 간접적으로 백테스트 결과를 감상하는 것도 매우 좋다. 과거 수익 결과도 전혀 모르고 카더라 방식으로 투자하는 행위보다 훨씬 현명하다. 그러나 독자분들도 직접 위 자료원을 이용해 데이터를 다운받아서 백테스트를 해보시는 것을 추천하고 싶다.

아무리 강환국이나 다른 투자가가 특정 전략을 홍보해도 이를 100% 신뢰하기는 어렵기 때문이다. 강환국이 엑셀을 잘못 돌려서 실수하면 어쩔 것인가? 강환국이 몰래 ‘저 PBR 펀드’를 준비하면서 홍보용으로 수익을 뻥칠 수도 있지 않는가? 재야고수들이 비밀리에 만든 ‘저 PBR주 협회’ 의 로비를 받았을 수도?

<저 PBR 주 협회 - "다음달에는 어떻게 백테스트를 조작해서 저 PBR주를 팔아먹을지 한번 논의해 봅시다">

cdn.snek.ai/article/...a895mh8sk009rs9h.png

그래서 필히 직접 데이터를 다운받아서 전략을 검증해야 전략에 대한 신뢰도가 강해진다.

백테스팅은 보시다시피 별로 어렵지 않다. 이제 여러 차례에 걸쳐 왜 계량투자인지, 어떤 책을 통해 공부하는지, 어떻게 종목을 뽑는지, 어떻게 그리고 왜 백테스팅을 하는지 살펴 보았다.

이 내용만 깊이 스터디 하셔서 이해하시면 직접 본인에게 맞는 전략을 구상하고, 과거수익을 계산하고 적합한 종목을 뽑는데 아무 어려움이 없을 것이다.

마지막으로: 금융처럼 I. 사기꾼들과 II. 실력 없는데 실력 있는 것처럼 포장하거나 지가 실력 없는지도 모르는 위인들이 많은 분야가 전세계 통틀어 없을 겁니다. 셀프 투자가 최선의 방법입니다.

HaeRim Lee
TradingView Korea Service Manager (kr.tradingview.com)
MultiCharts Korea Service Provider (www.investware.net)
TView: ehaerim
Skype: ehaerim
Kakao: ehaerim
Mobile: +82-10-4035-2873
면책사항

이 정보와 게시물은 TradingView에서 제공하거나 보증하는 금융, 투자, 거래 또는 기타 유형의 조언이나 권고 사항을 의미하거나 구성하지 않습니다. 자세한 내용은 이용 약관을 참고하세요.