
채택한 전략이 채택 후에 퇴화하지 않았는가? 주 1회 자동으로 확인하는 메커니즘을 만들었다
요약
암호자산 자동 매매 봇 운용 중 채택된 전략의 성능 퇴화를 방지하기 위해 주 1회 자동 모니터링 메커니즘을 구축한 사례를 다룹니다. 특정 연도 수익 의존도를 재계산하여 전략의 유효성을 지속적으로 검증하는 자동화 프로세스를 소개합니다.
핵심 포인트
- 채택된 전략의 성능 퇴화를 감지하기 위한 자동 모니터링 메커니즘 구축
- 특정 연도 수익 의존도가 100%를 넘을 경우 전략의 구조적 결함으로 판단
- 포트폴리오 전체 수익에 가려진 개별 전략의 퇴화 위험성 경고
- 채택 시 사용한 판정 기준(robust_gate)을 모니터링에도 재사용하여 일관성 유지
암호자산 자동 매매 Bot을 만들고 있습니다. 5개의 전략을 검증하여 채택했고, 복리 포트폴리오(Compound Portfolio)로서 운용하고 있습니다.
이 기사는 그중 2개의 전략이 「채택 후에 퇴화했다」는 것을 알게 된 이야기입니다. 게다가 그것은 반년 전부터 기록에는 남아 있었지만, 아무도 다시 살펴보지 않았을 뿐이었습니다.
「대조군」까지는 통과하고 있었다
전략을 채택할 때, 6가지 검사를 거칩니다 (상세한 내용은 지난 기사에 썼습니다). 전 기간 흑자, 전반기/후반기 모두 흑자, 연차별 내역, 인접 파라미터(Neighboring Parameter)의 안정성, 대조군(Control Group), 생존 편향(Survival Bias).
이 중 2개의 전략(편의상 A·B라고 합니다)은 채택 시점에 이 검사를 통과하고 있었습니다. 연차별 내역을 봐도 극단적으로 특정 1년에 의존하고 있지는 않았습니다. 채택 판단 자체는 그 시점의 데이터로는 옳았을 것입니다.
다만, 채택하고 나서 반년 정도 지났을 시점에 다음과 같이 기록되어 있었습니다.
기존 전략은 A 85.3%·B 79.7%(·다른 전략은 48.5%)로, 「이익의 대부분이 특정 연도에 집중되어 있다」는 점이 구조적인 약점이었다.
이 시점에서 이미 의존도는 높은 편이었습니다. 하지만 대책은 「전략을 제외하는 것」이 아니라, 의존도가 낮은 다른 전략을 추가하여 포트폴리오 전체로 희석하는 방향이었습니다. 개별 전략은 수정하지 않고 그대로 계속 운용했습니다.
「희석해서 지켜보기」를 반년 동안 방치했다
이 부분이 이번 이야기의 핵심입니다. 「희석해서 지켜보기」로 결정한 후, 실제로 그 의존도가 어떻게 변화하고 있는지를 아무도 재확인하지 않았습니다.
새로운 데이터가 매일 쌓이고 있음에도, 그것을 사용하여 「그 판단이 아직도 옳은가」를 다시 묻는 메커니즘이 없었다는 뜻입니다.
그래서, 매주 일요일에 자동으로 아래 사항을 확인하는 메커니즘을 만들었습니다.
- 최근 klines 데이터를 다시 가져오기
- 채택된 모든 전략에 대해 특정 연도에 대한 의존도를 재계산하기
- 최근 2년치만 추출하여 단일 손익을 계산하기
- 반년 전의 기록과 비교하기
def robust_gate(
summary: SimResult, front_pnl: Decimal, back_pnl: Decimal
) -> tuple[bool, list[str]]:
...
채택 시 사용했던 판정 기준(robust_gate)을 채택 후의 지속적인 모니터링에도 그대로 재사용했습니다. 기준을 새로 만들면 또 다른 편차가 섞이게 됩니다.
첫 실행에서 바로 결과가 나왔다
메커니즘을 만들고 처음 돌린 결과가 이것이었습니다.
| 전략 | 반년 전 의존도 | 이번 실측 | 최근 2년 단일 손익 |
|---|---|---|---|
| A | 85.3% | 139.6% | -112,587엔 (적자) |
| B | 79.7% | 187.6% | -310,363엔 (적자) |
의존도가 100%를 넘고 있다는 것이 가장 중요한 숫자입니다. 이는 「특정 연도를 제외하면 전 기간의 합계가 마이너스가 된다」는 뜻입니다. 즉, 그 1년이 없었다면 이 전략은 처음부터 채택되지 않았을 가능성이 높다는 것입니다.
게다가 최근 2년은 단일로 보았을 때 2년 연속 적자였습니다. 한 번의 나쁜 수치가 아니라, 반복해서 확인할 수 있는 트렌드(Trend)였습니다.
포트폴리오 전체는 다른 전략에 의해 지탱되어 흑자 상태를 유지하고 있었습니다. 그래서 알아차리기 어려웠던 것 같습니다. 개별 전략의 퇴화는 합산된 숫자 뒤에 숨겨집니다.
「한 번의 나쁜 숫자」와 「트렌드」를 구분한다
여기서 곧바로 2개의 전략을 중단시키지는 않았습니다. 이유는 두 가지입니다.
첫 번째. 「2024년 편중」이라는 진단은 반년 전부터 있었고, 그것을 바탕으로 추가한 다른 전략(의존도가 낮은 것)은 이번에도 건전한 상태였습니다. 포트폴리오 전체의 설계 자체는 기능하고 있었습니다. 파괴해야 할 것은 개별 2개 전략의 배분이지, 전체 구성이 아닙니다.
두 번째. 향후 다시 시장의 성격이 변하면 이 2개 전략이 다시 살아날 가능성도 있습니다. 완전히 중단하는 판단은 아직 이르다고 생각했습니다.
그래서 다음과 같은 기준을 세웠습니다.
- 최근 2년 모두 단일 적자이면서 의존도가 악화(또는 100% 초과) $
ightarrow$ 배분을 절반으로 줄임 - 한 번 줄인 전략이 같은 이유로 여전히 좋지 않더라도, 매주 다시 절반으로 줄이지는 않음 (그대로 유지하며 보고만 함)
- 반대로 2년 연속 흑자로 돌아오고 의존도도 개선되면, 한 단계 복구
- 배분을 제로(0)로 만드는 판단만은 자동화하지 않음
마지막 한 점이 핵심입니다. 「낮추는 것」까지는 자동화할 수 있어도, 「완전히 멈추는 것」은 영향이 너무 크기 때문에 인간의 판단으로 남겨두었습니다. 어디까지를 자동화에 맡기고, 어디서부터를 인간에게 남길지는 자동화할 때마다 다시 생각하고 있습니다.
요약
채택 판단은 한 번 하고 끝나는 것이 아니었습니다. 채택한 후에도 동일한 검사를 정기적으로 다시 수행하지 않으면, 퇴화를 알아차릴 수 없습니다.
이번에 알게 된 것은, **「진단은 반년 전에 나왔음에도 아무도 다시 확인하지 않았다」**는 사실입니다. 메커니즘이 없었기 때문에, 분명 알고 있었어야 할 사실을 반년 동안이나 알아차리지 못한 채로 있었습니다.
검사 그 자체보다, 「검사를 한 번으로 끝내지 않고 반복하는 메커니즘」이 더 효과적이었다는 것이 이번의 교훈입니다.
이 기사는 특정 종목이나 투자 기법을 권장하는 것이 아닙니다. 백테스트 (Backtest) 결과는 미래의 성적을 보장하지 않습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기