안녕하세요 님
상냥하고 친절한 먼트리호 입니다. 23년 새해들어 주식 시장이 급등하고 있습니다. 그러다 보니 그동안 묶혀 두었던 전략을 다시 꺼내어 들고 다시 백테스팅을 하여 구독자분들이 많이 있습니다.
백테스팅(backtesting)은 모든 알고리즘 트레이딩 전략 개발에서 중요한 단계중 하나입니다. 그러나 백테스팅 (backtesting)을 하면 할 수록 전략 성과에 욕심이 생기고 결국 과최적화의 함정에 빠져들게 됩니다. 저도 매번 전략을 만들때 마다 과최적화 유혹을 받고 있어 어느 누구보다 구독자분들의 마음을 잘 알고 있습니다.
이번 포스팅에서는 누구나 할 수 있는 전략 개발에서 과최적화를 피하는 5가지 방법을 알려드립니다. 이런 방법이 과최적화를 완벽히 피하게 할 순 없지만 소개하는 5가지 방법은 과최적화를 피하는 첫 걸음입니다. 전략 개발 시 꼭 활용해 보시기 바랍니다.
- 전략을 단순하게 유지하세요 (Simple is Best)
다른 분야에서도 ‘단순함’이 강조되지만 특히 투자 분야에서 ‘단순함’의 힘은 상상 이상으로 큽니다. 가능하다면 일반적인 필터 (거래대금, 시가 총액 등)을 제외하고 주요 전략은 단순하게 유지하세요. 그리고 이론적 토대가 뒷받침되지 않는 복잡한 모델이나 전략을 사용하지 마세요. 단순한 전략일 수록 과최적화될 가능성이 적고 미래 구간 데이터 잘 맞을 가능성이 높습니다.
- 벡테스팅 데이터를 분할해서 사용하세요
데이터의 일부는 전략 개발 및 튜닝에 사용하고 다른 일부는 최종 전략 평가에 사용합니다. 이렇게 하면 전략이 과거 데이터에 너무 가깝게 맞추는 것을 방지하고 전략이 미래에 얼마나 잘 수행될 것인지에 대한 보다 정확한 추정치를 제공합니다.
- 교차 검증을 사용하세요
교차 유효성 검사에는 주식 데이터를 여러 그룹 (연도 등) 나누고 나머지 데이터에 대해 유효성을 검사하는 동안 다른 하위 집합에서 전략을 튜닝합니다.
- 성능 지표를 확인하세요
투자 전략을 개발하면 각종 성능 지표 (누적수익률, CAGR, MDD, 샤프 비율 등)가 나오게 됩니다. 이러한 전략 운영 시 성능 지표를 정기적으로 확인하세요. 실제와 벡테스팅 결과 사이에 상당한 차이가 있는 경우 과최적화 되었다고 볼 수 있습니다.
- 과도한 변수 튜닝을 하지 마세요
적합한 변수를 찾는 것이 중요하지만 과도한 튜닝은 과최적화로 이어질 수 있습니다. 따라서, 변수(이평선 일자수, 이격도 등)를 튜닝 할 때에는 과도한 최적화를 방지하기 특정한 영역 (5~20일)을 정하는 걸 추천합니다.
이러한 단계를 따르면 백테스팅에서 과도한 최적화의 위험을 줄이고 보다 강력하고 신뢰할 수 있는 알고리즘 거래 전략을 개발할 수 있습니다.
|