암호화폐 투자의 감정적 판단과 타이밍 리스크를 최소화하기 위해 AI + DCA 전략을 결합한 자동매매 봇을 개발했습니다.
# 초기 아이디어: 단순한 BTC 자동매매
def simple_trading_bot():
if RSI < 30:
buy_bitcoin()
elif RSI > 70:
sell_bitcoin()
문제점 발견:
def get_ai_decision(market_data):
prompt = """
당신은 비트코인 투자 전문가입니다.
현재 시장 데이터를 분석하여 매수/매도/홀드 결정을 내려주세요.
"""
# OpenAI API 호출
response = openai.chat.completions.create(...)
return json.loads(response.choices[0].message.content)
개선점:
# 공격적 성장 포트폴리오
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"} # 확장성
}
전략적 고민:
# 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)
핵심 아이디어:
# 기존: 하드코딩된 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']
현실적 고려사항:
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) # 비중 확대
def get_portfolio_ai_decision():
"""DCA 완료 후 AI가 다양한 전략 제안"""
decisions = [
'dca_continue', # 추가 매수
'profit_taking', # 수익실현
'rebalance', # 조기 리밸런싱
'hold', # 현상유지
'dca_pause' # 매수 일시정지
]
문제: 가짜 뉴스, 과장된 헤드라인이 AI 판단을 왜곡
해결: 뉴스 신뢰도 검증 시스템 구상 (향후 구현 예정)
- 신뢰할 수 있는 소스 화이트리스트
- 과장 표현 키워드 필터링
- 감정 점수 분석
# 문제: 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()
문제: trade_by_decision 함수가 새로운 포트폴리오 전략에서 호출되지 않음
해결: 포트폴리오 전용 거래 실행 함수 개발
- execute_portfolio_decision()
- execute_profit_taking()
- execute_dca_purchase()
문제: 실제 돈으로 검증하기 전에 전략 성과 확인 필요
계획: 백테스팅 모듈 개발
- 과거 데이터로 전략 시뮬레이션
- 벤치마크 대비 성과 분석
- 리스크 지표 계산 (MDD, 샤프비율 등)
1시간마다 실행:
│
├── 잔고 정보 조회
├── 다중 코인 데이터 수집 (BTC, ETH, XRP, SOL, MATIC)
├── 포트폴리오 메트릭스 계산 (RSI, 변화율, 이동평균)
├── 외부 지표 수집 (공포탐욕지수, 뉴스)
│
├── DCA 실행 판단 (주 1회)
│ ├── AI 긴급 조언 (15% 이상 급변동 시)
│ └── 스마트 DCA (RSI > 80 시 스킵)
│
├── 리밸런싱 판단 (3개월마다)
│ └── 5% 이상 비중 차이 시 실행
│
└── AI 전략 결정 (DCA 완료 후)
├── 수익실현
├── 추가 매수
├── 조기 리밸런싱
└── 현상유지
# 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
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
}
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 #Python #DCA #포트폴리오 #투자봇 #업비트 #OpenAI
💡 개발자 노트: 이 프로젝트는 교육 목적으로 개발되었습니다. 실제 투자 시에는 충분한 검토와 리스크 관리가 필요합니다.
GitHub Repository: https://github.com/1rrock/AI-trading-bot