WILD_SNIPER — V3.3에서 V4.0까지의 진화
5개월 동안 V3.3에서 V4.0까지 18개 버전. 각 버전이 왜 만들어졌고, 무엇이 깨졌고, 어떻게 고쳐졌나.
봇 자체가 살아있는 시스템
WILD_SNIPER는 Binance 스팟 시장에서 변동성 큰 알트코인을 자동 진입·청산하는 Python 트레이딩 봇입니다. 시작은 단순한 돌파 전략이었지만, 5개월 동안 18개 버전을 거치면서 운영 안정성이 전략 자체보다 중요하다는 사실을 데이터로 배웠습니다.
V3.x 시리즈 — 안정화 패치들
각 SAFE-XX 패치는 운영 중에 발견된 진짜 문제 하나를 잡습니다.
| 패치 | 문제 | 해결 |
|---|---|---|
| SAFE-05 | 봇 죽으면 포지션이 고아(orphan)가 됨 | 시작 시 모든 미체결·고아 포지션 자동 정리 |
| SAFE-06 | FSM 상태 전이 race condition | IDLE/BUYING/HOLDING/SELLING/STUCK 상태 강제 직렬화 |
| SAFE-07 | API 재접속 시 포지션 동기화 누락 | 재접속 시 거래소 상태 = 봇 상태 강제 일치 |
| SAFE-10 | PID 락 파일이 SIGKILL 후 남아있어 재시작 차단 | 락 파일 stale 검증 + 자동 청소 |
| SAFE-15 | 손실 누적 심볼이 계속 거래됨 | 블랙리스트 임계 (5중3패 OR PnL -$1) |
| SAFE-18 | TP/SL 트리거 후 잔량 처리 오류 | 부분 체결 시나리오 명시적 처리 |
각 패치는 한 줄도 아니고 30~80줄짜리 변경입니다. 누적된 SAFE 시리즈가 V3.7.0 베이스라인을 만들었고, 이게 5개월 동안 가장 안정적인 버전이었습니다.
V3.7.0 — 라이브 67.5% 승률
V3.7.0의 라이브 거래 데이터:
| 지표 | 값 |
|---|---|
| 거래 수 | 418건 |
| 승률 | 67.5% |
| 평균 홀딩 | 1분 49초 |
| TP 평균 | +0.80% |
| SL 평균 | -1.29% |
| 누적 PnL | +$3.00 |
스캘핑 봇의 67.5% 승률은 카테고리 최상위 (공개 벤치마크 평균 55-65%). 그러나 R:R(Risk:Reward)이 거꾸로입니다 — TP 0.80% < SL 1.29%, ratio 0.62. 게다가 Binance 스팟 수수료가 기대값을 40-60% 먹는 구조였습니다.
V3.8.0 — 한 번에 5개 바꿔버린 실수
R:R을 고치려고 V3.8.0에서 한 번에 5개를 바꿨습니다:
- MIN_PROFIT 1.2 → 2.0
- Trail Activate 0.6 → 2.5
- Trail Callback 0.4 → 1.0
- SL ATR 1.5 → 1.0
- MAX_HOLD 900 → 1200
추가로 FEAT-11 본절가 대기 로직.
결과:
| 지표 | V3.7.0 | V3.8.0 |
|---|---|---|
| 승률 | 67.5% | 46.9% |
| 평균 홀딩 | 1분 49초 | 3분 18초 |
| TP 평균 | +0.80% | +1.96% |
| SL 평균 | -1.29% | -1.46% |
| 누적 PnL | +$3.00 | +$2.09 |
승률이 20pp 빠졌습니다. 5개를 동시에 바꿔서 어느 변경이 원인인지 분리 불가능. 백테스트 + walk-forward로 사후 분석한 결과 — 5개 중 어떤 조합이 R:R을 미세하게 개선했지만, 동시에 스캘핑 엣지를 깼습니다.
이때 배운 교훈: 한 번에 변수 하나만.
V3.9.x — 안전 패치 추가
V3.9.0V3.9.3은 V3.8.0 위에 SAFE-15SAFE-18 추가. 안전성은 좋아졌지만 V3.8.0의 깨진 엣지는 그대로:
| 버전 | 거래 | 승률 | PnL |
|---|---|---|---|
| V3.9.0 | 미수집 | 미수집 | 미수집 |
| V3.9.3 | 18 | 22.2% | -$0.38 |
V3.9.3 표본은 작지만, 22.2% 승률은 V3.7.0의 67.5%에서 본질적으로 멀어졌다는 증거.
V4.0/V4.1 — 복원 시도
V4.0 = V3.7.0 전략 복원 + V3.7.1 4개 방어 패치 + V3.9.x 안전 패치 선별 머지 (FEAT-11 제거, ADX 30→25, Volume 1.5→1.2 완화).
V4.1 = V4.0의 paper mode 검증 후 라이브.
V4.1 라이브 결과 (52건):
| 지표 | 값 |
|---|---|
| 거래 수 | 52건 |
| 승률 | 41.7% |
| 누적 PnL | -$5.02 |
표면적으로는 "또 깨짐". 하지만 심볼별 분해 결과:
- KAT/USDT: 60% 승률 (V3.7.0 베이스라인 근접)
- MOVR/USDT: 30% 승률, 단일 심볼이 손실 67% 책임
전략 엔진은 정상. 심볼 선택이 깨진 거였습니다.
V3.7.1 롤백 — 검증된 위치로 돌아가기
V4.1 보강하는 길과 V3.7.1로 회귀하는 길 두 갈래에서 회귀 선택.
이유:
- V4.1은 SAFE-XX 누적된 더 복잡한 버전. 어디까지 "전략 의도"고 어디부터 "심볼 노이즈"인지 분리 어려움
- 추가 보강 = 또 다른 패치 의존성 누적 = 다음 손실 시 원인 분리 더 어려워짐
- 검증된 베이스라인 위에서 V4.1에서 배운 한 가지(심볼 필터)만 다음 단계에 천천히 적용
V3.7.1 롤백 후 첫날 결과:
| 지표 | 값 |
|---|---|
| 거래 수 | 60건 |
| 승률 | 78.3% |
| 누적 PnL | +$1.98 |
| 잔고 | 625.36 → 627.28 USDT |
표본 작아서 78.3%는 길게 안 갈 가능성 큰데, 적어도 V4.1 우하향에서 우상향으로 회복은 명확. 자세한 영수증은 V3.7.1 롤백 첫날 포스트에.
5개월 정리
| 버전 | 거래 | 승률 | 누적 PnL | 주 변경 |
|---|---|---|---|---|
| V3.7.0 | 418 | 67.5% | +$3.00 | 안정화 베이스라인 |
| V3.8.0 | 다수 | 46.9% | +$2.09 | 5개 동시 변경 (실수) |
| V3.9.3 | 18 | 22.2% | -$0.38 | 안전 패치 + 깨진 엣지 |
| V4.1 | 52 | 41.7% | -$5.02 | 심볼 선택 missing |
| V3.7.1 (현재) | 60 | 78.3% | +$1.98 | 검증된 위치 회귀 |
교훈 정리
- 한 번에 변수 하나만. V3.8.0의 5개 동시 변경이 가장 큰 실수였습니다.
- 표면 평균이 거짓말함. V4.1의 41.7%는 단일 심볼이 67% 책임. 심볼별로 쪼개야 진짜 원인 보임.
- 검증된 코드 + 검증된 데이터 + 검증되지 않은 변경 1개. 새 변경은 한 번에 하나만.
- 운영 안정성이 전략보다 중요. SAFE 시리즈 18개가 진짜 가치였음.
- 롤백은 패배가 아니다. 검증된 위치로 돌아가는 게 빠른 길일 때가 많음.
다음
V3.7.1 베이스라인 데이터 200건 이상 확보 → 심볼 필터 PoC (MOVR 같은 변동성 과다 심볼 자동 제외) → V4.2 통합 (한 번에 변경 하나만).
크몽 런칭 피치도 이에 맞춰 재편 — "18 버그 고친 V3.9.3"이 아니라 "V3.7.0 수익성 + SAFE 시리즈 안정성을 결합한 봇"으로.
— Jack