터틀 백테스트가 -40%였다 — 필터 하나로 +82%가 되기까지
검증 조건
| 시장 | ETH/USDT 무기한 선물 |
|---|---|
| 기간 | V9.0은 3개월, V9.1·V9.2는 1년 |
| 대상 | ETH 단일 종목 |
| 규칙 | 터틀 N봉 돌파 진입, 2N(ATR×2) 손절, 10봉 반대 신호 청산. 버전별로 추세 필터를 더해가며 비교 |
| 비용 | 트레이딩뷰 백테스트 기본 설정, 슬리피지 미반영 |
코딩을 배운 적이 없다. 파인 스크립트가 뭔지도 몰랐다. 그런데 야간 근무를 하다 보니 새벽 차트를 손으로 보는 게 한계라, AI를 붙잡고 봇을 만들기 시작했다.
한 달 넘게 아홉 번을 갈아엎었다. 그 과정에서 배운 건 기법이 아니라 방향이었다.
지표를 더할수록 나빠졌고, 빼니까 좋아졌다.
지표를 계속 더하던 시기
V1부터 V7까지는 한 방향이었다. 신호가 부정확하면 지표를 하나 더 넣는다.
| 버전 | 넣은 것 | 그때 생각 | 실제 |
|---|---|---|---|
| V1 | EMA 120 추세추종 | “터틀 정신을 이식하자” | 신호가 너무 적어 답답했다 |
| V2 | 스토캐스틱 → Stoch RSI(1-1-100-100) | “잔파도에 안 흔들리는 묵직한 추세” | 횡보장에선 별 차이 없었다 |
| V3 | WAE(거래량 폭발) | “승률이 비약적으로 오를 것” | 백테스트를 안 돌리고 ’느낌상 좋다’고 만족했다 |
| V4~V5.4 | 다중 시간대 + 5캔들 메모리 | “확률 높은 자리에서만 진입” | 조건이 빡세져 신호가 거의 안 났다 |
| V5.5~V5.7 | 봉마감 확인 진입 | “꼬리 진입 버그 잡았다” | 일부는 잡혔지만 왜 신호가 안 뜨는지 이해 못 하는 날이 많았다 |
| V5.8~V5.9 | 알람에 진입·손절·익절가 전송 | “차트 안 봐도 된다” | 알람 따라 들어가면 손절나는 경우가 많았다 |
| V6.0 | 직전 마감봉 참조(리페인팅 대응) | “고질병 100% 박멸” | 줄긴 했지만 차트와 신호가 여전히 어긋났다 |
| V6.1 | 스마트 잠금 | “기관총 난사 해결” | 좋은 자리도 같이 놓쳤다 |
| V7.0~V7.1.8 | 망원경·현미경 하이브리드 엔진 | “마스터피스 완성” | — |
V7에서 만든 하이브리드 엔진은 꽤 자랑스러웠다. 장기 추세를 보는 망원경 SRSI(1-1-100-100)와 진입 시점을 잡는 현미경 SRSI(14-14-3-3)를 동시에 돌리는 구조였다. 그때 “최종 마스터피스”라고 글까지 썼다.
지금 보면 부끄럽다.
실전에서 터진 사고
문제는 백테스트가 아니라 실전에서 터졌다.
봇 내부의 가상 포지션과 거래소의 실제 포지션이 어긋났다. 의도하지 않은 포지션이 만들어졌고 손실이 났다. 액수는 작았다. 그런데 액수가 문제가 아니었다. 시스템 자체를 못 믿게 됐다.
그때 돌아봤다. 변수가 몇 개인가. 스토캐스틱, Stoch RSI, MACD, EMA, WAE… 코드를 열어도 내가 무슨 조건으로 진입하는지 설명할 수 없었다.
설명할 수 없는 시스템은 고칠 수도 없다.
방향을 반대로 돌렸다
복잡한 걸 버리고 터틀 트레이딩으로 갔다. 1980년대 리처드 데니스가 가르친 추세추종 규칙이고, 조건이 세 줄이다.
- 진입 — N봉 최고가 돌파하면 롱, 최저가 이탈하면 숏
- 손절 — 2N (ATR × 2)
- 청산 — 10봉 반대 신호
보조지표가 하나도 없다. “가격이 N봉 안에서 신고가를 만들면 그게 추세다”가 전부다.
V9.0 — 순수 터틀, 3개월
| 지표 | 값 |
|---|---|
| 순이익 | -40% (-$20.11) |
| 승률 | 22.86% |
| 수익지수 | 0.41 |
| 최대 자본 인하 | -47% |
충격이었다. 그 유명한 터틀이 -40%라니.
차트를 다시 봤더니 이유가 보였다. 그 3개월(2~5월) ETH는 횡보장이었다. 추세추종 시스템에 횡보장은 최악의 환경이다. 55봉 돌파로 진입 → 추세가 안 옴 → 2N 손절. 이걸 반복한 것이다.
봇이 잘못 작동한 게 아니라 시장이 안 맞았다. 이 둘을 구분하는 게 이번 검증의 핵심이었다.
V9.1 — 추세 필터, 1년
그렇다면 추세장에서만 진입하면 된다. 두 줄을 넣었다.
- ADX > 25 (추세 강도가 충분할 때만)
- 4시간봉 종가 > 4시간봉 EMA 50 (상위 시간대가 같은 방향일 때)
| 지표 | V9.0 | V9.1 |
|---|---|---|
| 순이익 | -40% | +65.75% |
| 승률 | 22.86% | 31.71% |
| 수익지수 | 0.41 | 1.285 |
| 평균 손익비 | 1.39 | 2.77 |
필터 두 줄로 손실 시스템이 수익 시스템이 됐다.
다만 안을 들여다보니 롱은 +$38인데 숏이 -$5였다. 방향에 따라 성적이 갈렸다.
V9.2 — 숏 조건 강화, 1년
숏에만 조건을 더 걸었다.
- 숏 ADX > 30 (롱보다 강한 추세를 요구)
- 4시간봉 EMA50 < EMA200 (장기 약세 확정)
| 지표 | V9.1 | V9.2 |
|---|---|---|
| 순이익 | +65.75% | +82.43% |
| 숏 거래 수 | 45건 | 19건 |
| 숏 손익 | -$5.27 | +$3.08 |
| 소티노 비율 | 1.05 | 1.76 |
거래를 절반 이하로 줄였는데 결과가 더 좋아졌다. 안 해도 되는 거래를 안 한 것이다.
이 검증의 한계
먼저 붙여야 할 단서들이다. 위 숫자를 그대로 믿으면 안 되는 이유다.
- ETH 한 종목이다. 다른 종목에서 같은 결과가 나온다는 근거가 없다.
- V9.0은 3개월, V9.1·V9.2는 1년이다. 기간이 달라서 -40% → +65%를 직접 비교하면 안 된다. 필터의 효과와 기간의 효과가 섞여 있다.
- 슬리피지가 반영되지 않았다. 실계좌 성적은 이보다 낮다.
- 1년은 짧다. 특히 추세추종은 몇 년에 한 번 오는 큰 추세로 먹는 전략이라, 1년 성적으로 판단하기 어렵다.
- 필터를 더할수록 과최적화 위험이 커진다. V9.2에서 숏 거래가 45건 → 19건으로 줄었다. 표본이 작아졌다는 뜻이기도 하다.
그리고 V1~V3 구간에는 더 큰 문제가 있었다. 백테스트를 안 돌리고 “느낌상 좋다”고 넘어갔다. 그 시기의 판단은 근거가 없었고, 지금 와서 검증할 수도 없다.
정리
얻은 것
- 지표를 더하는 방향은 자신감을 주지만 성과를 주지 않았다. V1~V7이 그 증거다.
- 진입 조건을 하나로 줄이고, 대신 진입할 시장 국면을 거르는 쪽이 통했다.
- 거래 횟수를 줄이는 게 성적을 올릴 때가 있다. V9.2가 그랬다.
아직 모르는 것
- 이 필터가 다른 종목·다른 기간에서도 통하는지
- 실계좌에서 비용을 물고도 남는지
- 1년 표본이 우연인지 아닌지
남긴 이유
-40%가 나온 V9.0을 지우지 않았다. 실패한 버전의 숫자가 남아 있어야 다음 버전이 왜 그렇게 바뀌었는지 설명이 된다. 되는 것만 적으면 그건 기록이 아니라 광고다.
댓글
댓글 쓰기