주식시장별곡

주식투자 연구에서 백테스팅 후, 실데이타 검증이 필요한 이유

lovefund이성수 2019. 5. 16. 08:27

주식투자 연구에서 백테스팅 후, 실데이타 검증이 필요한 이유

다양한 방법들을 활용하여 주식투자 연구를 하시는 분들이 늘고 있습니다. 간단하게는 증권사HTS차트에 있는 시스템트레이딩 기능을 활용하는 방법부터, 엑셀과 VBA를 이용한 방법 및 이지랭귀지나 파이썬 등의 프로그램을 이용한 투자 연구등 많은 이들이 투자 연구를 심도있게 하는 요즘 모습입니다.

투자연구에 있어서 백미는 백테스팅입니다. 자신이 만든 투자 전략이, 과거 성과가 어떠했는지 알아보는 것이지요. 하지만 은근히 많은 분들이 백테스팅 만으로 투자 연구를 끝내고 실전에 투입시는 경우가 많습니다.

 

 

ㅇ 백테스팅에는 은근히 많은 오류들이 숨어있을 수 있다.

 

최근들어 자신이 만든 투자전략의 백테스팅 결과를 자랑하는 포스팅이나 글을 어렵지 않게 찾아볼 수 있습니다. 정말 화려한 퍼포먼스를 보면, 눈이 휘둥그레질 정도입니다. 필자도 투자 연구를 하는데 있어서 백테스팅은 필수적으로 사용하는 검증 기법입니다.

 

이 백스팅 과정은 투자전략을 만드는데 있어서 중요한 절차입니다. 적어도 과거에 내 전략이 어떤 흐름을 만들었는지 뒤돌아 볼 수 있으니 말입니다. 그런데 백테스팅 과정만으로는 예상치 못한 몇가지 문제가 숨어있을 수 있습니다. 이는 전략 자체의 논리적 오류일 수도 있고, 투자연구를 위해 사용된 원데이타의 문제에서 발생할 수도 있으며 이 두가지가 복합적으로 엮여 만들어질 수도 있습니다.

 

필자의 경험을 토대로 몇가지 논리적 오류들을 언급드려 보겠습니다.

 

 

ㅇ 백테스팅의 오류 1. 시간을 거슬러 간다?  미래로?

 

아마 백테스팅을 통해 투자 연구를 해본 분 중에 이런 현상을 실제 경험하신분들도 계시리라 생각됩니다. 내가 만든 전략이, 미래에 나올 데이타를 활용하여 매매 시그널을 만들고 있는 현상이 백테스팅 과정에서 발생되기도 합니다.

 

십수년전 서기 2003년 어느날 새벽3시, 필자는 "엄청난 선물 시스템 로직"을 만든 기쁨에 쾌재를 부르고 있었습니다. 과최적화를 한 것도 아닌데 수익곡선이 우상향으로 스트레이트로 이어지는 놀라운 매매 전략을 발견하였던 것입니다. 심지어 과거 데이타를 시간단위로 구분지어 분석하는 전진분석에서도 놀라운 성과가 나타나고 있었다보니 그 당시 바로 실전투입한다는 용단을 내립니다.

 

"더 이상의 연구는 필요없다, 바로 내일부터 실전투입 고고고"

 

그런데, 다음날 매매 시그널을 작동시켜보니 매매 시그널이 발생되어야할 조건에서 매매 신호가 발생하지 않고 있는 것입니다. 이상하다 싶어 코드를 다시 살펴보고 검토하는데 백테스팅에서 찾지 못했던 논리적 오류를 발견하였습니다. 그것은 바로 미래 데이타인 오늘 장마감즈음 시세가 들어와야지만 그 전략이 작동한다는 너무도 기본적인 오류였던 것입니다.

 

이런 논리적 오류는 주식투자 정량분석(Quant) 연구에서도 발생할 수 있습니다.

예를들어 여러분이 매년 연말 재무제표를 기준으로 매년 연말 종가에 포트폴리오를 세팅한다고 논리를 세웠다하겠습니다.

얼핏보면 문제가 없어보이지요? 하지만 앞서 언급드린 2003년 필자가 선물시스템트레이딩 상황에서 겪은 논리적 오류를 떠올려보시면 문제를 쉽게 찾을 수 있습니다.

 

맞습니다. 매년 연말 기준 재무제표는 3개월 후에야 나오게 되지요. 즉, 미래 데이타를 끌어와 연구한 것과 다름 없습니다. 아마도 최근 가치투자 연구하는 분들 중에 놀라운 성과를 만들어 2003년 어느날 새벽 3시에 필자처럼 기뻐하는 분이 계시다면 한번 정도 논리를 체크하실 필요가 있습니다.

(※ 관련하여 필자는 추가연구를 한바가 있습니다. 미래데이타를 쓰게되면 결과는 더 놀라워지고 오래된 데이타를 쓸수록 결과는 나빠지게 됩니다.)

 

[미래데이타를 활용할 경우 현실적인 데이타를 사용할 때보다 엄청난 성과가 발생한다]

[자료참조 : lovefund 52차 정기세미나, 2017년 9월]

 

 

 

ㅇ 백테스팅의 오류 2. 수정주가 이 놈이 문제가 될 수도...

 

수정주가는 기업의 유상증자, 무상증자, 주식배당 및 감자 등 다양한 이벤트가 발생하였을 때를 반영하여 주가 추이에 문제가 없게 보정한 주가입니다.

과거 2001~2002년 당시 대우증권 시스템트레이딩 차트 론칭 프로젝트에 참여할 당시, 수정주가 관련 회의에 참석하였을 때가 생각나는군요. 수정주가를 어떻게 해야 합리적으로 만들 수 있을까라는 고민들을 하고 있었습니다. 그 당시만 해도 수정주가를 사용하는 곳은 거의 없었습니다.

 

다행히도, 거래소 시세데이타에는 이벤트(권리락 등)에 관한 태그가 있었고 이를 토대로 수정주가를 만들 수 있었습니다. 예를들어 100%무상증자라고한다면 그 태그에 맞추어 과거 주가를 1/2로 보정하고 그 전에 또 다른 이벤트가 있다면 이를 계속 보정 해 갑니다.

아마도, 십수년간 대부분의 증권사는 수정주가가 완벽에 가깝게 보정되었다 생각합니다.

 

그런데 간혹 오류가 보이는 경우가 왕왕 있습니다.

전산이 미비한 시기에는 이벤트 태그가 제대로 있지 않다보니 유증,무증 등 권리락이 발생하였을 때 수정주가가 반영안되어있을 수도 있습니다.

 

[수정주가에 유상증자가 반영되지 않은 1999년 삼성전자 사례]

 

 

예를들어 1999년 삼성전자의 경우 주주배정 유상증자가 2번 있었지만 HTS에 수정주가에서는 "권리락"표시는 있어도 당시 유증발행가와 증자비율을 감안한 수정주가가 반영되어있지 않기도 합니다.

혹은 기업분할이나 합병이 발생하는 경우 아예 새로운 주가가 시작되기 때문에 수정주가가 무의미할 수도 있습니다.

 

그외에도 배당락처리의 경우 어떤 경우는 배당락 비율을 반영하여 수정주가에 반영하기도 하지만, 대부분의 경우는 배당락처리를 하지 않고 반영하는 경우가 많습니다. 자칫 이로 인하여 작을수도 혹은 클 수도 있는 원데이타 상의 오류가 만들어질 수도 있습니다.

 

 

ㅇ 실전 매매 작용 전, 실데이타 검증은 필수!

 

[실데이타 검증까지 이어졌을 때 완벽한 투자 전략이 태어날 수 있다. 사진참조 : pixabay]

 

위의 오류가 크게 내포되어있을 수 있기에 실전 매매에 앞서 일정 기간 실데이타 검증을 가져야만 합니다. 필자의 경우 가치투자 포트폴리오를 연구하던 2000년 초중반까지는 백테스팅으로 논리를 검증한 후 2006년부터는 실데이타로 검증하며 가치투자의 결과를 계속 추적하고 있습니다.

방법은 간단합니다. 정해진 시기가 되어 종목을 선정하면 그 결과를 과거데이타가 아닌 현실 데이타로 검증하게 되는 것이지요.

 

실데이타로 검증을 밟다보면 여러가지 현실적인 문제를 만나게 됩니다. 유상증자, 무상증자는 기본이고 기업분할 등 수정주가에서 충분히 반영하지 못하는 문제까지 다양한 현실적인 문제를 만나게 되지요 이는 백테스팅에서는 간과될 수 있는 부분입니다. 그렇게 3년을 실데이타로 검증하고 체계화된 가치투자전략을 2009년부터 본격적으로 사용하고 있습니다.

 

이런 과정을 밟다보면 한가지 깨닫게 되는게 있습니다. 백테스팅보다는 성과가 힘들고 거칠게 나온다는 점을 경험하게 됩니다. 예상치 않는 기업 이벤트로 인해 수익률이 조금 낮게 만들어지기도 하지요.

이 과정에서 쌓인 경험은 또 다른 전략을 만드는 밑거름이 되어주고, 논리적으로 완벽한 전략을 만들 수 있게 해 주며, 전략을 만드는 과정에서 과도한 전략 최적화를 피하게 해 줍니다.

 

그리고 이는 연구 결과가 허상이 아닌, 실제 투자 성과로 이어지는 중요한 의미를 던져줄 것입니다.

 

2019년 5월 16일 목요일

lovefund이성수(유니인베스트먼트 대표, CIIA charterHolder)