Redacted Dashboard
DRY_RUN 상태, LLM 사용량, 판단 리뷰, 실행 준비 상태를 한 화면에서 확인하는 운영 관찰 중심 UI입니다.
개인 프로젝트 · 멀티에이전트 투자 판단 연구 / agentic trading workflow
Market, Decision, Risk, Order, Evaluation, Memory 역할을 분리하고, News context는 확장 지점으로 남겨둔 AI Agent 연구 플랫폼입니다. Redis lock과 PostgreSQL workflow audit trail로 실행 흐름을 추적합니다.
구조
Multi-Agent
관측성
PostgreSQL Audit
런타임 가드
Redis Lock
실행 모드
Paper / Live Adapter
LLM을 붙인 투자 실험은 단순히 “매수/매도 답변”을 만드는 것보다, 어떤 데이터가 들어갔고 어떤 가드레일을 통과했으며 어디서 실행이 멈췄는지를 추적할 수 있어야 합니다. 특히 공개 포트폴리오 프로젝트라면 실거래 위험, API 키, 계좌 데이터, LLM 비용을 안전하게 분리해야 합니다.
AI Trading Agent는 하나의 거대한 함수 대신 Market, Decision, Risk, Order, Logger, Evaluation, Memory 역할을 나눴고, News context는 외부 provider 연결 전 확장 지점으로 분리했습니다. 각 실행은 workflow run/step으로 기록하고, Redis runtime lock으로 중복 실행을 막으며, 기본은 paper trading, 외부 action은 env opt-in adapter로 분리했습니다.
공개용 이미지는 브라우저 주소, 서버 IP, 북마크, 작업표시줄 같은 개인 정보를 제거하고 앱 화면과 구조만 보이도록 재구성했습니다.
DRY_RUN 상태, LLM 사용량, 판단 리뷰, 실행 준비 상태를 한 화면에서 확인하는 운영 관찰 중심 UI입니다.
Scheduler부터 Evaluation까지 이어지는 실행 흐름과 Memory/Journal 피드백 루프를 분리해 표현했습니다.
MarketAgent, DecisionAgent, RiskAgent, OrderAgent, LoggerAgent, EvaluationAgent, MemoryAgent를 역할별로 분리하고, NewsAgent는 시장 스냅샷 기반 context 계약을 먼저 둔 확장 지점으로 관리했습니다. LLM이 필요한 판단과 Python으로 충분한 계산/검증을 나눠 비용과 리스크를 줄였습니다.
agent 실행마다 workflow run과 step을 저장해 runtime lock, 시장 데이터, context 생성, 리스크 체크, LLM 판단, 주문 시도 여부를 타임라인으로 확인할 수 있게 했습니다.
이미 떠 있는 Redis 컨테이너를 활용해 agent 실행 lock을 잡도록 구성했습니다. 같은 순간 두 번 실행되는 경우 HTTP 실행은 409로 막고, scheduled run은 skip 처리해 중복 주문 흐름을 줄였습니다.
Decision, Order, Evaluation 결과를 Journal로 묶고, 최근 거래 성과와 반복 실수, 모델/종목별 통계를 MemoryAgent가 요약하도록 구성했습니다. 이후 판단 프롬프트 개선으로 이어질 수 있는 데이터 축을 만들었습니다.
Toss API 연결 상태, 계좌 조회 가능 여부, 보유 종목 정규화 결과를 확인하는 Broker 화면을 만들고, 외부 시스템 action은 broker adapter로 분리했습니다. 기존 보유 주식은 legacy protected position으로 관리해 봇 포지션과 섞이지 않게 설계했습니다.
LLM 호출은 키와 모델 설정이 있을 때만 가능하게 두고, usage, budget, latency, 비용 회수 지표를 추적합니다. 기본은 DRY_RUN paper trading이며, live order는 env와 관리자 API guard가 모두 준비된 경우에만 별도 어댑터로 제출됩니다.
DecisionResponseGuard, SectorCandidateSelector, RiskManager를 표준 unittest로 검증했습니다. backend compile check와 frontend production build까지 통과시켜 핵심 판단/리스크 로직과 대시보드 빌드 안정성을 확인했습니다.
AI Agent 확장 관점
현재 구현은 LangChain이나 LangGraph를 직접 사용하지 않고, FastAPI service layer에서 상태 전이와 step audit을 직접 구현했습니다. 대신 각 agent의 입력과 출력, 실패 지점, 외부 action boundary를 분리해 두어 LangGraph node/state 구조로 옮기기 쉬운 형태로 설계했습니다.
Market, Memory, Decision, Risk, Order, Evaluation 단계를 독립된 service/agent로 나눠 LangGraph 도입 시 각 단계를 node로 전환할 수 있게 했습니다. workflow run/step 기록은 graph execution trace와 같은 역할을 합니다.
현재 NewsAgent는 실제 뉴스 수집기가 아니라 시장 스냅샷 기반 context 계약을 먼저 만든 보류 지점입니다. 이후 뉴스, 공시, 실적 자료를 chunking, embedding, vector search로 검색해 DecisionAgent 입력에 추가할 수 있도록 downstream 구조를 유지했습니다.
Toss API 계좌 조회, 포지션 조회, 주문 제출, 주문 상태 동기화를 broker adapter로 감쌌습니다. 외부 시스템이 바뀌어도 core agent workflow가 아니라 adapter layer를 교체하는 방향으로 확장할 수 있습니다.
Decision, Order, Workflow, Journal, Evaluation 데이터를 PostgreSQL에 저장하도록 구성했습니다. LLM 응답과 broker response를 함께 남겨 agent 판단과 action 결과를 사후 분석할 수 있습니다.
화면은 에이전트 실행 흐름, 위험한 실행 조건, LLM 비용, paper/live 주문 상태를 빠르게 확인하는 운영 관찰 중심으로 구성했습니다.
agent run별 단계 성공/스킵/실패와 핵심 output을 타임라인으로 확인합니다.
거래 결과와 회고를 쌓아 다음 프롬프트 개선에 활용할 수 있는 데이터 구조를 만듭니다.
스케줄, market readiness, LLM budget, paper auto 정책을 한 화면에서 점검합니다.
LLM 판단을 바로 외부 action으로 연결하지 않고, 멀티에이전트 실행 흐름, runtime guard, PostgreSQL workflow audit, paper/live execution adapter, journal/memory 루프를 갖춘 연구용 AI Agent입니다.