코스닥150 트레이딩 백테스팅 3편, ATR 4.91% 간격은 너무 넓지 않을까? 내 경험과 백테스트가 부딪혔다_261019

지난 글에서 이런 결론을 냈다.

매수 간격과 익절 폭을 고정된 1.5%·0.5%로 두지 말고, 시장의 변동성에 맞춰 늘였다 줄였다 하자는 것이다.
그 기준으로 쓴 지표가 ATR(14)이다.
최근 14거래일 동안 하루에 평균 몇 % 움직였는지를 나타내는 값으로, 시장이 거칠어지면 커지고 잠잠해지면 작아진다.

규칙은 이렇다.

  • 매수 간격 = 1.0 × ATR% (직전에 산 가격보다 이만큼 더 떨어지면 다음 계좌 매수)
  • 익절 폭 = 0.6 × ATR% (종가가 120일 이동평균선 위에 있는 상승 추세라면 1.5 × ATR%, 최대 5%)
  • 20일 이격도 105 초과(과열)면 매수 중단, 볼린저 %B가 0 미만(과매도)이면 2계좌분 매수
  • 자금은 20개 계좌로 나눈다(균형형)

나는 이 규칙으로 매일 저녁 7시, 다음 날 쓸 거래 가이드가 내 텔레그램 봇으로 들어오도록 해두었다.
코스닥150 시세를 받아 ATR,이격도,%B를 계산하고, 내일 몇 원에 사고 몇 원에 팔지까지 알려준다.
앞으로는 규칙을 기계적으로 돌리기보다, 이 가이드를 기준점으로 삼아 시장 상황에 따라 유연하게 대응할 수 있다.


그런데, 4.91%?

10월 16일 종가 기준 ATR(14)은 4.91%였다.
가이드대로라면 매수 간격 4.91%, 익절 폭 약 2.9%(지금은 120일선 아래라 0.6 × ATR)다.

솔직히 2년간 이 전략을 직접 굴려온 내 경험에서는 조금 어색하게 느껴진다.

변동성이 큰 구간에서는 매수 간격을 넓혀야 한다는 건 확실하다.
나도 하락이 거세지면 1.5%를 3~4%로 넓혀왔다.
그런데 4.91%는 너무 크게 느껴진다.

매도 쪽은 더 어색하다.
나는 오히려 변동성이 클수록 매도 폭을 줄여서, 0.3~0.5%처럼 작은 이익을 여러 번 빠르게 적립해나가는 방식으로 운용해왔다.
그런데 가이드는 매도 폭을 0.6 × ATR, 약 2.9%로 대폭 넓히라고 한다.
손이 덜 가는 건 좋은데, 과연 거래가 되기는 하는 걸까?

백테스트는 이렇게 우리 경험에 반하는 결과를 내놓기도 한다.
하지만 바로 그 점이 장점이기도 하다.
내 걱정이 맞는지, 과거 데이터로 반론을 확인해볼 수 있으니까.

그래서 세 가지를 물어봤다.

  1. ATR이 4.91% 이상이었던 날은 얼마나 되나? 그런 날에 이 규칙으로는 하루에 몇 번 거래하게 되나?
  2. 그 구간만 떼어 보면 수익률, MDD, Sharpe는 어땠나? 간격을 좁혔다면?
  3. 매도 폭을 내 방식처럼 0.3~0.5%로 줄였다면?

데이터: KODEX 코스닥150(229200) 5분봉 2021.09.02~2026.10.16(1,250거래일), 고변동 구간은 1분봉으로 재확인. 자본 1억 원, 수수료 0.015%, 매수·매도마다 1틱 불리하게 체결된다고 가정했다.


질문 1. 4.91% 이상인 날은 얼마나 되나

ATR은 그날 아침에 확정된 ‘전일 종가 기준’ 값을 썼다. 실제 가이드가 쓰는 값과 같다.

1,250거래일 중 90일, 전체의 7.2%였다.
5년간 ATR의 중앙값은 2.27%이고, 상위 10%가 4.34%, 상위 5%가 5.88%다.
지금은 5년 중 상위 7% 안에 드는, 꽤 드문 고변동 장이다.

흥미로운 건 이 90일이 전부 2026년에 몰려 있다는 점이다.
금리 인상기였던 2022년 하락장에서도 ATR이 이 수준까지 올라가지는 않았다.

ATR(14) 4.91% 이상이었던 연속 구간
ATR(14) 4.91% 이상이었던 연속 구간

그럼 이런 날 거래는 얼마나 일어날까. 매수와 매도 체결을 합친 횟수다.

고변동 날의 하루 체결 횟수
고변동 날의 하루 체결 횟수

간격이 넓어지면 거래가 끊길 거라 걱정했는데, 그렇지 않았다.
간격이 넓어지는 만큼 시장도 크게 움직이니, 거래 빈도는 평소와 거의 같다. 대략 이틀에 한 번 체결된다.
대신 한 번 팔 때 남기는 이익이 커진다. 매도 1건의 평균 순수익률은 고변동 날 4.38%로, 평소(2.11%)의 두 배였다.


질문 2. 그 구간만의 성과, 그리고 간격을 좁혔다면

먼저 지표 두 개만 짚고 가자.
MDD(최대 낙폭)는 평가금액이 고점에서 가장 많이 빠졌던 비율, 즉 ‘가장 아팠던 순간’이다.
Sharpe ratio는 수익을 변동성으로 나눈 값으로, 같은 위험을 지고 얼마나 벌었는지를 본다. 높을수록 좋다.

5년 전체를 한 번에 돌린 결과에서, ATR 4.91% 이상인 90일의 하루 수익률만 뽑아 이어 붙였다.

고변동 90일만 이어 붙인 성과
고변동 90일만 이어 붙인 성과

같은 날들에서 그냥 들고 있던 사람은 고점 대비 46%가 빠졌다.
ATR 규칙은 13% 빠지는 데 그쳤고, Sharpe는 오히려 평소보다 높았다.
역시! 변동성이 큰 날이 이 전략에게는 나쁜 날이 아니었다는 뜻이다.

그럼 내 감각대로 간격을 좁혔다면 어땠을까.
가장 길었던 64일짜리 하락 구간(코스닥150 -26%)을 빈 계좌 1억 원에서 새로 시작해 돌려봤다.

64일 하락 구간: 매수 간격별 성과
64일 하락 구간: 매수 간격별 성과

간격을 좁히면 길게 이어지는 급락에서 계좌를 너무 빨리 써버린다.

수익은 늘지 않고, 낙폭만 2~3배로 커졌다.

물론 반대 경우도 있었다. 3월처럼 고변동이지만 금방 회복한 구간에서는 좁은 간격이 1~2%p 더 벌었다.
문제는 지금이 ‘금방 끝날 급락’인지 ‘길게 갈 급락’인지 미리 알 수 없다는 것이다.
4.91% 간격이면 20개 계좌를 다 쓸 때까지 약 63% 하락을 견딘다(2계좌씩 사는 날이 없다면). 넓어 보이는 간격이 계좌를 지키는 장치였다.


질문 3. 매도 폭을 0.3~0.5%로 줄였다면

이번엔 매도 쪽이다. 고변동 날에만 익절 폭을 여러 가지로 바꾸고, 나머지 날은 그대로 뒀다.

먼저 5년 전체(매수 간격은 1.0 × ATR 유지).

고변동 날의 익절 폭별 성과(5년 전체)
고변동 날의 익절 폭별 성과(5년 전체)

익절 폭을 1~4% 사이 어디에 두든 결과는 비슷했다.
확실히 나쁜 건 양 끝, 특히 0.3%와 0.5%였다.

다음은 64일 하락 구간을 1분봉으로 다시 본 결과다.
작은 마진으로 짧게 여러 번 왕복하는 건 5분봉에서 놓칠 수 있어서, 더 촘촘한 데이터로 확인했다(5분봉 결과도 거의 같았다).

64일 하락 구간: 익절 폭별 성과(1분봉)
64일 하락 구간: 익절 폭별 성과(1분봉)

여기서는 내 경험이 맞았다.
하락이 길게 이어지는 고변동 장에서는 마진을 줄여 반등마다 빨리 팔고 빠지는 쪽이 낫다.
들고 있는 계좌가 적게 쌓이니 MDD가 -11%에서 -6%로 거의 절반이 된다.

다만 그 최적점은 0.3%가 아니라 1% 안팎이었다. 이유는 두 가지다.

  • 비용. 한 번 사고파는 데 수수료 0.03%에 슬리피지 2틱(지금 가격 약 13,000원에서 0.08%)이 들어 약 0.11%가 나간다. 0.3% 마진이면 3분의 1이 비용으로 사라진다.
  • 비율. 평소 ATR이 2%일 때의 0.5% 마진은 하루 움직임의 4분의 1이다. ATR이 4.9%인 날 같은 비율이 되려면 1.2%는 돼야 한다. 0.3%는 고변동 장에서는 ‘잡음’ 수준이다.

반대로 상승·횡보 성격의 고변동 구간(3월)에서는 넓은 익절이 유리했다. 0.3%로 팔면 +0.1%, 가이드대로(상승 추세라 1.5 × ATR) 팔면 +1.2%였다.
작게 팔면 오르는 장에서 이익을 다 놓친다.

그리고 내 감각을 둘 다 적용한 조합, 즉 좁은 매수 간격(0.5 × ATR) + 작은 매도 폭(0.3%)은 64일 하락 구간에서 하루 9회를 체결하고도 MDD -16%였다.
손은 가장 많이 가는데, 결과는 가이드보다 나빴다.


정리하면

  • ATR 4.91% 이상은 5년 중 7%뿐인 드문 장이다. 그래도 거래는 이틀에 한 번꼴로 일어난다.
  • 그런 날 ATR 간격(4.9%)은 Buy&Hold MDD -46%를 -13%로 막았다. 간격을 좁히면 긴 급락에서 낙폭이 2~3배 커진다.
  • 매도 폭은 1~4% 사이라면 큰 차이가 없다. 하락 추세의 고변동 장이라면 1~2%로 줄이는 것도 괜찮다.
  • 하지만 0.3~0.5% 고정 마진은 고변동 장에서 비용과 잡음에 먹힌다.

한계도 분명하다.
ATR이 이 정도로 높았던 독립 구간은 사실상 다섯 번, 그중 긴 하락은 한 번뿐이다.
숫자는 방향을 보여줄 뿐, 정답으로 받아들이기엔 표본이 작다.


그래서, 나는

결론적으로 나는 동의하지 않을 수 없었다.
간격을 넓혀야 한다는 내 감각은 맞았지만, 얼마나 넓혀야 하는지는 데이터가 나보다 과감했다.
작게 여러 번 판다는 내 습관도 방향은 맞았지만, 0.3%는 너무 작았다.

그래도 1.5~2%에 매수하던 사람이 하루아침에 4.9%로 가기는 쉽지 않다.
그래서 우선 매수 간격은 4% 정도, 매도 폭은 1.5% 정도 수준으로 해보려고 한다.
조금씩 조금씩 ATR에 기반한 투자에 익숙해져 가는 시간이 필요할 듯하다.

그 결과는 공유할 수 있도록 하겠다.

참고: 이 글은 개인적인 백테스트 기록이며 특정 상품의 매수·매도 권유가 아닙니다. 과거 수익률이 미래 수익을 보장하지 않습니다.

코스닥150 트레이딩 백테스팅 2편, 성과 개선을 위한 몇가지 방빕 (Feat. ATR)_261018

어제 이런 글을 썼다.

지난 글은 운용의 묘 없이 규칙을 기계적으로 돌렸을 때의 결과였다.
24개 계좌로 나눠, 1.5% 떨어질 때마다 한 계좌씩 사고, 계좌마다 0.5% 오르면 판다.
결과는 CAGR +3.07%, 최대 낙폭(MDD) -36.8%.
Buy&Hold(-2.06%, -51.6%)보다는 덜 잃었지만, 내가 실제로 체감한 수익률과는 거리가 있었다.

그리고 글을 이렇게 마무리했다.

언제 어떻게 과열이라고 판단하고, 그때 어떻게 거래할 것인가? 언제 어떻게 과매도라고 판단하고 어떻게 거래할 것인가?

실제로 나는 이 전략을 기계적으로만 굴리지 않는다.
하락 추세가 강하면 간격을 3~4%로 넓히고, 너무 올랐다 싶으면 매수를 멈춘다.
이번 글은 그 ‘운용의 묘’를 기술적 지표로 바꿔서 백테스트한 결과다.


먼저, 기본 개념부터

결과를 보기 전에 이번 글에서 쓰는 지표를 정리하고 가자.
이미 아는 분은 건너뛰어도 된다.

지표 개념 ① 추세와 위치: 이동평균·이격도·볼린저밴드(%B)
지표 개념 ① 추세와 위치: 이동평균·이격도·볼린저밴드(%B)

이동평균선은 최근 N일 종가의 평균이다.
20일선은 약 한 달, 120일선은 약 반년의 평균 가격이다.
종가가 120일선 위에 있으면 중기 상승 국면으로 본다.

이격도(20일)는 종가를 20일선으로 나눈 값(×100)이다.
100이면 평균과 같고, 105면 평균보다 5% 위에 있다는 뜻이다.
높을수록 짧은 기간에 많이 오른 상태다.

볼린저밴드는 20일선 위아래로 표준편차 2배만큼 그린 띠다.
가격은 대부분 이 띠 안에서 움직인다.
%B는 지금 가격이 띠 안 어디쯤에 있는지를 나타낸다. 0이면 하단, 1이면 상단이다.
%B가 0보다 작다는 건 띠 아래로 밀려난, 통계적으로 드문 하락이라는 뜻이다.

지표 개념 ② 변동성과 힘: ATR%·RSI
지표 개념 ② 변동성과 힘: ATR%·RSI

ATR(Average True Range)은 하루 변동폭(고가-저가, 전일 종가 대비 갭 포함)의 14일 평균이다.
이걸 종가로 나눈 ATR%가 3%면 “요즘 하루에 3% 안팎 움직인다”는 뜻이다.
코스닥150의 2015년 이후 평균은 2.3%, 최근 1년 중앙값은 4.0%다. 지금은 고변동 국면이다.

RSI(14)는 최근 14일 동안 오른 힘이 내린 힘보다 얼마나 센지를 0~100으로 나타낸다.
흔히 70 이상을 과열, 30 이하를 과매도로 읽는다.
(그런데 이번 백테스트에서는 이 통념이 맞지 않았다. 아래에서 다시 본다.)

성과지표 용어와 검증 방법
성과지표 용어와 검증 방법

성과지표도 정리해둔다.
CAGR은 연평균 복리수익률, MDD는 고점 대비 가장 크게 빠진 비율이다. MDD는 투자자가 실제로 견뎌야 했던 최악의 손실이다.
Sharpe는 수익률을 변동성으로 나눈 값, Sortino는 그중 하락 쪽 변동만 위험으로 본 값이다. 둘 다 높을수록 좋다.
베타는 기초 ETF가 1% 움직일 때 전략이 얼마나 따라 움직이는지다.
그리고 과거에만 맞춘 숫자를 피하려고, 앞 구간(2021.09~2024.06)에서 규칙을 고르고 뒤 구간(2024.07~2026.10)에서 다시 확인했다.


과열과 과매도, 어떤 신호가 진짜였나

신호 발생 후 20거래일 수익률: RSI·%B 상단은 과열이 아니었다
신호 발생 후 20거래일 수익률: RSI·%B 상단은 과열이 아니었다

2015년 상장 이후 11년치 일봉으로, 각 신호가 나온 다음 20거래일 동안 어떻게 됐는지 봤다.

  • RSI 70 초과, 볼린저 상단 돌파(%B>1) 뒤에도 20일 수익률은 +1.3~1.6%로 평균(+0.6%)보다 높았다. 과열이 아니라 추세가 이어지는 신호였다.
  • 20일 이격도 108 초과만 달랐다. 20일 뒤 평균 -1.5%, 20일 안에 -10% 빠질 확률이 43%였다.
  • 과매도 쪽은 대체로 맞았다. 이격도 92 미만, RSI 30 미만, 60일 고점 대비 -20%는 20일 뒤 +4~7%, 오를 확률 70~77%.
  • 다만 반등 전에 -10%가 더 나올 확률도 14~35%였다. 과매도라고 한 번에 다 사면 안 되는 이유다.

그래서 과열은 RSI가 아니라 이격도 105 초과로, 과매도는 %B<0으로 판단하기로 했다.


간격은 감이 아니라 ATR로

오늘 ATR 3분위별 다음 거래일 고저폭
오늘 ATR 3분위별 다음 거래일 고저폭

내가 감으로 하던 “하락이 세면 간격을 넓힌다”를 숫자로 바꾸면 ATR이다.
변동성은 이어지는 성질이 있다. 오늘 ATR이 높으면 내일도 크게 움직인다.
ATR 상위 1/3인 날은 다음 날 고저폭이 평균 2.97%, 하위 1/3인 날은 1.47%였다.

그래서 매일 전일 ATR%로 그날의 기준을 정한다.

  • 매수 간격 = 1.0 × ATR%
  • 익절 폭 = 0.6 × ATR% (종가가 120일선 위면 1.5 × ATR%)

재미있는 건, 변동성이 클 때 익절 폭만 줄이는 건 오히려 성과를 깎았다는 점이다.
간격과 익절을 함께 넓혀야 했다.


결과: CAGR 3.1% → 7.0%, MDD -36.8% → -19.3%

5라운드, 375개 설정을 돌려서 세 가지 프로필로 정리했다.

아래는 각 프로필별 성과이다.

운용 프로필 비교: 안정형·균형형·공격형
운용 프로필 비교: 안정형·균형형·공격형

권장안인 균형형(20계좌)의 전체 기간(2021.09~2026.10) 성과는 아래와 같다. 괄호는 Buy&Hold다.

  • CAGR(연평균 수익률): +6.99% (-2.06%)
  • 누적 수익률(ROI): +41.3% (-10.1%)
  • 최대 낙폭(MDD): -19.3% (-51.6%)
  • Sharpe Ratio: 0.52 (0.12)
  • 표준편차(연): 15.7% (36.3%)
  • 베타: 0.35 (1.00)
  • Sortino Ratio: 0.78 (0.18)

규칙을 고를 때 쓰지 않은 검증 구간(2024.07~)에서도 CAGR 6.4%로 크게 무너지지 않았다.
놀고 있는 현금을 CMA(연 2.5% 가정)에 두면 CAGR은 8.6%까지 올라간다.
낙폭을 더 줄이고 싶으면 안정형(24계좌, CAGR 6.0%, MDD -15.9%), 더 벌고 싶으면 공격형(16계좌, CAGR 8.3%, MDD -26.6%)이다.

시작 시점별 12개월 성과와 전체 기간 평가금액
시작 시점별 12개월 성과와 전체 기간 평가금액

언제 시작했느냐에 따라 결과가 달라지는지도 봤다.
2021년 10월부터 매달 시작해서 12개월씩 굴려본 49번 중,
균형형의 최악은 -15%, Buy&Hold의 최악은 -36%였다.
수익이 난 비율도 80% 대 61%다.
중앙값은 비슷했다(5.1% vs 5.5%). 차이는 나쁠 때 얼마나 덜 나쁘냐에서 났다.

반대로 효과가 없었던 것도 있다.
급락한 날 간격을 더 넓히기, 다 팔고 나서 빨리 재진입하기, Buy&Hold 물량을 일부 깔아두기는 모두 성과를 깎았다.


그래서 어떻게 거래하나

거래 가이드 ① 규칙과 그 의미
거래 가이드 ① 규칙과 그 의미

규칙은 다섯 개다. 각각 시장에 던지는 질문이 다르다.

  1. 얼마나 출렁이나 (ATR): 평소 하루 움직임만큼 빠지면 산다. 조용한 장에서는 촘촘히, 출렁이는 장에서는 넓게 사서 계좌가 너무 빨리 바닥나지 않게 한다.
  2. 얼마에 파나 (ATR): 하루 변동폭의 60% 정도 반등하면 판다. 하루 이틀 안에 닿을 만한 거리다.
  3. 어느 국면인가 (120일선): 반년 평균 위면 중기 상승 국면이다. 반등이 길게 이어지니 익절을 1.5×ATR로 크게 잡는다.
  4. 너무 올랐나 (이격도): 20일선보다 5% 넘게 올라 있으면 신규 매수를 멈춘다. 이미 산 계좌의 매도 주문은 그대로 둔다.
  5. 너무 빠졌나 (%B): 볼린저 하단 밖이면 이번 매수는 두 계좌분을 산다. 20일 뒤 오를 확률이 61%로 평소(52%)보다 높았다.
거래 가이드 ② ATR별 주문 기준과 견딜 수 있는 하락폭
거래 가이드 ② ATR별 주문 기준과 견딜 수 있는 하락폭

ATR 연동의 진짜 의미는 이 표의 마지막 열에 있다.
고정 1.5% 간격이면 첫 매수가에서 -25%쯤 빠졌을 때 20개 계좌가 다 찬다.
ATR이 5%인 급변동기에는 간격이 5%로 넓어져서, 같은 20계좌로 -62%까지 버틸 수 있다.
지난 글에서 “계좌가 다 차버려서 기회가 없었다”고 썼던 문제를 변동성이 알아서 풀어주는 셈이다.

거래 가이드 ③ 주문 순서와 10/16 예시
거래 가이드 ③ 주문 순서와 10/16 예시

10월 16일 종가로 계산하면 이렇다.
ATR 4.91%로 장기 평균의 두 배인 고변동 국면이니 간격 4.9%, 익절 2.9%.
종가가 120일선 아래라 익절 확대는 없다.
이격도 93.6, %B 0.20이라 과열도 과매도도 아니다. 평소처럼 한 계좌분을 산다.


한계

  • 종목 하나(코스닥150), 기간 5년이다. 그 대부분이 횡보와 하락장이었다. 강한 상승장에서는 여전히 Buy&Hold보다 덜 오른다.
  • 5분봉으로 근사한 결과라 실제 지정가 체결 순서까지는 반영하지 못했다.
  • 이격도 105, %B<0은 학습 구간에서 고른 값이라 검증 성과가 조금 낙관적일 수 있다.
  • -30% 이상 이어지는 장기 하락에서는 결국 계좌가 다 차고 평가손실이 길어진다.

앞으로 할 것

백테스트는 여기서 끝이 아니다. 다음으로 해볼 것들이다.

  • 인버스(KODEX 코스닥150선물인버스) 분봉을 받아서, 과열 구간에 매수를 멈추는 대신 인버스로 갈아타는 조합 해보기
  • 시점마다 그때의 주도주를 찾아서, ETF 대신 주도주로 같은 전략을 돌려보기
  • 코스피200 같은 다른 ETF에도 같은 규칙을 적용해서, 코스닥150에만 맞춘 숫자인지 확인하기

그리고 내일(10월 19일)부터는 실제로 ATR을 이용해서 거래해본다.

그간의 실제 내 코스닥트레이딩 계좌는 2년새 어떤  성과를 냈는지, 향후 백테스트 숫자와 실제 체결이 얼마나 같은지, 그 결과는 나중에 따로 공유하겠다.

감으로 하던 운용의 묘를 숫자로 바꿔보니, 통념대로인 것도 있었고 아닌 것도 있었다.
통하지 않은 것을 버리고 통한 것만 남기니 낙폭이 절반 가까이 줄었다.
이제는 그 숫자로 실제 돈을 굴려볼 차례다.

참고: 이 글은 개인적인 백테스트 기록이며 특정 상품의 매수·매도 권유가 아닙니다. 과거 수익률이 미래 수익을 보장하지 않습니다.