가장 똑똑한 모델 하나가 가장 위험했던 기록
키움헌터v2를 다듬던 어느 시기에, 백테스트 성적이 가장 좋았던 단일 모델 하나를 최종본으로 올린 적이 있습니다. 며칠은 괜찮았지만 장세가 바뀌자 그 모델은 같은 종류의 신호에서 연달아 틀리며 수익 곡선을 한 번에 깎아 먹었습니다.
그때 배운 것은 단순합니다. ‘가장 똑똑한 모델’이 곧 ‘가장 안전한 모델’은 아니라는 사실입니다. 한 모델이 잘 맞는다는 것은 특정 시장 성격에 잘 맞춰졌다는 뜻이고, 그 성격이 바뀌는 순간 강점이 그대로 약점으로 뒤집힙니다.
자동매매에서 무서운 것은 모델이 가끔 틀리는 일이 아닙니다. 하나의 모델에 전부를 맡겼을 때, 그 모델이 약한 구간이 오면 계좌 전체가 동시에 같은 방향으로 틀린다는 점이 진짜 위험입니다.
그래서 숙련된 쪽은 ‘더 똑똑한 모델 하나’를 찾는 데 매달리기보다, 서로 다른 모델 여러 개의 판단을 모아 결정을 내리는 구조를 먼저 고민합니다. 이 발상을 앙상블(ensemble)이라고 부릅니다.
- 핵심 포인트 1: 단일 모델은 특정 장세에 최적화될수록 다른 장세에서 한꺼번에 무너질 위험이 커집니다.
- 핵심 포인트 2: 앙상블은 더 똑똑한 하나가 아니라, 서로 약점이 다른 여럿을 모아 안정성을 얻는 접근입니다.
앙상블은 ‘다수결’이 아니라 ‘서로의 약점 메우기’입니다
앙상블을 처음 들으면 ‘여러 모델에게 물어보고 다수결로 정하는 것’ 정도로 이해하기 쉽습니다. 다수결이 한 방법인 것은 맞지만, 앙상블의 본질은 투표가 아니라 ‘서로 다른 실수를 하는 모델을 모으는 것’에 있습니다.
같은 데이터를 다른 눈으로 보게 만든다
핵심 전제는 모델마다 틀리는 지점이 달라야 한다는 것입니다. A 모델이 횡보장에서 약하고 B 모델이 급등장에서 약하다면, 두 모델을 함께 쓰면 각자의 약한 구간을 상대가 어느 정도 메워 줍니다.
같은 과거 데이터라도 어떤 모델은 추세에, 어떤 모델은 변동성 패턴에, 어떤 모델은 거래량 흐름에 더 민감하게 반응합니다. 이렇게 ‘보는 각도’가 다른 모델을 섞으면, 한 각도에서 생기는 치명적 오판이 전체 결정에 미치는 영향이 줄어듭니다.
반대로 거의 똑같이 생각하는 모델 열 개를 모으면 앙상블의 의미가 없습니다. 열 개가 동시에 같은 실수를 하기 때문에, 숫자만 늘었을 뿐 단일 모델과 다를 바가 없어집니다.
모으는 방식: 투표와 평균
여러 모델의 결과를 하나로 합치는 방식은 크게 두 갈래입니다.
첫째는 투표입니다. 각 모델이 ‘매수’ 또는 ‘관망’ 같은 판정을 내리고, 더 많은 표를 받은 쪽으로 결정합니다. 판단이 명확하게 갈리는 분류 문제에 잘 맞습니다.
둘째는 평균입니다. 각 모델이 내놓은 확률이나 점수를 평균 내어 최종 값으로 삼습니다. 한 모델이 유별나게 튄 값을 내더라도 나머지가 눌러 주기 때문에, 극단적인 판단이 완화되는 효과가 있습니다.
단일 모델과 앙상블을 성격별로 대조하면 차이가 분명해집니다.
| 구분 | 단일 모델 | 앙상블 |
|---|---|---|
| 최고 성적 | 특정 구간에서 더 높을 수 있음 | 개별 최고보다 낮을 수 있음 |
| 장세 변화 대응 | 약한 구간에서 급격히 무너짐 | 약점이 분산되어 완만함 |
| 오판의 파급 | 한 번의 오판이 그대로 반영 | 여러 모델이 눌러 줌 |
| 복잡도·비용 | 낮음 | 모델 수만큼 증가 |
표의 첫 줄이 중요합니다. 앙상블의 목표는 ‘가장 높은 수익률’이 아니라 ‘무너지는 폭을 줄이는 것’입니다. 개별 최고 모델보다 평균 성적이 조금 낮아 보이더라도, 최악의 구간에서 덜 깨진다면 실계좌에서는 그쪽이 오래 살아남습니다.
앙상블이 효과를 내는 조건과 흔한 착각
앙상블은 만능 장치가 아닙니다. 조건을 갖추지 못한 앙상블은 비용만 늘리고 효과는 거의 없습니다. 키움헌터v2를 다듬으며 반복해서 확인한 두 가지를 짚겠습니다.
모델들이 서로 달라야 효과가 난다
앙상블의 전제는 ‘서로 다른 실수’입니다. 같은 데이터, 같은 피처, 같은 알고리즘으로 만든 모델을 설정값만 조금 바꿔 여러 개 두면, 겉으로는 앙상블처럼 보여도 사실상 한 모델을 여러 번 복사한 것에 가깝습니다.
이런 경우 한 모델이 틀리는 구간에서 나머지도 똑같이 틀리기 때문에, 분산 효과가 나오지 않습니다. 모델의 종류를 바꾸거나, 보는 피처의 성격을 달리하거나, 학습 구간을 다르게 가져가는 식으로 ‘다름’을 의도적으로 설계해야 앙상블이 제값을 합니다.
많이 모을수록 좋은 것은 아니다
모델을 무작정 늘리면 더 안전해질 것 같지만 그렇지 않습니다. 비슷한 모델을 계속 더하는 것은 안정성을 거의 높이지 못하면서 연산 시간과 관리 부담만 키웁니다.
자동매매는 정해진 시간 안에 판단과 주문을 끝내야 하는 작업이라, 모델이 늘수록 응답이 느려지는 문제도 무시할 수 없습니다. 모델 수를 늘리는 결정은 ‘다름이 더 확보되는가’를 기준으로 판단해야지, 숫자 자체를 목표로 삼으면 안 됩니다.
또 하나 흔한 착각은 앙상블이 손실을 없애 준다는 기대입니다. 앙상블은 오판의 파급을 줄이는 장치일 뿐, 모든 모델이 함께 약한 극단적 장세에서는 똑같이 손실을 봅니다. 분산은 위험을 줄이는 도구이지 제거하는 도구가 아닙니다.
봇에 적용하기 전 점검 4항목
개념을 코드로 옮기기 전에, 지금 구상 중인 앙상블이 이름만 앙상블인지 아니면 실제로 약점을 메우는 구조인지 네 가지로 자문해 보시기 바랍니다. 구체적인 모델 개수나 가중치, 결합 비율은 전략과 계좌 성격에 따라 달라지는 튜닝 영역이라 여기서는 다루지 않습니다.
- 모델들이 정말 다른가: 종류·피처·학습 구간 중 무엇이라도 의도적으로 달라야 합니다. 설정만 바꾼 복제본의 집합은 앙상블이 아닙니다.
- 결합 방식이 문제에 맞는가: 판정을 가르는 문제라면 투표, 확률·점수를 다루는 문제라면 평균이 더 자연스럽습니다. 목적 없이 둘을 섞으면 해석이 어려워집니다.
- 속도 예산 안에 들어오는가: 모델을 늘린 만큼 판단과 주문이 제한 시간 안에 끝나는지 확인해야 합니다. 느린 앙상블은 좋은 신호를 놓칩니다.
- 최악 구간에서 검증했는가: 평균 성적이 아니라, 모든 모델이 약했던 하락·급변 구간에서 얼마나 덜 깨지는지로 앙상블의 값어치를 판단해야 합니다.
가장 흔한 실수는 비슷한 모델을 잔뜩 모아 놓고 ‘여러 모델을 쓰니 안전하다’고 믿는 것입니다. 숫자가 아니라 다름이 안정성을 만듭니다. 서로 다른 약점을 가진 모델 몇 개를 신중하게 고르는 편이, 똑같은 모델 수십 개를 쌓는 것보다 실계좌에서 훨씬 오래 버팁니다.
이 글은 특정 전략의 수익을 보장하거나 종목을 추천하지 않으며, 자동매매는 언제든 원금 손실이 발생할 수 있습니다. 여기서 다룬 내용은 AI와 프로그래밍으로 매매 로직을 직접 만들어가는 과정을 기록·공유하기 위한 교육 목적의 개념 정리입니다.
답글 남기기