#퀀트#백테스트#워크포워드#과최적화#트레이딩

워크포워드 최적화를 믿었다가 실계좌에서 깨진 이유

👁 0 조회

백테스트 샤프 2.1에 속아 넣은 계좌

작년 가을, 나는 코스피200 선물 데이지 스윙 전략 하나를 6개월 백테스트로 다듬었다. 최종 파라미터에서 나온 샤프지수는 2.1, 최대낙폭은 8.3%였다. 숫자만 보면 당장 자금을 넣어야 할 것 같았다. 그때 나를 붙잡은 건 딱 하나, "이 곡선이 너무 매끄럽다"는 찜찜함이었다. 진입 임계값을 1.5에서 1.6으로 0.1만 바꿔도 샤프가 2.1에서 1.2로 뚝 떨어졌다. 반 칸 옆이 절벽이면 그건 전략이 아니라 특정 구간에 맞춘 조각이다. 이 글은 그 조각을 실계좌에서 확인한 6주의 기록이다.

워크포워드도 과최적화를 못 막는 지점

나는 단순 백테스트가 위험하다는 걸 알았기에 워크포워드 방식을 썼다. 12개월을 학습 구간으로 파라미터를 뽑고, 이어지는 2개월을 검증 구간으로 굴리며 창을 굴려 나갔다. 표면적으로는 아웃오브샘플 검증이니 안전해 보였다. 문제는 내가 학습 구간마다 파라미터 후보를 240개씩 훑었다는 점이다. 진입 임계값 8종, 청산 배수 6종, 보유 기간 5종을 곱한 조합이었다. 창을 여섯 번 굴리면 실질적으로 1,440번의 시도를 한 셈이고, 그중 검증 구간에서도 우연히 살아남는 조합이 반드시 나온다. 동전을 1,440번 던지면 앞면이 열 번 연속 나오는 구간도 생기는 것과 같다. 워크포워드는 미래 데이터 누수를 막아주지만, 후보를 수백 개씩 던지는 탐색 자체가 만드는 과최적화는 막지 못한다. 검증 구간의 성적표는 실력이 아니라 그 탐색의 부산물이었는데, 나는 그걸 실력으로 착각했다.

실계좌 6주, 숫자가 갈라진 순간

의심을 안고도 소액을 넣었다. 예상 월수익률 3.4%, 실제로 찍힌 6주 수익률은 마이너스 1.9%였다. 더 중요한 건 거래 하나하나의 성격이 백테스트와 달랐다는 점이다. 백테스트 승률은 58%였는데 실계좌는 46%였고, 평균 슬리피지가 내가 가정한 0.4틱의 두 배가 넘는 0.9틱으로 찍혔다. 진입 신호가 몰리는 장 초반에 체결이 밀리면서 좋은 자리를 놓쳤다. 수수료와 슬리피지를 합친 왕복 비용만 계산해도 백테스트 대비 거래당 0.7틱씩 새어 나갔고, 40여 번의 매매가 쌓이자 그 누수가 손익을 통째로 뒤집었다. 결정적으로, 백테스트에서 수익을 책임지던 3월의 급등 구간 같은 이벤트가 실전 6주에는 없었다. 수익 곡선을 거래별로 뜯어보니 전체 수익의 70%가 딱 나흘에서 나왔더라. 내 전략은 특정 변동성 국면에서만 작동하는 도구였는데, 나는 그걸 상시 전략으로 착각한 것이다.

지금은 이렇게 검증한다

지금 나는 새 전략을 만들 때 세 가지 관문을 먼저 통과시킨다. 첫째, 파라미터 민감도 지도를 그린다. 최적점 주변 ±20% 구간의 성과가 절벽이 아니라 완만한 언덕이어야 통과다. 둘째, 탐색한 파라미터 개수를 기록하고 그 수의 제곱근만큼 샤프를 할인해서 본다. 240개를 훑었으면 대략 15로 나눈 값을 실질 기대치로 삼는다. 셋째, 전략이 어떤 시장 국면에서 돈을 버는지 한 문장으로 못 쓰면 실행하지 않는다. "변동성 확장 초입에서 추세를 먹는다"처럼 조건을 언어로 고정하면, 그 국면이 아닐 때 손을 떼는 판단이 선다. 6주에 잃은 1.9%는 수업료치고 쌌다. 매끄러운 곡선이 아니라 곡선이 부서지는 방식을 먼저 보는 습관, 그게 백테스트가 준 유일하게 진짜인 교훈이다.

이 글이 도움이 됐다면 공유해 주세요
X 공유

관련 글