AI로 자동매매 봇 만들기: 3주간 검증이 수익을 지운 기록
하루 1,000원 버는 자동매매 봇을 만들다 3주간 겪은 전 과정 — 무엇을 검증했어야 했고, 어떤 의사결정을 했으며, 왜 +13.84%가 거짓이었는지. 성공담이 아닌 기각의 기록.
이 글은 클로드코드로 3주간 자동매매 봇을 만든 전 과정의 회고다. 코드 자랑이 아니라 무엇을 검증했어야 했고, 어떤 가설이 기각됐으며, 어떤 의사결정을 왜 내렸는지의 기록이다. 같은 걸 만들려는 사람에게 “이 순서로 의심하라”를 남기려 한다.
1. What — 무엇을 만들려 했나
시작은 한 문장이었다.
“실시간으로 단타를 진행해서, 시장환경·국제정세·사회이슈·SNS를 모두 판단해 하루 천원의 수익(수수료 제외)을 만들어줘.”
깔끔한 목표처럼 보이지만, 이 문장에는 나중에 전부 부딪히게 될 함정이 숨어 있었다. “하루 천원”은 전략의 목표가 아니라 [엣지 % × 시드]의 산수였고, “실시간 판단”은 검증 불가능한 영역을 포함했으며, “SNS 판단”은 API 키 없이 시작해야 했다.
3주 뒤 이 목표는 사용자와의 재계약으로 바뀐다: “하루 1,000원이 안 돼도 되니, 꾸준한 플러스를 내라.” 왜 목표가 바뀌었는지가 이 글의 핵심이다.
🧭 기획자·사업자라면 고객이 준 목표 문장을 그대로 스펙으로 받으면 안 된다. “하루 천원”처럼 명확해 보이는 KPI일수록 그 안의 숨은 가정(자본 규모, 검증 가능성, 데이터 접근성)을 먼저 분해해야 한다. 분해 없이 착수하면 3주 뒤 “목표를 못 지킨 게 아니라 목표가 틀렸다”를 발견한다.
2. 액션 아이템 — 무엇을 만들었나
목표를 시스템으로 옮기며 만든 것들이다.
- 멀티시그널 판단기: 시장환경(BTC 추세 + VIX·환율), 국제정세(글로벌 뉴스 RSS), SNS(공포탐욕지수 — API 키 없이 소셜 심리의 무료 프록시), 이 넷을
risk_on종합점수로 묶었다. - 두 개의 매매 엔진: 코인은 공포탐욕지수 밴드 게이트, 주식은 VIX 게이트 스윙.
- 데이터 4계층: 매매 장부 + 판단 스냅샷(왜 샀/안 샀나) + 5분봉 아카이브(거래소가 10일 뒤 삭제하는 데이터) + LLM 이벤트 해석 로그.
- 무인 이중화 러너: 윈도우 노트북이 5분 주기 주 러너, GitHub Actions가 폴백.
여기까지는 “만들었다”의 목록이다. 문제는 이 중 무엇도 “돈을 번다”를 증명하지 못했다는 것이었다.
3. 무엇을 검증했어야 했나 — 이 프로젝트의 진짜 심장
가장 중요한 섹션이다. 자동매매에서 코드보다 백 배 중요한 건 “이 숫자를 믿어도 되나”다.
거짓 수익이 만들어지는 3단계
주식을 백테스트에 추가했더니 합산 +13.84%가 나왔다. 축하할 뻔했다. 그런데 검증을 하나씩 조이자 이 숫자가 녹아내렸다.
- 날짜 정렬 결함: 모든 종목을 “바 인덱스 t”로 동시 처리하고 있었다. 코인은 연 365바, 주식은 연 250바다. 즉 BTC의 100번째 날과 삼성전자의 100번째 날이 서로 다른 날짜였다. 시뮬레이션 시계를 실제 거래일로 맞추자 +13.84% → +7.71%.
- 다음날 시가 체결: “종가 신호를 보고 그 종가에 즉시 산다”고 가정하고 있었다(look-ahead). 현실은 종가를 보고 다음날 시가에 산다. 밤사이 갭을 반영하자 또 떨어졌다.
- 데이터 소스 교체: 공짜 Yahoo 데이터가 실제 거래소(빗썸)보다 1.4%p 낙관적이었다. 운영 거래소 데이터로 바꾸자 코인 단독 +2.81%.
그리고 결정타: OOS(out-of-sample)
전체 기간이 플러스여도 소용없었다. 뒤쪽 30%(최근 2년)만 잘라서 다시 돌리자 −4%대로 붕괴했다.
1
2
3
split 2024-01 → IS +5.41% / OOS -4.34%
split 2024-07 → IS +6.02% / OOS -2.38%
split 2025-01 → IS +8.20% / OOS -4.75%
“전체 +2.81%”는 2022~23년의 잔상이었고, 현 전략은 최근 시장에서 엣지가 전무했다. 여기서 배운 원칙: 전체 기간 플러스는 아무것도 증명하지 않는다. 뒤쪽 30%를 잘라서 다시 보라.
3소스 교차 검증
살아남은 전략(주식 VIX 스윙)은 Yahoo·CBOE·KIS 세 개의 다른 데이터 소스에서 모두 같은 결론(9셀 OOS 전부 플러스)을 냈다. 소스 하나로는 못 믿는다. 세 소스가 같은 답을 줄 때 비로소 “믿어도 되는” 시점이다.
🧭 기획자·사업자라면 “백테스트 수익률 X%”를 보고받으면 딱 하나만 물어라: “뒤쪽 30%만 잘라도 그 숫자가 나오나요?” 안 나오면 그건 과거에 최적화된 환상이다. 데이터·분석에 투자하기 전, 검증 방법론에 먼저 투자하라 — 거짓 숫자 위에 내리는 결정은 전부 틀린다.
4. 어떤 의사결정들이 있었나
검증이 드러낸 사실 앞에서 내린 결정들이다.
- 게이트 완화 거부: 거래가 안 나온다고 진입 기준을 낮추자는 유혹이 있었다. 파라미터 36조합을 튜닝해봤지만 IS 상위 전부가 OOS에서 붕괴했다. 튜닝은 답이 아니다. 기각.
- 직감 규칙 제거: “공포에 사라”(극공포 역발상)는 그럴듯했지만 4개 구간 OOS 전부 마이너스였다. 심지어 이 지는 규칙이 봇에 이미 들어가 있었다. 제거.
- 시드 산수로 목표 재계약: 검증된 엣지(일 ~0.02%)로 하루 1,000원은 시드 50만에서 수학적으로 불가능(연 60% 필요). 전략을 과장하는 대신 산수를 정직하게 풀어 목표를 “꾸준한 플러스”로 재계약.
- 공식 데이터 소스 전환: “Yahoo는 국내 공신력이 없다”는 지적에 VIX는 CBOE 원본, 재무는 DART 공시, 환율은 한국은행 ECOS로 교체.
- 단일 운영으로 정리: 옛 시스템과 새 봇이 병행 가동돼 채널이 혼선됐다. 옛 시스템을 (삭제가 아니라) 비활성화해 되돌릴 수 있게 정리.
핵심은 모든 결정이 “데이터가 그렇게 말해서”였지 “그렇게 하고 싶어서”가 아니었다는 것이다.
5. 어떻게 진행시켰나 — 기각 5, 생존 2
3주의 결과를 한 줄로: 가설 5개를 기각하고 2개를 살렸다.
- ❌ 기각: 단순 기술 단타 · 극공포 역발상 · 게이트 파라미터 튜닝 · crypto-공포탐욕 주식 적용 · Yahoo 데이터 신뢰
- ✅ 생존: 코인 공포탐욕 밴드 게이트(35~75) · 주식 VIX 스윙(≤18)
살아남은 둘만 봇에 실렸다. 기각이 진전이다 — 안 되는 걸 돈 잃기 전에 확인하는 게 검증의 목적이니까.
6. 현재 상태 — 시스템은 완성, 증명은 진행 중
- 시스템: 완성·배포·자율가동. 윈도우 5분 러너 + Actions 폴백(주 러너가 죽은 밤, 폴백이 실제로 밤을 지킨 걸 커밋 타임존으로 확인했다).
- 첫 매매: 이틀간 관망만 하던 봇이 반등 첫 아침 3분 만에 셀트리온·기아를 샀다. 관망과 진입은 같은 규칙의 양면이었다.
- 전방검증: 0/20거래일. 실자금 전환 게이트(모의 20거래일 · 일평균 ≥ +100원 · MDD ≤ −3%)를 향해 실측이 쌓이는 중.
- 자동 판정: 매일 아침 07시 AI가 게이트 진행률을 텔레그램으로 통보. 20일이 차면 통과/미달이 사람 없이 결론난다.
정직하게: “하루 수익”은 아직 입증되지 않았다. 그건 20거래일의 시장 시간이 만드는 것이지 코드가 앞당길 수 있는 게 아니다.
7. 앞으로 무엇을 보고, 무엇을 결정하나
- 본다: 매일 두 리포트(봇 결산 + AI 분석). 게이트 진행률 N/20, 일평균, 최대낙폭.
- 결정한다: 20거래일 뒤 게이트 통과 시 → 실자금 소액(주식 30만/코인 20만) 전환 논의. 미달 시 → 데이터 기반 교정.
- 원칙: 증명이 먼저, 투자는 그다음. 검증 없는 규칙 변경은 금지.
🧭 기획자·사업자라면 “언제 실투자로 전환할지”를 감이 아니라 숫자 게이트(20거래일·일평균·최대낙폭)로 미리 계약해 두면, 나중에 좋아 보이는 날의 충동이나 안 좋은 날의 공포에 휘둘리지 않는다. 전환 기준을 착수 시점에 못 박는 것 자체가 리스크 관리다.
더 깊이 — 트러블슈팅 상세
이 여정에서 각각 독립된 글로 풀어낸 기술적 함정들이다. 같은 증상으로 검색해 들어온다면 여기서 재현 가능한 해결을 볼 수 있다.
- 멀티에셋 백테스트가 수익률을 뻥튀기하는 이유 — 바 인덱스 정렬 함정 : +13.84%의 절반이 왜 버그였나
- GitHub Actions cron이 예약대로 안 도는 이유와 상주 러너 이중화 : 하루 11회 예정 → 1회 실행
- Yahoo quoteSummary 401로 재무 데이터가 죽었을 때 — DART API로 교체 : 있는데 효과 없는 좀비 피처
- 재무 필터가 우량 은행을 걸러낼 때 — 부채비율 대신 계정 구조로 판별 : 카카오뱅크 오탐 사건
정리
- 검증을 조일수록 수익은 줄어든다 — +13.84%가 검증 3단계 만에 사라졌다. 이건 나쁜 게 아니라 정직해지는 과정이다.
- 전체 기간 플러스는 증명이 아니다 — 뒤쪽 30%(OOS)를 잘라 다시 보라. 소스 3개가 같은 답을 줄 때 믿어라.
- “하루 N원”은 전략이 아니라 산수다 — 목표가 안 나오면 전략을 과장하지 말고 자본 규모를 재계산하라. 그리고 증명 전엔 실자금을 넣지 마라.

