전략이론 평균회귀와 추세추종 — 정반대 전제를 가진 두 전략
게시물 옵션
본문
코인랩 매매 기술 노트 · 전략이론
평균회귀와 추세추종 — 정반대 전제를 가진 두 전략
코인랩은 성격이 다른 봇 두 개를 동시에 돌리고 있다. 하나는 가격이 과하게 빠졌을 때 되돌림을 노리는 역추세반등 봇이고, 다른 하나는 방향이 잡히면 그 방향을 따라가는 추세추종 봇이다. 처음 이 구성을 짤 때 가장 많이 들은 질문이 "정반대로 움직이는 두 전략을 왜 같이 돌리느냐"였다. 실제로 두 전략은 시장을 바라보는 전제 자체가 반대다. 그런데 바로 그 점 때문에 같이 굴릴 이유가 생긴다.
- 평균회귀
- 가격은 결국 평균 수준으로 돌아온다는 전제. 과매도·과열 구간에서 반대 방향에 베팅
- 추세추종
- 한번 생긴 방향은 당분간 이어진다는 전제. 방향이 확인된 뒤에 같은 방향으로 진입
- 공통점
- 둘 다 "시장이 항상 이렇게 움직인다"가 아니라 "이런 구간에서 통한다"는 조건부 전략
전제가 반대라는 말의 의미
평균회귀는 가격이 기준선에서 크게 벗어난 상태를 일시적인 이탈로 본다. 그래서 많이 빠질수록 진입 근거가 강해진다. 추세추종은 같은 움직임을 방향이 바뀌었다는 신호로 읽는다. 많이 빠졌으면 더 빠질 수 있다고 보고, 오히려 반대 포지션을 정리하거나 하락 방향을 따라간다. 똑같은 급락 차트 하나를 놓고 한 봇은 매수 신호를, 다른 봇은 청산 신호를 만드는 셈이다.
그래서 두 전략은 잘 통하는 시장 구간도 정확히 갈린다. 평균회귀는 위아래로 흔들리되 방향성이 뚜렷하지 않은 횡보 구간에서 잘 맞는다. 반대로 추세추종은 한 방향으로 길게 밀어붙이는 구간에서 성과가 나오고, 횡보 구간에서는 진입과 손절을 반복하며 잔손실이 쌓인다. 어느 쪽이 더 우월한 전략인가는 질문 자체가 성립하지 않고, 지금 시장이 어느 쪽 성격에 가까운가만 남는다.
손익 구조가 다르면 견디는 방식도 달라진다
전제가 다르니 성과가 쌓이는 모양도 다르다. 평균회귀는 승률이 비교적 높게 나오는 대신 한 번 크게 틀렸을 때의 손실이 그동안 모은 이익을 상당 부분 되돌린다. 되돌림을 노리고 들어갔는데 되돌아오지 않고 그대로 추세가 이어지는 경우가 그 한 번이다. 추세추종은 반대로 승률이 낮게 나오는 게 정상이다. 진입 시도 대부분이 잔손실로 끝나고, 가끔 나오는 큰 방향에서 그 손실을 전부 메우고 남기는 구조다.
이 차이는 심리적으로도 전혀 다르게 느껴진다. 평균회귀 봇은 매일 조금씩 이기다가 어느 날 크게 깨지기 때문에 그 하루를 견디는 게 어렵고, 추세추종 봇은 몇 주 내내 지기만 하다가 나중에 회수되기 때문에 그 몇 주를 끄지 않고 버티는 게 어렵다. 두 대시보드에 승률과 수익률을 그대로 공개해 두는 이유도 이 차이를 숫자로 확인해 두기 위해서다.
실제로 겪은 케이스
두 봇을 같은 기간에 나란히 돌려 놓고 로그를 비교해 보면, 성적이 반대로 나오는 구간이 눈에 띄게 자주 나온다. 시장이 며칠째 방향 없이 오르내리던 기간에는 역추세반등 봇이 꾸준히 체결을 만들어 냈고, 추세추종 봇은 진입했다가 손절되는 패턴을 반복했다. 그러다 한 방향으로 크게 밀어붙이는 구간이 오자 정확히 뒤집혔다. 추세추종 봇이 그동안의 잔손실을 한 번에 되돌리는 사이, 역추세반등 봇은 "이제 반등하겠지"를 반복하다 손절 조건에 걸렸다.
처음에는 이걸 보고 어느 한쪽 로직에 결함이 있다고 판단했다. 성적이 나쁜 쪽을 계속 손보다가, 손보고 나면 이번엔 반대쪽 성적이 나빠지는 일이 반복됐다. 나중에야 그게 결함이 아니라 각 전략이 원래 그렇게 설계된 결과라는 걸 받아들였다. 그 뒤로는 특정 기간의 성적만 보고 로직을 건드리지 않고, 그 기간의 시장이 어느 성격이었는지를 먼저 확인한 다음에 판단한다.
두 전략은 잘 통하는 구간이 서로 다르기 때문에 성과 흐름이 같이 움직이지 않는다. 한쪽이 부진한 구간에서 다른 쪽이 버텨 주면 전체 자산 곡선의 낙폭이 완만해진다. 물론 이건 두 전략을 아무렇게나 섞어도 되는 뜻은 아니고, 각각의 자금 배분과 동시 보유 한도를 따로 관리한다는 전제가 붙는다.
"반대 전략을 같이 돌리면 서로 상쇄돼서 결국 본전 아니냐"는 말을 자주 듣는다. 두 전략이 같은 종목에 같은 시점에 정확히 반대 포지션을 잡는다면 맞는 말이지만, 실제로는 진입 조건도 보유 기간도 대상 종목도 다르다. 상쇄되는 건 수익이 아니라 성과가 한쪽으로 몰리는 변동성이다. 다만 두 봇이 우연히 같은 종목에서 반대로 물리는 상황은 실제로 생기므로, 그건 별도로 감시해야 한다.
regime = classify_market(price_series)
if regime == "range":
mean_reversion_bot.enable()
trend_bot.reduce_exposure()
elif regime == "trend":
trend_bot.enable()
mean_reversion_bot.reduce_exposure()
else:
both.hold() # 판정이 애매한 구간에서는 신규 진입 보류
다음 편에서는 이 레짐 판정 자체가 늦게 따라올 수밖에 없는 이유와, 그 지연을 전제로 운영을 설계하는 방법을 다뤄 볼 생각이다.
이 글은 매매 시스템 설계 과정에서의 개인적인 경험과 학습을 기록한 것으로, 특정 종목·전략에 대한 투자 권유가 아닙니다. 실제 수익을 보장하지 않으며, 투자 판단과 책임은 본인에게 있습니다.
댓글목록
등록된 댓글이 없습니다.