파이썬 코인 자동매매 봇 만들기 — 업비트 변동성 돌파 전략 + 백테스트 결과 공개
📋 목차
1. 왜 코인 자동매매인가
2. 변동성 돌파 전략이란
3. 백테스트 설계 (pyupbit + Python)
4. BTC 200일선 필터 추가 후 결과
5. 최종 수익률 및 주요 지표
6. 실전 봇 구조
1. 왜 코인 자동매매인가
주식 장투는 이미 하고 있다. 메인 포트폴리오를 건드리지 않고 24/7 돌아가는 부수입 채널을 만들고 싶었다. 코인은 주말에도 장이 열리고, 업비트 공식 API가 무료로 제공되며, 파이썬으로 자동화하기 쉽다.
직접 짜고 싶었다. 유료 솔루션 쓰면 블랙박스고 공부도 안 된다. Claude와 함께 바이브코딩으로 하루 만에 백테스터부터 실전 봇까지 완성했다.
2. 변동성 돌파 전략이란
래리 윌리엄스가 고안한 단기 트레이딩 전략이다. 로직은 단순하다.
volatility = prev_high - prev_low
target = today_open + volatility * K
# K = 0.75 (ETH 3년 백테스트 최적값)
if current_price >= target:
buy(ticker, invest_ratio=0.3) # 잔고의 30% 매수
변동성 계수. 0.5면 전날 변동폭의 50%를 더한 가격이 목표가. K가 클수록 진입 조건이 까다로워 거래 횟수가 줄고, 작을수록 자주 진입한다. 3년 데이터 최적화 결과 ETH에서 K=0.75가 가장 좋았다.
3. 백테스트 설계
pyupbit 라이브러리로 업비트 일봉 데이터를 무료로 가져올 수 있다. BTC, ETH, XRP, SOL, DOGE 5종목 대상으로 K값 0.1~0.9 전수 탐색했다.
pip install pyupbit pandas numpy matplotlib pyyaml
# 실행
python backtest.py # 기본 백테스트
python backtest.py --optimize # K값 최적화
python backtest.py --coins KRW-ETH # 특정 코인만
초기 결과 (필터 없음, K=0.5, 1년)
| 코인 | 수익률 | 승률 | MDD |
|---|---|---|---|
| KRW-BTC | -14.4% | 39.2% | -15.4% |
| KRW-ETH | -5.8% | 46.2% | -13.0% |
| KRW-XRP | -28.6% | 35.1% | -29.5% |
| KRW-SOL | -33.8% | 41.1% | -35.6% |
지난 1년(2024.3~2025.3)이 코인 전반적 하락장이었다. 변동성 돌파는 상승장 전략이라 이 구간이 불리하다. 하지만 BTC를 그냥 홀딩했어도 -10%였으니 전략이 일부 손실을 방어한 셈이다.
4. BTC 200일선 필터 추가 후 결과
하락장에서 손실을 막으려면 시장 국면 판단이 필요하다. BTC가 200일 이동평균선 위에 있을 때만 봇을 켜는 필터를 추가했다.
필터 적용 전후 비교 (1년, K=0.5)
| 코인 | 필터 없음 | 200일선 필터 | 개선 |
|---|---|---|---|
| KRW-BTC | -8.65% | -4.58% | +4.07%p |
| KRW-ETH | +8.40% | +10.05% | +1.65%p |
| KRW-XRP | -11.86% | -3.83% | +8.03%p |
| KRW-SOL | -17.93% | -5.38% | +12.55%p |
필터 없이도 +8.4%, 필터 적용 후 +10.05%, MDD -3.6%, 샤프 1.53. 하락장 159일을 현금으로 쉬면서 손실을 차단한 결과다.
5. ETH 3년 백테스트 최종 결과
1년은 샘플이 부족하다. 상승/하락 사이클을 모두 포함한 3년(1095일) 데이터로 K값 최적화를 돌렸다.
| K값 | 수익률(3년) | MDD | 샤프 |
|---|---|---|---|
| 0.70 | +24.18% | -3.80% | 1.25 |
| 0.75 | +23.83% | -4.46% | 1.27 |
| 0.80 | +19.99% | -4.35% | 1.12 |
| 0.95 | +17.80% | -2.82% | 1.12 |
| 0.50 | +15.28% | -6.58% | 0.71 |
최종 확정 파라미터
3년 +23.8% → 연 약 7~8%. 천만원 기준 연 70~80만원, 월 평균 6~7만원. 완전 자동화니까 시간 투입 없이 가능하다. 샤프 1.27은 운용 업계에서 "우수한 전략"으로 분류되는 수준이다.
6. 실전 봇 구조
백테스트 검증 후 실전 봇도 함께 작성했다. 파일 구조는 이렇다.
├── main.py # 봇 메인 (스케줄러 + 전체 흐름)
├── strategy.py # 목표가 계산 + 200일선 판단
├── executor.py # 업비트 매수/매도 실행
├── notifier.py # 텔레그램 알림
├── logger.py # 로그 설정 (30일 자동 로테이션)
├── config.yaml # 전략 파라미터 (K값, 투입비율 등)
└── backtest.py # 백테스트
실행 방법
python main.py --paper
# 실전
python main.py
봇이 켜지면 매일 00:01에 목표가를 계산하고, 1분마다 현재가를 모니터링한다. BTC 200일선 아래면 오늘 매수 없음 메시지를 텔레그램으로 보내고 대기한다.
백테스트 결과가 실전 수익을 보장하지 않는다. 현재 BTC가 200일선 아래(하락장)라 실전 봇은 대기 중이다. 상승 전환 시점을 기다리며 페이퍼 트레이딩으로 로직을 검증 중이다.
📌 정리
Claude와 바이브코딩으로 하루 만에 백테스터부터 실전 봇까지 만들었다. 전략 설계 → 데이터 수집 → K값 최적화 → 200일선 필터 추가 → 봇 완성 순서로 진행했고, 코드는 GitHub에 정리 예정이다.
다음 포스팅에서는 Oracle Cloud 무료 서버에 이 봇을 올려 24시간 무인 운영하는 방법을 다룰 예정이다.