리스크관리 트레일링 스탑이란 무엇인가 이익 보호 장치의 원리
게시물 옵션
본문
매매 기술 노트 · 08 · 리스크관리
트레일링 스탑 — 이익을 지키면서 추세를 따라가는 법
고정 손절은 "얼마나 잃을 것인가"를 정하는 도구다. 트레일링 스탑은 질문이 다르다. "이미 벌어놓은 이익을 어디까지 내줄 것인가"를 정한다. 가격이 유리하게 움직일 때마다 청산선을 같이 끌어올리고, 가격이 그 선을 다시 건드리면 청산한다. 원리는 단순하지만, 코인랩 봇에서는 이 장치 하나가 일주일 만에 그 기간 손실 전부를 만들어낸 적이 있다. 이 글은 트레일링 스탑의 원리와 함께 그 사고의 기록을 숫자로 남긴다.
- 분류
- 리스크관리
- 핵심 개념
- 최고가 기준 · 활성화 조건
- 난이도
- 초급~중급
- 적용 대상
- 코인·주식
고정 손절과 무엇이 다른가
고정 손절은 진입가를 기준점으로 삼고 그 선을 움직이지 않는다. 반면 트레일링 스탑의 기준점은 진입가가 아니라 포지션을 들고 있는 동안 도달한 최고가(매수 포지션 기준)다. 가격이 신고점을 갱신할 때마다 청산선도 따라 올라간다. 단, 방향은 한쪽으로만 움직인다. 청산선은 올라갈 수는 있어도 내려가지 않는다. 가격이 눌릴 때 청산선을 다시 낮추면 트레일링 스탑의 의미가 사라지기 때문이다.
퍼센트 방식
가장 단순한 구현은 최고가 대비 일정 비율이 빠지면 청산하는 방식이다.
비율이 작을수록 이익을 촘촘하게 지키지만 짧은 눌림에도 일찍 청산되고, 비율이 클수록 추세를 오래 따라가지만 반납하는 이익도 커진다. 또 비율이 종목의 평소 흔들림과 상관없이 고정돼 있다는 점은 고정 손절의 한계를 그대로 물려받는다.
ATR 방식 — 변동성에 맞춰 폭을 조절
퍼센트 방식의 한계를 보완하는 흔한 방법은 트레일링 폭을 ATR(평균 실질 변동폭)에 연동하는 것이다. 변동성이 큰 구간에서는 폭을 넓혀 정상적인 눌림에 털리지 않게 하고, 변동성이 작은 구간에서는 폭을 좁혀 이익을 더 촘촘하게 지킨다.
최고가가 갱신될 때마다 다시 계산하되, 새 청산가가 기존보다 높을 때만 갱신한다는 규칙은 퍼센트 방식과 같다. 배수를 너무 작게 잡으면 퍼센트 방식과 똑같은 조기 청산 문제가 생기고, 너무 크게 잡으면 이익을 거의 지키지 못한다. 참고로 코인랩 봇은 ATR을 관찰용으로 기록만 하고, 트레일링은 퍼센트 방식으로 운영한다.
가격이 신고점을 갱신할 때마다 청산선도 같은 방향으로만 따라 올라간다. 가격이 꺾여 청산선에 닿으면 그때까지의 이익 일부를 지키고 나온다.
트레일링을 언제부터 켤 것인가
트레일링 스탑을 진입 직후부터 켜 두면 어떻게 될까. 진입 직후에는 가격이 진입가 근처에서 오르내리기 때문에, 이때의 "최고가"는 진입가보다 아주 조금 높은 수준에 불과하다. 그 최고가에서 트레일링 비율만큼 빠지면 청산가는 진입가보다 아래에 놓인다. 이익을 지키라고 만든 장치가, 사실상 고정 손절보다 더 촘촘한 두 번째 손절처럼 작동하는 것이다.
같은 트레일링 비율이라도, 최고가가 진입가에서 충분히 멀어진 뒤에야 "이익 보호"가 된다. 최고가가 진입가 근처에 머문 포지션에서는 최고가 대비 낙폭이 곧 진입가 대비 손실이다.
그래서 실전 구현에서는 포지션이 일정 수준 이상 수익을 낸 뒤에만 트레일링을 켜고, 그 전까지는 일반 손절선에 맡기는 이중 구조를 흔히 쓴다. 진입 초반의 자연스러운 등락에는 흔들리지 않고, 실제로 이익이 쌓이기 시작한 뒤부터 그 이익을 지키는 쪽으로 로직이 넘어가는 구조다. 이 원칙을 교과서로 먼저 배웠다면 좋았겠지만, 코인랩 봇은 이것을 실거래 손실로 배웠다.
코인랩 봇의 기록 — 트레일링이 손실 전부를 만든 일주일
코인랩이 업비트에서 운영하는 역추세 봇의 트레일링 스탑은 퍼센트 방식이고, 기준은 보유 중 도달한 최고가다. 청산 규칙 중 가장 마지막 순서로 검사된다(청산 순서 전체는 이전 편 참고). 원래는 현재 손익이 일정 범위 안에 있을 때만 트레일링이 발동하도록 안전 가드가 걸려 있었다.
2026년 6월 17일, 이 가드를 제거했다. 최고가 대비 낙폭만 보고 발동하도록 조건을 풀어준 것이다. 위 그림의 오른쪽 상황, 즉 거의 오르지 않은 포지션에서도 트레일링이 발동할 수 있는 상태가 된 셈이다. 결과는 일주일 뒤 기록에 그대로 남았다.
- 기간
- 6/22~6/29
- 매도 전체
- 80건
- 그중 트레일링
- 54건
- 트레일링 합계
- -38.71%p
6월 22일부터 29일까지 매도 80건의 승률은 28.7%, 수수료를 포함한 실질 손익은 약 -34.5%였다. 그런데 이 중 54건이 트레일링 청산이었고, 이 54건의 합계가 -38.71%p였다. 트레일링을 뺀 나머지 청산은 합계 +17% 흑자였다. 그 기간의 손실 전부를 트레일링 하나가 만든 것이다.
6월 29일, 트레일링에 활성화 조건을 추가했다. 포지션의 최고가가 진입가 대비 일정 수준에 닿은 적이 없으면 트레일링은 아예 작동하지 않고, 그 포지션의 손실 관리는 고정 손절이 맡는다. 위에서 설명한 "충분히 오른 뒤에만 켠다"는 원칙을 그대로 코드로 옮긴 것이다.
- 트레일링 청산
- 54건 → 0건
- 승률
- 30.2% → 84.2%
- 평균 손익
- -0.213% → +0.382%
- 점검 시점
- 패치 다음 날
패치 다음 날 같은 기준으로 비교한 중간 점검에서 트레일링 청산은 0건이 됐고, 승률은 30.2%에서 84.2%로, 건당 평균 손익은 -0.213%에서 +0.382%로 바뀌었다. 다만 패치 직후의 짧은 구간이라 표본이 작다는 점은 감안해야 한다. 이 숫자는 "문제가 된 청산 경로를 막자 손실의 원천이 사라졌다"는 방향을 보여줄 뿐, 이후의 장기 성적을 보장하는 값은 아니다.
같은 사고는 한 번 더 일어났다
이 이야기에는 뒷부분이 있다. 8월 하순, 6월 29일에 넣었던 활성화 조건이 어느 시점에 코드에서 사라져 있었던 것이 확인됐다. 조건이 없던 구간의 트레일링 청산 11건은 전부 손실로 끝났고, 평균 -0.788%였다. 6월과 같은 모양이었다. 정확히 언제 사라졌는지는 그 무렵 변경 기록이 비어 있어 확인할 수 없었다. 8월 24일 조건을 복원했고, 지금은 다시 활성 상태다.
백테스트와 실전 사이의 간극
트레일링 스탑은 백테스트와 실전의 차이가 특히 잘 드러나는 로직이다. 백테스트는 캔들이 확정된 뒤의 가격으로 발동 여부를 판단하는 경우가 많지만, 실전 봇은 짧은 주기로 실시간 가격을 감시하기 때문에 캔들 안의 순간적인 급락에도 발동할 수 있다. 같은 로직이라도 판단 주기에 따라 실제 청산 빈도가 크게 달라지므로, 백테스트에서 좋아 보였던 설정을 실전에 옮기기 전에 이 차이를 반드시 감안해야 한다.
정리
- 트레일링 스탑의 기준은 진입가가 아니라 보유 중 도달한 최고가다.
- 최고가가 진입가 근처에 머문 포지션에서는 트레일링이 이익 보호가 아니라 두 번째 손절이 된다.
- 그래서 일정 수준 이상 수익이 난 뒤에만 켜는 활성화 조건이 필요하다.
- 코인랩 봇은 이 조건이 없던 일주일 동안 트레일링 54건으로 -38.71%p를 잃었고, 조건을 넣은 뒤 이 경로의 손실이 멈췄다.
- 고친 안전 조건도 조용히 사라질 수 있다. 청산 사유별 성적을 계속 쪼개 봐야 한다.
- 07 · 손절매의 종류
- 08 · 트레일링 스탑이란 무엇인가 — 지금 글
- 09 · 손익비(Profit Factor) 개념
- 10 · 포지션 사이징 전략
본 글은 코인랩의 자동매매 시스템을 운영하며 겪은 트레일링 스탑 관련 문제와 그 기록을 정리한 교육용 콘텐츠입니다. 실측 수치는 코인랩 봇의 실거래 로그와 변경 기록에서 집계한 값이며, 특정 전략의 수익을 보장하지 않습니다. 특정 종목이나 매매를 권유하는 내용이 아니며, 모든 투자 판단과 책임은 본인에게 있습니다.
댓글목록
등록된 댓글이 없습니다.