백테스트 결과는 좋은데 실전에서 망하는 이유와 해결책
다들 바이럴리에서 봇 만들어 보신 분들은 비슷한 경험 한 번씩 있으실 거예요. 백테스트 돌리면 수익률이 200%가 넘는데, 막상 실전 돌리면 첫날부터 계좌가 녹아내리는 경험요. 이게 운이 없어서가 아니라, 백테스트를 설계할 때 흔히 하는 구조적인 실수 때문이거든요. 뭐가 문제인지, 그리고 신뢰할 수 있는 테스트를 만드는 법을 정리해 봤어요. TL;DR: 백테스트가 틀리는 4가지 주범은 미래 데이터 참조, 생존자 편향, 과최적화, 그리고 수수료/슬리피지 무시예요. 해결법은 워크포워드 검증을 쓰고, 절대 건드리지 않는 테스트용 데이터셋을 따로 챙기는 거죠. 도구는 속도 측면에선 vectorbt, 실전 시뮬레이션은 freqtrade 추천해요. 1. 미래 데이터 참조(Look-ahead bias): 캔들 종가에 신호를 계산하고 바로 진입하면, 사실상 그 캔들이 다 끝난 뒤에 진입하는 거라 실제로는 다음 캔들에서 진입해야 맞거든요. 별거 아닌 것 같아도 수백 번 거래하다 보면 결과가 완전히 달라져요. 2. 생존자 편향(Survivorship bias): 지금 거래소에 상장된 코인으로만 테스트하면, 이미 상장 폐지된 코인들의 리스크가 반영이 안 돼요. 3. 과최적화(Overfitting): 파라미터를 너무 많이 넣어서 과거 데이터에만 완벽하게 맞춘 건데, 이러면 실전에서는 수익이 안 나요. 파라미터는 3~4개 이하로 줄이는 게 좋아요. 4. 수수료와 슬리피지: 수수료 0.1%만 매일 반복돼도 수익 다 깎아먹거든요. 실제 수수료랑 슬리피지(메이저 코인은 0.05~0.1%, 알트는 더 크게) 꼭 넣고 테스트하세요. 제일 중요한 건 워크포워드 검증이에요. 데이터를 구간별로 나눠서 최적화하고 검증하는 과정을 반복해야 찐 실력을 알 수 있거든요. 마지막으로 데이터의 마지막 3개월 정도는 아예 보지도 말고 남겨뒀다가, 전략 완성됐을 때 딱 한 번만 돌려보세요. 이게 실전 수익률이랑 가장 비슷할 거예요. 다들 실전 돌리면서 백테스트랑 괴리율 심해서 당황했던 경험 있으신가요? 다들 어떤 게 문제였는지 궁금하네요!