10일 공백 후 Sniper bot 27시간 재가동 — 같은 R:R 0.5 가 두 번째로 같은 답을 줬다
4/30 self-kill loop 사고 후 10일을 쉬었다. 5/10 재기동했고 27시간 만에 손으로 셧다운 했다. 그동안 봇은 48 sells / WR 50% / R:R 0.639 / 누적 -$1.94 를 찍었다. 4/7~4/30 의 sub-era A 데이터 (R:R 0.499 / EV -$0.039) 와 거의 동일. 작은 표본이 24일치 결론을 27시간 만에 재현한 셈이다. dream 이 surface 한 가설을 다음날 backtest 가 부정하는 첫 사이클도 돌았다. 반응형 블랙리스트 두 번 (币安人生 / OSMO) 추가했지만 사후 약방문이었다. V3.7.1 의 부고를 쓰고 V5.0 페이퍼로 넘어가는 일지.
같은 답이 두 번 — V3.7.1 의 부고
4/30 의 self-kill loop 이후 10일을 쉬었다. 5/10 21:31 재기동, 5/12 00:43 손으로 셧다운. 27시간 12분 동안 봇은 48 sells, WR 50%, R:R 0.639, 누적 -$1.94 를 찍었다. 그 27시간이 4/7~4/30 의 24일치 결론을 재현했다. 형이 봇 돌리다 손실 본 직후 글 쓰는 거 맞다. 이 글은 V3.7.1 의 부고다.
재기동 배경
4/30 사고 후 봇 코드 (V3.7.1) 는 손대지 않기로 결정했다. 손댈 거면 V5.0 빌드로 가는 게 정공법이고, V3.7.1 을 부분 패치하는 건 그 자체로 진단 데이터를 오염시킨다. 10일 공백 동안 한 일은 운영 메타 레이어 신설 — Tier 자율성 시스템, 4시간 healthcheck cron, weekly dream, daily journal. 봇 자체는 그대로 두고 "봇을 보는 시스템" 만 새로 깔았다.
5/10 21:31 재기동의 명시 가설은 단순했다 — sub-era A (4/7~4/30) 의 R:R 0.499 / EV -$0.039 가 시장 환경 자체에서 온 거라면, 같은 봇을 다시 돌렸을 때 같은 숫자가 다시 나와야 한다. 다시 안 나오면 그건 4월의 일시적 환경 문제고 봇은 정상이다. 다시 나오면 그건 봇 자체의 구조 문제고 V5.0 으로 가야 한다.
가설 검증 표본은 24일이 필요한 게 아니라 27시간으로 충분했다.
자율 monitoring v1 의 첫 작동
재기동 직후 자율 monitoring 레이어가 처음으로 진짜 trading 데이터에 노출됐다. 세 layer 가 동시에 돌았다.
Healthcheck (4h cron) — 첫 자동 점검 23:07 KST. 봇 정상, watcher 정상, PnL +$0.12. silent. 5/11 03:07 두 번째 점검도 silent. 봇이 정상 동작하는 동안 알림 0, 이게 의도된 정상 행동.
Daily journal (매일 08:03) — 5/11 08:03 첫 일지가 자동 생성됐다. 5/10 21:31~5/11 08:03 (약 10시간) 의 trade 12건, WR 58%, +$0.31. Telegram 으로 보고. 그때까지는 정상 신호.
Weekly dream (일 09:33) — 5/11 09:33 첫 dream pass. 누적 trade 14건을 grep + sub-agent 가 분석. dream 이 surface 한 가설: "시간대별 PnL 패턴이 있다. 00-05 KST = 양수, 07-10 KST = 음수." 표본 작지만 패턴이 보인다는 알림.
여기까지가 monitoring layer 의 첫 24시간. 시스템이 의도대로 도는 게 확인됐다.
Dream surface → backtest disprove
여기서 자율 시스템의 진짜 첫 사이클이 돌았다.
5/11 오후, dream 이 surface 한 "시간대 패턴" 가설을 backtest 로 검증했다. 24일치 sub-era A 데이터 + 27시간 신규 데이터를 합쳐서 시간대별 EV 를 Bonferroni 보정으로 다중 비교 (69 시간 슬롯 × 2 가설 = 138 tests). 통과한 슬롯: 0.
즉 dream 이 본 패턴은 27시간 작은 표본의 noise 였고, 24일 표본으로 늘리면 사라졌다. 이게 자가검증 루프의 첫 정상 사이클이다 — surface 된 가설을 다음 단계에서 부정하고 메모리에 "이 가설은 noise" 로 박는다. dream 만 있으면 잘못된 인사이트가 누적되지만, dream + backtest 가 같이 도니까 noise 가 걸러진다.
이걸 확인한 시점이 5/11 오후. 그 다음에 trading 자체가 무너지기 시작했다.
두 번째 24시간 — 첫 블랙리스트 두 번
5/11 trade 39건, WR 46%, -$1.57. 5/10 의 +$0.31 이 하루 만에 5배 손실로 뒤집혔다.
점심 무렵 币安人生 종목이 SL 을 4건 연속으로 찍었다. Tier 3 (사람 명시 승인) 결정으로 블랙리스트 추가. 저녁에는 OSMO 가 같은 패턴 — SL 5건, slippage 평균 3% 이상. 두 번째 블랙리스트 추가.
블랙리스트 두 번 추가하면서 깨달은 게 있다 — 반응형 블랙리스트는 사후 약방문이다. 종목 universe 가 매일 rotation 한다. 오늘 币安人生 / OSMO 를 빼도 내일 새 종목이 같은 패턴으로 등장한다. 종목 자체가 문제가 아니라 "이런 패턴의 종목을 진입 단계에서 거르는 필터" 가 없는 게 문제다.
이게 V3.7.1 의 구조적 결함의 첫 증거였다.
세 번째 24시간 — 43분 만에 같은 답
자정 reset 후 5/12 00:03 ~ 00:43, 43분 동안 SAGA 가 SL 을 2건 찍었다. -$0.67. 새로운 종목인데 같은 패턴 — entry 후 즉시 역행, slippage 동반, SL hit.
00:43 시점에 결정했다. 이건 noise 가 아니다. 24일 sub-era A 가 보여준 패턴이 27시간 짧은 윈도우에서 재현되고 있고, 자정 reset 으로 변수를 초기화해도 같은 답이 나온다. 한도 도달까지 기다리지 않고 손으로 셧다운.
봇 종료. watcher 종료. 5/12 00:43 KST 셧다운 확정.
두 audit 의 동일 결론
셧다운 직후 두 개의 독립 audit 을 돌렸다.
Audit 1 — code auditor: V3.7.1 의 5개 핵심 파라미터를 검사한 결과, R:R 0.5 는 mechanical consequence 다. 즉 이 파라미터 조합 위에서는 어떤 시장에서도 R:R 0.5 근방이 나올 수밖에 없다. 시장 탓이 아니라 봇 설계 탓.
Audit 2 — data analyst: 27시간 표본의 EV/trade 가 -$0.04. sub-era A (24일, 1000+ trade) 의 EV/trade -$0.039 와 사실상 동일. 표본 크기를 270배 줄였는데 결론이 같다 = 통계적으로 강한 신호.
두 audit 이 다른 angle 에서 같은 결론을 줬다: 단일 파라미터 fix 로 해결 안 된다. R:R 0.5 는 V3.7.1 의 구조에 박혀있고, 그 구조에서 빠져나오려면 V5.0 으로 재설계 해야 한다.
27시간 누적 데이터
재기동: 5/10 21:31 KST
셧다운: 5/12 00:43 KST
경과: 27시간 12분
총 sells: 48
WR: 50%
R:R: 0.639
누적 PnL: -$1.94
가장 큰 손실: OSMO 11 trades / -$1.02
그 안의 단일 trade: 19:31, slippage 6.85%, -$0.998
비교 — sub-era A (4/7~4/30, 24일):
WR: 47%
R:R: 0.499
EV/trade: -$0.039
27시간 EV/trade: -$0.040
R:R 가 0.499 → 0.639 로 약간 올라간 것처럼 보이지만 표본 48 의 신뢰 구간이 넓어서 의미 있는 차이가 아니다. EV/trade 가 -$0.039 → -$0.040 으로 거의 동일한 게 진짜 신호. 봇은 같은 일을 하고 있고, 같은 결과를 내고 있다.
셧다운 결정 + V5.0 가속
자율 monitoring 의 셧다운 트리거는 일일 손실 한도다. 5/12 00:43 시점에 한도 도달까지 여유가 있었다. 즉, 봇은 계속 돌 수 있었고 watcher 가 셧다운을 강제하지 않았다. 손으로 종료한 건 한도 의존이 아니라 "이건 noise 아니야" 결정에서 온 거다.
V3.7.1 의 부활은 없다. 27시간이 24일치 결론을 재현했고, 두 audit 이 같은 답을 줬다. 같은 봇을 한 번 더 돌려도 같은 답이 한 번 더 나온다는 게 합리적 가설.
다음은 V5.0. 5/12 06:13 (이 글 쓰는 시점 약 5시간 후) Phase 1 V5.0 WS 24h final report 가 cron 으로 fire 한다. 그 시점을 기점으로 V5.0 paper trading 72시간 검증으로 넘어간다. paper 결과가 V3.7.1 보다 명확히 우월하면 5/22 또는 그 이후 소액 라이브 결정.
이 3일에서 진짜 배운 것
-
작은 표본도 통계적 결론을 재확인할 수 있다 — 27시간 48 trade 가 24일 1000+ trade 와 동일한 EV 를 냈다. 가설 검증에 필요한 표본은 생각보다 작을 수 있다. 단 두 표본의 EV 가 같이 나와야 한다.
-
반응형 블랙리스트 < 예방형 회로차단기 — 종목별 사후 차단은 종목 rotation 으로 무효화된다. 진입 단계의 패턴 필터가 정답.
-
메타 운영 레이어가 봇 코드보다 important — 4/30 의 self-kill loop 는 봇 버그가 아니었다. 5/10~5/12 의 monitoring 시스템 (Tier / cron / Telegram) 이 V3.7.1 부고를 27시간 만에 쓰게 해줬다. 같은 monitoring 없이 돌렸으면 한도 도달까지 손실이 더 누적됐을 거다.
다음 일정
- 5/12 06:13 — Phase 1 V5.0 WS 24h final report cron fire
- 5/12~5/15 — V5.0 paper trading 72h 검증
- 5/22 또는 그 이후 — paper 결과 기반 소액 라이브 결정 (또는 추가 검증)
V3.7.1 은 셧다운, V5.0 은 paper. 자금 0 으로 데이터만 쌓는다.
Receipts, not promises.