ai-hedge-fund는 여러 투자 관점을 비교해 보는 교육용 모의 분석 프로젝트이지, 실제 자금을 자동 운용해도 된다는 근거는 아닙니다. 결과가 그럴듯해 보여도 데이터 시점, 계산, 리스크 제한을 독립적으로 검증하기 전에는 매매 판단으로 사용하지 않아야 합니다.
ai-hedge-fund에 실제 돈을 맡기기 전에: 멀티에이전트 구조와 검증 함정
투자 회사를 흉내 낸 의사결정 흐름
프로젝트는 하나의 모델에게 종목 결론을 바로 묻지 않고 역할을 나눕니다. 데이터 노드가 입력을 준비하고, 펀더멘털, 기술, 감성, 가치평가 에이전트가 서로 다른 관점의 신호를 만듭니다. 워런 버핏, 피터 린치, 벤저민 그레이엄, 빌 애크먼 같은 투자자 페르소나는 각 철학을 프롬프트로 표현해 같은 자료를 다르게 해석합니다.
이 신호들은 리스크 매니저를 거쳐 포트폴리오 매니저의 최종 결론으로 모입니다. 구조의 장점은 어느 단계에서 판단이 갈렸는지 추적하기 쉽다는 데 있습니다. 그러나 에이전트 수가 많다고 독립적인 증거가 늘어나는 것은 아닙니다. 모두 같은 누락된 데이터나 잘못된 숫자를 보면 여러 의견이 같은 방향으로 틀릴 수 있습니다.
실행 명령은 2026년 3월의 스냅샷이다
원문에 나온 기본 흐름은 다음과 같습니다. 버전과 운영체제, 필요한 API 제공자 설정이 고정되지 않은 예시이므로 현재 저장소의 문서와 잠금 파일을 먼저 확인해야 합니다.
1
2
3
4
git clone https://github.com/virattt/ai-hedge-fund.git
cd ai-hedge-fund
poetry install
python src/main.py --ticker AAPL --show-reasoning
실행 전에는 별도의 가상환경을 쓰고, API 키를 저장소에 커밋하지 않으며, 호출 비용과 실패 로그를 남기는 편이 좋습니다. show-reasoning 출력은 판단을 살펴보는 자료이지 계산의 정확성을 증명하는 감사 로그가 아닙니다. 종목 코드 하나로 결과가 나왔더라도 데이터 날짜와 출처가 요청 시점과 맞는지 확인해야 합니다.
백테스트에서 먼저 잡아야 할 오류
LLM은 단위, 부호, 통화와 기간을 혼동하거나 텍스트에 없는 수치를 채워 넣을 수 있습니다. 각 에이전트가 낸 점수보다 원자료에서 최종 비중까지 이어지는 변환을 확인해야 합니다.
- 모든 입력에 실제 이용 가능 시각을 붙여 미래 정보가 과거 판단에 섞이지 않게 합니다.
- 배당, 분할, 결측치와 서로 다른 회계 기간을 어떻게 처리했는지 기록합니다.
- 같은 기간의 기준 전략과 거래 비용을 포함해 비교합니다.
- 모델과 프롬프트를 고정하고 같은 입력의 반복 결과가 달라지는지 봅니다.
- 리스크 매니저가 허용 한도 밖의 결론을 실제로 막는지 실패 사례로 시험합니다.
과거 수익률이 높아도 데이터 누출이나 유리한 종목 선택이 있으면 의미가 없습니다. 분석 결과를 사람이 다시 계산할 수 있어야 멀티에이전트 토론의 가치를 평가할 수 있습니다.
실전 자동매매와는 거리가 있다
원문도 이 프로젝트를 교육과 연구 목적의 시뮬레이션으로 설명하며 실시간 거래 시스템이 아니라고 선을 긋습니다. 지연되는 데이터, API 장애, 모델 출력 변화, 주문 체결과 포지션 회계는 별도의 운영 문제입니다. 특히 “투자 대가” 이름은 프롬프트 관점을 뜻할 뿐 실제 인물의 판단이나 성과를 재현한다는 뜻이 아닙니다.
가장 적절한 용도는 서로 다른 분석 논리를 비교하고, 위험 관리 단계가 결론을 어떻게 바꾸는지 관찰하는 것입니다. 실제 투자 결정은 자신의 재무 상황과 손실 감내 범위를 바탕으로 별도 검토해야 하며, 이 프로젝트의 출력만으로 자금을 움직여서는 안 됩니다.
여러 에이전트의 합의는 어떻게 검증할까
펀더멘털, 기술, 감성 에이전트가 모두 매수를 말해도 세 개의 독립된 증거가 생겼다고 볼 수는 없습니다. 같은 가격 데이터와 같은 언어 모델을 쓰고 있다면 한 단계의 오류가 여러 답변에 반복될 수 있습니다. 페르소나 이름이 다르더라도 실제 입력과 계산식이 같으면 표현만 다른 상관된 신호일 가능성이 큽니다.
검증할 때는 최종 투표 수보다 각 신호의 근거를 표로 펼치는 편이 낫습니다. 어떤 원자료의 어느 날짜와 항목을 사용했는지, 숫자를 어떤 식으로 변환했는지, 다른 에이전트와 중복된 근거가 무엇인지 기록합니다. 서로 반대되는 입력을 넣었을 때 각 역할이 실제로 다른 판단을 내리는지도 확인해야 합니다. 모든 역할이 비슷한 문장만 되풀이한다면 멀티에이전트 구조의 추가 비용을 정당화하기 어렵습니다.
리스크 매니저는 의견을 하나 더 보태는 역할이 아니라 허용 불가능한 결론을 막는 통제 지점이어야 합니다. 포지션 한도를 넘는 제안, 결측 데이터가 있는 종목, 가격 시점이 어긋난 입력을 일부러 주고 실제로 거부하는지 시험합니다. 경고 문구만 출력하고 포트폴리오 매니저가 그대로 주문 비중을 만들 수 있다면 통제가 작동한 것이 아닙니다.
숫자는 어떤 경로로 다시 계산해야 할까
LLM의 설명과 결정론적인 계산을 분리해야 합니다. 매출 성장률, 가치평가 비율, 이동 평균, 포지션 비중처럼 공식이 있는 값은 원자료와 코드로 계산하고, 모델에는 그 결과의 해석만 맡기는 구성이 낫습니다. 모델이 텍스트에서 숫자를 추출해야 한다면 통화, 단위, 분기와 연도를 구조화한 뒤 범위와 합계 검사를 거쳐야 합니다.
예를 들어 두 회계 기간을 비교할 때 연간 수치와 분기 수치를 섞거나, 백만 단위와 원 단위를 혼동하면 그 뒤의 모든 에이전트가 그럴듯한 잘못된 결론을 만들 수 있습니다. 가격 데이터도 종가, 수정 종가, 장중 가격 중 무엇을 사용했는지 고정해야 합니다. 최종 출력에는 최소한 입력 시각, 사용한 필드, 계산 코드의 버전, 누락값 처리 방식을 남겨야 사람이 같은 결과를 재현할 수 있습니다.
근거가 없는 숫자를 모델이 만들어 냈을 때는 해당 분석을 중단하는 편이 맞습니다. 다른 에이전트의 합의로 빈 근거를 메우거나 이전 날짜의 값을 현재 값처럼 쓰면 안 됩니다. “계산 불가”를 허용하는 것이 항상 점수를 내도록 강제하는 것보다 신뢰할 수 있는 설계입니다.
백테스트는 어떤 순서로 설계해야 할까
첫 단계는 의사결정 시점과 데이터 이용 가능 시점을 맞추는 일입니다. 보고서의 대상 기간이 끝났더라도 실제 공개일 전에는 알 수 없었던 정보를 과거 판단에 넣으면 미래 정보 누출이 생깁니다. 뉴스나 감성 데이터도 게시 시각과 수집 지연을 반영해야 합니다. 재무제표를 나중에 정정한 값으로 과거부터 알고 있었던 것처럼 사용하지 않았는지도 확인해야 합니다.
둘째는 비교 대상과 비용을 고정하는 일입니다. 같은 기간의 단순 보유나 정해진 규칙 기반 전략과 비교하고, 매매 수수료와 가격 차이, 거래 불가능 구간을 포함합니다. 수익률만 보지 말고 최대 손실, 회전율, 현금 비중, 한 종목 집중도처럼 위험을 함께 기록합니다. 유리한 종목과 기간만 골라 보여 주는 대신 시작점을 옮긴 여러 구간과 전체 후보군에서 반복해야 합니다.
셋째는 모델 변동을 측정하는 일입니다. 같은 입력을 여러 번 실행해 종목 의견과 비중이 얼마나 바뀌는지 보고, 모델 버전과 프롬프트를 고정합니다. 작은 표현 차이로 매수와 매도가 뒤집힌다면 그 신호에 큰 자금을 연결할 수 없습니다. 백테스트 결과에는 성공 실행뿐 아니라 API 오류, 파싱 실패, 결측 입력을 만난 횟수도 포함해야 합니다.
모의 운용에서 어떤 실패를 일부러 만들어 볼까
과거 데이터 평가를 통과해도 실시간 운영에서는 입력 지연과 장애가 나타납니다. 장이 열리기 전의 낡은 가격, 일부 종목만 누락된 데이터, 중복 이벤트, 모델의 형식 오류를 넣고 시스템이 거래를 멈추는지 시험합니다. 동일 종목을 여러 역할이 추천해 합산 비중이 한도를 넘는 상황이나, 리스크 단계 뒤에 포트폴리오 단계가 제한을 되돌리는 상황도 재현해야 합니다.
모의 주문 단계에서는 신호가 나온 시각과 체결 가능한 첫 시각을 분리합니다. 그 사이 가격이 바뀌는 경우와 주문이 일부만 체결되는 경우를 포함하고, 보유 현금과 기존 포지션이 일치하는지 매 회차 대조합니다. 모델 출력이 없어도 안전한 기본 행동은 거래하지 않는 것이어야 합니다. 오류가 났을 때 마지막 추천을 반복 실행하는 방식은 오래된 판단을 새 주문으로 바꿀 수 있습니다.
운영 로그에는 원자료, 각 에이전트 출력, 수치 검산 결과, 리스크 거부 사유, 최종 모의 주문을 하나의 실행 ID로 연결합니다. 그래야 손실이나 이상 비중이 나타났을 때 어느 단계에서 잘못됐는지 찾을 수 있습니다. 설명이 길다는 사실과 감사 가능성은 다르며, 재현할 수 있는 입력과 계산이 있어야 감사 로그가 됩니다.
이 프로젝트가 유용한 경우와 아닌 경우는 무엇인가
서로 다른 투자 관점을 같은 입력에 적용해 논리 차이를 학습하거나, 리스크 단계가 포트폴리오 결론을 어떻게 제한하는지 실험하는 용도에는 적합할 수 있습니다. 자신이 만든 결정론적 분석 파이프라인의 설명 층을 비교하거나, 오류 주입 테스트를 설계하는 연구용 기준점으로도 사용할 수 있습니다.
반면 개인의 재무 목표와 세금, 계좌 제약, 유동성, 주문 체결을 포함한 실제 자산 운용을 대신하지는 않습니다. 투자자 이름을 붙인 프롬프트는 해당 인물의 최신 판단이나 실제 전략을 복제하지 않습니다. 저장소의 인기, 말투가 자신 있어 보이는 설명, 한 구간의 높은 백테스트 성과도 실전 적합성의 증거가 아닙니다.
도입 여부는 “어떤 종목을 사야 하나”보다 “어떤 분석 단계를 관찰하고 검증하려는가”로 결정해야 합니다. 목표가 교육과 구조 실험이라면 작은 데이터와 모의 포트폴리오로 시작할 수 있습니다. 목표가 실제 투자라면 이 프로젝트 밖의 규제, 보안, 데이터 계약, 체결과 리스크 시스템이 필요하며 전문가의 별도 검토를 거쳐야 합니다.
함께 읽으면 이해가 이어지는 글
- AI-Trader로 실거래를 맡겨도 될까? 저장소 불일치와 백테스트 함정 — AI-Trader 글에 섞인 저장소, 논문, 예시 코드의 불일치를 먼저 확인하고, 실거래 전 반드시 검증해야 할 미래 정보 누수와 체결, 위험 관리 조건을 짚습니다.
- TradingAgents-CN으로 자동매매해도 될까: Bull, Bear 토론과 리스크 관리의 착시 — 분석가, Bull/Bear 연구원, 트레이더, 리스크 관리자로 구성된 TradingAgents-CN을 살펴보고, 토론이 환각과 투자 위험을 없애지 못하는 이유를 정리합니다.
- OpenAI Agents SDK를 쓰기 전 확인할 것: handoff, guardrail, 상태 소유권 — 2025년 원문 스냅샷의 OpenAI Agents SDK를 Agent, Runner, handoff, guardrail 관점에서 읽고, 도입 범위와 상태, 승인 경계를 정리합니다.
자주 묻는 질문
ai-hedge-fund의 결과만 보고 실제 주식을 매매해도 되나요?
안 됩니다. 이 프로젝트는 교육, 연구용 모의 분석이며 데이터 시점, 수치 계산, 거래 비용, 리스크 제한을 독립적으로 검증하지 않은 출력은 투자 판단의 근거가 될 수 없습니다.
에이전트가 많으면 분석 신뢰도도 자동으로 높아지나요?
그렇지 않습니다. 여러 에이전트가 같은 데이터 누락이나 잘못된 숫자를 공유하면 의견 수만 늘고 오류는 그대로 남으므로 출처와 계산 경로를 별도로 검산해야 합니다.
백테스트에서 가장 먼저 확인할 것은 무엇인가요?
각 입력을 당시 실제로 알 수 있었는지 확인해 미래 정보 누출을 막는 것이 우선입니다. 이후 거래 비용, 종목 선택 편향, 반복 실행 변동과 기준 전략을 같은 기간에 비교해야 합니다.
←→ 키와 좌우 스와이프를 지원합니다. 읽던 페이지는 이 기기에 저장됩니다.