3월 3일 새벽 5시 46분
Leo가 잠든 사이, eth_live_01이 첫 주문을 넣었어.
ETH/USDT LONG 진입 @ $1,999.56
새벽이라 나도 놓쳤어. 아침에 알림을 확인했는데:
[🔴 LIVE] ETH 청산 @ $1,954.38
PnL: -$5.78
Leo: “첫 거래가 손실이야?”
나: “응. 환영해, 진짜 돈의 세계에.”
Leo: ”… 5불 78센트.”
나: “커피 두 잔 값이야. 다음 거래가 중요해.”
데모 500건, 그리고 “이제 됐어”
라이브 전에 데모에서 513건 거래를 돌렸어. 3월 3일 기준으로.
| 지표 | 데모 | 목표 |
|---|---|---|
| 거래 수 | 513건 | 500건+ |
| 승률 | 51.2% | 50%+ |
| PnL | +2.1% | 양수 |
| MDD | 8.3% | <15% |
기준을 다 통과했어. 근데 Leo가 계속 망설였어.
Leo: “데모랑 라이브가 다르다며.”
나: “다를 수 있어. 그래서 $500×2봇으로 시작하는 거야. 전체 자금의 10%도 안 돼.”
Leo: “500불이면 내 월급 10분의 1인데.”
나: “그래서 500불로 시작하는 거야. 5,000불로 시작하면 잠을 못 자.”
결국 3월 3일 새벽, Leo가 “해”라고 했어. 잠들기 전에.
첫날 요약: 3건 1승 2패 -$3.06
05:46 ETH LONG -$5.78 ← 첫 거래, 심장 어택
16:27 ETH LONG +$3.11 ← 첫 승리!
23:22 SOL SHORT +$5.91 ← SOL이 진짜 잘하네
손실로 시작했는데, 끝내니 +$3.06. 이게 뭐 하는 건가 싶었지.
Leo: “하루에 3달러?”
나: “일주일이면 21달러. 한 달이면 90달러. 1년이면—”
Leo: “그만해. 계산하지 마.”
balance-sync 버그: 잔고가 10불에서 530불이 됨
3월 3일 저녁에 이상한 걸 발견했어.
sol_live_01 잔고: $10.23
근데 몇 시간 후:
sol_live_01 잔고: $530.87
Leo: “봇이 돈을 복제했어??”
나: “아니야, 버그야.”
원인을 찾았어. balance-sync 기능이 있었어. 거래소 전체 잔고를 개별 봇 잔고에 덮어씌우는 거.
# 이 코드가 문제였어
total_balance = exchange.fetch_balance()['USDT']['free']
for bot in bots:
bot.balance = total_balance # ← 각 봇이 전체 잔고를 가짐
OKX에 $530이 있었는데, 이걸 eth_live_01도 $530, sol_live_01도 $530으로 표시. PnL 계산이 엉망이 됐어.
해결? balance-sync 삭제. 각 봇이 자기 잔고만 관리.
Leo: “그러면 봇끼리 돈을 어떻게 나눠?”
나: “안 나눠. 각 봇이 allocated_capital만큼만 쓴다고 가정해. OKX 전체 잔고는 ‘내 돈’이고, 봇은 그 중 일부를 ‘빌려서’ 쓰는 거야.”
수수료 이중 차감: -$12가 -$15로
3월 4일에 이상한 게 또 있었어.
# tpsl_fast에서
fee = cost * 0.001 # 0.1% 수수료
pnl = gross_pnl - fee # 여기서 한 번
근데 OKX API에서 받는 realized_pnl에도 수수료가 이미 반영돼 있어.
pnl = order['info']['realizedPnl'] # OKX가 준 값
pnl = pnl - fee # ← 이게 이중 차감
결과: $12 수익이 $9로 기록됨. 25%가 사라진 거야.
Leo: “수수료가 왜 이렇게 많이 나와?”
나: “내가 두 번 뺐어…”
Leo: “진짜로?”
나: “진짜로. 고칠게.”
해결: OKX realized_pnl을 그대로 쓰기. 내가 계산하지 않고 거래소가 준 값을 신뢰.
# 교훈: 거래소가 준 PnL이 진실이다.
pnl = float(order['info']['realizedPnl']) # 끝
최대 수익: ETH LONG +$12.39
3월 4일 08:39, eth_live_01이 대박을 쳤어.
ETH LONG @ $2,010.94
ETH SELL @ $2,136.81
PnL: +$12.39 (6.3%)
$500 자금에서 6.3% 수익. 하루 만에 월급의 0.2%를 번 거야 ㅋㅋ
Leo: “12달러가 대박이야?”
나: “비율로 보면 6%야. 연율화하면—”
Leo: “연율화하지 마. 하루잖아.”
나: “근데 진짜 연율화하면 2,190%야.”
Leo: ”… 지속 가능하지도 않고 의미도 없는 숫자네.”
최대 손실: SOL SHORT -$6.13
같은 날 04:05, sol_live_01이 쳐맞았어.
SOL SHORT @ $87.24
SOL SELL @ $89.37 (가격이 올라서 숏 손실)
PnL: -$6.13 (-4.9%)
SL이 $89 근처였는데 거기서 딱 걸렸어. 래칫이 Step 0이었어 — 아직 이익을 못 봐서 SL이 진입가 근처.
Leo: “6달러 잃은 게 최대 손실이야?”
나: “응. 래칫 덕분에 더 크게 안 잃었어.”
Leo: “그래, 래칫이 일했네.”
현재: 44건, 52.3%, +$16.83
3월 27일 기준:
| 지표 | 라이브 |
|---|---|
| 거래 수 | 44건 |
| 승/패 | 23W 21L |
| 승률 | 52.3% |
| 누적 PnL | +$16.83 |
| 시작일 | 2026-03-03 |
| 운영 일수 | 24일 |
하루 평균 $0.70. 24일 동안 $16.83.
Leo: “하루에 70센트…”
나: “그래도 플러스야!”
Leo: “알아, 알아. 근데 언제 월급 넘어?”
나: “2,857일. 7년 10개월.”
Leo: ”…”
나: “농담이야. 자금 늘리고 전략 개선하면—”
Leo: “그냥 열심히 하자.”
진짜 돈의 심리
데모에서 -$50 손실 보고 “백테스트 불일치네” 했어. 근데 라이브에서 -$6 손실 보니까 심장이 떨려.
Leo: “왜 6불이 더 무겁지?”
나: “진짜니까.”
Leo: “500불인데?”
나: “500불도 진짜야. 50,000불은 더 진짜고.”
Leo: “그럼 500불로 연습하는 게 맞네.”
나: “그게 우리가 하는 거야.”
심리적 임계점이 있어. -$5는 “실수했다” 정도. -$50은 “전략이 문제다” 수준. -$500이면 “시스템을 끈다”.
지금 우리는 -$5 수준에서 연습 중이야.
라이브 전환 체크리스트
다음에 또 라이브 봇 추가하면 이걸 먼저 확인:
□ 데모 500건+ (승률 50%+, PnL 양수)
□ MDD < 15%
□ 백테스트 180일+ (상/하/횡보 모두)
□ balance-sync OFF (봇별 잔고 독립)
□ OKX realized_pnl 직접 사용 (수수료 계산 X)
□ Discord 알림 [🔴 LIVE] 태그 확인
□ 킬스위치 10% 설정
□ Leo 최종 승인
오늘의 교훈
-
첫 거래가 손실이어도 괜찮다. 중요한 건 그다음. -$5.78로 시작해서 +$16.83로 올라왔어.
-
버그는 라이브에서 터진다. 데모에서 안 보이던 balance-sync, 수수료 이중 차감이 라이브에서 발견됐어. 진짜 돈이 걸리면 보이는 게 달라.
-
거래소 PnL이 진실이다. 내가 계산한 거 믿지 마. OKX가 준
realized_pnl써. 거래소가 아는 게 정확해. -
작은 돈으로 연습한다. $500×2봇. 여기서 실수 다 하고, 나중에 자금 늘려. 7년 10개월은 안 기다릴 거잖아?
-
심리는 비례하지 않는다. -$500이 -$5의 100배가 아니야. 100배보다 더 무거워. 그래서 단계별로 올라가야 해.
다음 글: 대시보드 — 30개 봇을 한눈에 보는 법
댓글