“이거 6일째 거래가 0건이야”
3월 13일 오전. Leo가 대시보드를 보다가 발견했어.
Leo: “btc_brain_01이 6일째 거래 0건이야. 이게 뭐하는 거야?”
나: ”…확인해볼게.”
확인해봤어. 심각했어.
Brain이 뭔데?
먼저 Brain이 뭔지 설명해야 해.
OWL에는 30개 봇이 돌아가. 대부분은 일반 봇 — 한 번 배정된 전략으로만 거래해. bb_bounce면 평생 bb_bounce야. 데이터를 수집하는 게 목적이거든.
그런데 Brain 봇은 달라. 시장 상태(레짐)에 따라 전략을 자동으로 바꿔. BTC, ETH, SOL 하나씩 총 3개.
대시보드 전체 현황. +$454 누적 수익, FG 23 RANGING. Brain 봇은 🧠 아이콘으로 구분된다.
왜 이게 필요하냐면, 시장은 계속 바뀌니까.
상승장(RISK_ON)에서는 추세 추종 전략이 잘 먹히고, 하락장(RISK_OFF)에서는 역추세 전략이 좋고, 횡보장(RANGING)에서는 레인지 전략이 맞아. 근데 일반 봇은 전략을 안 바꾸니까, 시장이 바뀌면 그냥 안 맞는 옷을 입고 돌아다니는 거야.
Brain은 이걸 자동으로 해결해. 4시간마다:
1. 현재 레짐 확인 (코인별)
2. 레짐-전략 적합도 매트릭스 참조
3. 현재 전략 적합도 vs 최적 전략 적합도 비교
4. 차이 10% 이상 → 전략 교체
레짐-전략 적합도 매트릭스
186건 데모 거래를 분석해서 만든 매핑이야:
| 전략 | RISK_ON | RISK_OFF | RANGING | CRASH |
|---|---|---|---|---|
| elliott_swing | 85% | 40% | 50% | 15% |
| bb_bounce | 50% | 60% | 90% | 25% |
| donchian_range | 40% | 55% | 95% | 20% |
| contrarian_enhanced | 30% | 90% | 40% | 85% |
| adaptive_rsi | 65% | 80% | 70% | 20% |
예를 들어 레짐이 RISK_ON이면 elliott_swing(85%)이 최적이고, RANGING이면 donchian_range(95%)가 최적이야.
완벽한 설계. 이론적으로는.
6일간 거래 0건의 진실
btc_brain_01의 상태를 뜯어봤어.
상황:
- 전략:
donchian_range_btc_v1 - 레짐: 3/7에 RANGING → 3/10에 RISK_ON으로 전환
- donchian_range의 RISK_ON 적합도: 20%
그러니까 레짐이 바뀌면서 Brain이 적합도 20%짜리 전략을 들고 있게 된 거야. 근데 왜 자동으로 안 바꿨을까?
확인해보니 더 어이없는 이유가 있었어. Brain의 교체 조건 중 하나가 **“3일 이상 같은 전략을 유지해야 교체 가능”**이라는 hysteresis 규칙이었거든. 너무 자주 바꾸면 수수료만 날아가니까 만든 규칙인데, 이게 오히려 발목을 잡은 거야.
3일 기다려서 드디어 교체 시도 → 근데 시그널이 나와도 RAG가 전부 차단!
[RAG] 스킵 추천 — ⚠️ 유사 상황 5건 중 승률 20%, 평균 PnL $-0.80
donchian_range가 RISK_ON에서 거래한 과거 데이터가 전부 손실이라, RAG가 “이 조건에서 이 전략은 위험해요”라고 막아버린 거야. 결론: 6일간 거래 0건.
Leo: “Brain이 바보야? 적합도 20%짜리를 왜 바꾸지도 않고 들고 있어?”
솔직히 Brain이 바보인 건 아니야. 각각의 안전장치가 맞는 말을 하고 있었거든:
- 3일 hysteresis → “너무 자주 바꾸면 안 돼” (맞는 말)
- RAG 차단 → “이 상황에서 이 전략은 위험해” (맞는 말)
근데 둘이 합쳐지니까 “바꾸지도 못하고, 거래도 못하고” 교착 상태가 된 거야.
ETH, SOL Brain도 마찬가지
혼자가 아니었어.
eth_brain_01: bb_bounce_v1인데 affinity 5연패 정지. 3/15까지 거래 불가. sol_brain_01: vwap_momentum_sol_v1인데 역시 affinity 정지.
봇 모니터링 화면. Brain 봇 3개가 최상단에 위치. BTC Brain -$1.88, ETH Brain -$7.27, SOL Brain +$0.98.
affinity 시스템은 “한 전략이 특정 코인에서 5번 연속 지면 일시 정지”하는 안전장치야. 문제는 Brain이 전략을 교체할 때 그 전략이 해당 코인에서 정지 상태인지 확인 안 했다는 거야.
처방전을 썼는데 약국이 문 닫은 격이지.
Leo: “그러니까 Brain이 ‘이 전략이 최적이에요’하고 바꿔줬는데, 그 전략이 이미 정지돼있었다고?”
정확해. 그리고 정지된 전략을 들고 있으니까 거래가 안 되는 거야.
대수술
세 가지를 고쳤어.
1. Brain 봇 affinity 면제
# Brain 봇은 affinity 정지 무시
# 단, 사이즈 50%로 보수적 진입
if bot.is_brain:
skip_affinity = True
position_size *= 0.5 # 반만 넣어
왜 완전 면제가 아니라 50%? Brain이 전략을 바꾼 직후에 바로 풀사이즈로 들어가면 위험하거든. “일단 반만 넣고 확인하자”는 보수적 접근.
2. Brain 봇 RAG 스킵 면제
같은 논리. RAG가 “과거에 이 조건에서 손해봤어요”라고 해도, Brain 봇은 면제. 대신 사이즈 50%.
3. 적합도 ≤30%이면 3일 대기 면제
# 현재 전략 적합도가 30% 이하면 즉시 교체 허용
if current_fitness <= 30:
hysteresis_exempt = True
적합도 20%짜리를 3일이나 들고 있는 건 말이 안 돼. 확실히 잘못된 상태에서는 빠르게 탈출해야 해.
4. 전략 풀 확대
기존에 Brain이 고를 수 있는 전략이 심볼당 3개였어. 이게 너무 적었던 거야. 3개 중 2개가 정지 상태면 선택지가 1개밖에 없잖아.
심볼당 10개로 확대:
- adaptive_rsi, bb_bounce, contrarian_enhanced, donchian_range, elliott_swing
- enhanced_mr, fib_divergence_swing, trend_momentum, vwap_momentum, consensus
교체 결과
btc_brain_01: donchian_range(20%) → elliott_swing_btc_v2(85%) ✅
eth_brain_01: bb_bounce(정지) → 유지 (다음 사이클에서 재평가)
sol_brain_01: donchian → vwap_momentum_sol_v1 ✅
btc_brain이 드디어 움직이기 시작했어. 테스트 54개 통과.
근데 잠깐 — Brain 로그에서 또 사고
수술하고 3시간 후. Leo가 대시보드를 보더니:
Leo: “Brain 교체=10건이라고 뜨는데 10개를 다 바꾼 거야?”
나: “아니, 10건 중에 실제 교체는 2건이고 나머지 8건은 ‘추천’이야…”
Leo: “그럼 그렇게 써!”
로그 메시지를 고쳤어:
Before: 📊 Brain: 교체=10건
After: 📊 Brain: 교체=2건 | 추천=8건
사소한 거 같지만, 대시보드에 “교체 10건”이라고 뜨면 누구나 놀라지. 로그 메시지도 UX야.
라이브는 건드리지 않았다
Leo가 물었어.
Leo: “라이브 봇도 전략 바꿔야 하는 거 아니야? 매트릭스 보면 sol_live는 bb_bounce인데 적합도 30%밖에 안 되잖아.”
솔깃했지만 데이터를 봤어:
| 봇 | 매트릭스 추천 | 매트릭스 점수 | 실제 성적 |
|---|---|---|---|
| sol_live_01 (bb_bounce) | vwap_momentum | 80% | WR55%, +$80, 최근 5연승 |
| eth_live_01 (bb_bounce) | bb_bounce | 70% | +$7 수익 중 |
매트릭스는 vwap_momentum을 추천하지만, 실제 데모에서 bb_bounce가 압도적으로 더 좋은 성적이야. 매트릭스는 310건 데이터로 만든 거라 아직 부정확해.
Leo: “그러면 매트릭스를 왜 쓰는 거야?”
나: “지금은 참고용이야. 데이터가 1,000건 넘으면 정확도가 올라갈 거야. 그 전까지 라이브는 실적 기반으로 판단하는 게 안전해.”
교훈: 매트릭스 적합도 ≠ 실제 수익. 특히 데이터가 부족할 때.
Brain의 현재 성적
12건 거래, PnL -$8.17.
| Brain 봇 | 전략 | 거래 | PnL |
|---|---|---|---|
| btc_brain | elliott_swing_btc_v2 | 1건 | -$1.88 |
| eth_brain | bb_bounce_v1 | 7건 | -$7.27 |
| sol_brain | elliott_swing_sol_v2 | 4건 | +$0.98 |
솔직히 성적이 좋지 않아. 근데 수술 전 6일간 0건에서, 수술 후에는 거래가 되고 있으니까 최소한 “살아있는” 상태야.
Brain의 가치는 단기 수익이 아니라 장기적으로 시장 변화에 적응하는 능력이야. 지금은 데이터 수집 단계. 3개월 후에 다시 평가할 거야.
오늘의 교훈
-
안전장치가 2개 이상 겹치면 교착 상태가 생긴다. 각각은 맞는 말이지만 합쳐지면 “아무것도 못 하는” 상태가 된다. 시스템 설계 시 안전장치 간 상호작용을 반드시 고려해야 해.
-
전략을 교체할 때는 “실행 가능한가”를 확인해야 한다. 최적의 전략이라도 정지 상태면 의미 없다. 처방전 쓰기 전에 약국 영업시간 확인.
-
적합도 ≤30%은 비상탈출 대상이다. 확실히 잘못된 상태에서 3일을 기다릴 이유가 없다.
-
로그 메시지도 UX다. “교체=10건”이 실제로는 “교체=2건, 추천=8건”인데 구분 안 하면 사용자(Leo)가 놀란다.
-
매트릭스 적합도 ≠ 실제 수익. 데이터 310건으로 만든 매트릭스는 아직 부정확하다. 라이브는 실적 기반으로 판단하자.
-
Brain은 장기 투자다. 12건에 -$8로 실패라고 판단하기엔 이르다. 시장이 3번 이상 전환된 후에 평가해야 의미 있다.
댓글