최종 업데이트: 2026-09-21
이 글은 투자 조언이 아니에요. 제 봇의 규칙을 시뮬레이션으로 검증한 기록이고, 모든 수치는 백테스트 결과예요.
![]()
스퀴즈 모멘텀(Squeeze Momentum) 기본 규칙은 2024년 3월부터 2년치 4시간봉 백테스트에서 손실이었어요. 2026년 4월에 클로드코드(Claude Code)로 5단계 리서치를 돌려 규칙을 고쳤고, 학습에 쓰지 않은 검증 구간에서 BTC 는 6개월 검증 3회 평균 −12.5% 에서 +10.7%, ETH 는 −10.1% 에서 +15.1% 로 바뀌었어요. 바꾼 것은 두 가지예요. 진입에 “직전 봉 대비 변화량이 중앙값 이상” 필터를 달았고, 부분 익절 후 남은 물량에 1.5% 트레일링 스탑을 붙였어요. “4시간봉 마감 전 1시간 먼저 진입” 은 시험한 뒤 버렸어요.
이 글은 2편 스퀴즈 모멘텀 규칙의 후속이에요. 조건은 체결 다리당 수수료 7bp, 슬리피지 0, 부분 익절과 손절 포함이고, 수치는 전부 그 조건의 시뮬레이션이에요.
왜 백테스트를 다시 했나요?
봇을 한 달 돌린 뒤 거래 기록을 보니 약한 신호에서 자주 털린다는 느낌이 있었어요. 느낌으로 규칙을 바꾸면 다음 달에 또 바꾸게 돼요. 그래서 클로드코드에 “2년치 4시간봉으로 규칙을 검증하고, 개선안이 학습 안 한 구간에서도 통하는지 확인해 달라” 고 시켰어요. 결과는 리서치 폴더에 단계별 요약 문서 5개와 CSV 로 남았어요.
| 항목 | 조건 |
|---|---|
| 데이터 | BTCUSDT · ETHUSDT 4시간봉 + 1시간봉, 2024-03 ~ 2026-03 (2년, 심볼당 4,381봉) |
| 수수료 | 체결 다리당 7bp (왕복 14bp), 슬리피지 0 |
| 진입 규칙 | 스퀴즈 모멘텀 히스토그램 2번째 색 전환 + 1시간봉 확인 |
| 청산 규칙 | +3% 에 절반 익절, 손절 7% (뒤집기 진입은 4%), 반대 신호 시 청산 |
| 도구 | 클로드코드가 작성한 Python 시뮬레이터, 결과는 CSV + 마크다운 요약 |
리서치 5단계는 무엇을 물었나요?

단계마다 질문 하나만 던졌어요. 답이 YES 면 다음 단계로 가져가고 NO 면 버렸어요. 다섯 번 중 셋이 YES, 둘이 NO 예요.
1단계: 어떤 필터가 손실을 줄이나요? (필터 스윕)
봉 종가 진입, 반대 신호 종가 청산으로 2년을 통째로 돌렸어요. 기본 규칙은 BTC 에서 2년간 순수익률 −72% 였어요. 신호가 너무 자주 나오고 약한 신호까지 잡아서 수수료에 잠식된 결과예요.
히스토그램 높이 기준, 변화량 기준, 두 조건 결합 등 여러 필터를 걸어본 결과 “직전 봉 대비 변화량(Δ)이 학습 구간 중앙값 이상” 필터가 가장 크게 개선했어요. 히스토그램이 세게 꺾일 때가 실제 추세 전환이고, 살살 꺾일 때는 노이즈일 확률이 높아요.
2단계: 실제 봇처럼 돌려도 유지되나요? (현실 시뮬)
시뮬레이터에 부분 익절, 손절, 쿨다운을 전부 넣고, 같은 봉에서 손절과 익절이 둘 다 걸리면 손절을 먼저 치는 보수적 순서로 다시 돌렸어요. 필터 효과는 유지됐어요. 다만 2년 전체로 최적화한 숫자는 그 2년에만 맞을 수 있어서 3단계가 필요했어요.
3단계: 학습 안 한 구간에서도 통하나요? (워크포워드)

워크포워드(Walk-Forward)는 데이터를 시간순으로 잘라 앞 구간에서 규칙을 정하고 뒤 구간에서만 성적을 매기는 검증이에요. 6개월 학습 → 6개월 검증을 세 번 굴리고, 10개월 학습 → 15개월 검증(Big)을 한 번 더 했어요. 임계값은 학습 구간의 중앙값으로만 정했고 검증 구간은 보지 않았어요.
| 구간 | BTC 기본 규칙 | BTC 필터 적용 | ETH 기본 규칙 | ETH 필터 적용 |
|---|---|---|---|---|
| 6개월 검증 ×3 평균 | −12.5% | +10.7% | −10.1% | +15.1% |
| 15개월 검증 (Big) | −26.7% | +4.5% | −53.2% | +7.8% |
| 승률 (Big) | 48.3% | 50.8% | 48.8% | 51.4% |
| 최대 낙폭 (Big) | −63% | −33% | −87% | −26% |

위 그래프는 15개월 검증 구간의 누적 수익 곡선이에요. 회색이 기본 규칙, 주황이 필터 적용이고 같은 기간, 같은 데이터, 규칙 하나 차이예요. 두 가지를 더 확인했어요.
- 임계값이 구간마다 크게 흔들리면 과최적화 신호예요. 세 구간의 중앙값은 최대와 최소 비율이 1.3배 이내였어요.
- 세 구간 중 하나(2025년 4월~9월)는 BTC 가 필터를 달고도 손실이었어요. 필터는 손실을 줄이지만 없애지 않아요. 반년 정도의 손실 구간을 버틸 각오가 필요해요.
4단계: 1시간 먼저 진입하면 더 좋은가요? (조기진입, NO)
4시간봉 마감 전에 1시간봉 시점에서 미리 판단하면 진입이 평균 1.5~2시간 빨라졌지만 순수익률은 나빠졌어요. ETH 는 검증 평균이 +15% 에서 −6% 로 떨어졌어요. 마감 전 신호는 아직 확정되지 않은 신호라 저품질 진입이 섞여 들어와요. “두 시간 연속 같은 신호일 때만” 조건을 붙여도 마찬가지여서 채택하지 않았어요.
5단계: 청산은 어떻게 하는 게 좋은가요? (트레일링, YES)
진입은 3단계 규칙으로 고정하고 청산만 아홉 가지로 바꿔봤어요.
| 청산 방식 | BTC 검증 평균 변화 | ETH 검증 평균 변화 | 판정 |
|---|---|---|---|
| 부분 익절 후 1.5% 트레일링 | +7.4pp | +5.2pp | 채택 |
| 부분 익절 후 2.0% 트레일링 | +5.6pp | +6.6pp | 차점 |
| 1시간봉 반대 신호(필터 통과)에 청산 | −0.1pp | +7.6pp | 심볼 편차 커서 보류 |
| 1시간봉 색 반전에 무조건 청산 | −26.4pp | −30.5pp | 최악 |
결론은 “익절로 절반 챙긴 뒤, 남은 절반은 1시간 종가가 진입가 +1.5% 아래로 내려오면 정리” 예요. 4시간봉을 기다리는 것보다 이익을 덜 반납해요. 반대로 1시간봉 색이 바뀔 때마다 나가는 방식은 4시간 추세 안의 1시간 흔들림에 계속 털려 최악이었어요. 첫 번째 봉 진입과 두 번째 봉 진입도 비교했는데 첫 봉 진입이 BTC 에서 4.6pp 좋아 기존 규칙을 유지했어요.
최종 규칙: v3 에서 바뀐 5가지

# v3 에서 바뀐 규칙 5개 (스펙 문서 SQZ_V3.md 요약)
# (A) 진입 조건에 '변화량 필터' 추가 : 히스토그램이 얼마나 세게 움직였나
# BTC : |Δval| >= 198.25 (절대값, 학습 구간 중앙값)
# ETH : |Δval| / |prev_val| >= 13.94% (비율, 코인마다 스케일이 달라서)
if abs(delta) < threshold[symbol]:
return None # 신호는 떴지만 진입 안 함
# (B) 반대 신호가 떴을 때 : 필터를 통과 못 하면 '청산만', 뒤집기(reverse) 진입은 안 함
if opposite_signal and not passes_filter(opposite):
return Signal(exit_only=True)
# (C) 임계값은 6개월마다 학습 구간에서 다시 뽑는다 (고정값 금지)
# (D) 부분 익절(+3% 에 50%) 이후 : 1h 종가가 진입가 +1.5% 아래로 내려오면 나머지 청산
if partial_tp_done and close_1h < entry * (1 + 0.015):
return Signal(exit="trail")
# (E) BTC 가 상승 체제(Bull)면 신규 SHORT 진입 차단 (5/05, 라이브 표본에서 추가)
if btc_regime == "Bull" and side == "SHORT":
return Signal(exit_only=True)
- 변화량 필터: BTC 는 절대값 198.25 이상, ETH 는 직전 대비 13.94% 이상일 때만 진입. 히스토그램 스케일이 달라 기준 방식도 다르게 잡았어요.
- 뒤집기 차단: 반대 신호가 필터를 통과하지 못하면 청산만 하고 반대 방향 진입은 하지 않아요.
- 임계값 재도출: 6개월마다 학습 구간 중앙값으로 다시 계산해요. 고정값은 쓰지 않아요.
- 1.5% 트레일링: 부분 익절 후 남은 물량은 1시간 종가 기준으로 정리해요.
- 상승장 숏 차단: 백테스트가 아니라 라이브 한 달 기록에서 나왔어요. 롱 15건은 PF 3.05, 숏 19건은 PF 0.33 이라 BTC 가 상승 체제일 때 신규 숏을 막았어요.
이 규칙은 2026년 4월 24일 기능 플래그로 라이브에 올렸어요. 플래그 하나로 v2 로 되돌릴 수 있고, 첫 4일간 진입 3건과 필터 탈락 청산 3건이 규칙대로 기록되는 것을 로그로 확인했어요.
돈으로 환산하면 얼마인가요?
검증 구간 18개월, 예치금 1,000달러를 4트랜치(진입당 250달러)로 나눈 백테스트 조건이에요.
| 심볼 | 기본 규칙 | v3 규칙 | 연환산 |
|---|---|---|---|
| BTCUSDT | −94달러 | +80달러 | +5.3% |
| ETHUSDT | −76달러 | +113달러 | +7.5% |
큰돈이 아니에요. 이 리서치의 가치는 수익 숫자가 아니라 “손실 나는 규칙을 손실 안 나는 규칙으로 바꿨고, 그것이 학습 안 한 구간에서도 유지된다” 는 확인이에요.
배운 것 4가지와 한계
- 임계값은 학습 구간에서만 뽑아요. 2년 통째로 최적화한 숫자는 믿지 않고 검증 구간 성적만 봐요.
- 직관은 시험 대상이지 근거가 아니에요. “빨리 진입” 은 당연히 좋을 줄 알았는데 틀렸어요.
- 청산이 진입보다 개선폭이 컸어요. 진입 필터가 손실을 플러스로 바꿨다면 청산 방식은 그 플러스를 키웠어요.
- NO 도 결과예요. 안 넣은 규칙 두 개를 기록해 두면 같은 실험을 반복하지 않아요.
한계는 세 가지예요. 6개월 구간 세 번은 통계적으로 표본이 작아요. 슬리피지를 넣지 않았고 자금 규모가 커지면 달라져요. 검증 구간에 상승장 비중이 커서 하락장에서 같은 결과가 나올지는 더 봐야 해요. 워크포워드와 과최적화 개념은 Walk forward optimization (Wikipedia)과 Investopedia 의 Backtesting 설명을, 스퀴즈 모멘텀 지표는 LazyBear 의 TradingView 원본 스크립트를 참고하세요.
자주 묻는 질문
Q. 워크포워드 검증이 무엇인가요?
데이터를 시간순으로 잘라 앞 구간으로 규칙을 정하고 뒤 구간으로 시험하는 검증 방식이에요. 창을 한 칸씩 밀며 반복해요. 과거 전체에 맞춘 규칙이 미래에도 통하는지 보는 기본 방법이에요.
Q. 백테스트에서 플러스면 실계좌도 플러스인가요?
아니요. 백테스트는 슬리피지, 체결 실패, 거래소 장애, 운영자의 심리를 반영하지 않아요. 2편의 실계좌 결과와 이 글의 백테스트 수치가 다른 이유예요. 백테스트는 규칙이 틀리지 않았는지 확인하는 도구예요.
Q. 클로드코드가 백테스트를 전부 작성했나요?
시뮬레이터 코드, 단계별 실행, CSV 와 요약 문서 작성까지 클로드코드가 했어요. 제가 한 것은 질문을 정하고, 결과를 보고 다음 질문을 정하고, 최종 규칙을 라이브에 올릴지 결정한 일이에요.
Q. 필터 임계값은 왜 BTC 와 ETH 가 다른가요?
히스토그램 값의 스케일이 달라요. BTC 는 절대값이 크고 ETH 는 작아서, BTC 는 절대값 기준, ETH 는 직전 대비 비율 기준이 각각 더 안정적이었어요.
Q. 이 규칙으로 지금도 봇이 돌고 있나요?
지금은 멈춰 있어요. 멈춘 이유와 재개 조건은 이 시리즈 7편에서 정리해요.
함께 보면 좋은 글
- 클로드코드 자동매매 봇 (1) 세팅과 안전장치
- 클로드코드 자동매매 봇 (2) 스퀴즈 모멘텀 규칙 5가지와 한 달 실계좌 결과
- 클로드코드 자동매매 봇 (3) AI 가 차트를 직접 읽는 단타 봇
출처: 제 리서치 폴더의 단계별 요약 문서 5개(2026년 4월 작성)와 검증 구간 누적 수익 CSV. 데이터는 거래소 4시간봉·1시간봉 2024-03~2026-03. 투자 조언이 아니에요. 다음 편은 봇을 운영하며 낸 사고 4건과 그때마다 정한 운영 원칙이에요.

Leave a Reply