AI 헤지 펀드
요약
본 문서는 Claude를 활용하여 시장 데이터를 분석하고 투자 결정을 내리는 자율적인 다중 자산 AI 펀드 구축 방식을 설명합니다. 이 시스템은 결정론적 위험 게이트와 엄격한 워크플로우를 통해 투명성과 안전성을 확보하는 데 중점을 둡니다.
핵심 포인트
- Claude가 제안하고 코드가 처리하는 구조로, 안정성이 높습니다.
- 결정론적 위험 게이트를 거쳐 모델이 직접 주문을 보내지 않습니다.
- 모든 입력, 결정, 주문 과정이 기록되고 공개되는 '유리 상자' 원칙을 따릅니다.
- 전방향 평가(Forward only evaluation) 등 엄격한 방법론을 적용합니다.
AI Hedge Fund
공개적으로 운영되는 자율적인 다중 자산 AI 펀드입니다. Claude가 제안하고, 코드가 처리하며(disposes), 모든 결정은 기록되고 점수화되며 공개됩니다.

작동 방식
펀드는 4시간마다 다음 작업을 수행합니다:
- 미국 주가 지수, 대형 미국 주식, 금, 유가, 엔화 대비 달러, 그리고 비트코인 및 이더리움 등 11개 유동 시장의 스냅샷을 가져옵니다.
- Claude에게 모든 시장에 대한 목표 가중치(target weight), 24시간 확률, 손절매(stop), 그리고 공매도 논거(short thesis)를 요청합니다.
- 이 제안을 결정론적 위험 게이트(deterministic risk gate)를 통해 통과시킵니다. 모델은 절대 주문을 보내지 않습니다.
- 라이브 모드일 경우 실행 장치(execution venue)에서 게이팅된 북(gated book)을 실행하고, 다른 모델 구성 및 4가지 규칙 기반 기준선(rule based baselines)을 위해 항상 페이퍼 북(paper books)을 유지합니다.
- 입력값, 결정, 추론 요약, 주문, 그리고 비용을 기록(journal)한 후 공개합니다.
구축 방식
- 에이전트 루프가 아닌 워크플로우. 단계는 사전에 알려져 있으므로 코드가 순서대로 실행하고 판단만을 위해 Claude를 호출합니다. 고정된 워크플로우가 작동하는 가장 간단한 방법이며, 무언가 잘못된 것처럼 보일 때 검사하기가 더 저렴합니다.
- Claude가 제안하고, 코드가 처리한다. Claude는 목표 가중치, 확률, 손절매 및 이유를 출력합니다. 결정론적 코드(Deterministic code)가 모든 한계, 모든 주문, 그리고 모든 핵심을 소유합니다.
- 작은 폭발 반경(Small blast radius). 전용 지갑, 출금할 수 없는 에이전트 키, 자본금 상한선(equity ceiling), 거래소 측 손절매, 그리고 하락장 정지(drawdown halt)가 나쁜 사이클이 커지는 것을 방지합니다.
- 유리 상자(Glass box). 모든 입력, 출력, 추론 요약, 게이트 결정, 주문 및 비용 달러는 기록되고 공개됩니다.
- 전방향 평가(Forward only evaluation). 대규모 언어 모델(Large language models)은 훈련 차단 시점까지의 가격을 기억하고 있으므로, 그 역사를 통한 백테스트는 오염됩니다. 티커나 날짜를 숨기는 것이 이를 고치지 못합니다.
게시된 라이브 거래 벤치마크는 과도한 거래와 수수료로 인해 모델이 손실을 입는 것 또한 보여주며, 이 때문에 비용(costs)은 점수(score)에 포함됩니다.
6. 폐쇄 실패 (Fail closed). 데이터, 결정 또는 실행에서 발생하는 오류가 해당 사이클에 새로운 위험을 추가하지 않습니다.
7. 순수 핵심, 얇은 외피 (Pure core, thin shell). 기능(Features), 게이트(gate), 크기 조정(sizing), 회계(accounting) 및 점수 산정(scoring)은 순수 함수(pure functions)입니다. 네트워크 호출(Network calls)은 몇 개의 모듈에 존재하므로, 핵심 로직을 키 없이 테스트할 수 있습니다.
아키텍처 (Architecture)
flowchart LR
S[Scheduler<br/>매 4시간마다] --> D[시장 데이터 및 뉴스(Market data and news)]
D --> C[Claude<br/>목표, 예측, 논제(targets, forecasts, theses)]
...
| 모듈 (Module) | 역할 (Role) |
|---|---|
cycle.py | 고정된 순서로 하나의 사이클을 실행합니다. |
| ... |
안전 장치 (Safety)
실제 주문(Real orders)은 활성화할 경우 아래의 모든 계층을 통과합니다.
- 거래 지갑(trading wallet)은 이 프로젝트 전용입니다. 여기에 개인 키(private key)가 저장되는 일은 없습니다.
- 에이전트 키(agent key)는 거래할 수 있지만 출금할 수는 없습니다.
fund.toml에 설정된 천장(ceiling) 이상의 실제 자본(Live equity)은 거부됩니다.- 위험 게이트(risk gate)는 크기(size), 총 노출(gross exposure), 순 노출(net exposure), 신규 위험(new risk), 폐쇄 시장(closed markets) 및 플립(flips)을 제한합니다.
- 스탑(Stops)은 체결(fills) 후에 거래소에 설정됩니다.
- 고점 대비 하락률(drawdown through the high water mark)이 발생하면 장부가 멈추고 평탄화(flattens)됩니다.
fund halt는 다음 사이클을 중단시킵니다.fund halt --flatten또한 라이브 장부(live book)를 닫습니다.- 자율성(Autonomy)은 기본적으로 승인(approve)으로 설정되어 계획을 출력하고 사람의 확인을 기다립니다.
- 메인넷 거래는
FUND_ALLOW_MAINNET이yes가 아닌 한 꺼져 있습니다.
결과 (Results)
공개 대시보드가 기록입니다: chase-mew.github.io/ai-hedge-fund.
수치는 첫 번째 공개 사이클부터 시작합니다. 백테스트(backtest)는 없습니다. 수수료, 펀딩 및 모델 비용이 포함되어 있습니다. 수백 개의 사이클이 쌓일 때까지는 어떤 결과도 우위성(edge)의 증거가 아니라 이 실험에 대한 일화로 간주하십시오.
빠른 시작 (Quickstart)
uv와 Python 3.13을 설치한 후 다음 명령어를 실행합니다:
uv sync
uv run fund run --mode paper --fake-llm
uv run fund status
...
해당 경로는 API 키가 필요하지 않습니다. 오프라인 모델은 20일 평균을 기반으로 고정된 규칙을 따릅니다.
ANTHROPIC_API_KEY를 .env에 설정합니다:
uv run fund doctor
uv run fund run --mode paper
uv run fund dashboard --out site
...
.env.example을 복사하여 .env로 만들고, 사용하는 키만 채우세요.
설정 (Configuration)
fund.toml에는 펀드 이름, 주기 길이(cycle length), 초기 가상 자본금(paper starting equity), 일일 모델 예산이 포함됩니다. 이 파일은 챔피언 및 섀도우 구성, 모델 가격, 뉴스 요약 기능 활성화 여부를 지정합니다. 위험(risk) 섹션은 관문 역할을 합니다: 시장별 비중, 총액(gross), 순액(net), 신규 위험(new risk), 손실폭(drawdown), 스톱(stops), 클래스 상한선(class caps). 실행(execution) 섹션에는 레버리지, 최소 주문 크기, 슬리피지(slippage), 가격 격차 제한(price gap limit), 실시간 자본금 상한선이 있습니다. 유니버스(universe)는 11개 시장을 나열합니다.
실제 주문으로 실행하기 (Running with real orders)
테스트넷에서 시작하세요. 새 지갑을 사용하고, 테스트넷 수도꼭지(faucet)를 청구할 수 있도록 소액의 메인넷 입금을 한 후, scripts/setup_agent.py로 에이전트 키를 생성합니다. 주소와 테스트넷 에이전트 키를 .env에 넣으세요. 지갑 개인 키는 절대 .env에 넣지 마세요.
fund.toml의 autonomy는 실제 거래처(real venue)에만 적용됩니다:
paper: 실제 주문을 보내지 않습니다.approve: 제한된 계획(gated plan)을 출력하고 대기합니다.auto: 제한된 계획을 전송합니다. 이는 승인 모드(approve mode)를 관찰한 후, 사람이 지켜보지 않는 환경에서 실행할 때의 모드입니다.
fund run --mode testnet은 테스트 자금을 사용합니다. fund run --mode live는 FUND_ALLOW_MAINNET=yes가 아니면 거부됩니다. fund halt --flatten --mode testnet은 기록을 닫습니다. fund resume는 확인 후 중단(halt) 상태를 해제합니다.
테스트넷 수도꼭지는 메인넷에 이미 입금한 주소에만 1,000 모의 USDC를 지급합니다. 최소 메인넷 입금액은 5 USDC입니다. 이 단계를 우회할 방법은 없습니다.
자동화 (Automation)
.github/workflows/cycle.yml은 한 사이클을 실행하고, 점수를 매기고, 대시보드를 구축하며, 저널(journal) 브랜치와 GitHub Pages를 모두 게시합니다. Actions로 수동 시작하거나, gh workflow run cycle.yml -f mode=paper로 시작할 수 있습니다.
4시간 스케줄은 주석 처리되어 있습니다. 푸시(push)만으로는 모델 예산이 소모되지 않습니다. 감시하지 않는 실행을 계속하려면, 스케줄을 주석 해제하고 Actions 시크릿으로 ANTHROPIC_API_KEY를 추가하며, 리포지토리 변수 FUND_MODE를 paper로 설정해야 합니다. GitHub는 활동이 없는 공개 리포지토리의 예약된 워크플로우를 60일 후에 비활성화합니다.
개발(Development)
make check
이는 ruff, pyright 및 pytest와 커버리지를 사용하여 실행됩니다. 실시간 네트워크 테스트는 live로 표시되며, -m live를 전달하지 않는 한 비활성화된 상태로 유지됩니다.
오프라인 테스트는 tests/fixtures/의 기록된 시장 응답과 FakeClaude를 사용합니다. 골든 프롬프트 파일은 tests/golden/에 있습니다. 프롬프트 변경이 의도적인 경우에만 uv run pytest tests/test_render.py --update-golden으로 업데이트하십시오.
모델 구성을 추가하려면, fund.toml의 shadows 아래에 카탈로그 항목과 model/style ID를 추가하십시오. style은 single 또는 team입니다. 챔피언(champion)은 실제 계좌에서 거래할 수 있는 하나의 ID입니다.
fund replay tests/fixtures/snapshot_real.json --times 3는 저장된 스냅샷을 기반으로 챔피언을 재실행하며 주문을 보내지 않습니다. 이 명령어는 ANTHROPIC_API_KEY가 필요합니다.
히스토리(History)
2025년 1월의 첫 버전은 하루 만에 구축되었습니다. 이는 GPT-4 에이전트들로 구성된 TypeScript 체인으로, 최고 경영진에게 보고하는 직원들의 형태로 스타일링되었습니다. 각 에이전트는 하나의 금융 데이터 엔드포인트를 감싸고 있었습니다. 느렸고, 순차적인 재귀 호출을 했으며, 포트폴리오 상태, 위험 한계, 평가 기능이 없었고, 출력만 하는 가짜 거래소였습니다. 이 버전은 모델이 거래를 제안하는 아이디어는 유지하고 나머지 모든 것을 대체합니다. 원본은 v0-legacy 태그에 보존되어 있습니다.
면책 조항(Disclaimer)
이는 투자가 아니라 실험입니다. 레버리지 파생상품을 거래하면 돈을 잃을 수 있습니다. 어떠한 보증도 제공되지 않습니다.
라이선스(License)
MIT. LICENSE를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기