597 / 691BT

Backtesting

전략 백테스트

Backtesting은 미리 기술한 규칙을 과거 데이터에 적용해 시뮬레이션합니다. 결과는 정보가 이용 가능해진 시점, 데이터 선택, 체결 모형, 비용에 따라 달라집니다. 과거 수익은 실제로 실행된 거래도, 미래 수익의 보장도 아닙니다.

Backtesting은 데이터, 시간 순서, 실행 가정을 명시하여 거래 또는 의사결정 규칙을 과거에 적용하는 시뮬레이션입니다. 과거 표본에서 규칙이 어떻게 작동하는지 확인할 수 있지만, 결과가 지니는 의미는 전체 테스트의 설계에 달려 있습니다.

Backtesting은 과거 데이터에서 규칙을 재현하고 선택한 가정 아래 어떤 결과가 나왔을지 계산합니다. Bailey와 공동 저자들은 이를 알고리즘 전략의 과거 시뮬레이션으로 설명하면서 잘못된 발견의 위험도 지적합니다. 편집상 구분해야 할 점은 결과가 규칙, 데이터, 실행 모형의 특정 버전에 속한다는 것입니다. 누군가 실제로 그 거래를 실행했다는 증거가 아닙니다. 재현 가능한 계산으로 오류나 부적절한 아이디어를 발견할 수 있지만, 그것만으로 과거가 신뢰할 만한 예측으로 바뀌지는 않습니다. [Bailey et al. — The Probability of Backtest Overfitting]

QuantConnect는 아직 발표되지 않은 회계 자료나 나중에 수정된 수치처럼 미래 정보를 시뮬레이션에 사용하는 편향을 설명합니다. 자체적인 시간 기준에서는 각 입력에 대해 해당 기간의 날짜뿐 아니라 이용 가능해진 시점을 요구합니다. 종료된 캔들에서 나온 신호에 별도 가정 없이 이미 이용할 수 없게 된 가격의 거래를 부여해서는 안 됩니다. 이 예에서는 이전 종가를 다음 기간에만 사용하며, 모형은 그 기간의 시가 체결을 명시합니다. [QuantConnect — Research Guide]

QuantConnect는 기간 말까지 살아남은 증권만 테스트하는 것과 현재 지수 구성을 과거에 소급 적용하는 것에 주의를 환기합니다. 자체적으로 더 넓게 확인할 질문은 과거 데이터 집합에 당시 이용할 수 있었지만 이후 사라진 상품도 남아 있는지입니다. 누락된 데이터, 방법론 변경, 시장 선택을 문서화해야 합니다. Bitcoin 시뮬레이션에서 한 서비스의 가격을 다른 서비스에서도 체결 가능한 가격으로 자동 간주할 수는 없습니다. 데이터 정비란 수정 내역을 추적할 수 있게 하는 것이며, 불편한 결과를 제거하는 것이 아닙니다. [QuantConnect — Research Guide]

QuantConnect 문서는 신호 및 주문과 체결 가격 및 수량을 결정하는 모형을 구분합니다. 실제 거래의 부분 체결과 미리 제공된 모형의 완전 체결 가정 사이의 차이도 지적합니다. 자체 요건은 주문을 언제 실행할 수 있는지, 유동성이 부족하면 어떻게 되는지, 오래된 가격을 어떻게 처리하는지 기술하는 것입니다. 과거 데이터에서 가격이 특정 수준에 닿았다는 사실만으로 임의의 큰 주문을 받아 줄 상대방이 있었다고 증명할 수는 없습니다. 체결 모형의 결과는 여전히 시뮬레이션의 가정입니다. [QuantConnect — Trade Fills: Key Concepts]

QuantConnect는 Slippage를 예상 체결 가격과 실제 체결 가격의 차이로 설명하고, 지연, 연결, 시장 여건의 영향을 언급합니다. 차이는 유리할 수도 불리할 수도 있습니다. 자체 비용 점검에서는 수수료, 체결 가격, 기타 발생할 수 있는 보유 또는 자금조달 비용을 구분합니다. 체결 가격에 이미 포함된 비용을 다시 빼서는 안 됩니다. 영이라는 값은 특정 모형의 가정이지 비용 없는 시장의 증거가 아닙니다. 더 불리한 비용에 대한 민감도를 보면 작은 과거 수익이 낙관적인 설정에 의존하는지 판단하는 데 도움이 됩니다. [QuantConnect — Slippage: Key Concepts]

TimeSeriesSplit 문서는 미래 데이터로 모형을 학습하고 과거 데이터로 평가하지 않도록 시간 순서대로 나누는 방식을 설명합니다. 자체 방법론 요건은 결과를 보기 전에 규칙 설계 기간과 이후 검증 기간을 정하는 것입니다. 실패한 뒤 검증 기간을 바탕으로 규칙을 다시 수정하면 그 기간은 이미 개발에 영향을 준 것입니다. 시간 순서대로 나누는 것만으로 전처리, 서로 겹치는 예측 대상, 반복적인 후보 선택으로 인한 정보 누출이 해결되지는 않습니다. 절차와 데이터 경계를 모두 설명해야 합니다. [scikit-learn — TimeSeriesSplit]

Bailey와 공동 저자들은 같은 데이터에서 최상의 설정을 반복적으로 찾으면 잘못된 발견과 과거 잡음에 대한 적합 위험이 커진다는 점을 보여 줍니다. 자체 보고 원칙은 우승한 곡선만이 아니라 시도 이력을 제시하는 것입니다. 여기에는 매개변수, 기간, 상품 선택의 변경이 포함됩니다. 많은 시도 후 선택된 결과는 사전에 정하고 변경하지 않은 규칙과 같은 의미를 지니지 않습니다. 이 간단한 예에서는 그들의 과적합 확률 추정 방법을 수행하지 않으며, 한 번의 데이터 분할로 이를 대체하지도 않습니다. [Bailey et al. — The Probability of Backtest Overfitting]

NFA는 가상 결과가 실제 거래를 담지 못하고 사후적 시각을 활용할 수 있으며, 유동성, Slippage 또는 실제 손실 상황에서의 행동을 충분히 모형화하지 못할 수 있다고 지적합니다. 따라서 자체 보고서에는 데이터와 코드 버전, 규칙, 체결 가정, 포함된 비용, 시뮬레이션한 모든 거래 목록을 보존해야 합니다. 총수익에는 위험의 맥락과 동일 조건에서의 비교가 필요하며, 보기 좋은 그래프를 골라 제시하는 것만으로는 충분하지 않습니다. 과거 테스트를 오류 없이 구현해도 미래 시장에서의 실행 가능성이나 수익을 보장하지 않습니다. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]

예시예시 · BT

이전 기간의 신호, 다음 기간의 체결

자체적으로 만든 가상의 예에서는 길이가 같은 네 기간 A, B, C, D를 사용합니다. 초기 현금은 1000 USD이며, 미결제 포지션, 부채, 입출금은 없습니다. 기간 A 이전의 두 종가는 [100, 100] USD/BTC입니다. 기간 A부터 D까지의 시가는 [101, 103, 102, 105] USD/BTC이고 종가는 [102, 101, 104, 103] USD/BTC입니다. 사전에 정한 규칙은 가장 최근의 확정된 종가가 그 이전의 확정된 종가보다 높을 때에만 기간 시작에 1 BTC를 매수하고, 같은 기간 말에 전량 매도합니다. 따라서 신호는 [0, 1, 0, 1]이며, 1은 거래, 0은 무행동을 뜻합니다. 모형은 제시된 시가와 종가에서 정확한 완전 체결, 영의 스프레드와 Slippage를 가정하며, 각 매수 또는 매도에 부과되는 0.1 USD 수수료 이외의 비용은 없습니다. B에서는 103 USD에 매수하고 101 USD에 매도하며, D에서는 105 USD와 103 USD입니다. 기간별 비용 차감 전 결과는 [0, -2, 0, -2] USD입니다. 실행된 네 번의 매수·매도 편도 체결 비용은 합계 0.4 USD이며 순결과는 [0, -2.2, 0, -2.2] USD입니다. 비용 차감 전 합계는 -4 USD, 순합계는 -4.4 USD, 최종 현금은 995.6 USD입니다. 그래프는 각 기간의 순기여액을 보여 주며 계좌 잔액이나 확률이 아닙니다. 이는 시간 순서와 회계 처리를 손으로 검증할 수 있는 시뮬레이션이며, 실제 시장 데이터, 최적화 또는 미래 성과의 증거가 아닙니다.

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. 다음 항목에서도 이 글을 참조합니다 Technical analysis, OHLCV, Timeframe, Candlestick chart.

01수익이 난 백테스트가 전략의 미래 수익을 증명하나요?

아닙니다. 결과는 특정 데이터, 비용, 체결 모형 또는 최상 후보의 선택에 의존할 수 있습니다. 시간적 정확성, 가정, 선택 절차를 확인해야 하며, 그 후에도 미래 수익을 보장하지는 않습니다.

02최종 수익에서 수수료만 빼면 충분한가요?

그 방식이 모형에 정확히 부합하고 사용 가능한 자본이나 이후의 의사결정에 영향을 주지 않는 경우에만 그렇습니다. 보통은 해당 사건이 발생할 때 비용을 반영하고, 체결 가격과 수수료를 구분하며, 이중 차감을 방지해야 합니다.

DOC · 001Bailey et al. — The Probability of Backtest Overfitting1차 출처 ↗DOC · 002QuantConnect — Research Guide문서 ↗DOC · 003QuantConnect — Trade Fills: Key Concepts문서 ↗DOC · 004QuantConnect — Slippage: Key Concepts문서 ↗DOC · 005scikit-learn — TimeSeriesSplit문서 ↗DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance Results문서 ↗
1차 출처 우선 · 투자 조언이 아닙니다