전략이 틀린 게 아니라 장이 안 맞았다: 하루 종일 백테스트하며 배운 레짐과 적대적 검증
볼린저밴드 스캘프 아이디어 하나로 시작한 하루가, 전략의 옳고 그름이 아니라 장세와의 궁합 문제라는 결론으로 끝났다. 그리고 내가 만든 검증을 나 스스로 믿지 못해서, 세 명에게 코드를 부수게 시킨 이야기다.
3줄 요약
- 오늘 한 일은 트레이딩 전략 아이디어 하나를 하루 종일 백테스트로 두드려 보고, 자동매매에 맡길 자격이 있는지 판정한 것이다.
- 이게 중요한 이유는 대부분의 전략이 실패하는 원인이 전략 자체가 아니라 그 전략을 켠 시기의 장세이기 때문이고, 그걸 구분하지 못하면 좋은 논리도 엉뚱한 장에서 계좌를 태우기 때문이다.
- 혼자 시스템을 만드는 사람에게 오늘의 교훈은, 자기가 만든 검증은 자기가 못 잡는다는 것이고 그래서 일부러 남에게 부수게 시켜야 한다는 것이다.
스캘프 아이디어를 죽인 건 수수료가 아니라 손익비였다
첫 판정은 명확했다. 밴드에 닿으면 무조건 되돌림에 베팅하는 단순 스캘프는 엣지가 없었다. 수수료를 완전히 빼고 계산해도 회당 기대값이 마이너스였으니, 비용 문제가 아니라 신호 자체에 우위가 없다는 뜻이었다.
원인을 뜯어 보니 손익비가 거꾸로였다. 이익은 짧게 끊기고 손실은 두 배로 열려 있었다. 여기에 상위 시간대 지지저항과 겹치는 구간만 고르고, 과매수 과매도와 거래량 소진을 확인하고, 손익비를 유리하게 뒤집자 마이너스가 플러스로 돌아섰다. 방향은 맞았다는 뜻이다. 다만 표본이 작고 시장가로는 죽고 지정가로만 겨우 사는 수준이라, 자동 스캘퍼로는 부적합했다.
전략이 틀린 게 아니라 장이 안 맞았다
하루의 진짜 전환점은 여기였다. 여러 추세추종 변형을 6개월치로 돌렸더니 죄다 마이너스가 나왔는데, 그 6개월이 고점에서 3분의 1 넘게 빠진 하락과 휩쏘 장이었다. 상승 추종 매수 신호가 전부 가짜 반등의 꼭지를 잡고 있었던 것이다.
그래서 프레임을 바꿨다. 문제는 전략의 옳고 그름이 아니라 레짐과의 궁합이었다. 추세장에는 추세추종이 정답이고, 횡보나 하락장에서 같은 전략을 켜면 독이 된다. 이 관점으로 다시 짠 것이 이동평균 교차로 방향을 자동으로 뒤집는 구조였다. 상승이면 매수, 하락이면 매도, 추세가 바뀌면 뒤집는다. 3년치로 검증하자 결과가 뭉쳤다.
- 4시간봉 교차 뒤집기는 3년간 매수후보유를 앞섰고, 사용한 이동평균 짝을 여러 개로 바꿔도 전부 비슷한 구간에 모였다. 우연이 아니라는 신호였다.
- 6개월 블록 6개 중 5개가 플러스였고, 유일한 하락 블록에서는 자동으로 매도로 돌아 이익을 냈다. 방향 전환이 실제로 작동했다.
- 대신 승률은 30퍼센트 안팎으로 낮았다. 대부분의 거래는 지고, 크게 버는 몇 번의 추세가 전체를 먹여 살리는 구조라 심리적으로 버티기가 관건이었다.
진짜 숫자는 비용을 다 넣은 다음에야 나온다
다음 정정은 비용에서 나왔다. 거의 상시 포지션을 들고 있는 전략이라, 수수료와 슬리피지만이 아니라 자금조달비용까지 3년치 실제 값으로 넣지 않으면 백테스트 숫자가 부풀 수밖에 없었다.
실제 자금조달비용을 방향별로 정확히 반영하자 재미있는 사실이 드러났다. 하락장에서 매도 포지션을 들고 있는 동안에는 오히려 비용을 받는 구간이 많아서, 겁냈던 만큼 순비용이 크지 않았다. 결국 수익 배수는 낙관치에서 소폭 깎이는 선에서 정착했다. 중요한 건 배수 자체가 아니라, 겁주는 가정과 후한 가정을 다 빼고 실제 값만 넣어야 그제서야 계획에 쓸 수 있는 숫자가 나온다는 사실이었다.
내 검증을 내가 못 믿어서 세 명에게 부수게 했다
마지막은 검증의 검증이었다. 내가 만든 백테스트 엔진을 내가 믿지 못해서, 세 갈래의 독립 점검을 병렬로 돌려 금융 계산과 미래 정보 참조와 청산 회계를 각자 코드를 실행하며 공격하게 시켰다.
결과로 여섯 건의 버그가 나왔다. 가장 위험한 것은 청산 조건에 표시만 하고 실제로 포지션을 닫지 않아, 계좌가 마이너스로 폭주할 수 있는 구멍이었다. 전부 고쳤고, 놀랍게도 핵심 성적표 숫자는 거의 변하지 않았다. 적대적으로 세 번 부숴도 과최적화나 미래 정보 참조나 수익 부풀리기는 없었고, 나온 건 견고성과 정확성 개선뿐이었다. 자기 검증을 신뢰하지 않는 태도가 오히려 결과에 대한 신뢰를 만들어 준 셈이다.
오늘 관통한 판단
오늘 하루를 관통한 생각은 하나다. 실패한 전략을 붙잡고 파라미터를 더 만지는 것은 대개 과최적화로 가는 길이고, 진짜 물어야 할 질문은 이 전략이 틀렸느냐가 아니라 지금 장이 이 전략에 맞느냐다. 여기에 더해, 자기가 만든 검증은 자기가 못 잡으니 일부러 남에게 부수게 시켜야 하고, 진짜 숫자는 겁주는 가정도 후한 가정도 다 뺀 실제 비용을 넣은 다음에야 나온다. 약속이 아니라 확인된 결과를 남긴다는 원칙은, 내가 만든 검증마저 의심하는 데서 완성된다.