본문 바로가기

Stack/VibeCoding

파이썬 코인 자동매매 봇 만들기 — 업비트 변동성 돌파 전략 + 백테스트 결과 공개

반응형
파이썬 코인 자동매매 봇 만들기 — 업비트 변동성 돌파 전략 + 백테스트 결과 공개
파이썬과 Claude AI로 업비트 코인 자동매매 봇을 바이브코딩으로 만들었습니다. 변동성 돌파 전략 + BTC 200일선 필터 조합으로 ETH 3년 백테스트 결과 수익률 +24%, 샤프 1.27을 달성한 과정을 공유합니다.

파이썬 코인 자동매매 봇 만들기 — 업비트 변동성 돌파 전략 + 백테스트 결과 공개

바이브코딩 Python 업비트 API 백테스트 자동매매

📋 목차

1. 왜 코인 자동매매인가
2. 변동성 돌파 전략이란
3. 백테스트 설계 (pyupbit + Python)
4. BTC 200일선 필터 추가 후 결과
5. 최종 수익률 및 주요 지표
6. 실전 봇 구조


1. 왜 코인 자동매매인가

주식 장투는 이미 하고 있다. 메인 포트폴리오를 건드리지 않고 24/7 돌아가는 부수입 채널을 만들고 싶었다. 코인은 주말에도 장이 열리고, 업비트 공식 API가 무료로 제공되며, 파이썬으로 자동화하기 쉽다.

직접 짜고 싶었다. 유료 솔루션 쓰면 블랙박스고 공부도 안 된다. Claude와 함께 바이브코딩으로 하루 만에 백테스터부터 실전 봇까지 완성했다.


2. 변동성 돌파 전략이란

래리 윌리엄스가 고안한 단기 트레이딩 전략이다. 로직은 단순하다.

전날 변동폭 계산 목표가 = 당일 시가 + 변동폭 × K 현재가 ≥ 목표가 → 매수 23:50 전량 청산
# 핵심 로직 (Python)
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% 매수
💡 K값이란?

변동성 계수. 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일 이동평균선 위에 있을 때만 봇을 켜는 필터를 추가했다.

BTC 현재가 vs BTC MA200 위면 상승장 → 봇 ON | 아래면 하락장 → 봇 OFF

필터 적용 전후 비교 (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
✅ ETH가 압도적으로 좋다

필터 없이도 +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

최종 확정 파라미터

K = 0.75
3년 최적 계수
+23.8%
3년 총 수익률
1.27
샤프 비율
-4.46%
MDD (최대 낙폭)
ETH
거래 대상 코인
30%
잔고 투입 비율
💡 연환산으로 계산하면

3년 +23.8% → 연 약 7~8%. 천만원 기준 연 70~80만원, 월 평균 6~7만원. 완전 자동화니까 시간 투입 없이 가능하다. 샤프 1.27은 운용 업계에서 "우수한 전략"으로 분류되는 수준이다.


6. 실전 봇 구조

백테스트 검증 후 실전 봇도 함께 작성했다. 파일 구조는 이렇다.

upbit-bot/
├── 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시간 무인 운영하는 방법을 다룰 예정이다.

파이썬 자동매매 업비트 API 변동성 돌파 백테스트 코인 자동매매 바이브코딩 pyupbit ETH 데이터 엔지니어
반응형