위험과 전략 · 고급 · 읽는 시간 8분

워크포워드 검증: 미래를 학습에서 배제하자

다듬어진 과거 규칙이 아니라 전체 의사결정 절차를 평가하는 시간순 연구 과정을 설계하세요.

워크포워드 검증: 미래를 학습에서 배제하자 — 자체 제작 교육용 그림입니다. 실시간 가격이나 성과에 관한 주장은 없습니다.
자체 제작 교육용 그림입니다. 실시간 가격이나 성과에 관한 주장은 없습니다.

최종 공식이 아니라 과정을 시험하기

워크포워드 연구는 과거 특정 날짜에 이용 가능했던 정보로 모형을 반복 적합하고, 그에 따른 결정을 고정한 뒤 이후 구간에서 평가합니다. 그런 다음 순서를 앞으로 옮깁니다. 미래 지식 없이 작동해야 하는 연구 과정을 모방하는 것입니다. 전략을 수익성 있게 만들거나 모든 편향을 없애지는 않습니다.

각 단계에서 무엇을 바꿀 수 있는지 적으세요. 신호 매개변수, 자산 선택, 변동성 추정치, 비용 가정은 모두 절차의 일부입니다. 연구자가 시험 기간을 본 뒤 이를 수동으로 조정하면 절차가 달라진 것이며 그 기간은 더 이상 오염되지 않은 평가가 아닙니다. 재현 가능한 일정은 재량 수정으로 조립한 차트보다 더 많은 정보를 줍니다.

이동창과 확장창을 의도적으로 선택하기

확장창은 시간이 흘러도 이전의 모든 관측치를 유지합니다. 추정치를 안정시킬 수 있지만 더 이상 유효하지 않은 시장 조건의 데이터도 남깁니다. 이동창은 고정된 길이의 최근 구간을 사용하여 적응을 쉽게 하는 대신 표본 잡음을 늘립니다. 어느 방법도 보편적으로 우월하지 않습니다. 관련 절충은 어떤 경제적 관계가 지속될 것으로 기대하는지에 달려 있습니다.

결과를 비교하기 전에 방어 가능한 이유로 창 길이를 정하세요. 수십 가지 길이를 시험하고 가장 좋은 것을 고르면 최적화를 한 단계 위로 옮길 뿐입니다. 각 시험 구간의 관측치 수, 구별되는 시장 국면, 실제 거래 수를 기록하세요. 달력상 길어도 독립된 결정이 아주 적은 구간은 기간이 시사하는 것보다 적은 증거를 제공할 수 있습니다.

데이터 준비 과정에 숨어 있는 누출

시간순 분할은 필요하지만 충분하지 않습니다. 전체 표본의 평균으로 특성을 표준화하면 미래 관측치가 과거 입력에 영향을 줍니다. 생존한 증권을 선택하거나 수정된 거시경제 수치를 사용하거나 공시 시각 전에 공시를 반영하는 것도 사후정보 편향의 형태입니다. 변환은 학습 데이터에 적합하고 가능하면 당시 이용 가능했던 상태를 보존하세요.

레이블도 중요합니다. 학습 사례가 이후 5일간 측정한 수익률을 예측한다면 그 결과가 시험 기간 초반과 겹칠 수 있습니다. 레이블 기간이 경계를 넘는 관측치를 제거하거나 분리하세요. 소프트웨어는 학습과 시험 인덱스 사이에 간격을 넣을 수 있지만 의미 있는 간격을 정하려면 해당 데이터셋의 레이블 기간, 공개 지연, 의존성을 이해해야 합니다.

입력의 관측 시각뿐 아니라 정답으로 사용하는 결과가 확정되는 시각도 중요합니다. 월요일의 신호를 향후 5거래일 수익률로 평가한다면 그 결과는 화요일에 아직 알 수 없습니다. 학습 데이터가 평가 날짜보다 먼저 시작했다는 이유만으로 사용 가능한 것은 아닙니다. 예측 기간이 겹치는 관측의 결과 확정 시점을 확인하세요.

학습 구간 안에서 조정하고 평가 구간은 손대지 않기

매개변수 선택은 학습 구간 내 정보만으로 이루어져야 하며, 내부 시간순 검증 절차를 사용할 수 있습니다. 바깥 시험 구간은 선택된 절차를 평가합니다. 이런 중첩은 모형 선택과 선택 성과 측정을 구분합니다. 계산 비용도 높아지지만 저렴하되 오염된 결과를 얻는 것보다는 낫습니다.

포지션이 없는 기간을 포함해 순차 시험 수익률을 실제 시간순으로 합치세요. 수수료와 체결 가정을 일관되게 적용하세요. 경제적 의미를 살피지 않고 매력적인 폴드별 비율을 평균하지 마세요. 그렇지 않으면 짧고 조용한 구간이 길고 변동성 높은 구간과 같은 중요도를 갖는 것처럼 보일 수 있습니다. 합산 결과와 함께 구간별 분산도 보여주세요.

약한 결과도 쓸 수 있는 증거다

비용 반영 후 악화되거나 한 구간에 의존하거나 작은 시점 조정으로 크게 달라지는 워크포워드 성과에는 겉치장이 아니라 조사가 필요합니다. 데이터나 구현 결함과 단순히 근거가 부족한 전략을 구분하세요. 실제 버그 수정은 새 실행을 정당화할 수 있지만 이전 결과를 본 사실은 연구 이력에 남겨야 합니다.

추가 평가가 필요하다면 사양을 고정하고 정말 새로운 모의 관측 기간으로 마무리하세요. 수집할 데이터와 가정을 무효화할 조건을 미리 정하세요. 목적은 매력적인 선이 나올 때까지 최적화를 계속하는 것이 아니라 규율 있고 구현 가능한 절차가 실패할 기회를 견디는지 확인하는 것입니다.

평가 구간의 경계에서도 시간 순서 지키기

모형을 다시 학습하는 날이 기존 포지션을 자동으로 청산하는 날은 아닙니다. 평가 구간을 넘겨 보유하는 포지션의 비용, 손익과 관리 책임을 어떻게 이어갈지 정해야 합니다. 매 구간 시작 때 잔고를 임의로 초기화하면 실제로는 없었던 자금이나 거래 기회를 만들어 낼 수 있습니다. 연속된 계좌 장부로 결과를 연결하세요.

첫 구간에서 10% 벌고 다음 구간에서 10% 잃었다면 전체 수익률은 1.10 × 0.90 − 1 = −1%입니다. 구간 수익률의 단순평균 0%와 다릅니다. 평가 구간이 겹친다면 같은 날의 손익을 두 번 더하지 않아야 합니다. 여러 모형의 예측을 합치는 절차와 하나의 실시간 포트폴리오를 운영하는 절차도 구분해야 합니다.

표준화, 결측치 대체, 변수 선택과 매개변수 탐색은 각 학습 구간 안에서 이루어져야 합니다. 전체 자료로 먼저 변수를 고른 뒤 시간 분할만 적용하면 미래 정보가 이미 선택 과정에 들어간 상태입니다. TimeSeriesSplit의 gap 같은 인덱스 간격은 지정한 수의 표본을 제외하는 기능이지, 모든 결과 변수의 확정 시점을 자동으로 알아내는 장치가 아닙니다.

각 구간의 데이터 버전, 학습 종료 시각, 선택된 설정과 주문 내역을 저장하면 재현과 오류 추적이 쉬워집니다. 평가 결과를 보고 구현 오류를 고쳤다면 무엇이 바뀌었는지 설명하고 다시 계산해야 합니다. 그러나 이미 본 평가 구간이 수정 뒤에 새로운 미관측 자료가 되는 것은 아닙니다. 기술적 수정의 정당성과 증거의 독립성을 따로 판단하세요.

간단한 확인

핵심 개념을 이해했나요?

어떤 작업이 미래 정보를 누출하나요?

일반적인 교육 정보이며 매매 권유가 아닙니다. 예제는 실제 시장을 단순화한 것입니다. 상품을 이용하기 전에 정확한 계약 내용, 비용과 규정을 확인하세요.
다음: 포트폴리오 위험: 비중에 가려진 것들 →