AI 코인 트레이딩 봇 개발(업비트)

1rock·2025년 9월 26일

🚀 AI 기반 다중 코인 포트폴리오 자동매매 봇 개발기

🎯 프로젝트 개요

암호화폐 투자의 감정적 판단과 타이밍 리스크를 최소화하기 위해 AI + DCA 전략을 결합한 자동매매 봇을 개발했습니다.

  • 투자 철학: 공격적 성장 전략 (알트코인 분산투자)
  • 핵심 기술: Python, OpenAI API, 업비트 API
  • 전략: DCA(Dollar Cost Averaging) + AI 의사결정 + 리밸런싱

💡 개발 동기

😰 기존 투자의 문제점

  • 감정적 투자: FOMO(Fear of Missing Out), FUD(Fear, Uncertainty, Doubt)
  • 타이밍 리스크: 고점에서 매수, 저점에서 매도
  • 단일 코인 의존: BTC만 투자하여 알트코인 급등 기회 놓침

🎯 해결하고자 한 것

  • 체계적이고 감정 없는 투자
  • 다중 코인 분산투자로 수익률 극대화
  • AI의 지능적 판단 + 기계적 실행

🏗️ 개발 과정

1️⃣ 초기 구상 - 단순한 BTC 매매봇

# 초기 아이디어: 단순한 BTC 자동매매
def simple_trading_bot():
    if RSI < 30:
        buy_bitcoin()
    elif RSI > 70:
        sell_bitcoin()

문제점 발견:

  • 단일 코인 의존성
  • 감정 없는 기계적 거래의 한계
  • 시장 변화에 대한 적응력 부족

2️⃣ AI 도입 - GPT 기반 의사결정

def get_ai_decision(market_data):
    prompt = """
    당신은 비트코인 투자 전문가입니다.
    현재 시장 데이터를 분석하여 매수/매도/홀드 결정을 내려주세요.
    """
    # OpenAI API 호출
    response = openai.chat.completions.create(...)
    return json.loads(response.choices[0].message.content)

개선점:

  • 뉴스, 공포탐욕지수 등 다양한 지표 반영
  • 상황에 맞는 유연한 판단
  • 하지만 여전히 BTC 중심...

3️⃣ 포트폴리오 전략 도입 - 다중 코인 분산투자

🎨 포트폴리오 설계

# 공격적 성장 포트폴리오
PORTFOLIO_CONFIG = {
    "BTC": {"weight": 0.25, "symbol": "KRW-BTC"},    # 안정성
    "ETH": {"weight": 0.25, "symbol": "KRW-ETH"},    # 성장성  
    "XRP": {"weight": 0.20, "symbol": "KRW-XRP"},    # 실용성
    "SOL": {"weight": 0.15, "symbol": "KRW-SOL"},    # 고성능
    "MATIC": {"weight": 0.15, "symbol": "KRW-MATIC"} # 확장성
}

전략적 고민:

  • BTC/ETH 50%로 안정성 확보
  • 알트코인 50%로 고성장 잠재력 추구
  • 각 코인의 역할과 특성 고려한 비중 설정

4️⃣ DCA 전략 구현 - 감정 제거

💰 Dollar Cost Averaging 로직

# 12주에 걸친 분할 매수
DCA_CONFIG = {
    "duration_months": 3,    # 3개월 
    "intervals_per_month": 4, # 주 1회
    "total_intervals": 12    # 총 12회 분할
}

def execute_dca_purchase():
    available_krw = get_balance() * 0.9  # 안전마진 10%
    
    for coin, config in PORTFOLIO_CONFIG.items():
        coin_amount = available_krw * config['weight']
        
        # 🧠 스마트 DCA: RSI 체크
        if coin_rsi > 80:
            print(f"⏭️ {coin} 매수 스킵 (과매수)")
            continue
            
        buy_coin(coin, coin_amount)

핵심 아이디어:

  • 타이밍 리스크 완화
  • 감정적 판단 배제
  • 과매수 상황에서는 스킵 (스마트 DCA)

5️⃣ 동적 잔고 관리 - 현실적 접근

🔄 하드코딩의 문제점 해결

# 기존: 하드코딩된 100만원 기준
"BTC": {"weight": 0.25, "amount": 250000}

# 개선: 동적 잔고 기반
def calculate_target_amounts(balance_info):
    total_value = balance_info['total_portfolio_value']
    for coin, config in PORTFOLIO_CONFIG.items():
        target_amount = total_value * config['weight']

현실적 고려사항:

  • 투자 금액은 사람마다 다름
  • 추가 입금, 수익 발생 등으로 잔고 변화
  • 유연한 금액 계산 시스템 필요

6️⃣ 리밸런싱 시스템 - 포트폴리오 균형 유지

def execute_rebalancing():
    for coin in PORTFOLIO_CONFIG:
        current_weight = get_current_weight(coin)
        target_weight = PORTFOLIO_CONFIG[coin]['weight']
        
        # 5% 이상 차이나면 리밸런싱
        if abs(current_weight - target_weight) > 0.05:
            if current_weight > target_weight:
                sell_some(coin)  # 비중 축소
            else:
                buy_more(coin)   # 비중 확대

7️⃣ AI 전략 고도화 - 단계별 의사결정

def get_portfolio_ai_decision():
    """DCA 완료 후 AI가 다양한 전략 제안"""
    decisions = [
        'dca_continue',    # 추가 매수
        'profit_taking',   # 수익실현  
        'rebalance',       # 조기 리밸런싱
        'hold',           # 현상유지
        'dca_pause'       # 매수 일시정지
    ]

🛠️ 기술적 도전과 해결

🔥 주요 도전 과제들

1️⃣ 뉴스 신뢰성 문제

문제: 가짜 뉴스, 과장된 헤드라인이 AI 판단을 왜곡
해결: 뉴스 신뢰도 검증 시스템 구상 (향후 구현 예정)
- 신뢰할 수 있는 소스 화이트리스트
- 과장 표현 키워드 필터링
- 감정 점수 분석

2️⃣ API 호출 최적화

# 문제: AI API 비용과 속도
# 해결: 캐싱 시스템 도입
AI_CACHE_DURATION = 45 * 60  # 45분 캐시

def get_cached_ai_decision(summary):
    if cache_is_valid() and not significant_change():
        return cached_decision
    else:
        return new_ai_decision()

3️⃣ 거래 함수 호출 문제

문제: trade_by_decision 함수가 새로운 포트폴리오 전략에서 호출되지 않음
해결: 포트폴리오 전용 거래 실행 함수 개발
- execute_portfolio_decision()
- execute_profit_taking()  
- execute_dca_purchase()

4️⃣ 백테스팅 필요성

문제: 실제 돈으로 검증하기 전에 전략 성과 확인 필요
계획: 백테스팅 모듈 개발
- 과거 데이터로 전략 시뮬레이션
- 벤치마크 대비 성과 분석
- 리스크 지표 계산 (MDD, 샤프비율 등)

📊 최종 아키텍처

🔄 시스템 플로우

1시간마다 실행:
│
├── 잔고 정보 조회
├── 다중 코인 데이터 수집 (BTC, ETH, XRP, SOL, MATIC)
├── 포트폴리오 메트릭스 계산 (RSI, 변화율, 이동평균)
├── 외부 지표 수집 (공포탐욕지수, 뉴스)
│
├── DCA 실행 판단 (주 1회)
│   ├── AI 긴급 조언 (15% 이상 급변동 시)
│   └── 스마트 DCA (RSI > 80 시 스킵)
│
├── 리밸런싱 판단 (3개월마다)
│   └── 5% 이상 비중 차이 시 실행
│
└── AI 전략 결정 (DCA 완료 후)
    ├── 수익실현
    ├── 추가 매수
    ├── 조기 리밸런싱
    └── 현상유지

🧠 AI 의사결정 과정

# 3단계 의사결정 시스템
def smart_decision_process():
    # 1단계: 규칙 기반 필터링 (빠른 판단)
    rule_decision = check_obvious_signals()
    if rule_decision:
        return rule_decision
    
    # 2단계: AI 분석 (복잡한 상황)
    ai_decision = get_ai_analysis()
    
    # 3단계: 캐싱으로 효율성 확보
    cache_decision(ai_decision)
    return ai_decision

📈 성과 측정 지표

🎯 KPI 설정

  • 30일 목표: BTC 대비 -10% 이내 유지
  • 90일 목표: 시장 대비 +5~10% 초과수익
  • 최대 손실: -20% 이하로 제한
  • 샤프 비율: 1.0 이상 목표

📊 모니터링 항목

def calculate_kpi_performance():
    return {
        '30_day_performance': portfolio_return,
        '90_day_performance': long_term_return, 
        'vs_btc_performance': portfolio_vs_btc,
        'sharpe_ratio': risk_adjusted_return,
        'max_drawdown': maximum_loss
    }

💭 개발하며 배운 것들

🎓 기술적 학습

  • API 통합의 복잡성: 업비트 API + OpenAI API + 뉴스 API 연동
  • 비동기 처리: 다중 코인 데이터를 효율적으로 수집
  • 에러 핸들링: 네트워크 오류, API 제한 등 예외상황 대응
  • 상태 관리: DCA 진행상황, 포트폴리오 히스토리 저장

💡 투자 철학의 진화

  • 감정 제거의 중요성: 기계적 실행이 장기적으로 유리
  • 분산투자의 위력: 단일 코인 대비 위험 분산 효과
  • AI의 한계와 가능성: 보조 도구로서의 AI 활용

🔍 설계 원칙

  • 단순함 추구: 복잡한 로직보다 명확한 규칙
  • 유연성 확보: 하드코딩 최소화, 설정값 분리
  • 투명성 보장: 모든 결정과 거래를 로그로 기록

🚀 향후 개발 계획

📋 단기 목표 (1개월)

  • 백테스팅 시스템 구축
  • 뉴스 신뢰도 검증 모듈 추가
  • 웹 대시보드 개발 (포트폴리오 실시간 모니터링)
  • 알림 시스템 구축 (텔레그램/슬랙 연동)

🎯 중기 목표 (3개월)

  • 머신러닝 모델 도입 (가격 예측)
  • 다중 거래소 지원 (업비트 + 빗썸)
  • 포트폴리오 최적화 알고리즘
  • 리스크 관리 고도화

🌟 장기 비전 (1년)

  • 소셜 트레이딩 플랫폼화
  • NFT/DeFi 투자 전략 추가
  • 모바일 앱 개발
  • 커뮤니티 구축

💻 코드 구조

📁 프로젝트 구조

gptbitcoin/
├── mvp.py                    # 메인 트레이딩 봇
├── requirements.txt          # 의존성 패키지
├── docker-compose.yml        # 컨테이너 배포
├── .env                     # 환경변수 (API 키)
├── dca_state.json           # DCA 진행상황
├── portfolio_trading_log.md # 거래 로그
└── README.md               # 프로젝트 설명

⚙️ 실행 방법

# 1. 환경 설정
pip install -r requirements.txt

# 2. API 키 설정
export UPBIT_ACCESS_KEY="your_key"
export UPBIT_SECRET_KEY="your_secret"  
export OPENAI_API_KEY="your_openai_key"

# 3. 봇 실행
python3 mvp.py

🎉 결론

✨ 성과

  • 체계적 투자 시스템 구축 완료
  • AI + DCA 전략 성공적 결합
  • 다중 코인 포트폴리오 자동화 실현
  • 감정 없는 투자 환경 조성

🤔 아쉬운 점

  • 실제 수익률 검증 부족 (백테스팅 필요)
  • 뉴스 신뢰성 검증 미완성
  • 극한 상황에서의 안정성 미검증

💪 앞으로의 다짐

이 프로젝트를 통해 "기술로 투자의 감정을 이기는 것"이 얼마나 중요한지 깨달았습니다. 앞으로도 지속적인 개선을 통해 더 안전하고 수익성 높은 투자 시스템을 만들어가겠습니다.


🔗 참고 자료

🏷️ 태그

#암호화폐 #자동매매 #AI #Python #DCA #포트폴리오 #투자봇 #업비트 #OpenAI


💡 개발자 노트: 이 프로젝트는 교육 목적으로 개발되었습니다. 실제 투자 시에는 충분한 검토와 리스크 관리가 필요합니다.

GitHub Repository: https://github.com/1rrock/AI-trading-bot

profile
FRONT_END_DEVELOMENT

0개의 댓글