월급 외 추가 수익을 만드는 나만의 무인 AI 헤지펀드 트레이딩 시스템 구축법"
안녕하세요! 오늘은 해외 유명 트레이딩 채널인 Humbled Trader에 소개되어 뜨거운 반응을 얻은 Claude Code, Python, 그리고 Interactive Brokers(IBKR) API를 결합한 AI 자동매매 시스템 구축 방법을 한글로 완벽하게 정리해 드리겠습니다.
이 가이드는 코딩 경험이 전혀 없거나 아예 없는 초보 트레이더를 위해 작성되었습니다. 복잡한 코딩은 Claude가 전부 담당하므로, 여러분은 전략, 실행, 그리고 리스크 관리에만 집중하시면 됩니다. 차근차근 따라오세요!
🎯 이 가이드를 통해 완성하게 될 결과물
- Interactive Brokers(IBKR)에 연결되어 작동하는 AI 트레이딩 봇
- 30분마다 S&P 500 갭 상승 종목을 필터링하는 자동 주식 스캐너
rules.json파일에서 전략 규칙을 읽어오는 시스템- 매매 이벤트 및 일일 요약을 전송하는 텔레그램 알림 기능
- 윈도우 작업 스케줄러를 통한 전체 워크플로우 100% 자동화
1단계: Python과 통신할 수 있도록 TWS 설정하기
TWS(Trader Workstation)에서 딱 한 번만 설정해 두면 이후에는 거의 건드릴 필요가 없습니다.
- TWS를 열고 모의투자(Paper Account) 계정으로 로그인합니다.
- 상단 메뉴에서 File > Global Configuration > API > Settings로 이동합니다.
- 다음 항목들을 똑같이 체크 및 설정해 줍니다:
- Enable ActiveX and Socket Clients ➡️ 체크 (활성화)
- Allow connections from localhost only ➡️ 체크
- Socket Port ➡️ 7497로 설정 (모의투자용 기본 포트)
- Read-Only API ➡️ 체크 해제 (봇이 주문을 직접 넣어야 하므로 필수)
- Trusted IPs 목록에
127.0.0.1이 있는지 확인한 후 TWS를 재시작합니다.
2단계: Python 가상 환경 생성 및 라이브러리 설치
봇이 구동될 컴퓨터에 빈 프로젝트 폴더를 하나 만들고, 터미널(명령 프롬프트)을 열어 아래 명령어를 실행합니다.
# 파이썬 가상환경 생성 및 활성화 python -m venv .venv .venv\Scripts\activate # 필수 패키지 한 번에 설치 pip install ib_async python-dotenv pandas numpy yfinance requests
※ 여기서 설치하는 ib_async는 IBKR의 복잡한 공식 API 라이브러리를 파이썬에서 비동기 방식으로 아주 쉽게 제어할 수 있도록 돕는 핵심 도구입니다.
3단계: Interactive Brokers 연결 테스트하기
Python이 TWS와 정상적으로 통신하는지 검증합니다. test_connect.py 파일을 생성하고 아래 코드를 붙여넣으세요.
from ib_async import IB
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=99)
print('Connected:', ib.isConnected())
print('Accounts:', ib.managedAccounts())
ib.disconnect()
터미널에서 python test_connect.py를 실행했을 때 화면에 Connected: True가 나타나면 완벽하게 연결된 것입니다.
4단계: 전략 파일 구조화하기 (rules.json)
봇이 감정을 배제하고 철저하게 규칙 기반으로 매매할 수 있도록 rules.json 파일을 생성합니다. 가이드에서 사용된 '추세 추종 롱(Trend Join Long)' 전략의 세부 필터 조건입니다.
{
"strategy_name": "Trend Join Long",
"direction": "long_only",
"trade_timeframe": "5m",
"universe_filters": {
"index": "S&P 500",
"min_price_usd": 3.0
},
"daily_filters": {
"D1_above_prior_day_high": true,
"D2_prior_close_above_sma200": true,
"D3_min_gap_pct_from_prior_close": 3.0
},
"intraday_filters": {
"I1_above_premarket_high": true,
"I2_above_today_hod": true,
"I3_rvol_min": 2.0,
"I3_rvol_lookback_days": 14
},
"time_filter": {
"earliest_entry_et": "10:05",
"latest_entry_et": "15:30",
"force_close_et": "15:51"
},
"risk": {
"max_risk_per_trade_pct": 1.0,
"max_position_size_pct_of_portfolio": 10,
"max_concurrent_positions": 5
}
}
5단계: 핵심 트레이딩 봇 코드 구성
실제 자동매매 시스템 구동 시 봇 프로그램은 기능별로 나뉘어 유기적으로 작동합니다. Claude 가동 후 파일 생성을 요청할 때 아래 구조를 참고하세요.
ibkr_client.py: TWS 연결 및 실제 MarketOrder 매수/매도 주문 집행strategy.py:rules.json규칙을 기반으로 현재 시간, 포지션 중복 여부, 기술적 지표 검증bot.py: 전체 프로세스를 조율하고 루프를 실행하는 메인 제어 엔진
※ 네트워크 충돌 및 포트 꼬임을 방지하기 위해 스캐너(조율기)와 트레이더(주문 집행기)는 각각 독립된 프로세스와 상이한 Client ID를 사용하도록 설계하는 것이 핵심 노하우입니다.
6단계: 무인 자동화 및 텔레그램 알림 설정
코드 구현이 끝나면 스마트폰으로 거래 현황을 받아볼 수 있도록 텔레그램 봇 API를 연동합니다. @BotFather를 통해 발급받은 토큰을 .env 환경 변수 파일에 저장합니다.
마지막으로 주식 시장 개장 시간에 맞춰 30분 주기로 메인 봇(bot.py)이 실행되도록 윈도우 작업 스케줄러(Windows Task Scheduler)에 등록하면 시스템이 완전히 자동으로 돌아가게 됩니다.
⚠️ 트레이더를 위한 현실적인 조언
과거 데이터 기반의 시뮬레이션(백테스트) 결과가 아무리 훌륭하더라도, 실전 매매에서는 슬리피지(체결 오차), 수수료, 호가 공백, 네트워크 지연 등으로 인해 수익률 차이가 발생할 수 있습니다.
따라서 시스템을 구축한 뒤 곧바로 실전에 투입하기보다는, 최소 몇 주 이상 모의투자(Paper Trading) 계정으로 구동하며 시스템 안정성과 로직을 완벽히 검증하는 단계를 반드시 거치시길 권장합니다.
궁금한 점이나 막히는 부분이 있다면 댓글로 편하게 남겨주세요!
댓글
댓글 쓰기