WeCore
알고리즘 트레이딩

트레이딩 전략의 과최적화: 알아보고 피하는 방법

트레이딩 전략의 과최적화(커브 피팅)를 다룹니다. 과도한 파라미터, 데이터 스누핑, 인샘플과 아웃오브샘플, 워크포워드와 견고성 점검, 그리고 경고 신호까지 정리합니다.

WeCore·게시일 ·3분 분량

차트 위에서는 훌륭해 보이지만 실전에서는 실망스러운 전략을 만드는 가장 확실한 방법 중 하나가 과최적화입니다. 테스트 도구가 쉽고 빨라질수록 여기에 빠지기도 쉬워집니다. 이 글에서는 과최적화가 무엇인지, 왜 생기는지, 그리고 진짜 엣지와 노이즈를 구별하는 데 어떤 점검이 도움이 되는지 설명합니다.

과최적화란 무엇인가

과최적화(트레이딩에서는 흔히 커브 피팅이라고 부릅니다)는 전략이 반복되는 패턴 대신 과거 데이터의 노이즈를 학습하는 현상입니다. 결과적으로 전략을 만든 데이터에서는 성과가 뛰어나고, 새로운 데이터에서는 성과가 약합니다.

가격 데이터에는 약간의 "신호"와 엄청난 양의 무작위 노이즈가 섞여 있습니다. 모든 과거 기간에는 일회성 사건이 있습니다. 중앙은행의 깜짝 발표가 있던 날, 유난히 변동성이 컸던 한 주, 특히 길게 이어진 추세 같은 것들이죠. 바로 그 사건들을 활용하도록 맞춘 전략은 지나고 보면 완벽해 보이지만, 그런 사건은 같은 방식으로 반복되지 않습니다.

너무 많은 파라미터

전략의 모든 파라미터는 조절할 수 있는 "손잡이"입니다. 이동평균 기간, 손절 거리, 시작 시각, 지표 기준값 등이 그렇습니다. 파라미터가 두 개라면 과거에 억지로 맞추기 어렵습니다. 열 개라면 거의 모든 데이터를 "설명"할 수 있습니다.

가상의 예를 들어 보겠습니다. 37봉 이동평균, 23틱 손절, 09:47부터 11:12 사이에만 진입, 그리고 RSI가 41 미만일 때만 진입하는 전략이 있습니다. 각 숫자는 과거 결과가 가장 좋았기 때문에 선택되었습니다. 핵심 질문은 이것입니다. 왜 35나 40이 아니고 37인가? "그게 가장 잘 됐으니까" 외에 납득할 만한 답이 없다면, 그것은 경고 신호입니다.

경험칙: 파라미터는 적을수록, 테스트에 포함된 매매 횟수는 많을수록 결과를 더 믿을 수 있습니다.

데이터 스누핑

개별 전략의 파라미터가 적더라도, 같은 데이터로 수많은 아이디어를 테스트하면 문제가 다시 생깁니다. 변형을 백 개 테스트하면 그중 일부는 순전히 우연으로 훌륭해 보입니다. 이를 데이터 드레징 또는 데이터 스누핑이라고 합니다.

이는 의도하지 않게 스며들기도 합니다. 아이디어를 테스트했는데 안 되면, 조금 바꿔서 다시 테스트하고, 또 반복합니다. 그렇게 50번쯤 돌리고 나면, 자동 최적화를 한 번도 돌리지 않았더라도 데이터는 이미 전략 안으로 "새어 들어간" 상태입니다. 몇 가지 변형을 테스트했는지 기록해 두세요. 그 숫자는 결과만큼이나 중요합니다.

인샘플 vs 아웃오브샘플

과최적화에 맞서는 기본 도구는 데이터를 나누는 것입니다.

  • 인샘플(in-sample): 전략을 개발하고 조정하는 데 사용하는 데이터입니다.
  • 아웃오브샘플(out-of-sample): 따로 떼어 두고 개발 중에는 전혀 건드리지 않은 데이터입니다.

전략을 "확정"한 뒤에야 아웃오브샘플 데이터로 돌려 봅니다. 성과가 무너진다면 과최적화일 가능성이 큽니다. 중요한 점은, 그 후 다시 돌아가 전략을 고치고 같은 데이터로 재테스트하면 그 데이터는 더 이상 진정한 아웃오브샘플이 아니라는 것입니다.

워크포워드 테스트

워크포워드는 이 아이디어를 확장한 것입니다. 과거 데이터를 연속된 구간으로 나눕니다. 각 단계마다 한 구간에서 조정하고 다음 구간에서 테스트한 뒤, 두 구간을 앞으로 옮겨 반복합니다.

  1. 1년 차 데이터로 조정하고, 이어지는 분기로 테스트합니다.
  2. 앞으로 이동해 새 기간으로 조정하고, 그다음 분기로 테스트합니다.
  3. 모든 테스트 구간을 하나의 곡선으로 이어 붙입니다.

이어 붙인 곡선은 때때로 재조정하고 그다음엔 알 수 없는 미래를 매매하는 현실적인 상황을 시뮬레이션합니다. 이 곡선이 전체 최적화 결과보다 훨씬 나빠 보인다면, 그것은 중요한 정보입니다.

견고성 점검

데이터 분할 외에도 누구나 할 수 있는 간단한 점검이 몇 가지 있습니다.

  • 파라미터 주변값: 각 파라미터를 위아래로 조금씩 움직여 보세요. 견고한 전략은 넓은 범위에서 비슷한 결과를 보입니다. 한 값만 통하고 그 "이웃" 값들이 손실을 낸다면, 운 좋은 봉우리를 찾은 것입니다.
  • 관련 시장: NQ에서 통하는 전략이 ES에서는 어떻게 움직이나요? 똑같을 필요는 없지만, 완전히 무너진다면 의문이 생깁니다.
  • 다른 타임프레임: 타임프레임을 조금 바꿨다고 수익 전략이 손실 전략으로 바뀌어서는 안 됩니다.
  • 다른 기간: 연도별로 따로 확인하세요. 수익이 짧은 한 구간에서만 나오지는 않나요?
  • 더 가혹한 비용: 슬리피지를 늘리고 수수료를 높여 보세요. 진짜 엣지라면 견뎌야 합니다. 자세한 내용은 백테스트와 실전 매매의 차이를 참고하세요.
  • 최고 매매 제거: 가장 수익이 컸던 매매 다섯 건을 빼 보세요. 수익이 모두 사라진다면 그 전략은 운에 의존하는 것입니다.

전략이 과최적화되었다는 신호

  • 힘든 구간이 전혀 없는, 거의 완벽하게 매끄러운 자산 곡선.
  • 이상할 정도로 정밀한 값을 가진 많은 파라미터.
  • 파라미터 수에 비해 적은 매매 횟수.
  • 아주 좁은 설정 범위에서만 좋은 성과.
  • 과거 데이터를 조금 더 추가할 때마다 크게 바뀌는 결과.
  • 과거의 특정 손실을 "고치기" 위해 추가된 특별 규칙.
  • 인샘플과 아웃오브샘플 사이의 큰 격차.

핵심 정리

  • 과최적화는 패턴 대신 노이즈를 학습하는 것이며, 지나고 나서야 훌륭해 보일 뿐입니다.
  • 적은 파라미터와 많은 매매 횟수가 기본적인 방어책입니다.
  • 아웃오브샘플 데이터를 남겨 두고, 전략을 확정할 때까지 건드리지 마세요.
  • 워크포워드와 파라미터 주변값 점검은 운 좋은 봉우리를 드러냅니다.
  • 모든 점검을 통과한 전략이라도 포워드 테스트와 신중한 포지션 사이징이 필요합니다.

어떤 테스트도 미래의 성공을 보장하지 않으므로, 연구실 이후의 단계도 그만큼 중요합니다. WeCore에서는 자동 리스크 규칙을 적용한 시뮬레이션 모드로 전략이나 알림을 돌려 볼 수 있어, 실계좌를 걸기 전에 새로운 데이터에서 어떻게 동작하는지 확인할 수 있습니다. 전반적인 소개는 알고리즘 트레이딩이란을 참고하세요.

출처 및 추가 자료