느낌적인 느낌으로 투자하는 것에 지쳐서, 근거를 제시하는 AI 위원회를 만들었습니다
요약
단순한 점수 제공 방식에서 벗어나, 감사 가능한 추론 경로를 제공하는 멀티 에이전트 투자 위원회 'VerumTrade'를 소개합니다. 강세론과 약세론 에이전트 간의 적대적 토론을 통해 블랙박스 없는 투명한 투자 결정을 내리는 구조를 제안합니다.
핵심 포인트
- 단순 점수가 아닌 근거 중심의 감사 가능한 추론 경로 제공
- 강세/약세 에이전트 간의 적대적 토론을 통한 편향 제거
- 데이터 수집부터 리스크 검토까지 6단계 멀티 에이전트 파이프라인
- 오픈 소스(Apache-2.0) 기반의 트레이딩 프레임워크
이제 '바이브 코딩 (vibe coding)'의 시대이니, '바이브 투자 (vibe investing)'도 존재한다고 봐야겠죠. 대부분의 "AI 주식 선정" 도구들은 동일한 방식으로 작동합니다. 티커(ticker)를 입력하면, 왜 그런 결과가 나왔는지 확인할 방법도 없이 **"매수 — 신뢰도 87%"**라는 결과만 내놓습니다. 당신은 아무것도 분석하고 있지 않습니다. 그저 느낌(vibe)을 믿고 있을 뿐입니다. 추론 과정을 검토할 수 없다면, 그 결정을 신뢰할 수 없고, 그로부터 배울 수도 없습니다.
그래서 저는 그 반대의 것을 만들었습니다. 출력값이 단순한 점수가 아니라, 가공되지 않은 증거로부터 최종 매매 논거(trade thesis)에 이르기까지 감사 가능한 경로(auditable trail)를 보여주는 멀티 에이전트 위원회(multi-agent committee)입니다. 강세론(Bull) 분석가와 약세론(Bear) 분석가가 해당 티커를 두고 논쟁하며, 리스크 관리자(risk manager)가 승인하고, 최종 결정은 자신이 근거로 삼은 구체적인 증거를 반드시 인용해야 합니다. 저는 이를 VerumTrade(라틴어 verum, "진실")라고 불렀습니다. 이것은 오픈 소스(Apache-2.0)이며, 이 포스트는 홍보가 아니라 이것이 어떻게 구성되었는지에 관한 것입니다.
핵심 아이디어: 느낌을 믿는 대신 결정을 감사하라
모든 것을 이끈 설계 제약 조건은 다음과 같습니다: 모든 단계에서 추론 과정을 읽을 수 있어야 하며, 그것이 구축된 근거를 검토할 수 있어야 한다. 블랙박스는 없습니다. 이는 각 단계가 다음 단계에서 소비할 구조화된 출력(structured output)을 생성하는 멀티 에이전트 그래프(multi-agent graph)에 자연스럽게 매핑되었습니다.
파이프라인은 6단계로 실행됩니다:
- 분석가 (Analysts): 시장, 뉴스, 소셜, 기본적 분석(fundamental), 촉매제(catalyst) 증거를 병렬로 수집합니다.
- 증거 그래프 (Evidence graph): 이러한 가공되지 않은 조사 결과들을 각각 안정적인 ID를 가진 구조화되고 중복 제거된 사실들로 정제합니다.
- 강세/약세 토론 (Bull/Bear debate): 두 에이전트가 반대 입장에서 논거를 두고 논쟁합니다.
- 트레이더 계획 (Trader plan): 토론 내용을 실행 가능한 제안으로 전환합니다.
- 리스크 검토 (Risk review): 규모(sizing), 타이밍, 집중도, 하방 위험(downside)을 점검합니다.
- 결정 (Decision): 최종 근거와 전체 추적(full trace)을 기록합니다.
이 체인의 각 화살표는 느낌이 아니라 구조화된 인계(handoff)입니다. 토론 단계는 저를 가장 놀라게 한 부분이었는데, 명시적인 적대적 통과(adversarial pass, 논거를 공격하는 것이 유일한 임무인 Bear 에이전트)를 강제함으로써 단일 "분석가" 에이전트가 기꺼이 간과해 버릴 수 있는 많은 동기화된 추론(motivated reasoning)을 잡아낼 수 있었습니다.
선행 연구의 어깨 위에 올라서기 — 그리고 내가 추가한 것들
솔직히 말씀드리면, VerumTrade는 훌륭한 오픈 소스 멀티 에이전트 트레이딩 프레임워크인 TradingAgents에서 시작되었습니다. 위원회(committee), 강세/약세 논쟁(bull/bear debate), 리스크 논의 등은 모두 그들의 유산이며, 마땅히 그들에게 공로를 돌려야 합니다.
이러한 시스템들(초기의 제 시스템을 포함하여)에서 저를 괴롭혔던 점은 "추론 (reasoning)"이 그저 _출력 (printed)_될 뿐이라는 것이었습니다. 멋진 마크다운 (markdown) 보고서를 받기는 하지만, 최종적인 매수/매도/보유 (BUY/SELL/HOLD) 결정은 사실상 텍스트 추출에 불과하며, 그 판결을 도출한 사실(facts)과 구조적으로 연결되는 것이 아무것도 없었습니다. 그래서 저는 누락되었던 계층을 추가했습니다:
- 타입이 지정된 증거 그래프 (A typed evidence graph). 모든 사실, 추론, 그리고 충돌은
id, 지지/반박하는 사실의 ID, 신뢰도(confidence), 그리고 반증 요소(falsifier)를 가진 구조화된 객체(object)입니다. 이는 자유롭게 떠다니는 산문(prose)이 아닙니다. - 증거를 반드시 인용해야 하는 결정 (A decision that must cite its evidence). 최종 결정 컨트랙트 (decision contract)는 반드시
rationale_evidence_ids필드를 요구합니다. 이는 해당 호출이 근거로 삼는 증거 ID들의 비어 있지 않은 리스트입니다. 만약 모델이 거래를 정당화하는 근거를 지목하지 못하면, 검증(validation)은 실패합니다. - 스키마 검증이 완료된 거래 객체 (A schema-validated trade object). 동작(action), 주문 유형(order type), 주문 유효 시간(time-in-force)은 열거형 (enums)이며,
stop_loss(손절매)와take_profit(익절)은 필수적인 숫자 필드입니다. 지정가/스탑 가격(limit/stop prices)의 일관성도 확인합니다. "매수, 잘 모르겠음, 스탑을 어딘가에 설정할지도 모름"과 같은 상황은 허용되지 않습니다. - 자가 감사 + 결정 가드 (A self-audit + decision guard). 검증 단계(validation pass)를 통해 위반 사항, 적용된 수정 사항, 그리고 최종 동작이 일관성을 유지했는지 기록하며, 잘못된 계획을 실행하는 대신 이유를 밝히고 중단(abort)할 수 있습니다.
핵심은 선행 연구가 나쁘다는 것이 아니라, "풀이 과정을 보여라 (show your work)"라는 말이 단순히 _출력되는 것_이 아니라, 구조화되고, 연결되며, 검증되어야 한다는 것입니다.
반드시 제대로 구현해야 했던 두 가지
2단계 LLM 설정 (A two-tier LLM setup). 모든 에이전트를 프론티어 모델 (Frontier model)로 실행하는 것은 느리고 비용이 많이 들며, 모든 것을 저렴한 모델로 실행하는 것은 중요한 단계에서 신뢰할 수 없습니다. 따라서 일상적인 추출 (Extraction) 및 요약 (Summarization)은 빠르고 저렴한 계층 (Tier)에서 실행하고, 토론 (Debate) 및 리스크 판단 (Risk judgment)은 더 강력한 계층에서 실행합니다. 이를 통해 추천을 실제로 움직이는 결정의 품질을 훼손하지 않으면서도 비용을 합리적으로 유지할 수 있었습니다.
공급자 독립성 (Provider independence). 처음에는 하나의 공급자로 시작했다가 이를 하드코딩한 것을 즉시 후회했습니다. 이제 파이프라인은 일반적으로 OpenAI 호환 엔드포인트 (OpenAI-compatible endpoints)를 대상으로 실행됩니다. 기본 URL (Base URL)을 재정의함으로써 Qwen 및 기타 백엔드에서 전체 파이프라인을 실행해 보았습니다. 멀티 에이전트 (Multi-agent) 시스템을 구축하고 있다면, 초기 단계에서 단일 벤더 (Vendor)로부터 분리하십시오. 나중에 이를 수정하는 것은 매우 고통스럽습니다.
제가 가장 자랑스럽게 생각하는 부분은 쏠림 현상 / 매크로 후퇴 인지 (Crowding / macro-pullback awareness) 체크 기능입니다. 이는 투자 가설 (Thesis)이 쏠림 현상이 심하거나 매크로에 민감한 설정에 의존하고 있을 때, 즉 상황이 급변하기 직전까지는 좋아 보이지만 순식간에 무너질 수 있는 상태일 때 경고를 보내는 가드 (Guard)입니다. 이는 초보적인 버전이 연준 (Fed)의 헤드라인 하나에 모든 것이 무너질 수 있는 종목들을 자신 있게 추천하는 것을 지켜보면서 직접 고안해 낸 것입니다.
사용 모습
웹 앱, CLI, 그리고 일반적인 Python API가 제공됩니다. 프로그래밍 방식의 진입점은 제가 만들 수 있는 한 최대한 최소화했습니다:
from verumtrade import run_pipeline
# 전체 상태와 구조화된 매매 결정(trade decision)을 반환합니다
...
출력값은 단순한 판결이 아닙니다. result.traces는 전체 추론 체인 (Reasoning chain)이며, 모든 결정은 이를 정당화하는 증거를 다시 가리킵니다.
솔직한 면책 조항
이것은 연구 및 의사결정 지원 (Research and decision-support) 도구이며, 예언자가 아니며 금융 자문도 아닙니다. 시장 데이터는 지연되거나 틀릴 수 있고, LLM 출력은 틀릴 수 있으며, 트레이딩에는 실제 손실 위험이 따릅니다. 저는 이 도구의 출력을 복종해야 할 대상이 아니라, 이의를 제기해야 할 구조화된 '제2의 의견'으로 취급합니다.
현재 상태
아직 초기 단계이며 저는 활발하게 구축 중입니다. 만약 이 아키텍처 (architecture)가 흥미롭거나, 멀티 에이전트 (multi-agent) 설계의 허점을 찾아보고 싶다면, 리포지토리 (repo) 주소는 여기 있습니다: https://github.com/muye1202/VerumTrade
저는 증거 그래프 (evidence-graph)와 "결정은 반드시 그 근거를 인용해야 한다"는 제약 조건 (constraint)에 대해 진심 어린 피드백을 받고 싶습니다. 여러분이 추천을 실제로 신뢰하기 위해 트레이스 (trace)에서 보고 싶은 것은 무엇인가요? 그 질문이 제가 이 프로젝트를 오픈 소스 (open-source)로 공개한 가장 큰 이유입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기