Walk-forward Analysis는 이전 데이터에서 규칙을 선택하거나 설정한 뒤 이어지는 테스트 기간에 적용하는 절차를 시간 순서대로 평가하는 방법입니다. 선택과 테스트의 역할이 시간에 따라 이동하며, 현재의 의사결정이 다음 결과를 알고 있어서는 안 됩니다.
Walk-forward Analysis는 과거 시뮬레이션을 시간 순서대로 진행합니다. 그때까지의 데이터에서 규칙을 선택하거나 설정한 다음, 다음 구간에서의 적용을 평가합니다. QuantConnect는 직전까지의 과거 창을 대상으로 정기적으로 최적화하는 방식을 설명합니다. 편집상 구분할 점은 고정된 매개변수 집합 하나만 평가하는 것이 아니라 사전에 기술한 갱신 절차를 평가한다는 것입니다. 다음 선택 시점, 선택 목적, 후보 집합도 규칙에 포함됩니다. 최근 데이터에 더 잘 맞는다는 사실만으로 미래 결과가 더 좋아진다고 확인할 수는 없습니다. [QuantConnect — Walk Forward Optimization]
QuantConnect는 최상의 매개변수를 찾는 데 사용한 기간이 개발 데이터의 일부가 된다고 지적합니다. 그 기간에 사후적으로 선택한 승자를 적용하는 것은 당시 의사결정에 대한 정직한 검증이 아닙니다. 따라서 자체 절차에서는 다음 테스트 구간이 시작하기 전에 선택을 확정합니다. 해당 구간의 데이터가 현재 승자에게 영향을 주어서는 안 됩니다. 구간이 끝나고 그 정보가 실제로 이용 가능해지면 사전에 정한 절차에 따라 이후 선택에 사용할 수 있지만, 이로 인해 이전에 기록한 테스트 의사결정이 바뀌지는 않습니다. [QuantConnect — Optimization Parameters]
TimeSeriesSplit은 시간 순서대로 학습 및 테스트 인덱스를 만듭니다. 기본적으로 과거 학습 집합을 점차 확장하며 그 크기를 제한할 수도 있습니다. 자체적으로 구분하면 이동 창은 선택한 과거 길이를 유지하고, 확장 창은 시작점을 고정합니다. 창의 길이와 갱신 빈도는 설계의 일부이며 결과를 본 뒤 자유롭게 바꾸는 항목이 아닙니다. 문서는 구간별 지표를 비교할 수 있도록 같은 간격의 표본을 요구합니다. 불규칙한 데이터에서는 실제 달력상 범위를 살펴야 합니다. [scikit-learn — TimeSeriesSplit]
TimeSeriesSplit의 gap 매개변수는 테스트 직전 학습 집합의 끝부분에서 표본을 제외합니다. 자체 방법론 요건은 입력이 이용 가능해지는 시점과 목표 결과가 확정되는 시점에서 필요한 간격을 도출하는 것입니다. 학습 관측의 결과가 테스트 기간의 가격을 사용한다면 행을 정렬하는 것만으로 정보 누출이 사라지지 않습니다. 따라서 보기 좋은 곡선만을 기준으로 간격 길이를 선택해서는 안 됩니다. 적절한 간격도 인접 기간의 독립성을 증명하거나 모든 형태의 선택 편향을 제거하지는 못합니다. [scikit-learn — TimeSeriesSplit]
scikit-learn 문서는 정규화, 결측값 대체, 특성 선택이 테스트 정보를 모형으로 전달할 수 있다고 지적합니다. 이러한 변환의 매개변수는 학습 부분에서만 학습한 다음 테스트 부분에 적용해야 합니다. 자체 점검에서는 창을 이동할 때마다 이 분리를 반복합니다. 전체 데이터에서 먼저 평균을 계산했다면 나중에 완성된 표를 나누어도 문제가 바로잡히지 않습니다. 데이터 버전과 실제로 이용 가능해진 시점도 보존해야 합니다. [scikit-learn — Common Pitfalls: Data Leakage]
QuantConnect는 체결 가격과 수량을 결정하고 스프레드와 Slippage도 포함할 수 있는 모형을 구분합니다. 테스트 구간을 연결하기 위한 자체 요건은 자본, 미결제 포지션, 규칙 변경 비용을 일관되게 처리하는 것입니다. 학습 수익을 후속 테스트 결과에 더해서는 안 되며, 겹치는 테스트 기간을 설명 없이 여러 번 계산해서도 안 됩니다. 포지션을 이월한다면 설정 사이의 전환을 기술해야 합니다. 반면 아래 모형은 매 기간을 포지션 없이 마칩니다. [QuantConnect — Trade Fills: Key Concepts]
Bailey와 공동 저자들은 같은 데이터에서 반복해서 탐색할 때 잘못된 발견의 위험이 커진다고 설명합니다. Walk-forward Analysis에 대한 자체적인 결론은 최종 테스트 시계열에 따라 창 길이, 목적, 후보를 바꾸고 전체 실행을 반복하면 그 시계열이 이미 개발에 영향을 준다는 것입니다. 이름만 독립적이라고 바꾸어서는 충분하지 않습니다. 보고서는 시도한 모든 절차를 제시하고, 아직 사용하지 않은 추가 검증이 있다면 이를 구분해야 합니다. 시간 이동 자체가 과적합 확률의 추정이거나 자동적인 통계적 보장은 아닙니다. [Bailey et al. — The Probability of Backtest Overfitting]
NFA는 가상 결과가 실제 거래나 유동성, Slippage, 실제 손실 상황에서의 행동이 미치는 전체 영향을 담지 못한다고 강조합니다. 따라서 자체 Walk-forward Analysis 보고서에는 창 경계, 후보, 선택 점수, 선택한 설정, 비용을 포함한 후속 구간 결과를 보존합니다. 합계에는 위험, 관측 수, 동일 조건에서의 비교라는 맥락이 필요합니다. 작은 예에서 음수가 나왔다고 방법이 일반적으로 작동하지 않는다는 증거가 되지 않으며, 양의 합계도 미래 거래 우위의 증거가 되지 않습니다. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
과거에서 선택하고 다음 기간에서 평가하기
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. 다음 항목에서도 이 글을 참조합니다 Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.
01이전 테스트 기간을 나중에 학습에 사용할 수 있나요?+
네. 이미 종료되었고 정보가 이용 가능하며 사전에 정한 절차가 이를 허용한다면 가능합니다. 다만 그 기간에 대해 기록한 선택이나 결과를 소급해서 바꾸어서는 안 됩니다.
02Walk-forward Analysis는 과적합을 제거하나요?+
자동으로 제거하지는 않습니다. 여전히 같은 결과에 따라 창 길이, 후보 또는 전체 절차를 반복적으로 선택할 수 있습니다. 시도 이력을 밝히고, 정보 누출을 점검하며, 개발과 추가 검증의 구분을 유지해야 합니다.