Auto-Research Trading - AI 자율 트레이딩 전략 연구
안드레 카파시의 auto-research에서 영감을 받은 AI 자율 트레이딩 시스템. AI가 스스로 트레이딩 루프를 돌며 기법을 연구.
핵심 컨셉
- Karpathy-style autoresearch — AI 에이전트가
strategy.py를 자율적으로 수정 - Hyperliquid 영구 선물 대상
- 103개 실험, 무인간 개입 — 단순 모멘텀(Sharpe 2.7)에서 6-신호 앙상블(Sharpe 21.4)까지 7.9x 개선
결과
| 항목 | 값 |
|---|---|
| 실험 수 | 103개 (완전 자율) |
| 초기 Sharpe | 2.724 |
| 최종 Sharpe | 20.634 |
| 최대 낙폭 | 0.3% |
| 거래 수 | 7,605 |
| 개선율 | 7.6x |
핵심 발견
| 순위 | 발견 | 영향 | 인사이트 |
|---|---|---|---|
| 1 | RSI period 8 | +5.0 Sharpe | 표준 14-주기 RSI는 시간당 크립토에 너무 느림 |
| 2 | Remove strength scaling | +1.7 Sharpe | 균일한 사이징이 모멘텀 가중 사이징보다 나음 |
| 3 | Simplified momentum | +0.8 Sharpe | 단순 ret > threshold, 멀티 타임프레임 확인 불필요 |
| 4 | BB width compression | +0.9 Sharpe | Bollinger Band 폭 백분위를 6번째 앙상블 신호로 |
| 5 | ATR 5.5 trailing stop | +1.0 Sharpe | 승자를 기존 3.5x ATR보다 훨씬 오래 보유 |
| 6 | The Great Simplification | +2.0 Sharpe | 피라미딩, 펀딩 부스트, BTC 필터, 상관 필터 제거 |
| 7 | Position size 0.08 | +0.6 Sharpe | 작은 포지션이 회전율 페널티 제거 |
가장 큰 교훈: 단순함이 이긴다
가장 큰 이득은 복잡성을 제거해서 얻음. 모든 “똑똑한” 기능 — BTC lead-lag 필터, 상관 기반 가중치 조정, 모멘텀 강도 스케일링, 피라미딩, 펀딩 캐리 — 은 테스트 후 성능을 해치면 영구 제거.
베스트 전략 아키텍처
6-신호 앙상블, 4/6 다수결:
| 신호 | 불 조건 | 약 조건 |
|---|---|---|
| Momentum | 12h 수익률 > 동적 임계값 | 12h 수익률 < -동적 임계값 |
| Very-short momentum | 6h 수익률 > 임계값 × 0.7 | 6h 수익률 < -임계값 × 0.7 |
| EMA crossover | EMA(7) > EMA(26) | EMA(7) < EMA(26) |
| RSI(8) | RSI > 50 | RSI < 50 |
| MACD(14,23,9) | MACD 히스토그램 > 0 | MACD 히스토그램 < 0 |
| BB compression | BB 폭 < 85번째 백분위 | BB 폭 < 85번째 백분위 |
청산 조건 (우선순위):
- ATR trailing stop — 피크/저점에서 5.5x ATR
- RSI 평균 회귀 — RSI > 69에서 롱 청산, RSI < 31에서 숏 청산
- 신호 반전 — 반대 앙상블 발화 시 포지션 역전
핵심 파라미터:
| 파라미터 | 값 | 용도 |
|---|---|---|
BASE_POSITION_PCT | 0.08 | 심볼당 포지션 크기 (자본 대비 비율) |
COOLDOWN_BARS | 2 | 청산과 재진입 사이 최소 봉 |
RSI_PERIOD | 8 | 시간당 크립토용 빠른 RSI |
ATR_STOP_MULT | 5.5 | 승자를 달게 하는 넓은 트레일링 스톱 |
MIN_VOTES | 4 | 다수결 임계값 (6개 중 4개 신호) |
작동 방식
1. 현재 strategy.py와 점수 읽기
2. 수정 제안 및 구현
3. uv run backtest.py 실행 → 점수 파싱
4. 점수 개선되면 유지, 아니면 revert
5. 인터럽트될 때까지 무한 반복
규칙:
| 규칙 | 내용 |
|---|---|
| 수정 가능 | strategy.py만 |
| 수정 금지 | prepare.py, backtest.py, benchmarks/ |
| 의존성 제한 | numpy, pandas, scipy, requests, pyarrow, stdlib만 |
| 시간 예산 | 백테스트당 120초 |
빠른 시작
# 클론
git clone https://github.com/Nunchi-trade/auto-researchtrading.git
cd auto-researchtrading
# 데이터 다운로드 (~1분)
uv run prepare.py
# 백테스트 실행
uv run backtest.pyClaude Code로 자율 루프:
claude
/autoresearch스코어 공식
score = sharpe × √(min(trades/50, 1.0)) − drawdown_penalty − turnover_penalty
| 구성요소 | 공식 |
|---|---|
| Sharpe | mean(daily_returns) / std(daily_returns) × √365 |
| Drawdown penalty | max(0, max_drawdown_pct − 15) × 0.05 |
| Turnover penalty | max(0, annual_turnover/capital − 500) × 0.001 |
| 하드 컷오프 (→ −999) | 10회 미만 거래, 낙폭 > 50%, 자본 50% 이상 손실 |
데이터
| 항목 | 내용 |
|---|---|
| 심볼 | BTC, ETH, SOL |
| 검증 기간 | 2024-07-01 ~ 2025-03-31 |
| 초기 자본 | $100,000 |
| 수수료 | maker 2bps, taker 5bps, 슬리피지 1bps |
| 이용 가능 | bar_data[symbol].history — 최근 500시간 봉 |
벤치마크
| 순위 | 전략 | Score | Sharpe | 수익률 | Max DD |
|---|---|---|---|---|---|
| 1 | simple_momentum | 2.724 | 2.724 | +42.6% | 7.6% |
| 2 | funding_arb | -0.191 | -0.191 | -1.3% | 9.4% |
| 3 | regime_mm | -0.322 | -0.322 | -3.1% | 11.2% |
| 4 | mean_reversion | -3.964 | -3.380 | -26.2% | 26.7% |
| 5 | momentum_breakout | -999 | — | — | — |
의의
“매일 변동하는 시장 상황 탓에 당장 완벽한 수익을 보장하지는 않겠지만, 실패를 분석하고 어제의 패턴을 폐기한 뒤 새로운 전략을 찾아내는 속도만큼은 사람을 압도할 것입니다.”
“머지않아 자본 시장에서 스스로 진화한 AI끼리 맞붙는 날이 올 것입니다.”
관련 노트
- 2026-03-22-github-trending-fujiwarachoki-moneyprinterv2 — 온라인 수익 자동화 도구 (AI + 수익화 자동화)