백테스트 22패턴을 비교하여 「패배 패턴」을 특정한 이야기【데이트레이딩 봇 개발기 #5】
요약
본 기사는 백테스트 결과와 실전 트레이딩 간의 괴리 문제를 분석하고, 이를 개선하기 위한 구체적인 전략 수정 과정을 다루고 있습니다. 필자는 22가지 패턴을 비교 분석하여 저가주(500엔 미만), 급격한 거래량 증가 시점, 특정 RSI 구간 등에서 발생하는 손실 원인을 발견했습니다. 이러한 통찰을 바탕으로 거래량을 1.5~3.5배로 압축하고 가격대를 상향 조정하는 등의 개선을 거쳐, 거래 횟수를 줄이고 수익성을 크게 향상시킨 결과를 제시합니다.
핵심 포인트
- 백테스트 성적이 좋아도 실전과 유사한 조건(예: 다음 봉 시가 체결, 최대 포지션 제한)으로 재검증해야 한다.
- 저가주(500엔 미만)는 얇은 호가창과 큰 스프레드 때문에 트레이딩에 불리하며 피하는 것이 좋다.
- 거래량이 급증할 때 진입하는 것은 고점 매수가 될 위험이 크므로, 적정 수준의 거래량 증가를 활용하는 것이 효과적이다.
- 전략 개선의 핵심은 단순히 조건을 추가하는 것이 아니라, 손실을 유발하는 패턴(예: 10시 시간대, 특정 RSI 구간)을 '제외'하여 트레이딩의 질을 높이는 것이다.
「왜 지고 있는가」를 철저하게 조사했다
봇이 움직이기 시작하면서 깨달은 것이 있다.
백테스트 (Backtest) 성적이 좋아도, 실전과 유사한 조건으로 테스트하면 전혀 다른 결과가 나온다.
이번에는 그것을 조사하여 구체적인 개선책을 찾아낸 이야기를 쓰겠다.
⚠️ 투자는 자기 책임입니다. 이 기사는 특정 투자를 권장하는 것이 아닙니다.
백테스트의 「거짓말」을 발견했다
처음에 만든 백테스트(backtest_sliding.py)에서는 1.8년간 +326,800엔이라는 좋은 결과가 나오고 있었다.
하지만 자세히 보니 조건이 안일했다.
백테스트의 문제점:
1. 종목별로 독립하여 매매 → 실질적으로 무제한 포지션
2. 해당 봉의 종가로 엔트리 (Entry) → 실제로는 확인하고 나서 살 수 없음
...
실전과 유사한 조건(다음 봉의 시가로 체결·최대 2포지션·비용 고려)으로 다시 테스트하면:
현행 전략 (trend_follow_bold):
거래 수: 179회
승률: 47.5%
...
PF 0.88은 패배하는 전략이었다.
22패턴을 비교하여 원인을 특정
「무엇이 잘못되었는가」를 특정하기 위해, 엔트리 (Entry) 조건을 변경한 22패턴을 백테스트로 비교했다.
주요 발견:
① 500엔 미만 종목이 전손
<500엔대: 58거래 승률 41.4% PF 0.66 -6,446엔
500-999엔: 120거래 승률 50.0% PF 0.98 -652엔
500엔 미만 종목에서만 -6,446엔의 손실. 저가주는 호가창(板)이 얇고 스프레드 (Spread)가 크기 때문에 불리하다.
② 거래량 급증(1.5배 이상)이 역효과
거래량 < 1.5배: 35거래 승률 60.0% PF 1.38 +3,040엔 ← 좋음
거래량 1.5-1.9배: 55거래 승률 43.6% PF 0.65 -7,472엔 ← 최악
직관에 반하는 결과지만, 거래량이 급증하고 있을 때는 기관 투자자의 「출구 매도」가 겹쳐 있을 가능성이 있다.
③ RSI 55-64의 고점권이 약함
RSI 55-64: 60거래 승률 38.3% PF 0.64 -6,798엔 ← 최악
RSI 75 이상: 14거래 승률 64.3% PF 1.60 +1,780엔 ← 좋음
④ 오전 10시가 가장 약함
10시 대: 89거래 승률 44.9% PF 0.81 -6,171엔
13시 대: 19거래 승률 63.2% PF 2.71 +3,371엔
개선판 결과
이러한 발견을 바탕으로 최적의 조합(combined_volume_15_35)을 구현했다.
| 조건 | 변경 내용 |
|---|---|
| 거래량 | 1.3배 이상 → 1.5~3.5배로 압축 |
| 가격대 | 제한 없음 → 500엔 이상만 |
| 시간대 | 10:00~ → 11:00~ |
| 제외 종목 | 없음 → 손실 상위 10개 종목 제외 |
결과:
개선 후 (combined_volume_15_35):
거래 수: 72회 (179→72, 엄선)
승률: 56.9%
...
거래 수를 60% 줄이고, 손익을 +26,375엔 개선했다.
왜 「거래량 급증을 피하는 것」이 유효한가
직관적으로는 「거래량이 많다 = 주목받고 있다 = 움직이기 쉽다」라고 생각하기 쉽다.
하지만 실제로는:
거래량 급증 시나리오:
어떠한 뉴스나 재료가 나옴
→ 빠른 참여자가 매수
...
요컨대 거래량 급증을 보고 나서 진입하면, 뒤처진 후의 고점 매수가 되기 쉽다.
적당한 거래량 증가(1.5~3.5배)가 「지속적인 매수 의욕이 있다」는 신호로서 기능한다.
하이브리드 전략 v2 도 추가
동시에, 시장 환경을 자동 판정하는 전략도 개선했다.
구: SMA 기울기만으로 판정
신: SMA 기울기 + ADX(14)로 판정
ADX > 25: 추세 시장 (Trend Market) → 브레이크아웃 (Breakout)/눌림목 매수
...
나아가 익절 라인도 시장별로 변경:
추세: 고정 익절 없음 (트레일링 스탑 (Trailing Stop)으로 연장)
박스권 (Range): +1.0%에서 빠르게 확정 (기존 +1.5%에서 축소)
개선 성과 (1.8년 백테스트)
| 구분 | 개선 전 | 개선 후 |
|---|---|---|
| 50만 엔 플러스 기간 | 6/11 | 9/11 |
| 최근 ① (고변동성기) | 0엔 | +76,438엔 |
| 합계 손익 | +1,024,195엔 | +1,037,519엔 |
오늘 배운 것
- 백테스트 (Backtest) 조건이 느슨하면 수치는 좋게 나온다 → 실전과 유사한 조건으로 재검증이 필요
- 거래량 급증이 반드시 좋은 시그널은 아니다 → 적절한 증가(1.5~3.5배)가 최적
- 거래 횟수를 줄이고 질을 높이는 것이 더 유효함 → 72회 / PF 2.62 > 179회 / PF 0.88 **「무엇을 그만둘 것인가」의 발견이 퍼포먼스(Performance) 개선으로 직결되었다
다음 예고
#6 「실제로 움직이기 시작한 결과를 공개한다」
페이퍼 트레이딩 (Paper Trading)의 실제 데이터가 쌓였으므로, 실제 성적을 보고하겠습니다.
이전 글
📝 이 시리즈는 매주 업데이트될 예정입니다.
💬 감상 및 질문은 댓글로 남겨주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기