598 / 736WFA

Walk-forward Analysis

시간을 순차적으로 이동하는 분석

Walk-forward Analysis는 계속 갱신되는 전략을 시험합니다. 이미 알려진 데이터로 규칙을 고르고, 다음 기간에서 평가한 뒤 앞으로 이동해 반복합니다.

Walk-forward Analysis는 선택 절차를 시간 순서대로 검증합니다. 이용 가능한 과거로 규칙을 선택하거나 조정하고, 그 선택에 쓰지 않은 후속 데이터로 평가합니다.

피터에게는 여러 거래 규칙 후보가 있습니다. 최근 가장 잘된 후보를 계속 사용하고 싶습니다. Walk-forward Analysis는 이 생각을 단계별로 재현합니다. 알려진 과거로 고르고, 다음 기간 결과를 기록한 뒤 다시 고릅니다. QuantConnect는 이런 주기적 조정을 설명합니다. 고정된 규칙 하나뿐 아니라 선택 방식도 검증하므로 후보, 기준, 다음 검토 시점을 미리 정해야 합니다. [1]

피터가 과거 이익 때문에 후보를 골랐다면 같은 이익으로 그 선택을 독립적으로 검증할 수 없습니다. QuantConnect는 그런 데이터가 이미 개발 데이터가 되었다고 설명합니다. 공정한 질문은 선택한 뒤 어떻게 되었느냐입니다. 현재 테스트가 자기 승자를 고르면 안 됩니다. 다만 기간이 끝나 결과를 알 수 있게 되면 미리 정한 절차에 따라 다음 선택에 쓸 수 있습니다. 이전에 기록한 판단이 바뀌는 것은 아닙니다. [2]

선택 창은 현재 사용하는 과거 구간입니다. 이동 창은 길이를 유지하며 오래된 데이터를 빼고, 확장 창은 시작점을 유지하며 새 관측을 더합니다. scikit-learn의 TimeSeriesSplit은 기본적으로 학습 집합을 확장하지만 크기를 제한할 수도 있습니다. 길이와 갱신 빈도는 테스트 전에 정하세요. 문서는 비교 가능한 지표를 위해 관측 간격이 같아야 한다고 설명합니다. 불규칙한 기록이라면 실제 달력상의 기간도 확인해야 합니다. [3]

마지막 학습 관측에 연결된 결과가 다음 테스트 도중에야 확정된다고 생각해 보세요. 선택 당시에는 아직 모릅니다. 표를 시간순으로 정렬하는 것만으로 해결되지 않습니다. TimeSeriesSplit의 gap은 학습 끝부분의 관측을 제외할 수 있게 합니다. 간격은 입력의 이용 가능 시점과 결과가 완성되는 시점에 따라 정해야지 가장 예쁜 곡선으로 고르면 안 됩니다. 적절한 간격도 인접 기간의 독립성이나 모든 편향의 제거를 입증하지 못합니다. [3]

누출은 거래 규칙에만 있는 것이 아닙니다. 값을 재조정할 평균이 미래 테스트까지 포함한 전체 파일에서 계산됐을 수 있습니다. scikit-learn은 결측치 채우기와 입력 특성 선택에서도 같은 위험을 설명합니다. 변환 설정은 학습 부분에서만 구한 뒤 테스트에 적용해야 합니다. 매 단계 분리를 반복하세요. 이미 처리한 표를 나중에 나눠도 누출은 되돌릴 수 없습니다. 데이터 버전과 실제 이용 가능 시점도 보관해야 합니다. [4]

각 기간 테스트 후에는 결과를 올바르게 합쳐야 합니다. QuantConnect는 스프레드와 Slippage를 반영할 수 있는 체결 가격·수량 모델을 설명합니다. 여기에 일관된 회계가 필요합니다. 개발 중 이익을 테스트 계좌에 더하거나 겹치는 테스트를 설명 없이 중복 계산하면 안 됩니다. 후보를 바꿀 때 미결제 포지션, 자본, 전환 비용을 어떻게 처리하는지 밝혀야 합니다. 아래 예시는 기간마다 포지션을 모두 닫아 단순화했습니다. [5]

피터는 테스트가 좋아 보일 때까지 창 길이, 목적, 후보를 바꿀 수 있습니다. 그러면 테스트 결과도 개발에 사용한 것입니다. Bailey와 공동 연구자들은 같은 데이터를 반복 탐색하며 생기는 우연한 성공을 연구합니다. 시도한 절차를 모두 기록하고, 미사용 과거 데이터로 하는 추가 검증이 있다면 구분하세요. 시간상 앞으로 간다는 사실만으로 통계적 보장이나 과거에 지나치게 적응하는 과적합의 확률 추정이 되지는 않습니다. [6]

창 경계, 후보, 선택 점수, 실제 선택, 다음 기간의 비용 차감 후 결과를 남기세요. 합계와 함께 손실, 관측 수, 같은 조건의 비교도 제시해야 합니다. 미국 NFA는 가상 성과가 실제 손실 때의 유동성, 슬리피지, 행동 문제를 모두 담지 못한다고 지적합니다. 해당 홍보 규정은 정해진 회원에게 적용됩니다. 작은 손실 예시가 방법 전체를 반박하지 않듯, 양의 합계도 미래의 우위를 입증하지 못합니다. [7]

예시예시 · WFA

이전 승자가 다음에는 질 수도 있다

직접 만든 가상 예시로 같은 길이의 여섯 기간을 1부터 6까지 두고 후보 A와 B를 미리 정합니다. 거래 규모를 동일하게 고정했을 때 순결과는 A [4, -1, 2, -3, 5, -2] USD, B [1, 2, 1, 1, -2, 4] USD입니다. 각 결과는 기간 종료 후에만 알 수 있고 모델의 모든 비용을 포함하며 미결제 포지션을 남기지 않습니다. 추가 전환 비용, 부채, 입출금은 없습니다. 테스트 전에 최근 완료된 세 기간을 합산하고 합계가 큰 후보를 다음 기간에만 사용하며 동점이면 A를 고르기로 합니다. 선택 창은 [1, 2, 3], [2, 3, 4], [3, 4, 5]이고 이후 테스트는 [4, 5, 6]입니다. A의 선택 합계는 [5, -2, 4] USD, B는 [4, 4, 0] USD이므로 A, B, A를 차례로 고릅니다. 합산 테스트 결과에 들어가는 값은 [-3, -2, -2] USD뿐이며 총 -7 USD입니다. 테스트 계좌는 기간 4 전에 현금 1000 USD로 시작해 993 USD로 끝납니다. 거래 규모는 잔액에 따라 바꾸지 않습니다. 선택 구간 이익을 계좌에 더하지 않고 각 테스트를 한 번만 셉니다. 도식은 선택 창과 다음 테스트가 이동하는 모습을 나타내며 실제 시장 역사나 미래 성공 확률이 아닙니다.

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. 다음 항목에서도 이 글을 참조합니다 Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.

01이전 테스트를 나중의 선택에 사용할 수 있나요?

네. 기간이 끝나 필요한 데이터를 이용할 수 있고 사전에 정한 절차가 허용하면 가능합니다. 다만 그때 기록한 후보나 결과를 소급해서 바꾸면 안 됩니다.

02Walk-forward Analysis가 과적합을 막아 주나요?

그 자체만으로는 아닙니다. 창, 후보, 절차 전체를 같은 결과에 반복해서 맞출 수 있습니다. 시도 내역을 기록하고 정보 누출을 확인하며 추가 개발과 실제로 새로운 검증을 구분해야 합니다.

DOC · 001QuantConnect — Walk Forward Optimization문서 DOC · 002QuantConnect — Optimization Parameters문서 DOC · 003scikit-learn — TimeSeriesSplit문서 DOC · 004scikit-learn — Common Pitfalls: Data Leakage문서 DOC · 005QuantConnect — Trade Fills: Key Concepts문서 DOC · 006Bailey et al. — The Probability of Backtest Overfitting1차 출처 DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance Results문서
개정일: 1차 출처 우선 · 투자 조언이 아닙니다