일반적으로 적절한 백테스트 없이 트레이딩을 하는 것은 카지노에서 노는 것과 같습니다. 몇 번은 이길 수 있겠지만, 장기적으로 보면 큰 손실을 입게 됩니다. 그 이유는, 위험을 감수하기 전에 가장 중요한 것은 트레이딩 전략을 미세 조정하는 일이기 때문입니다. 전략은 다양한 시장 상황에서 비교적 안정적인 성과를 내야 합니다. 이 글은 트레이딩 전략을 백테스트하는 방법, 어떤 백테스트 방법이 가장 효과적인지, 테스트 결과를 어떻게 평가하는지, 그리고 가장 중요한 것 — 언제 시장에 진입해 트레이딩할 준비가 되는지 이해하는 데 도움을 줄 것입니다.
백테스트란 무엇인가?
백테스트는 현재의 트레이딩 전략이 과거의 특정 기간 동안 어떻게 수행되었는지 분석하는 방법입니다. 트레이딩 전략을 백테스트하면 사후 시장 시나리오에서 전략이 어떻게 행동했는지 평가하고, 장점과 단점을 파악할 수 있습니다. 이는 트레이딩 모델을 사후 검증하는 데 도움을 주는 중요한 도구입니다.
백테스트는 실제 자금을 전혀 위험에 빠뜨리지 않고도 결과를 생성하고 위험과 수익성을 평가하는 데 목적이 있습니다. 구명조끼를 입고 수영하는 모습을 상상해 보세요 — 물의 맛은 볼 수 있지만, 익사하지는 않습니다.
트레이더에게 백테스트는 프로 운동선수의 훈련과 같습니다. 그들은 다른 사람들과 경쟁하기 전에 수 시간을 투자해 자신의 기술을 완성합니다. 이렇게 함으로써 그들은 수많은 테스트, 데이터, 분석을 바탕으로 더 나아지고 자신감을 쌓습니다.
기초
백테스트에는 여러 가지 다른 소프트웨어를 사용할 수 있습니다. 선택지로는 Microsoft Excel, 기성품 서드파티 플랫폼, 또는 처음부터 직접 구축하는 방법이 있습니다. 선도적인 알고리즘 트레이딩 회사들은 서로 다른 컴퓨터 언어로 백테스트 소프트웨어를 작성합니다. 이러한 언어에는 C++, C#, Python, 또는 (덜 복잡한 프로젝트에 적합한) R이 포함되며, 오늘날 인기 있는 AI 기술을 사용해 백테스트할 수도 있습니다.
또한 TradingView를 사용해 트레이딩 백테스트를 할 수도 있습니다. 이는 매우 전문적이고 강력한 차트 도구로, 편리한 시세 확인 기능을 제공하며 사용자가 전략 백테스트 결과를 그래픽 방식으로 볼 수 있게 해줍니다. 거의 모든 전략 백테스트는 데이터에 기반하며, 키움증권, 삼성증권, 토스증권 등 국내 금융 데이터 제공업체들도 관련 백테스트 기능을 제공할 것입니다.
올바른 백테스트를 하려면 과거 데이터가 필요합니다. 프로그램은 당신의 전략 사양을 가져와 과거의 특정 시장 기간에 적용하여 그 전략이 당시 어떻게 수행되었는지 보여줍니다.
백테스트 결과에 따라 트레이더나 분석가는 해당 전략을 미세 조정해야 하는지, 아니면 그대로 적용하기에 충분히 좋은지 결정합니다.
백테스트의 이념은 금융 시장이 주기적으로 움직인다는 이론에 기반합니다. 어떤 것이 과거에 통했다면, 많은 트레이더는 그것이 미래에도 여전히 적용될 것이라고 생각합니다. 반대도 마찬가지입니다 — 과거에 실패했다면 미래에도 성공하지 못할 가능성이 큽니다.
왜 트레이딩 전략을 백테스트해야 하는가?
트레이딩 또는 투자 전략을 세우는 두 가지 주요 축은 위험과 수익, 그리고 그 관계입니다. 백테스트는 이 두 요소를 정량화하여 전략의 전반적인 수익성과 위험 선호도를 보여주는 데 도움을 줍니다.
실제 시장 상황에서 전략이 어떻게 수행될지 알기 위해 자신의 트레이딩 전략을 백테스트해야 합니다. 백테스트를 통해 과거 데이터를 사용해 트레이딩 아이디어를 시뮬레이션하고 그 리스크 관리 메커니즘을 테스트할 수 있습니다.
트레이딩 전략을 백테스트하면 아무런 위험 없이 약점을 찾아내고, 회복력을 테스트하며, 미세 조정이 필요한 부분을 부각시킬 수 있습니다. 이 모든 것을 칠판 위에서 해냄으로써 모든 문제를 제거하고, 리스크 관리 도구를 강화하며, 자신의 트레이딩 전략이 충분히 합리적이라고 확신할 수 있습니다. 이렇게 하면 실제 시장 시나리오에서 실행할 때 더 만족스러운 성과를 보장할 수 있습니다.
백테스트는 무엇을 알려주는가?
본질적으로 백테스트는 다음과 같은 기본적인 질문에 대한 핵심 답을 제공합니다:
◎ 당신의 필요와 목표에 가장 적합한 트레이딩 설정은 무엇인가?
◎ 거래당 최적의 위험은 얼마인가?
◎ 이 전략은 어떤 시장에서 가장 효과적인가?
◎ 당신의 진입 및 청산 트리거는 잘 조정되어 있는가?
트레이딩 전략을 백테스트해야 하는 또 다른 근본적인 이유는 오늘날의 시장이 데이터에 의해 움직이기 때문입니다. 과거 데이터, 선행 지표, 예측 분석 모델 — 이 모든 것이 합리적인 트레이딩 전략을 세우는 데 도움을 줍니다. 실제 시장 데이터를 결합하지 않으면 트레이딩 전략의 미래 성과와 실제 시장 조건에서 실행 가능한지 정확히 알 수 없습니다.
트레이딩 전략을 백테스트하면 과거에 어떻게 수행되었는지 알 수 있습니다. 성과가 나빴다면 미래에 성공할 가능성은 희박합니다. 반대도 마찬가지입니다.
트레이딩 전략을 백테스트하면 경쟁 우위를 얻을 수 있습니다. 다른 트레이더와 경쟁할 때 무엇을 기대할 수 있는지에 대한 실질적인 통찰력을 제공합니다.
백테스트 전에 무엇이 필요한가?
가장 중요한 것은 모델의 성능을 왜곡하지 않도록 편향되지 않은 데이터를 찾으려고 노력하는 것입니다. 편향된 데이터를 사용하면 테스트 결과를 왜곡하는 것을 거의 피할 수 없습니다.
편향을 완전히 피하는 것은 불가능하지만, 가능한 한 투명하고 신뢰할 수 있는 결과를 얻기 위해 편향의 영향을 최대한 줄여야 합니다. 데이터에 영향을 미쳐 모델 성능에 영향을 줄 수 있는 몇 가지 유형의 편향이 있습니다.
최적화 편향
먼저, 최적화 편향(또는 커브 피팅)은 트레이더가 추가 파라미터를 도입하고 전략의 성과가 자신의 기대에 부합할 때까지 거래를 이기는 것을 말합니다. 또는 — '시스템의 구멍을 가리고' 결과를 인위적으로 부풀리는 것입니다. 그러나 이렇게 하는 유일한 목적은 자신을 속이고, 실계좌에서 예상치 못한 나쁜 성과를 초래하는 것입니다.
미래 참조 편향
또한 미래 참조 편향이 있는데, 이는 실수로 미래 날짜를 시뮬레이션에 포함시키는 것입니다. 이 오류는 파라미터 계산 부적절, 기술적 오류(주로 백테스트 스크립트를 처음부터 작성할 때) 등으로 인해 발생할 수 있습니다. 이를 피하려면 실계좌에 적용하기 전에 데이터와 백테스트 방법을 반드시 꼼꼼히 확인하세요. 그렇지 않으면 해당 전략은 실제 트레이딩에서 성과가 나쁠 수 있습니다.
기타 편향
다른 유형의 편향도 있습니다. 그중 하나는 생존자 편향입니다. 이 편향은 관심 있는 모든 관련 자산을 대표하지 못하는 데이터셋에 대해 전략을 백테스트할 때 발생합니다. 또 다른 하나는 심리적 허용 편향입니다. 이 편향은 성과를 높이기 위해 장기적으로 백테스트하지만 실제로는 단기 트레이딩을 계획할 때 발생합니다.
데이터와 백테스트 방법이 가능한 한 편향되지 않도록 확인한 후에는 백테스트 소프트웨어 선택에 집중할 차례입니다. 특정 브로커를 통해 트레이딩한다면, 그들이 플랫폼에 백테스트 기능을 내장했을 가능성이 큽니다. 적어도 가장 인기 있는 브로커들은 그렇습니다. 이 경우의 장점은 사용하기 쉽고 검증된 솔루션을 사용한다는 것입니다. 또한 트레이더들이 흔히 과소평가하는 핵심 문제 — 거래 비용을 백테스트 모델에 포함시키는 것 — 을 해결하는 데도 도움이 됩니다. 비록 미미하더라도, 장기 거래에서 누적되면 전략의 수익성에 영향을 미칠 수 있습니다.
서드파티 백테스트 플랫폼을 구독할 수도 있습니다. 그러나 백테스트는 일반적으로 지속적인 과정이라는 점을 기억하세요. 전략을 가끔 백테스트하거나, 포트폴리오를 확장하거나 대체 자산을 거래할 계획이라면 더 자주 해야 합니다. 그렇게 하려면 백테스트 소프트웨어 비용을 정기적으로 지불할 특정 예산을 마련해야 합니다.
기술적 능력이 있는 사람은 R, Python, 심지어 Excel로 백테스트 스크립트를 처음부터 작성할 수 있습니다. 프로그래머를 고용해 전략을 코드로 변환할 수도 있습니다.
적합한 트레이딩 방법과 완벽한 백테스트 소프트웨어를 찾았다면, 이제 소매를 걷어붙이고 일할 차례입니다.
백테스트 전략 선택
백테스트할 구체적인 전략에는 제한이 없습니다. 대부분의 트레이더는 시장 상황(하락 추세/상승 추세), 자산 유형, 위험/수익 잠재력 등에 따라 몇 가지 트레이딩 전략을 가지고 있습니다. 당연히 모든 전략을 테스트하고 그 성과를 평가해야 합니다.
전략을 현실 세계에 적용하기 전에 반드시 백테스트하세요. 예를 들어, 어떤 트레이딩 전략이 작년 1분기 하락장에서 뛰어난 성과를 냈다면, 올해 상승장에서는 성과가 나쁠 수 있습니다. 여기서 핵심은 정보를 맥락에 맞게 해석하는 것입니다.
또한 다양한 시장 조건에서 트레이딩 모델을 백테스트하는 것도 필수적입니다. 시장이 결코 완전히 같은 방식으로 움직이지는 않지만, 대부분의 경우 거래 자산은 이전과 유사한 패턴을 보입니다.
백테스트하는 시나리오가 많을수록 결과는 더 대표성 있고 신뢰할 수 있습니다.
백테스트할 자산 선택
가장 좋은 경우는 실계좌로 거래할 계획인 것과 동일한 상품의 데이터로 전략을 백테스트하는 것입니다. 예를 들어, 자신의 방법을 대두 선물 거래에 적용할 계획이라면, CME나 대련상품거래소(DCE) 등 다른 서비스 제공업체에서 과거 데이터를 다운로드하여 그 데이터로 모델을 실행하세요.
이렇게 하면 결과가 해당 자산에 특화된 요인만 고려하도록 보장할 수 있습니다. 예를 들어 계절성, 변동성, 수급, 외부 위험(즉, 최대 대두 생산 지역의 악천후 조건) 등의 요인입니다.
항상 해당 전략을 적용하려는 정확한 자산으로 전략을 백테스트하세요. 그것이 불가능하다면(예: 과거 데이터를 구할 수 없는 경우), 원래 자산의 행동을 정확히 시뮬레이션할 수 있는 합리적으로 유사한 자산을 찾으세요. 이 경우 결과가 실행 가능하도록 백테스트 모델을 약간 조정해야 할 수 있습니다.
주식 그룹을 거래할 계획이라면 대표성 있는 표본을 수집하세요. 데이터에는 특정 기간에 파산한 회사의 주식도 포함되어야 합니다. 이러한 주식을 제외하지 마세요. 제외하면 전략 성과에 영향을 미칠 수 있습니다. 예를 들어, 오늘날 존재하는 모든 회사의 주식만 골라내면, 시스템을 백테스트할 때 인위적으로 높은 수익을 얻게 됩니다.
트레이딩 전략을 백테스트하는 방법
어떤 플랫폼을 사용하든 트레이딩 전략을 백테스트하는 원리는 기본적으로 유사합니다.
1단계
첫 번째 단계에서는 신중하게 선별한 과거 데이터를 백테스트 알고리즘에 제공해야 합니다. 과거 데이터로 트레이딩 전략을 테스트할 때는 훈련 세트에 구체적인 기간을 지정해야 합니다(예를 들어, 미국 주식을 예로 들면 2022년부터 2023년까지의 AAPL 주가). 그런 다음 다른 대체 기간의 데이터 세트가 필요합니다. 서로 다른 기간에 전략을 테스트하는 이유는 신뢰성을 검증하고 전체 과정에서 '무작위성'의 역할을 줄이기 위해서입니다.
2단계
다음으로, 백테스트 모델의 복잡성에 따라 몇 가지 파라미터를 설정해야 합니다. 이러한 파라미터에는 초기 자본, 위험 자본(%), 포트폴리오 규모, 수수료, 평균 매수-매도 스프레드, 그리고 가장 중요한 벤치마크(보통 S&P 500 지수)가 포함될 수 있습니다.
또한 트레이딩 전략의 구체적인 파라미터도 설정해야 합니다. 여기에는 손절 및 트레일링 스탑 지시, 익절 수준, 언제 청산할지, 선호하는 포지션 유형 등이 포함됩니다.
3단계
다음으로, 테스트 데이터 세트에 대해 백테스트를 수행합니다. 위의 모든 정보는 특정 기간 동안의 트레이딩을 시뮬레이션하는 데 사용됩니다.
백테스트를 완료한 후에는 다른 데이터 세트로 해당 과정을 (최소 몇 번) 다시 실행해야 합니다. 이는 잠재적 편향과 '무작위' 요인의 역할을 제거하는 데 도움이 됩니다.
대부분의 백테스트 소프트웨어는 자동 전략 최적화 기능도 지원합니다. 이 기능은 매우 편리합니다. 컴퓨터가 당신의 전략에 어떤 입력(또는 정보 조합)이 가장 적합한지 찾아낼 수 있습니다. 이상적으로는 모델을 미세 조정하는 방법에 대한 아이디어도 제공합니다.
백테스트 방법
가장 널리 쓰이는 백테스트 방법은 소위 '위험가치(Value-at-Risk)'를 측정하는 것을 목표로 합니다. 이름에서 알 수 있듯이, VaR은 특정 검사 기간과 데이터 세트에서 발생할 수 있는 최대 손실과 그 실현 가능성을 보여줍니다.
포트폴리오의 위험가치를 알면 투자 매니저나 트레이더는 최악의 상황에 더 충분히 대비할 수 있습니다.
위험가치를 검사하는 데 몇 가지 다른 방법을 사용할 수 있습니다. 그중 일부는 몬테카를로 시뮬레이션(Monte Carlo Simulation), 분산-공분산 방법(Variance-Covariance Method) 등을 포함합니다.
모든 백테스트 방법의 공통점은 그 결론에 있습니다. 전략이 어디에서 부족하고 어디에서 잘 수행되는지 알려주어, 최적의 위험/수익을 보장하기 위해 올바른 조정과 최적화를 할 수 있게 해줍니다.
결과를 어떻게 평가하는가?
백테스트를 완료한 후에는 결과를 해석하고 관찰 기간 동안 전략이 어떻게 수행되었는지 살펴볼 차례입니다.
트레이딩 전략이 좋은지 나쁜지를 정의하는 황금 공식이나 규칙은 없다는 것을 알아야 합니다. 수행하는 모든 분석에서 필요한 맥락을 염두에 두어야 합니다. 이러한 맥락에는 포트폴리오에 있는 다른 자산, 시장 환경, 그리고 해당 전략의 고유한 특성이 포함됩니다. 예를 들어, 어떤 전략은 설계상 더 위험합니다. 물론 더 높은 수익도 얻습니다. 다른 전략은 더 보수적이어서 백테스트 종료 시 포트폴리오 가치 증가가 낮습니다.
전략 결과를 평가하는 가장 좋은 방법은 자신의 위험 선호도와 수익 목표를 정의하는 것입니다. 백테스트를 실행한 후, 전략이 목표에 부합하는 결과를 내는지 확인하세요. 또한 벤치마크(예: S&P 500 지수/CSI 300 지수가 가장 널리 사용되는 벤치마크입니다)를 반드시 추가하세요. 백테스트를 수행한 후에는 자신의 전략이 시장에서 어떻게 수행되는지 볼 수 있습니다.
백테스트 방법은 다양한 지표에 대한 결과를 생성합니다. 이러한 지표에는 순이익과 손실, 주어진 기간 내 총 포트폴리오 수익, 위험 조정 수익, 시장 위험 노출, 변동성 등이 포함됩니다.
마지막으로, 소프트웨어가 각 측정 항목의 백테스트 결과를 정량화합니다. 사용하는 소프트웨어에 따라 차트를 생성하고 백테스트 결과를 시각화할 수도 있습니다.
성공의 기준은 무엇인가?
수익만을 기준으로 전략을 선택하는 실수를 하지 마세요. 수익이 중요하기는 하지만, 맥락에서 벗어난 수익은 유용한 정보를 전혀 제공하지 않습니다. 오히려 수익은 당신을 속여 고위험 전략을 선택하게 할 수 있습니다.
이 함정에 빠지지 않으려면, 감수한 위험을 분석하는 것 외에도 수익을 분석하세요. 당연히 최고의 전략은 중대한 위험 없이 만족스러운 수익을 달성하는 것입니다. 또는 높은 샤프 비율을 가진 전략입니다.
또한 변동성을 반드시 추적하세요. 백테스트 후 포트폴리오에 높은 변동성 기간이 있다는 것을 발견하면, 실제 트레이딩에서 이런 일이 발생하면 손절이나 익절 주문이 발동될 수 있다는 것을 인식해야 합니다. 이것이 포트폴리오의 변동성에 따라 주문을 기다리고 조정하는 것이 중요한 이유입니다.
성공 여부를 결정하는 또 다른 핵심 요소는 구성 요소 간의 상관관계입니다. 자산 간의 상관관계가 높다면, 포트폴리오가 충격과 특정 산업 위험을 견딜 충분한 회복력이나 안전 여유가 없다는 뜻입니다. 또는 분산이 덜 되어 있고 헤지가 부족하다는 뜻입니다. 이는 다양한 위험에 더 취약하게 만듭니다.
요약
10년 전만 해도 백테스트는 헤지펀드, 투자은행, 고빈도 트레이딩 회사 등 큰손들만 누릴 수 있는 독점적 권리였습니다. 오늘날에는 기술 발전 덕분에 개인 트레이더와 소규모 투자자도 백테스트를 할 수 있습니다. 이제 백테스트는 더 이상 사치가 아닙니다. 금융 시장을 성공적으로 헤쳐 나가고 싶다면, 그것은 이미 필수품이자 진정한 필수 요소가 되었습니다.
최선의 경우, 적절한 백테스트 없이 하는 트레이딩은 근거 있는 추측에 불과합니다. 트레이딩 전략을 백테스트하는 것은 트레이더의 필수 과제입니다. 정확한 초기 분석과 위험 평가 없이는 시장에 준비 없이 진입하게 되어, 시장뿐만 아니라 다른 트레이더의 공격에도 쉽게 노출됩니다.
오늘날 당신이 경쟁하는 대부분의 트레이더가 백테스트를 사용한다는 것을 기억하세요. 패배를 피하고 경쟁 우위를 얻고 싶다면, 반드시 숙제를 하세요.