다양한 방법들을 활용하여 주식투자 연구를 하시는 분들이 늘고 있습니다. 간단하게는 증권사 HTS차트에 있는 시스템트레이딩 기능을 활용하는 방법부터 엑셀을 이용한 방법, 파이썬이나 이지랭귀지 등을 이용한 투자 연구 등 많은 이들이 투자 연구를 깊이 있게 하는 투자자들이 크게 늘었습니다.
그 투자 연구에 있어서 백미는 백테스팅입니다. 자신이 만든 투자 전략이, 과거 성과가 어떠했는지 알아보는 것이지요. 하지만 은근히 많은 분이 백테스팅만으로 투자 연구를 끝내고 실전에 투입하는 경우가 많습니다.
■ 백테스팅에는 은근히 많은 오류가 숨어있을 수 있다.
자신이 만든 투자 전략의 백테스팅 결과를 자랑하는 포스팅이나 SNS 글들을 어렵지 않게 찾아볼 수 있습니다. 정말 화려한 퍼포먼스를 보면, 눈이 휘둥그레질 정도입니다. 필자도 투자 연구를 하는 데 있어서 백테스팅은 필수적으로 사용하는 검증 기법입니다.
이 백테스팅 과정은 투자 전략을 만드는 데 있어서 중요한 절차입니다. 적어도 과거에 내 전략이 어떤 흐름을 만들었는지 뒤돌아볼 수 있으니 말입니다. 그런데 백테스팅 과정만으로는 예상치 못한 몇 가지 문제가 숨어있을 수 있습니다. 이는 전략 자체의 논리적 오류일 수도 있고, 투자 연구를 위해 사용된 원 데이터의 문제에서 발생할 수도 있으며 이 두 가지가 복합적으로 엮여 만들어질 수도 있습니다.
필자의 경험을 토대로 몇 가지 논리적 오류들을 언급 드려 보겠습니다.
■ 백테스팅의 오류 1. 시간을 거슬러 미래로 갔다???
아마 백테스팅을 통해 투자 연구를 해본 분 중에 위에 중간 제목에 언급한 현상을 경험한 이들도 있으시리라 생각됩니다. 그 현상은 바로, 내가 만든 전략이 미래에 나올 데이터를 활용하여 매매 시그널을 만드는 현상이 백테스팅에서 나타나는 것이지요.
20여 년 전인 서기 2003년 어느 날 새벽 3시, 필자는 "엄청난 선물 시스템 로직"을 만든 기쁨에 쾌재를 부르고 있었습니다. 과최적화를 한 것도 아닌데 수익 곡선이 우상향으로 스트레이트로 이어지는 놀라운 매매 전략을 발견하였던 것입니다. 심지어 과거 데이터를 시간 단위로 구분 지어 분석하는 전진 분석에서도 놀라운 성과가 나타나고 있었다보니 그 당시 바로 실전투입한다는 성급한 용단(?)을 내립니다.
"더 이상의 연구는 필요 없다, 바로 내일부터 실전투입!!!“
그런데, 다음날 매매 로직을 작동시키니 매매 시그널이 발생하여야 할 조건에서 매매 신호가 발생하지 않고 있는 것입니다. 이상하다 싶어 코드를 다시 살펴보고 검토하는데 백테스팅에서 찾지 못했던 논리적 오류를 발견하였습니다. 그것은 바로 미래 데이터라고 할 수 있는 당일 장 마감 시세가 들어와야지만, 그 매매 시그널이 장중에 작동한다는 너무도 어이없는 오류였던 것입니다.
(※ 미래 데이터인 당일 종가 결과가 있어야지만, 당일 매매가 가능했던 것이지요.)
이런 논리적 오류는 주식투자 여러 가지 모습으로 다양한 투자 연구에서 발생할 수 있습니다.
예를 들어 여러분이 매년 연말 재무제표를 기준으로 매년 연말 종가에 포트폴리오를 세팅한다고 논리를 세웠다 하겠습니다. 얼핏 보면 문제가 없어 보이지요? 하지만 앞서 언급 드린 2003년 필자가 선물 시스템트레이딩 상황에서 겪은 논리적 오류를 떠올려 보시면 문제를 쉽게 찾을 수 있습니다.
예시에서의 논리적 문제는 미래 데이터를 알아야만 투자 연구가 성립한다는 데 있습니다.
매년 연말 기준 재무제표는 3개월 후에야 나오게 되지요. 즉, 미래 데이터를 끌어와 연구한 것과 다름없습니다. 아마도 최근 가치투자 연구하는 분 중에 어쩌다 놀라운 성과를 만들어 2003년 어느 날 새벽 3시에 필자처럼 기뻐하는 이가 있다면 한 번 정도 논리를 점검할 필요가 있습니다.
[ 미래 데이터인 1년 후 미래 PER를 활용하면 투자 성과는 엄청날 수 있다. ]
[ 연구분석 : lovefund이성수 ]
■ 백테스팅의 오류 2. 수정주가가 문제가 되기도 한다.
수정주가는 기업의 유상증자, 무상증자, 주식배당 및 감자 등 다양한 이벤트가 발생하였을 때를 반영하여 주가 추이에 문제가 없게 보정한 주가입니다.
과거 2001~2002년 필자가 (구)대우증권 시스템트레이딩 차트 프로젝트에 참여할 당시, 수정주가 관련 회의에 참석하였을 때가 생각나는군요. 수정주가를 어떻게 해야 합리적으로 만들 수 있겠느냐는 고민을 하고 있었습니다. 그 당시만 해도 수정주가를 사용하는 곳은 거의 없었습니다.
다행히도, 거래소 시세 데이터에는 이벤트(권리락 등)에 관한 태그가 있었고 이를 토대로 수정주가를 만들 수 있었습니다. 예를 들어 100% 무상증자라고 한다면 그 태그에 맞추어 과거 주가를 1/2로 보정하고 그 전에 또 다른 이벤트가 있다면 이를 계속 보정 해 갑니다.
수십 년 동안 보정을 하였을 터이니 아마도, 대부분의 증권사가 보유한 수정주가는 거의 완벽에 가깝게 보정되었다고 생각합니다.
그런데 간혹 오류가 보이는 경우가 왕왕 있습니다. 전산이 미비한 시기에는 이벤트 태그가 제대로 있지 않았을 수도 있기에 권리락이 발생하였을 때 수정주가가 반영 안 되어 있을 수도 있습니다.
그 외 배당락 처리의 경우 주식배당은 배당락 비율을 반영하여 수정주가에 반영하기도 하지만, 현금배당의 경우 배당락 처리를 하지 않고 반영하는 경우가 많습니다. 자칫 이에 따라 작을 수도 혹은 클 수도 있는 투자수익률 계산에 오류가 만들어질 수도 있습니다.
■ 실전 매매 적용 전 : 실데이타 검증은 필수!
위의 오류가 크게 내포되어 있을 수 있기에 실전 매매에 앞서 일정 기간 실데이터 검증을 해야만 합니다. 필자의 경우 가치투자 포트폴리오를 연구하던 2000년 초중반까지는 백테스팅으로 논리를 검증한 후 2006년부터는 실데이터로 검증하며 가치투자의 결과를 계속 추적하고 있습니다. 방법은 간단합니다. 정해진 시기가 되어 종목을 선정하면 그 결과를 과거 데이터가 아닌 현실 데이터로 검증하게 되는 것이지요.
실데이터로 검증을 밟다 보면 여러 가지 현실적인 문제를 만나게 됩니다. 유상증자, 무상증자는 기본이고 기업분할 등 수정주가에서 충분히 반영하지 못하는 문제까지 다양한 현실적인 문제를 만나게 되지요. 이는 백테스팅에서는 놓치게 되는 부분입니다. 그렇게 3년을 실데이터로 검증하고 실전 투자에 적용할지를 결정하게 됩니다.
이런 과정을 밟다 보면 한가지 깨닫게 되는 게 있습니다. 백테스팅보다는 실제 성과가 힘들고 거칠게 나온다는 점을 경험하게 됩니다. 예상치 않는 기업 이벤트로 인해 수익률이 조금 낮게 만들어지기도 하지요.
그리고 이 실데이터 검증 과정에서 쌓인 경험은 또 다른 전략을 만드는 밑거름이 되어주고, 논리적으로 완벽한 전략을 만들 수 있게 해 주며, 전략을 만드는 과정에서 과도한 전략 최적화를 피하게 해 줍니다.
그리고 이는 연구 결과가 허상이 아닌, 실제 투자 성과로 이어지는 중요한 의미를 던져줄 것입니다.
2024년 6월 11일 화요일
lovefund이성수 [ CIIA / 가치투자 처음공부 저자 ]
[ 증시토크 애독 감사드리며 글이 좋으셨다면, 좋아요/추천/공유 부탁합니다. ]
[ “lovefund이성수”에 대한 관심 감사합니다. ]
※ 본 자료는 투자자들에게 도움이 될만한 정보를 제공할 목적으로 작성되었으며, 무단복제 및 배포할 수 없습니다. 주식투자는 손실이 발생할 수 있으며 투자의 책임은 투자자 본인에게 있습니다. 또한 수치 및 내용의 정확성이나 안전성을 보장할 수 없으며, 어떠한 경우에도 고객의 증권투자 결과에 대한 법적 책임 소재의 증빙자료로 사용될 수 없습니다.
※ lovefund이성수를 사칭하는 사이트와 채널을 주의하여 주십시오.
절대로 본인은 대여계좌알선/유사수신/일임매매/대출알선/수익보장/ 해외선물 등을 하지 않습니다.