시장 상황을 구분해야 하는 이유 — 추세장과 횡보장을 가르는 기준 > 매매 기술 노트
본문 바로가기
코인랩 코인랩 업비트 자동매매 리서치 & 기술노트
사이트 내 전체검색

매매 기술 노트

전략이론 시장 상황을 구분해야 하는 이유 — 추세장과 횡보장을 가르는 기준

게시물 옵션

본문

매매 기술 노트 · 14 · 전략이론

시장 상황을 구분해야 하는 이유 — 추세장과 횡보장을 가르는 기준

지난 편에서는 "많이 맞는 신호가 반드시 좋은 신호는 아니다"라는 이야기를 했다. 이번 편은 그 연장선이다. 아무리 잘 만든 매매 신호라도 시장 국면이 맞지 않으면 기대한 결과가 나오지 않는다. 추세추종 전략은 추세장에서 강하지만 횡보장에서는 계속 잘못된 진입, 즉 휩소에 시달릴 수 있다. 반대로 역추세나 평균회귀 전략은 횡보장에서 유리하지만 강한 추세가 발생하면 너무 일찍 포지션을 정리하거나 손실을 확대할 수 있다.

분류
전략이론
핵심 개념
ADX · MA · BB
난이도
중급
적용 대상
코인 · 주식

겪었던 문제 — 좋은 전략이 갑자기 안 통했던 이유

추세추종 로직 하나를 몇 달간 돌리면서 백테스트 성과도 나쁘지 않았고 실전 초반 몇 주도 수익이 잘 나왔다. 그런데 어느 시점부터 같은 로직이 하루가 멀다 하고 손절만 반복해서 찍기 시작했다.

처음에는 파라미터를 의심했다. RSI 기간을 바꿔보고 진입 조건도 조금씩 조정해봤지만 결과는 크게 달라지지 않았다. 그러다 캔들 차트를 직접 눈으로 쭉 훑어보고 나서야 원인을 알았다.

문제가 발생했던 구간은 뚜렷한 방향 없이 좁은 폭에서 위아래로 움직이는 횡보장이었다. 추세추종 로직 입장에서는 "돌파처럼 보이는" 신호가 계속 발생했지만 실제로는 박스권 안에서 발생한 작은 가격 노이즈에 불과했다.

결국 전략을 고쳐야 했던 것이 아니라 전략을 언제 켜고 언제 꺼야 하는지를 판단하는 필터가 없었던 것이 진짜 문제였다.

판별 방법 1 — ADX로 추세의 힘 확인하기

ADX(Average Directional Index)는 가격이 어느 방향으로 움직이는지를 직접 알려주는 지표라기보다 현재 움직임의 추세 강도를 나타내는 지표다. 일반적으로 0~100 범위의 값으로 표현되며 값이 높을수록 강한 추세가 형성되어 있을 가능성이 높다고 본다.

ADX 25 이상 → 추세 국면 후보 ADX 20 미만 → 횡보 국면 후보 ADX 20~25 → 애매한 구간 예시 구조 if ADX >= 25: 추세 전략 활성화 elif ADX < 20: 추세 전략 비활성화 else: 기존 국면 유지

여기서 중요한 것은 25를 기준으로 단순하게 켰다 껐다 하지 않는 것이다. ADX가 25.1이었다가 다음 캔들에서 24.8이 되는 식의 작은 변화만으로 전략이 반복적으로 활성화되고 비활성화되면 오히려 시스템이 불안정해진다.

그래서 20~25 같은 완충 구간을 두는 방법이 있다. 이것을 히스테리시스 구조로 생각하면 이해하기 쉽다. 국면이 충분히 변했을 때만 상태를 바꾸는 것이다.

판별 방법 2 — 이동평균 기울기

일정 기간의 이동평균선이 어느 방향으로 얼마나 기울어져 있는지를 측정하는 방법도 있다. 이동평균이 뚜렷하게 상승하거나 하락하고 있다면 추세장일 가능성이 높고, 거의 수평으로 움직이면 횡보장일 가능성이 높다고 판단하는 방식이다.

장점은 직관적이라는 것이다. 차트를 보는 사람이라면 이동평균선의 방향만 봐도 어느 정도 시장 분위기를 이해할 수 있다. 하지만 짧은 되돌림 구간이나 급격한 변동에서는 잘못된 판단이 발생할 수 있기 때문에 ADX나 변동성 지표와 함께 사용하는 편이 더 안정적이다.

판별 방법 3 — 볼린저밴드 폭으로 변동성 확인하기

볼린저밴드의 상단과 하단 사이 간격을 이용해 현재 시장의 변동성을 확인할 수도 있다. 밴드 폭이 좁아지는 구간은 흔히 스퀴즈라고 부르며 가격 변동성이 낮아지고 있다는 의미로 해석할 수 있다.

다만 밴드가 좁다고 해서 반드시 곧바로 상승이나 하락 추세가 발생한다는 의미는 아니다. 중요한 것은 현재 변동성이 이전 구간에 비해 어떻게 변하고 있는지를 보는 것이다.

횡보 국면 추세 국면 횡보 국면 LOW VOLATILITY TIME 같은 시장에서도 구간에 따라 전략의 유효성이 달라질 수 있다 가격 자체만 보는 것이 아니라 가격이 움직이는 방식과 변동성의 변화를 함께 보면 현재 시장이 추세에 가까운지 횡보에 가까운지 판단하는 데 도움이 된다.

국면별로 전략을 다르게 배치하기

국면을 판정하는 것 자체는 절반이고, 나머지 절반은 그 결과를 실제 매매 시스템에 어떻게 적용하느냐다. 가장 단순한 구조는 국면 판정 결과를 하나의 상태값(state)으로 두고, 그 상태에 따라 어떤 전략 모듈을 활성화할지를 결정하는 방식이다.

국면 = 판정함수(ADX, 밴드폭, 이동평균기울기) if 국면 == "추세": 추세추종_전략.활성화() 역추세_전략.비활성화() elif 국면 == "횡보": 추세추종_전략.비활성화() 역추세_전략.활성화() else: 기존_상태_유지()

이 구조의 장점은 전략 로직 자체와 시장 국면 판정 로직을 분리할 수 있다는 것이다. 처음에는 ADX 하나로 국면을 판단하더라도 이후 테스트 결과에 따라 볼린저밴드 폭이나 이동평균 기울기 같은 조건을 추가할 수 있다.

실제 자동매매 시스템을 만들 때도 이 분리가 중요하다. 매수 조건과 매도 조건 안에 시장 국면 판단 코드를 여기저기 섞어버리면 나중에 조건을 수정할 때 전체 로직을 다시 확인해야 한다. 반대로 국면 판정 함수를 별도로 만들어두면 판정 기준만 교체하면서 동일한 매매 전략을 비교할 수 있다.

한 가지 지표보다 여러 조건을 겹치는 이유

시장 국면을 ADX 하나만으로 판단하는 것도 가능하지만 완벽하지는 않다. ADX는 후행적인 성격이 있기 때문에 새로운 추세가 시작된 직후에는 아직 낮은 값을 보일 수 있고, 반대로 추세가 끝났는데도 일정 시간 높은 값이 유지될 수 있다.

그래서 실전에서는 여러 지표를 조합하는 방법을 생각해볼 수 있다. 예를 들어 ADX가 일정 수준 이상이고 동시에 볼린저밴드 폭도 확대되고 있으며 이동평균의 기울기도 같은 방향을 가리키고 있다면 추세 국면일 가능성을 더 높게 평가하는 방식이다.

실전 팁

지표 하나만으로 시장 국면을 확정하기보다는 서로 다른 특성을 가진 지표를 조합하는 편이 유용하다. 다만 조건을 계속 추가한다고 무조건 좋아지는 것은 아니다. 조건이 지나치게 많아지면 신호가 거의 발생하지 않거나 과거 데이터에만 맞는 과최적화가 발생할 수 있으므로 반드시 백테스트와 실전 데이터를 함께 비교해야 한다.

국면 판정도 결국 하나의 전략이다

시장을 추세장과 횡보장으로 구분하는 것은 단순한 보조 기능처럼 보이지만 실제로는 하나의 전략에 가깝다. 어떤 기준으로 국면을 나누느냐에 따라 같은 매매 전략의 거래 횟수와 승률, 손익비, 최대 낙폭까지 달라질 수 있기 때문이다.

특히 자동매매에서는 "좋은 전략 하나를 모든 시장에서 계속 돌린다"는 접근보다 현재 환경에서 해당 전략이 유리한지를 먼저 판단하는 구조가 훨씬 중요하다. 전략의 성능이 나빠졌을 때 무조건 전략 파라미터부터 수정하기보다 시장 환경이 바뀐 것은 아닌지 먼저 확인하는 습관이 필요하다.

주의

국면 판정 지표들도 결국 과거 가격을 기반으로 계산되는 후행 지표다. 따라서 추세가 막 시작되는 초반이나 막 끝나는 시점에는 국면 판정 자체가 늦게 반응할 수 있다. 어떤 필터도 손실을 완전히 제거할 수 없으며, 실제 자동매매에 적용하기 전에는 충분한 백테스트와 리스크 관리가 필요하다. 이 글은 자동매매 시스템의 기술적 구조를 설명하기 위한 자료이며 투자 권유가 아니다. 투자 판단과 그에 따른 책임은 전적으로 본인에게 있다.

매매 기술 노트 시리즈 · 전략이론
  1. 좋은 매매 신호는 많이 맞는 신호가 아니다
  2. 시장 상황을 구분해야 하는 이유 — 추세장과 횡보장을 가르는 기준
  3. 슬리피지 — 체결가는 왜 항상 계획과 다른가
코인랩 매매 기술 노트는 실제 자동매매 시스템을 구축하고 운영하면서 얻은 경험과 기술적 원리를 기록합니다. 각 전략과 지표의 결과는 시장과 설정에 따라 달라질 수 있으며 과거의 결과가 미래의 성과를 보장하지 않습니다.

코인랩 봇 · 실측 데이터

그래서 국면 구분은 실제 성적을 바꿨나 — 코인랩 봇 4개월 집계

여기까지는 국면을 어떻게 나누느냐에 대한 이야기였다. 그러면 실제로 국면을 나눠 전략을 다르게 배치하면 성적이 달라질까. 코인랩 자동매매 일지 ④편은 장기 이동평균 기울기(SMA50 · 10봉 · 임계값 0.3%)로 시장을 하락 · 중립 · 상승 세 국면으로 자동 판정하는 봇을 넉 달간 돌린 뒤, 매도 375건을 국면별로 쪼갠 집계를 공개했다. 하락 77건, 중립 276건, 상승 22건이었고, 매도 사유 로그에 남은 국면 태그와 역산 결과를 대조한 일치율은 92.5%(149/161)였다.

먼저 국면별 승률이다.

하락 국면
20.8%
중립 국면
50.7%
상승 국면
72.7%
표본
375건

같은 봇, 같은 전략인데 국면에 따라 승률이 20.8%에서 72.7%까지 벌어졌다. 이긴 거래와 진 거래의 손익까지 반영한 건당 기대값으로 환산하면 이렇게 된다.

하락 국면
-0.53%p
중립 국면
-0.14%p
상승 국면
+0.45%p
태그 일치율
92.5%

④편은 이 결과를 두고 "가장 조심스러웠던 국면이 가장 성적이 나빴고, 가장 공격적이었던 국면이 가장 성적이 좋았다"고 정리한다. 다만 그 글도 이 역전이 표본이 작아 생긴 우연인지, 국면 판정이 늦게 도착하는 구조적 결함 때문인지는 그 글만으로 가르기 어렵다고 적는다.

수치에서 더 눈에 띄는 건 분포다. 매도 276건, 전체의 74%(276/375)가 중립 국면에서 나왔다. 국면을 셋으로 나눴지만 봇은 대부분의 시간을 어느 쪽도 아닌 구간에서 매매했고, 그 구간의 건당 기대값은 -0.14%p로 마이너스였다. 국면 필터를 붙여도 거래 대부분이 중립 구간에 몰리면 필터가 성적에 개입할 여지 자체가 좁아진다.

표본 한계

상승 국면 승률이 72.7%로 가장 높지만 매도 건수는 22건뿐이다. ④편도 상승장 표본을 두고 "이 우위를 일반화하기는 이르다"고 못박는다. 또한 이 국면 판정은 이동평균 기울기에 기반하므로, 이 글 본문에서 지적한 대로 추세가 막 시작되거나 끝나는 구간에서 판정이 늦게 반응한다. 위 숫자는 그 지연이 포함된 결과이지, 국면 구분의 이상적인 효과를 보여주는 값이 아니다.

위 수치는 코인랩이 운영한 자동매매 봇의 실거래 로그를 국면별로 집계한 값이며, 특정 전략이나 지표의 수익을 보장하지 않습니다. 이 봇은 해당 기간을 손실로 마감했습니다. 국면별 기대값은 거래당 손익을 단순 합산·평균한 기준으로 계좌 잔고 변화율과는 다를 수 있습니다. 이 글은 자동매매 시스템의 기술적 구조를 설명하기 위한 자료이며 투자 권유가 아닙니다.

추천0 비추천0
스크랩 · 신고

댓글목록

등록된 댓글이 없습니다.

매매 기술 노트 • OFFICIAL

매매 기술 노트

RSI·볼린저밴드·이동평균선·MACD·거래량 지표 정리와 적용 경험
22TOTAL
22POSTS

매매 기술 노트

22건
매매 기술 노트 목록
번호 제목 글쓴이 날짜 조회
22
<
코인랩
09-10 44
21
<
코인랩
08-08 719
20
<
코인랩
09-01 59
19
<
코인랩
08-27 147
18
<
코인랩
08-22 218
17
<
코인랩
08-19 213
16
<
코인랩
08-18 410
15
<
코인랩
08-17 223
열람중
<
코인랩
08-14 272
13
<
코인랩
08-13 310
12
<
코인랩
08-10 241
11
<
코인랩
08-09 233
10
<
코인랩
08-09 258
9
<
코인랩
08-07 293
8
<
코인랩
08-07 280
WELCOME
ID/PW 찾기
회원가입
오늘의 마켓
업비트 원화마켓 기준 · 5분 갱신
상승 232하락 47
24H 거래대금 17,754억
거래대금 TOP
JPYC-4.27%
XRP+1.79%
FOLD+2.05%
ETH+1.45%
BTC+1.37%
NEAR+10.29%
ONDO+2.14%
LSK-4.42%