ai-hedge-fund 설치부터 실전까지 — 별 6만 개짜리 AI 헤지펀드는 왜 주문을 안 낼까

virattt/ai-hedge-fund 를 4초 만에 깔고, 모델 키 없이 어디까지 되는지 확인하고, OpenRouter 로 투자 에이전트를 붙이고, 무료 yfinance 로 $20 짜리 데이터를 대체할 수 있는지 실측으로 가릅니다.

2편. virattt/ai-hedge-fund — 별 6만 개짜리 AI 헤지펀드는 왜 주문을 안 낼까

이 글의 완료 조건: 독자는 버핏과 그레이엄이 같은 종목에 반대 의견을 내는 화면을 자기 터미널에 띄우고, 그 판단이 주문으로 바뀌는 자리가 어디까지 비었는지 알면 성공입니다.

하는 일 LLM 에 유명 투자자의 페르소나를 입혀 의견을 내게 하고 그 의견들을 섞어 포트폴리오를 짭니다. 판단까지만 하고 주문은 안 냅니다
맞는 사람 펀더멘털 판단을 구조적으로 만들어 보고 싶은 사람. 부품을 갈아 끼우며 "무엇이 결과를 바꾸는가"를 실험하려는 사람
안 맞는 사람 지금 당장 주문이 나가야 하는 사람 · 암호자산·한국 주식(미국 주식 전용)
이 글의 결과물 의견이 갈린 판단 보고서 한 장, S&P 500 위에 겹친 자산 곡선, 무료 데이터로 갈아 끼웠을 때의 수익률 차이
준비물·비용 코드 0원(MIT) · 모델 여섯 공급자 중 하나(이 글은 OpenRouter, 유료 호출 4건에 $0.836381. 계량 모델만 쓰면 0원) · 시세 Financial Datasets 유료($20/1,000 요청, 이 글 80 요청) · weltiq 5절에서만
시간·난도 설치 4초, 첫 결과 13초. 난도 중(가상환경·환경변수 export)
weltiq 와의 관계 통합 실험. 판단이 목표 비중이라 사람이 규칙으로 옮겨야 하고, 이 글에서는 체결까지 못 갔습니다(5절)
검증 환경·날짜 macOS · Python 3.12 · aihf 2.3.0 · 2026-09-21~22
제휴 고지 필자는 weltiq 의 제휴 기고자입니다. 이 도구는 weltiq 와 무관한 제3자 오픈소스이고, 아래 수치는 모두 필자가 직접 돌려 얻었습니다

이 연재에서 별이 제일 많은 도구입니다. ★63,653. 그리고 README 두 번째 줄이 이렇습니다 — "Note: the system does not actually make any trades."


1. 이게 뭔가요

virattt/ai-hedge-fund 에서 중요한 건 이게 봇이 아니라 데스크라는 점입니다. 저자는 실제 헤지펀드의 위계를 그대로 코드에 옮겨 놨습니다.

FUND      = 여러 STRATEGY 에 자본을 쪼갠다 (합쳐진 장부에 마스터 리스크)
STRATEGY  = 여러 MODEL 의 의견을 섞는 정책("팟")
MODEL     = 알파 모델 하나 → Signal 하나 (확신도 −1~+1 + 근거)

그 MODEL 자리에 두 종류가 같은 인터페이스로 들어갑니다. LLM 투자자 페르소나(버핏·멍거·그레이엄·린치·드러켄밀러), 그리고 순수 파이썬 계산(PEAD — 실적 서프라이즈 뒤의 주가 표류를 노리는 계량 모델). 계량 모델만 쓰면 모델 키 없이도 펀드가 돕니다.

설계 원칙은 저장소에 못 박혀 있습니다 — "The LLM never touches the trade." 에이전트는 의견을 만들 뿐, 크기를 정하고 주문을 내는 것은 결정론 코드입니다. 판단은 하고 주문은 안 합니다. brokers/ 는 SimBroker 하나뿐이고 모듈 표에 스스로 "paper/live brokers planned"라고 적혀 있습니다. 그 빈자리가 5절입니다.

항목 값 확인 방법
주소 · 라이선스 github.com/virattt/ai-hedge-fund · MIT GitHub API
별 수 ★63,653 · 포크 11,159 (관측일 2026-09-22) GitHub API
마지막 푸시 2026-09-18 · 개설 2024-11-29 · 열린 이슈 166 GitHub API
패키지 PyPI aihf 2.3.0 · 파이썬 >=3.11,<4.0 PyPI JSON API
알파 모델 · 브로커 6개(LLM 5 + 계량 1) · SimBroker 하나 hedge_fund/ 소스

2. 설치

⚠ 이 도구는 공짜가 아닙니다

Financial Datasets(시세·펀더멘털·실적)가 $20 / 요청 1,000개 선불입니다. 이 글 전체가 80 요청. 모델 API 는 계량 모델만 쓰면 0원이지만, 데이터 키는 어느 경우에도 필요합니다.

README 는 pipx·poetry 를 안내하는데 필자 기계엔 둘 다 없어서 uv 로 깔았습니다.

git clone https://github.com/virattt/ai-hedge-fund /tmp/ai-hedge-fund
uv venv --python 3.12 /tmp/aihf-venv
uv pip install --python /tmp/aihf-venv/bin/python /tmp/ai-hedge-fund

설치 4초. 가상환경 0.024초 + 패키지 4초(clone 제외). 키는 미리 안 넣어도 됩니다 — 처음 필요해지는 순간 앱이 물어보고 ~/.hedge-fund/.env 에 0600 권한으로 저장합니다.

막히는 자리

증상 정체 우회
Invalid end_date: end_date must be today (2026-09-21) or older 한국에서 치면 거의 항상 납니다. 화면의 "오늘"은 기계의 로컬 날짜인데 데이터 API 의 "오늘"은 미국 날짜입니다 TZ=America/New_York aihf 로 띄우거나 --date 를 명시
abstained: … only 3 filed periods (need 4) 고장이 아닙니다. 스냅샷에 분기 4개가 안 차면 에이전트가 의견을 거부합니다 그대로 두세요. 기권이 기록에 남는 게 맞습니다
백테스트가 n_fills: 0 인데 오류는 없음 수량 설정이 1주 미만. 주식은 1주 단위입니다 수량을 올리세요
poetry: command not found README 가 poetry 를 전제합니다 uv pip install 로 됩니다
GET /news/ 400: Invalid limit 뉴스 기본값 limit=1000 을 서버가 거절. 도구 쪽 버그 지금 파이프라인은 뉴스를 안 써서 영향 없음

첫 번째 것은 화면으로 남깁니다.

시간대 때문에 죽은 실행

에이전트 셋은 전부 Done 인데 맨 위에 빨간 줄 하나. end_date must be today (2026-09-21) or older — 필자 기계는 이미 9월 22일이었습니다. 한국·일본 사용자는 이걸 제일 먼저 만납니다.**


3. 첫 결과

3-1. 화면은 터미널 앱입니다

인자 없이 aihf 를 치면 대화형 터미널 앱(TUI) 이 뜹니다. 웹이 아니라 주소가 없습니다.

aihf 첫 화면

키를 하나도 안 넣고 aihf 를 친 직후. 동사가 둘뿐 — 펀드를 돌리거나, 새로 만들거나. 아래 줄 agents reason with Opus 5 claude-opus-5 — 키가 없어도 기본 모델이 이미 선택돼 있습니다.**

키 없이 홈·모델 고르기·펀드 만들기 마법사까지 전부 열립니다. 막히는 건 Enter 로 실행을 누르는 순간뿐. 처음 열어도 example-fund 예제가 깔려 있어 Run an existing fund → 예제 → 종목 → Enter 면 첫 결과까지 갑니다. 캡처는 140×42 인데 80×24 에서도 안 깨집니다(캡처).

모델 고르기

m 을 누르면 나오는 모델 목록. 키가 없어도 공급자별 목록이 열립니다(일곱 공급자·아홉 모델). OPENAI 줄의 openai/gpt-6-astra 는 필자가 3-3 에서 고쳐 넣은 이름입니다.

데이터 키 요구

예제 펀드에 AAPL 을 넣고 Enter 를 친 결과. 모델 키보다 데이터 키를 먼저 묻습니다 — 시세가 없으면 에이전트를 부를 것도 없으니까요.

3-2. 모델 키 없이 펀드 한 사이클

만다테는 그냥 YAML 이고 종목을 안 적는 게 특징입니다 — "만다테는 데스크이지 관심종목이 아니다." 종목은 실행할 때 --tickers 로 줍니다.

# ~/.hedge-fund/mandates/quant-only.yaml
name: quant-only
strategies:
  - {name: earnings-drift, weight: 1.0, models: [{name: pead}]}   # pead = 계량 모델. LLM 안 씁니다
risk: {max_position_pct: 0.25, max_gross_exposure: 1.0}
capital: 100000
rebalance: weekly
benchmark: SPY
aihf ~/.hedge-fund/mandates/quant-only.yaml \
  --tickers AAPL,MSFT,NVDA --date 2026-09-18 --out cycle.json

이렇게 나오면 성공입니다.

quant-only @ 2026-09-18  ·  1 strategies  ·  3 signals  ·  0 risk clamps  ·
0 orders  ·  NAV $100,000.00

13.2초 걸렸고 Financial Datasets 요청을 6개 썼습니다. 모델 키 오류는 없습니다. 주문 0건은 고장이 아닙니다 — PEAD 는 실적 발표가 4일 이내일 때만 의견을 내는데 그날 세 종목 다 조용했습니다. 전체 기록은 stdout 에 JSON 으로 나가 | jq 가 바로 됩니다.

3-3. 목록에 없는 OpenRouter 를 한 줄로 붙입니다

지원한다고 밝힌 공급자는 여섯인데 OpenRouter 는 없습니다. 그런데 소스에 문이 하나 열려 있습니다 — hedge_fund/llm/client.py:259 의 OpenAI 분기만 base_url 을 환경변수에서 읽습니다(Anthropic 분기엔 그 인자가 없습니다).

export OPENAI_API_KEY="<OpenRouter 키>"
export OPENAI_API_BASE="https://openrouter.ai/api/v1"

여기서 함정이 하나. 모델 목록(api_models.json)의 이름은 gpt-6-astra 인데 OpenRouter 는 벤더 접두사를 요구합니다. 모델 440개(관측일 2026-09-22)를 조회해 보니 openai/gpt-6-astra 는 있고 gpt-5.6·openai/gpt-5.6 은 없었습니다. 그리고 이 도구는 목록에 없는 이름을 만나면 Anthropic 으로 보내서, 이름만 export 하면 Anthropic 키를 찾다 죽습니다. 고치는 건 한 줄 — 설치된 목록 파일의 model_name 을 openai/gpt-6-astra 로 바꾸면 OpenRouter 가 알아듣는 이름이 나갑니다(치환 스크립트).

비용도 실측했습니다. 돈이 나간 호출은 4건, 그 뒤는 전부 프롬프트 캐시가 맞았습니다. OpenRouter 사용량이 16.311928679 → 17.148309638, 즉 $0.836381 — 호출당 약 $0.21. 집계가 몇 분 늦습니다: 직후엔 $0.706238, 나중엔 $0.836381 이었습니다.


4. 제일 잘 쓰는 법

4-1. 백테스트가 정말 "같은 코드"인지 바이트로 확인했습니다

README 의 주장 — "a backtest is … the fund, replayed, not a separate simulator."(백테스트는 별도 시뮬레이터가 아니라 펀드를 다시 돌린 것이다.) 재 봤습니다. 같은 만다테·종목으로 (가) 2026-07-02 한 사이클과 (나) 2026-07-01~09-18 백테스트를 돌린 뒤, 백테스트의 첫 리밸런스 날짜 기록과 (가)를 정렬 JSON 으로 해시해 비교했습니다.

backtest 첫 기록  as_of=2026-07-02  sha256=6dfdd25eee917d1eb95ad6801a9255514e19b6b7ffedb8ab4ca261effc76e806
단독 한 사이클    as_of=2026-07-02  sha256=6dfdd25eee917d1eb95ad6801a9255514e19b6b7ffedb8ab4ca261effc76e806
identical=True

바이트가 같습니다. 마크 가격·시그널·근거·리스크 클램프·주문·현금까지 전부요. 주장이 사실입니다.

자산 곡선

quant-only(계량 모델 하나, 모델 키 없이 돈 것)를 2026-07-02~09-18 주간 리밸런스로 돌린 화면. 초록 면이 펀드, 파란 선이 SPY. 아래 체결 테이프에서 주문이 12주 중 두 구간에만 몰린 것을 보세요 — 7/31 AAPL·MSFT 매수 → 8/7 매도, 8/28 NVDA 매수 → 9/4 매도. 실적 발표 직후에만 움직이는 규칙이니 당연한 모양입니다.

구간 2026-07-02→09-18, 12 사이클. 수익률 +3.72%(SPY +2.27%, 초과 +1.45%) · 샤프 3.01 · 최대낙폭 0.00% · 주문 6건.

이 숫자로 아무것도 주장하지 않습니다. 12주에 6번 거래한 표본이고, 최대낙폭 0%는 "대부분 현금이었다"는 뜻입니다. 그리고 이 체결은 SimBroker — 참조가격 그대로 100% 체결이라 슬리피지도 수수료도 0입니다. 이 점이 5절의 출발점입니다.

에이전트를 붙이면 화면이 이렇게 바뀝니다.

투자 에이전트들의 의견

계량 팟(Earnings Drift 40%)과 재량 팟(Deep Value 60%)을 섞은 hybrid-desk 를 2026-09-21 기준 한 사이클 돌린 화면. 같은 AAPL 을 놓고 버핏은 — 68%(중립), 그레이엄은 ▼ 94%(약세) 로 갈렸습니다. 오른쪽은 버핏 페르소나의 근거 원문.

그레이엄의 반대 의견

그레이엄 줄. 확신도 94%의 약세 — "PER 34.98배, 장부가 41.91배는 제 보수적 기준에서 안전마진이 없는 호가입니다." 이건 그 도구의 출력이지 필자나 weltiq 의 의견이 아닙니다.

펀드 만들기 마법사

Build a new fund 화면. 왼쪽 레일이 단계 넷 — 이름·전략·자본·리밸런스 주기. 종목을 묻는 단계가 없는 것을 보세요.

전략 고르기

전략 고르기. 각 줄 오른쪽에 그 팟에 누가 앉는지 — Deep Value 는 그레이엄·버핏·멍거, Earnings Drift 는 PEAD 하나. hedge_fund/strategies/ 의 YAML 을 읽은 목록이라 파일 하나 떨구면 코드 없이 전략이 늘어납니다.**

4-2. 무료 yfinance 로 $20 을 아낄 수 있나

이 도구가 제일 잘하는 일은 부품 교체입니다. 데이터 계층은 상속이 필요 없어서 메서드 이름만 맞추면 파이프라인이 그대로 받습니다. 문서의 예시대로 yfinance 클라이언트를 써 봤고(yf_client.py, 254줄), 붙이는 건 한 줄입니다.

fd = CachedDataClient(YFinanceClient(), cache_dir="~/.hedge-fund/cache/yf")
result = backtest_fund(Fund(spec), "2026-07-01", "2026-09-18", fd, ["AAPL","MSFT","NVDA"])

시세는 똑같습니다.

양쪽 종가 대조

AAPL 일봉 종가를 소수점 여섯 자리까지 나란히 놓은 것. diff 열이 전부 0.00001 이하 — 차이는 값이 아니라 부동소수 표현입니다(yfinance 는 float32). 다만 맨 아랫줄 거래량은 다릅니다 — 9/18 에 FD 86,588,203 vs yfinance 86,433,100.

세 종목 전체(2026-07-01~09-18, 56 거래일) 봉 개수 56/56 일치, 빠진 날짜 없음, 종가 최대 절대차 AAPL 0.000015 · MSFT 0.000029 · NVDA 0.000007. 응답도 yfinance 가 빨랐습니다(AAPL 975ms vs 553ms). 시세만 놓고 보면 무료가 이깁니다.

갈라지는 곳은 "언제 공개됐는가"입니다. 이 도구의 첫 설계 원칙이 "Point-in-time by construction … No lookahead, ever." 인데, 여기가 유료의 자리입니다.

Financial Datasets yfinance
재무지표 행에 제출일(filing_date) AAPL 4/4 · MSFT 4/4 · NVDA 4/4 0/5 · 0/5 · 0/5
실제 제출 지연 (보고기간 종료 → 공개) AAPL 34·34·34·34일 · MSFT 29·29·28·29일 · NVDA 31·24·31·24일 알 수 없음

이 숫자가 전부입니다. 2026-06-27 로 끝난 분기가 공개된 건 34일 뒤인 2026-07-30 입니다. yfinance 만 쓰면 그 34일 동안 아직 세상에 없던 숫자로 매매 판단을 내립니다. 이건 성과가 아니라 미래 참조입니다. (엔드포인트별 전체 비교표는 검증 기록에.)

그래서 같은 펀드를 양쪽 데이터로 돌렸습니다. 같은 만다테·같은 종목·같은 구간, 데이터 공급자만 바꿨습니다.

Financial Datasets yfinance
리밸런스 격자 12 사이클 (동일) 12 사이클 (동일)
AAPL 7/31 매수 80주 @ $308.91 80주 @ $308.91
MSFT 7/31 매수 53주 @ $464.72 53주 @ $464.72
NVDA 8/28 매수 117주 @ $217.55 없음
주문 수 6 4
수익률 +3.7217% +2.2229%
샤프 3.0125 2.0817

AAPL·MSFT 는 센트까지 같고 NVDA 하나가 통째로 빠졌습니다. 이유는 구체적이었습니다.

=== yfinance NVDA (필자 클라이언트가 매핑한 대로)
  filed=2026-08-26 report_period=2026-06-30 lag=57d -> DROPPED by PEAD 45-day filter
=== Financial Datasets NVDA
  filed=2026-08-26 report_period=2026-07-26 src=8-K lag=31d -> kept

엔비디아의 회계분기는 달력분기와 다릅니다 — 2026-07-26 에 끝납니다. yfinance 는 회계분기를 안 주니 필자 클라이언트는 달력 분기말(6/30)로 추정할 수밖에 없었고, 제출 지연이 57일로 부풀어 PEAD 의 "45일 넘으면 버린다" 규칙에 걸렸습니다. 애플은 그 차이가 3일이라 살아남았고 엔비디아는 26일이라 죽었습니다.

$20 은 어디에 쓰는 돈인가

이런 분은
차트·시세만 필요하다 yfinance 로 충분. 값이 같고 더 빠르고 공짜입니다
백테스트를 진지하게 한다 돈을 내세요. 제출일이 없으면 평균 한 달의 미래 참조가 조용히 들어갑니다
실적 이벤트 전략을 짠다 돈을 내세요. 회계분기·서류 구분이 없으면 종목이 통째로 사라집니다
발표 날짜만 길게 필요하다 yfinance 가 더 깁니다. 2020년까지 공짜

$20 으로 사는 것은 가격이 아니라 메타데이터입니다. 언제 공개됐고, 어느 서류였고, 어느 회계분기였는지. 그 셋이 없으면 백테스트는 조용히 틀립니다 — 오류도 안 나고요.


5. weltiq 로 옮기기 — 통합 실험

이 도구의 출력은 트리거가 아니라 목표 비중입니다. 2026-07-31 사이클에서 계량 팟은 사라고(PEAD AAPL·MSFT 각 +1.0), 재량 팟의 그레이엄은 안전마진이 없다고(MSFT −0.88 · AAPL −0.94) 했고, 합친 목표 비중이 AAPL −0.353 · MSFT +0.153, 리스크 한도가 AAPL 을 −0.25 로 깎았습니다. 최종 주문은 AAPL 공매도 80주 @ $308.91 · MSFT 매수 32주 @ $464.72.

준비 3줄 — weltiq 가입({{CTA_URL}}) → 마이 → 연결 관리에서 키 발급. 그다음 다섯 단계입니다.

  1. GET /v1/capabilities 로 시장을 먼저 봅니다 — us-equity open, 그리고 live_orders=False(이 글의 주문은 전부 모의입니다).
  2. 목표 비중을 수량으로 — MSFT +0.153 × $100,000 = $15,294, 주가 기준 30주.
  3. 비어 있는 두 칸을 사람이 채웁니다. 이 도구는 "이 비중을 들고 있어라"까지만 말하고 언제 들어가라는 말하지 않습니다(의견과 포지션 메커닉스를 일부러 분리하는 설계입니다). 손실 한도라는 개념도 없습니다. 진입 규칙은 weltiq 템플릿이 대고, 정지 조건은 필자가 넣었습니다($300 = 자본의 2%, 3시간).
  4. 전략 컨테이너를 만듭니다. 정지 조건은 필수 게이트라 안 넣으면 안 뜹니다.
  5. GET /v1/containers/{cid}/export 로 기록을 꺼내 다음 판단의 입력으로 돌립니다.
POST /v1/containers
{"name":"a02-aihf-msft-r1","source":"template","template_id":"TPL-002",
 "params":{"signal.n":20,"exit.sl_pct":"0.02","exit.tp_pct":"0.04","sizing.qty":"30"},
 "symbols":["MSFT"],"venue":"us-equity","tf":"1m",
 "balance":"15294","stop_max_loss":"300","stop_after_hours":3}

옮긴 숫자는 설정값으로 흩어지지 않고 전략 문서 하나가 되고 거기에 해시가 붙습니다. 파라미터를 바꾸면 해시도 갈립니다 — 이 도구가 낸 숫자가 그 문서의 정체성을 바꿉니다.

weltiq 전략 컨테이너 화면

2회차 컨테이너(a02-aihf-msft-r2) 상세 화면. SYMBOLS 줄의 상태 한 줄 — Entry conditions not met — waiting (normal). 왜 아무 일도 안 일어나는지를 한 문장으로 말합니다. 오른쪽 Auto-stop −300 · 9/22, 04:28 AM 이 필자가 손으로 넣은 테두리입니다.

여기까지가 성공 경로이고, 그 뒤가 이 편의 결론입니다. 미국장이 열린 동안(2026-09-21 13:14~14:15 ET) 컨테이너를 다섯 번 띄우며 규칙을 고쳤지만(20봉 돌파 → 5봉 → 이동평균 5/15 교차, 30주 → 20주 → 5주, 종목도 NVDA 로) 다섯 번 모두 주문 의도가 0건이었습니다. 그래서 1회 주문으로 경계를 두드렸습니다.

GET /v1/orders/estimate?venue=us-equity&symbol=MSFT&side=buy&size_unit=base&size_value=30
→ {"qty":"30","ref_px":"499.31","est_notional":"14979.30","fee_estimate":"0E-8"}

POST /v1/orders/oneoff {… "qty":"30", "thesis":{"why":"… PEAD BEAT +1.0 와 Deep Value 를 합쳐
                          MSFT 목표비중 +0.153 …"}, "invalidation":{"px_below":"489.32"}}
→ 422 {"code":"envelope_required","detail":"이 심볼을 허용하는 주문 한도 승인이 없습니다 — 먼저 승인하세요"}

견적까지는 문제없이 통과했고(30주, 명목 $14,979.30) 마지막 한 칸에서 막혔습니다 — 그 종목에 사람이 승인한 주문 한도가 없어서입니다. 그 한도를 API 키로 넓힐 수 있는지도 확인했는데 403(session_required)이었습니다. 이 계정에 승인된 한도는 BTCUSDT(주문당 $500) 하나뿐이라 미국 주식은 애초에 열려 있지 않았습니다.

이걸 "고리가 안 닫혔다"고 쓸 수도 "테두리가 작동했다"고 쓸 수도 있는데 둘 다 맞습니다. 한도 승인은 브라우저에서 사람이 하는 일이라 이 글에서는 열지 않았습니다. 관측된 범위는 여기까지 — 주문 시도·결과 읽기·규칙 고치기까지 돌았고 체결은 없었습니다. 정지 조건도 다섯 번 다 걸렸지만(Auto-stop −300) 손실이 날 체결이 없어 발동은 미확인입니다. 미확인은 실패가 아니라 미확인입니다.

그래서 뭐가 달라지나

이 도구의 체결 (SimBroker) weltiq 모의
체결가·수수료 참조가격 그대로 100% · 수수료 없음(소스에 "future addition") 호가 기준, 모델 몫과 지연 몫 분리 기록 · 요율 프로필로 차감·재계산
거부 없음 — 거부 경로가 존재하지 않음 사유와 건수로 남음(entry_blocked·qty_below_lot·잔고 부족)
사람의 승인 없음 — 코드가 곧 권한 주문 한도 승인이 별도 게이트. 없으면 envelope_required, API 키로 넓히면 403
정지 조건 · 꺼졌을 때 개념 없음 · 포지션도 같이 사라짐(파이썬 객체) 필수 게이트(없으면 컨테이너가 안 뜸) · 서버 원장에 남음

weltiq 가 지는 칸도 적습니다. 이 도구의 백테스트는 18개월을 훑으며 모든 사이클의 근거 텍스트를 통째로 보관하는데, weltiq 백테스트는 체결과 거절만 남깁니다. 그리고 이 도구가 내는 공매도 판단(AAPL −0.25)은 us-equity 컨테이너로 못 옮깁니다. 여러 종목을 한 장부로 netting 하는 것도 못 옮깁니다 — 이 도구의 제일 큰 특징이 옮겨지는 도중에 사라집니다.

마지막으로 하나. 이 도구의 run_cycle 독스트링은 "Only the clock and the broker change — the pipeline never does." 로 끝납니다 — weltiq 가 자기 설계 원칙으로 적어 둔 문장과 같습니다. 다른 점은 하나, 이 도구의 PaperBroker 와 RealBroker 는 아직 없습니다("planned").


6. 써 보니

좋았던 것

아쉬운 것

비용 값
코드 · 시간 0원(MIT) · 설치 4초 · 한 사이클 13초(계량)
시세 Financial Datasets $20 / 1,000 요청 — 이 글 전체 80 요청
모델 유료 호출 4건 $0.836381(호출당 $0.21). 계량 모델만 쓰면 0원

이 도구로는 안 되는 것 — 암호자산·한국 종목, 종목 골라 주기(스크리너가 없습니다), 상주 실행(한 사이클 돌고 끝), 수수료 바꿔 재기(SimBroker 에 수수료 모델이 없습니다).


7. 다음 행동

먼저 quant-only 만다테로 한 사이클을 돌려 보세요 — 모델 키 없이 13초입니다. 그다음 데이터 공급자를 yfinance 로 갈아 끼우면 4-2 의 수익률 차이를 손으로 확인하게 됩니다.

다음 편은 3편 Erfaniaa/LLM-Auto-Trader 입니다. 이번 도구는 판단만 두껍게 하고 주문 자리를 비워 뒀는데, 다음 도구는 둘 다 하면서 둘을 잇는 허리가 아주 얇습니다 — 거래소에 닿는 자리가 CCXT 함수 열세 개뿐이라 그 열셋을 흉내 내는 파일 하나로 체결이 통째로 옮겨집니다.

weltiq 준비 — 3줄 1. 가입: {{CTA_URL}} 2. 마이 → 연결 관리에서 API 키 발급 3. claude mcp add weltiq --header "Authorization: Bearer <키>" https://weltiq.ai/mcp


이 글의 모든 명령·출력·숫자는 2026-09-21~22 에 실제로 돌려서 얻었습니다. 오간 돈은 없고 전부 모의이며 어떤 매매 의견도 아닙니다. "bullish/bearish" 는 그 도구의 출력입니다. 여기 적지 않은 시행착오·원문 로그·전체 비교표는 검증 기록에 있습니다.