전략 에이전트는 테스트 행을 학습 작업에 단 한 줄도 넣지 않고 테스트 세트를 오염시킬 수 있습니다. 에이전트가 테스트 점수를 확인하고 매개변수를 바꾼 뒤 다시 실행한다면, 그 점수는 이미 전략에 영향을 준 것입니다. 코드에서는 해당 기간을 “표본 외”라고 부를 수 있습니다. 하지만 리서치 과정에서는 이미 탐색 대상의 일부가 된 셈입니다.
이런 일이 편의를 좇다가 생기는 것을 봤습니다. 에이전트가 배치를 실행하고 요약 표를 읽은 다음, 작은 개선안을 제안합니다. 누구도 홀드아웃에 맞춰 학습하라고 하지 않았습니다. 그래도 피드백 루프가 결국 그렇게 학습시킨 것입니다.
실수 1: 매 실행 후 에이전트가 결과를 들여다보게 하기
대개 테스트 Sharpe가 조금씩 반듯하게 오르는 모습으로 문제가 드러납니다. 에이전트가 변형 30개를 시도해 가장 나은 것을 고르고, 그 설정을 중심으로 다시 30개를 시도합니다. 각 변경은 하나씩 보면 합리적으로 보입니다. 하지만 이를 반복하면 테스트 기간이 최적화 목표로 바뀝니다.
간단한 예를 들어보겠습니다. 전략에 실제 우위가 없고 홀드아웃에서 서로 독립적인 변형 100개를 테스트한다고 해봅시다. 가장 높은 Sharpe를 선택하면 우연히 그럴듯한 결과를 찾을 가능성이 상당히 있습니다. 실제 전략 탐색에서는 변형들이 대부분 완전히 독립적이지 않겠지만, 그렇다고 문제가 해결되는 것은 아닙니다. 반복적인 피드백은 여전히 홀드아웃의 특이한 패턴에 우연히 들어맞는 설정에 보상을 줍니다.
홀드아웃을 결과 경계 뒤에 두세요. 에이전트는 학습 및 검증 기간을 기준으로 개발할 수 있지만, 홀드아웃 지표나 차트는 가져올 수 없어야 합니다. 최종 평가는 별도 작업으로 분리하고, 리서치 관련 선택을 확정한 뒤 한 번만 실행하세요. 결과와 함께 전략 버전과 데이터 스냅샷도 기록하세요.
실수 2: 이후 기간을 모두 “새 데이터”라고 부르기
학습 구간보다 나중의 날짜 범위라고 해서 새로운 데이터인 것은 아닙니다. 에이전트가 해당 범위의 점수를 봤거나, 사람이 그 구간의 낙폭을 보고 다른 피처를 선택했다면, 그 범위는 이미 피드백 루프의 일부가 된 것입니다.
| 기간 | 허용되는 용도 | 상태를 바꾸는 요인 |
|---|---|---|
| 학습 | 규칙과 매개변수 학습 | 없음; 탐색을 위해 사용하는 기간 |
| 검증 | 후보를 비교하고 리서치 결정을 내리기 | 반복해서 사용하면 과적합 위험이 커짐 |
| 최종 홀드아웃 | 확정된 후보를 한 번 평가 | 결과를 확인하고 후보를 변경 |
| 미래 페이퍼 트레이딩 기간 | 실제 운용을 통해 앞으로의 동작 관찰 | 결과를 조정에 활용하면 새로운 리서치 사이클이 시작됨 |
롤링 워크포워드 평가는 고정된 리서치 프로세스가 시간에 따라 어떻게 작동하는지 추정하는 데 도움이 됩니다. 그렇다고 각 폴드를 마음껏 들여다봐도 된다는 뜻은 아닙니다. 에이전트가 폴드 결과를 확인하고 탐색 방식을 조정하면, 그 폴드 결과도 피드백이 됩니다. 실제로 내리려는 결정에는 최종 미사용 기간을 남겨두세요.
실수 3: 코드는 고정한 채 질문을 바꾸기
전략 코드는 그대로 두고 결과를 본 뒤 평가 방식을 바꾸는 경우도 있습니다. 벤치마크를 교체하거나, 부진했던 한 달을 제외하거나, 다른 유니버스를 보고하거나, 가장 좋아 보이는 지표에 초점을 맞추는 식입니다. 매개변수를 바꾸지 않았더라도 테스트 세트가 결론을 이끈 셈입니다.
문제는 다른 시도에 대한 기록 없이 깔끔한 제목 하나만 실린, 잘 다듬어진 보고서로 나타납니다. 주식 전략은 광범위한 시장 지수와 비교하면 약해 보여도 현금과 비교하면 강해 보일 수 있고, 여러 거래소를 살펴본 뒤에는 특정 거래소의 암호화폐 전략이 두드러져 보일 수 있습니다. 이런 비교는 유용할 수 있지만, 홀드아웃 결과를 본 뒤 그중 하나를 고르는 것 역시 선택 과정입니다.
리서치 기록을 유지하세요. 실행할 때마다 가설, 코드 버전, 데이터 스냅샷, 매개변수 탐색, 평가 기간, 요청한 지표, 에이전트나 연구자가 결과를 봤는지를 저장하세요. 간결한 기록이 그럴듯하게 들리는 “표본 외”라는 표시보다 유용합니다.
그다음 평가 전에 최종 질문을 명확히 정하세요. 어떤 후보, 어떤 시장 유니버스, 어떤 벤치마크, 어떤 비용, 어떤 지표를 사용할까요? 결과를 받은 뒤 답이 바뀐다면 다음 실행은 리서치로 간주하고, 다음 최종 확인을 위해 새 데이터를 남겨두세요.
오염된 홀드아웃에서 여전히 무엇을 알 수 있을까요?
쓸모가 없는 것은 아닙니다. 해당 기간에 전략이 어떻게 작동했는지 확인하고 실패 원인을 진단하는 데 쓸 수 있습니다. 다만 그 점수를 독립적인 확인 결과로 제시하지 마세요. 개발을 위한 근거로 활용하고, 다음 후보를 확정한 뒤 동일한 회계 및 체결 가정으로 실제 미래 페이퍼 트레이딩 기간에서 평가하세요.
에이전트 중심 워크플로에서는 실험 횟수를 놓치기 쉽습니다. 프롬프트 하나로 누구도 알아차리기 전에 수십 번 실행될 수 있습니다. 절차를 세워 보호하세요. 에이전트가 확인할 수 있는 정보를 제한하고, 모든 실험을 기록하고, 평가 대상 후보의 방향을 바꿀 수 없는 평가를 하나 남겨두세요.
← 전체 글


