시스템 트레이딩을 하면 당연히 백테스트 또는 시뮬레이션이 수반되어야 하고, 백테스트를 하다 보면 과최적화를 피하는 것이 굉장히 중요하고 어렵다는 것을 느끼게 된다.
과최적화를 피하기 위해 여러 가지 방법들이 동원되는데, 크게 두 방향으로 접근한다. 하나는 표본은 늘리는 것, 다른 하나는 아이디어를 단순하게 가져가는 것.
여기서는 표본을 늘리는 것에 대해 이야기한다.
통계학적으로 최저표본은 보통 30개 이상으로 본다. 물론 많으면 많을수록 수학적으로 정확한 통계적 추론이 가능해진다. 백테스트도 마찬가지다. 몇 개 이상이면 과최적화를 벗어날 수 있는지 정확한 기준선을 잡을 수는 없지만 표본은 많으면 많을수록 좋다.
그럼 트레이딩에서 표본의 숫자는 어떻게 정해지는 것인가?
테스트 기간과 매매주기, 그리고 종목수가 관련이 있다.
첫째, 테스트 기간과 매매주기
테스트 기간은 길면 길수록 좋다. 그런데 테스트 기간만으로 표본이 정해지는 것은 아니다. 매매주기를 함께 고려해야 한다. 예를 들어 코스피 200 ETF 한 종목의 10년 치 데이터를 가지고 테스트를 한다고 하자. 이때 1년 단위로 사고파는 전략을 테스트하면 표본은 10개에 불과하다. 그러나 매일 사고파는 데이트레이딩 전략을 테스트하면 245일(1년)*10 = 2,450개의 표본으로 테스트를 하는 셈이 된다. 따라서 매매주기를 짧게 가져갈수록 표본이 많아지고, 과최적화를 피할 확률이 높아진다. 매매주기가 짧아질수록 수익은 확실해지나 그만큼 수익을 주는 전략을 찾기가 어려워진다.
참고로 이와 같은 이유로 나는 1년 이상의 매매 주기를 가지는 소위 퀀트 투자를 하지 않는다. (과거에는 이런 방식으로 투자에 입문했지만 말이다.) 10년 치를 테스트해도 1 종목당 10개밖에 표본이 나오지 않아 표본이 아주 부족하다고 생각하며, 퀀트 투자는 1년 이상의 drawdown이 나오는 경우가 흔한데, 이 기회비용이 너무 크다고 생각한다.
둘째, 거래 대상 종목 수
거래 대상 종목이 많아지면 그만큼 표본도 늘어난다. 단순한 게 비교해서 코스피&코스닥 상장사 3,000여 개를 대상으로 데이트레이딩 전략을 10년 치 테스트를 하면 245일(1년)*10년*3,000개 = 7,350,000개의 표본을 가지고 테스트할 수 있다. 물론 이는 지나친 가정이며, 실제 매매할 수 있는 거래대금, 전략의 특성 등을 고려하여 표본 종목 수를 적당히 정하게 된다. 예를 들어 "전일 10% 이상 상승한 종목"을 대상으로 거래를 하는 전략은, 해당 조건을 만족하는 종목과 날짜들만 표본이 된다. 이 거래 대상 종목 수를 많이 가져갈 수 있다는 것이 선물이나, ETF가 아닌 현물주식 시스템 트레이딩이 가지는 가장 큰 강점이라고 생각한다. 데이트레이딩으로 적당한 매매빈도만 가져가주면 과최적화를 걱정할 필요가 전혀 없는 수준이다. 물론, 거래세라는 단점도 있긴 하지만 말이다.
요약하면 매매기간이 짧을수록, 투자종목대상이 많을수록, 테스트 기간이 길 수록 과최적화를 피할 수 있으나, 그만큼 전략 찾기가 어려워지기도 한다. 이런 점들을 고려하여 본인에게 맞는 투자 대상 종목, 매매 주기 등을 정해야 한다.