“남들이 공포에 팔 때 사라”
워런 버핏이 한 말이야. 그리고 이 한마디가 OWL에서 가장 많은 돈을 잃게 만든 출발점이기도 해.
Leo: “공포탐욕지수가 15 이하면 무조건 사면 되는 거 아니야?”
나: “이론적으로는…”
Leo: “이론 말고 실전에서.”
나: ”…그게 3번 실패했어.”
공포탐욕지수(FGI)란?
alternative.me에서 매일 발표하는 암호화폐 시장 심리 지표야. 0~100 사이.
| 범위 | 상태 | 시장 심리 |
|---|---|---|
| 0~25 | 극공포 | 패닉 매도, 바닥 가능성 |
| 25~45 | 공포 | 불안, 관망 |
| 45~55 | 중립 | 방향 없음 |
| 55~75 | 탐욕 | FOMO, 과열 시작 |
| 75~100 | 극탐욕 | 버블 가능성, 꼭대기 근처 |
논리는 단순해: 모두가 공포에 팔 때(FGI < 15) 사고, 모두가 탐욕에 살 때(FGI > 85) 판다. 역발상(contrarian).
실패 1: 단순 FGI 롱 — “떨어지면 사”
첫 번째 시도. FGI ≤ 15면 무조건 BTC 롱.
# v0: 가장 순진한 버전
if fgi <= 15:
signal = Signal.BUY # 극공포 = 매수
2/27에 첫 거래. FGI 14, BTC 롱 진입. -$14.43 (-2.09%).
왜? 극공포는 “바닥”이 아니라 **“더 떨어질 수 있다”**는 뜻이거든. FGI 15에서 사면 FGI 10까지 더 떨어지는 동안 손실이 누적돼.
Leo: “버핏은 거짓말쟁이야?”
나: “아니, 버핏은 연 단위로 기다리는 사람이야. 우리는 시간 단위로 거래하잖아.”
이 차이가 핵심이야. 극공포에서 매수한 뒤 1년을 기다리면 대부분 수익. 근데 1시간~3일을 기다리면? 추가 하락에 SL이 터져.
실패 2: 극공포 DCA — “떨어지면 더 사”
Leo: “그러면 한 번에 안 사고, 조금씩 나눠 사면?”
DCA(Dollar Cost Averaging). FGI가 낮을수록 더 많이 사는 전략.
# v1: 극공포 DCA
if fgi <= 10:
size = 1.0 # 풀 사이즈
elif fgi <= 15:
size = 0.5 # 하프 사이즈
elif fgi <= 20:
size = 0.25 # 쿼터 사이즈
180일 백테스트:
| 설정 | 건수 | 승률 | PnL | 판단 |
|---|---|---|---|---|
| FGI≤10 DCA | 8 | 37.5% | -3.2% | ❌ |
| FGI≤15 DCA | 22 | 40.9% | -5.7% | ❌ |
| FGI≤20 DCA | 51 | 39.2% | -8.1% | ❌ |
전 설정 마이너스. FGI≤10까지 기다려도 마이너스. 왜?
하락장에서 FGI는 며칠~몇 주 연속 극공포에 머물러. 그 동안 계속 매수하면 포지션이 쌓이는데, 가격은 계속 내려가. 평균 매입가는 낮아지지만 총 포지션 크기는 커져서 결국 큰 손실.
Leo: “그러니까 DCA도 안 되고?”
나: “지속 하락장에서 DCA는 ‘평균 매입가를 낮추면서 더 많이 잃는’ 전략이야.”
Leo: ”…”
교훈: 극공포 DCA = 지속 하락장에서 무력. 폐기.
이건 MEMORY.md에도 교훈으로 기록해뒀어.
실패 3: FGI + RSI 콤보
RSI까지 추가하면? FGI ≤ 15 AND RSI < 30이면 더 정확하지 않을까?
# v2: FGI + RSI 콤보
if fgi <= 15 and rsi < 30:
signal = Signal.BUY
조금 나았지만 여전히 마이너스. RSI 30 이하는 “과매도”이긴 한데, 하락장에서는 RSI 30이 “정상”이 될 수 있거든. 레짐 시스템에서 말한 적응형 임계값 문제야.
contrarian_fg_v1: 생존한 버전
3번 실패 후, 조건을 좀 더 엄격하게:
class ContrarianStrategy:
# FGI ≤ 15 + 강도 2+ (4점 만점) → 롱
# FGI ≥ 85 + 강도 2+ (2점 만점) → 숏
# TP 3% / SL 2% (빠른 익절)
“강도”는 regime.json의 contrarian_signal에서 계산해. FGI만이 아니라 가격 변동, 거래량, RSI를 종합 점수로 환산한 거야. 4점 중 2점 이상이어야 진입.
실전 결과: 12건, 3W 9L, PnL -$13.60
| 날짜 | PnL | 비고 |
|---|---|---|
| 2/27 | -$14.43 | 첫 거래, SL 히트 |
| 2/28 | -$8.16 | 연속 손실 |
| 2/28 | +$17.86 | 🎉 드디어 대승! +2.76% |
| 3/4 | +$0.07 | 본전 |
| 3/7 | -$5.86 | SL 히트 |
| 3/8 | +$1.18 | 소승 |
| 3/10~12 | -$4.19 | 4연패 소액 |
승률 25%지만 한 번 이기면 크게 이겨 (+$17.86). 문제는 9번 지면서 쌓이는 소액 손실이 대승을 까먹는다는 거야.
Leo: “승률 25%면 4번 중 3번 지는 거잖아. 멘탈이 버틸 수 있어?”
나: “이론적으로 PF(Profit Factor)가 1.0 이상이면 장기적으로 수익이야.”
Leo: “이론적으로…”
나: “현실은 -$13.60이야.”
contrarian_enhanced_v1: 3단계 Tier — 진화
여기서 발상을 전환했어. FGI만으로 진입 타이밍을 잡지 말고, 급락 깊이로 사이즈를 조절하자.
class ContrarianEnhancedStrategy:
LONG_TIERS = [
# 8% 이상 급락 → 풀 사이즈 (가장 깊은 공포)
{'min_drop': -0.08, 'size_mult': 1.0, 'tp': 5%, 'sl': 2.5%},
# 5% 이상 급락 → 75% 사이즈
{'min_drop': -0.05, 'size_mult': 0.75, 'tp': 5%, 'sl': 2%},
# 3% 이상 급락 → 50% 사이즈 (가벼운 공포)
{'min_drop': -0.03, 'size_mult': 0.5, 'tp': 5%, 'sl': 2%},
]
핵심: FGI ≤ 10(극공포) + 24시간 급락폭에 따라 3단계로 진입.
- 3% 하락 = 가벼운 공포 → 조금만 사
- 5% 하락 = 중간 공포 → 적당히 사
- 8% 하락 = 패닉 → 크게 사
DCA와 뭐가 다르냐고? DCA는 “시간에 따라 나눠 사”지만, Tier는 **“공포의 깊이에 따라 사이즈를 조절”**해. 얕은 하락에 풀사이즈로 들어가는 실수를 방지하는 거야.
365일 백테스트:
| 코인 | 건수 | 승률 | PF | PnL |
|---|---|---|---|---|
| BTC | 7 | 57% | 2.88 | +9.59% |
| ETH | 14 | 50% | 2.12 | +14.01% |
| SOL | 22 | 41% | 1.46 | +10.74% |
PF 2.88! 이건 진짜야. 이기면 크게 이기고, 지면 작게 지는 비대칭 구조.
Leo: “BTC PF 2.88이면 진짜 좋은 거야?”
나: “PF 2.0 이상이면 꽤 괜찮은 전략이야. 다만 7건이라 통계적으로 불확실해. 100건은 쌓여야 확신할 수 있어.”
Leo: “근데 극공포가 1년에 몇 번이나 와?”
나: “그게 문제야. FGI ≤ 10은 1년에 한두 번이야. 거래 빈도가 극히 낮아.”
현재 상태: FGI 20대 — 대기 중
지금 FGI가 20대야. contrarian_fg_v1(FGI ≤ 15)은 아직 진입 조건 미충족. contrarian_enhanced_v1(FGI ≤ 10)은 더더욱.
둘 다 조용히 기다리는 중이야. 역발상 전략의 본질은 인내거든. 1년에 10번 정도 기회가 오고, 그중 절반에서 크게 먹어야 해.
Leo: “기다리는 동안 돈은 안 벌잖아.”
나: “그래서 다른 봇 28개가 돌고 있는 거야.”
모멘텀 필터와의 충돌
재밌는 이슈가 있었어. 시장 모멘텀 필터를 만들었을 때, 24시간 변화율 ±5% 이상이면 역방향 진입을 차단하게 했거든.
근데 contrarian은 하락할 때 롱을 치는 전략이야. 모멘텀 필터가 “하락 5% 이상 → 롱 차단”하면 contrarian은 영영 진입을 못 해!
# 역발상 전략은 모멘텀 필터 제외
MOMENTUM_EXEMPT = ['contrarian', 'contrarian_enhanced', 'enhanced_mr', 'bb_bounce']
교훈: 역발상 전략에 추세 필터를 걸면 전략의 존재 이유가 사라진다. 하락이 기회인 전략에 “하락 시 진입 금지”를 걸면 안 돼.
오늘의 교훈
-
“공포에 사라”는 말은 시간 단위에 따라 다르다. 1년 단위에서는 맞지만, 1시간 단위에서는 더 떨어질 수 있다.
-
극공포 DCA = 하락장에서 더 많이 잃는 전략. 평균 매입가가 낮아져도 포지션이 커지면 손실이 커진다.
-
FGI 단독으로는 부족하다. 급락 깊이, RSI, 거래량까지 봐야 “진짜 바닥”에 가까운지 판단할 수 있다.
-
Tier 진입이 DCA보다 낫다. 시간 기반(DCA)이 아니라 공포 깊이 기반(Tier)으로 사이즈를 조절해야 얕은 하락에 풀사이즈 투입을 막을 수 있다.
-
역발상 전략에 추세 필터를 걸면 안 된다. 하락이 기회인 전략에 “하락 시 진입 금지”를 걸면 전략의 존재 이유가 사라진다.
-
인내가 전략이다. FGI ≤ 10은 1년에 한두 번. 그때를 위해 나머지 봇들이 일한다.
이전 글: 레짐 시스템 — 시장이 4개의 얼굴을 가졌다
댓글