본문으로 건너뛰기
가이드

단일 백테스트가 거짓말을 할 수 있는 이유

보기 좋은 백테스트와 실제로 작동하는 전략은 같은 것이 아닙니다. 저희 도구를 포함해 어떤 도구를 쓰든, 둘을 구별하는 방법을 알려드립니다.

충분히 많은 조합을 테스트하면, 무언가는 반드시 훌륭해 보입니다

동전을 열 번 던지면 대체로 평범한 결과가 나올 것입니다. 하지만 천 명에게 같은 일을 시키면, 누군가는 앞면이 열 번 연속으로 나옵니다. 그 사람을 동전 던지기의 천재라고 부르는 사람은 없습니다 — 그런데 백테스팅에서는 트레이더들이 매일 정확히 이런 실수를 저지릅니다.

어떤 도구든, 모든 파라미터 최적화는 같은 방식으로 작동합니다: 많은 조합을 테스트하고, 그중 최고를 드러냅니다. 이는 분명 유용하지만, 태생적인 함정을 안고 있습니다. 일부 조합은 순전히 우연으로 훌륭해 보일 수 있습니다. 과거 데이터의 무작위 노이즈가 어쩌다 특정 설정과 맞아떨어져, 아무 의미 없는 아름다운 Equity Curve를 만들어낼 수 있기 때문입니다.

그리고 테스트하는 조합이 많아질수록, '최고' 결과가 그런 운 좋은 우연 중 하나일 가능성도 커집니다. 이는 특정 최적화 도구의 결함이 아니라, 여러 개 중 최고를 고르는 행위 자체가 가진 수학적 속성입니다. 즉, 결과표의 상위권을 볼 때는 항상 이 질문을 염두에 두어야 한다는 뜻입니다: 이것이 진짜 우위인가, 아니면 이번 실행의 복권 당첨자인가?

어떤 결과든 신뢰하기 전에 확인할 가치가 있는 세 가지 신호

이를 확인하는 데 저희 도구가 필요한 것은 아닙니다. 어떤 도구를 쓰든 상관없으며, 스프레드시트에서도 충분히 확인할 수 있습니다.

1

몇 번의 거래를 기반으로 한 결과인가?

14번의 거래로 300%의 수익률을 냈다는 건 증거가 아니라 일화일 뿐입니다. 작은 표본은 양쪽 방향 모두에서 극단적인 결과를 만들어내며, 극단적인 행운은 극단적인 실력과 구별되지 않습니다. 거래 횟수가 적을수록 백테스트가 말해줄 수 있는 정보는 줄어듭니다.

2

인접 값들도 같은 결과를 보이는가?

기간 14에서는 수익이 나는데 13과 15에서는 모두 손실이 난다면, 우위를 발견한 것이 아니라 스파이크를 발견한 것입니다. 신뢰할 만한 파라미터 값은 대개 양호한 결과들로 이루어진 넓은 영역 안에 존재합니다. 진짜 우위는 설정을 한 칸 옮긴다고 사라지지 않기 때문입니다. 고립된 피크는 과적합의 전형적인 징후입니다.

3

얼마나 넓게 탐색했는가?

20개 조합 중 최고 결과와 2,000개 조합 중 최고 결과는 같은 의미를 갖지 않습니다. 탐색 범위가 넓을수록 운이 승자를 만들어낼 기회도 많아집니다 — 그래서 '그저 우연일 수 있다'는 기준을 넘어서려면 결과가 그만큼 더 인상적이어야 합니다.

이 세 가지를 매번 손으로 직접 확인하는 건 지루한 작업입니다. 그래서 거의 아무도 하지 않습니다. 저희가 해결하고자 한 진짜 문제가 바로 이것입니다.

RunOpti가 이를 보고하는 방법 — 모든 실행마다 자동으로

RunOpti는 파라미터 스윕을 자동화합니다 — 하지만 저희가 가장 신경 쓰는 부분은 백테스트가 끝난 이후입니다. 모든 결과는 위의 세 가지 신호를 기준으로 점수가 매겨집니다:

  • check_circle

    저표본 플래그. 최소 기준치보다 적은 거래로 만들어진 결과는 원본 수치가 아무리 화려해 보여도 명시적으로 신뢰도 낮음으로 표시됩니다.

  • check_circle

    인접 안정성. 각 조합의 점수는 인접한 파라미터 값들이 얼마나 일관되게 성과를 내는지를 반영합니다. 고립된 스파이크는 원본 수익률이 더 높더라도, 안정적인 영역보다 낮은 점수를 받습니다.

  • check_circle

    탐색 규모에 따른 디플레이션. 점수는 해당 실행이 테스트한 조합 수에 맞춰 보정됩니다. 2,000개 중 최고는 50개 중 최고보다 더 높은 기준을 넘어야 합니다. 운이 좋을 기회가 40배 더 많았기 때문입니다.

  • check_circle

    그리고 통과하는 것이 아무것도 없을 때는, 있는 그대로 말합니다. 어떤 파라미터 영역도 이 검사를 통과하지 못하면, RunOpti는 직접적으로 알려줍니다: 신뢰할 수 있는 영역을 찾지 못했습니다. 저희는 '이번 실행은 신뢰할 만한 결과를 하나도 만들어내지 못했다'고 말하지 못하는 도구는, 사실상 신뢰도를 측정하고 있는 것이 아니라고 생각합니다.

마지막 항목은 그 순간에는 가장 마음에 안 들 기능이지만, 나머지 보고서를 읽을 가치가 있게 만들어주는 바로 그 기능입니다.

이 점수가 의미하는 것에 대한 안내. RunOpti의 견고성 점수는 단일 실행 내에서의 상대적 순위입니다 — 테스트된 조합들 중 서로 대비해 어느 것이 가장 신뢰할 만한지를 나타낼 뿐입니다. 이는 미래 성과를 보장하지 않습니다. 아무리 신중하게 검증된 과거 결과라도 미래 수익을 보장하지는 않습니다.

정직한 점수 체계 아래에서 내 전략이 어떻게 보이는지 확인하세요

내 전략으로 전체 파라미터 스윕을 실행해 전체 그림을 확인하세요 — 견고한 영역, 운 좋은 스파이크, 그리고 그 둘의 차이까지.

어느 쪽이든 부담 갖지 마세요. 정직한 답이 '신뢰할 수 있는 영역을 찾지 못했습니다'라 해도, 그 사실은 시장에게서 듣기 전에 최적화 도구에게서 먼저 듣고 싶을 겁니다.