프로젝트 목록

개인 프로젝트 · 멀티에이전트 투자 판단 연구 / agentic trading workflow

AI Trading Agent

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, 북마크, 작업표시줄 같은 개인 정보를 제거하고 앱 화면과 구조만 보이도록 재구성했습니다.

Portfolio-safe preview

Redacted Dashboard

DRY_RUN 상태, LLM 사용량, 판단 리뷰, 실행 준비 상태를 한 화면에서 확인하는 운영 관찰 중심 UI입니다.

AI Trading Agent redacted dashboard preview

Agentic Workflow

Scheduler부터 Evaluation까지 이어지는 실행 흐름과 Memory/Journal 피드백 루프를 분리해 표현했습니다.

AI Trading Agent architecture diagram

구현한 핵심 기능

멀티에이전트 실행 구조

MarketAgent, DecisionAgent, RiskAgent, OrderAgent, LoggerAgent, EvaluationAgent, MemoryAgent를 역할별로 분리하고, NewsAgent는 시장 스냅샷 기반 context 계약을 먼저 둔 확장 지점으로 관리했습니다. LLM이 필요한 판단과 Python으로 충분한 계산/검증을 나눠 비용과 리스크를 줄였습니다.

Workflow audit trail

agent 실행마다 workflow run과 step을 저장해 runtime lock, 시장 데이터, context 생성, 리스크 체크, LLM 판단, 주문 시도 여부를 타임라인으로 확인할 수 있게 했습니다.

Redis runtime guard

이미 떠 있는 Redis 컨테이너를 활용해 agent 실행 lock을 잡도록 구성했습니다. 같은 순간 두 번 실행되는 경우 HTTP 실행은 409로 막고, scheduled run은 skip 처리해 중복 주문 흐름을 줄였습니다.

Memory / Journal 루프

Decision, Order, Evaluation 결과를 Journal로 묶고, 최근 거래 성과와 반복 실수, 모델/종목별 통계를 MemoryAgent가 요약하도록 구성했습니다. 이후 판단 프롬프트 개선으로 이어질 수 있는 데이터 축을 만들었습니다.

브로커와 포지션 분리

Toss API 연결 상태, 계좌 조회 가능 여부, 보유 종목 정규화 결과를 확인하는 Broker 화면을 만들고, 외부 시스템 action은 broker adapter로 분리했습니다. 기존 보유 주식은 legacy protected position으로 관리해 봇 포지션과 섞이지 않게 설계했습니다.

LLM 비용과 실행 안전장치

LLM 호출은 키와 모델 설정이 있을 때만 가능하게 두고, usage, budget, latency, 비용 회수 지표를 추적합니다. 기본은 DRY_RUN paper trading이며, live order는 env와 관리자 API guard가 모두 준비된 경우에만 별도 어댑터로 제출됩니다.

Guard 테스트와 빌드 검증

DecisionResponseGuard, SectorCandidateSelector, RiskManager를 표준 unittest로 검증했습니다. backend compile check와 frontend production build까지 통과시켜 핵심 판단/리스크 로직과 대시보드 빌드 안정성을 확인했습니다.

AI Agent 확장 관점

LangGraph / RAG로 확장 가능한 구조

현재 구현은 LangChain이나 LangGraph를 직접 사용하지 않고, FastAPI service layer에서 상태 전이와 step audit을 직접 구현했습니다. 대신 각 agent의 입력과 출력, 실패 지점, 외부 action boundary를 분리해 두어 LangGraph node/state 구조로 옮기기 쉬운 형태로 설계했습니다.

Graph Node로 매핑 가능한 책임 분리

Market, Memory, Decision, Risk, Order, Evaluation 단계를 독립된 service/agent로 나눠 LangGraph 도입 시 각 단계를 node로 전환할 수 있게 했습니다. workflow run/step 기록은 graph execution trace와 같은 역할을 합니다.

RAG 입력 확장 지점

현재 NewsAgent는 실제 뉴스 수집기가 아니라 시장 스냅샷 기반 context 계약을 먼저 만든 보류 지점입니다. 이후 뉴스, 공시, 실적 자료를 chunking, embedding, vector search로 검색해 DecisionAgent 입력에 추가할 수 있도록 downstream 구조를 유지했습니다.

Legacy / 외부 시스템 Action

Toss API 계좌 조회, 포지션 조회, 주문 제출, 주문 상태 동기화를 broker adapter로 감쌌습니다. 외부 시스템이 바뀌어도 core agent workflow가 아니라 adapter layer를 교체하는 방향으로 확장할 수 있습니다.

PostgreSQL 기반 Audit Trail

Decision, Order, Workflow, Journal, Evaluation 데이터를 PostgreSQL에 저장하도록 구성했습니다. LLM 응답과 broker response를 함께 남겨 agent 판단과 action 결과를 사후 분석할 수 있습니다.

대시보드 구성

화면은 에이전트 실행 흐름, 위험한 실행 조건, LLM 비용, paper/live 주문 상태를 빠르게 확인하는 운영 관찰 중심으로 구성했습니다.

운영 관찰 중심
Workflow
Runtime Lock
Redis guard acquired
Decision Agent
LLM decision recorded

Workflow Timeline

agent run별 단계 성공/스킵/실패와 핵심 output을 타임라인으로 확인합니다.

Memory Loop
Journal
decision / order / evaluation
Memory
mistakes and lessons

Journal / Memory

거래 결과와 회고를 쌓아 다음 프롬프트 개선에 활용할 수 있는 데이터 구조를 만듭니다.

Agent Ops
Scheduler
market-hours guard
LLM Usage
budget and logs

Readiness / Budget

스케줄, market readiness, LLM budget, paper auto 정책을 한 화면에서 점검합니다.

정리

LLM 판단을 바로 외부 action으로 연결하지 않고, 멀티에이전트 실행 흐름, runtime guard, PostgreSQL workflow audit, paper/live execution adapter, journal/memory 루프를 갖춘 연구용 AI Agent입니다.

설정 가능한 종목 universe를 기준으로 시장 스냅샷, 후보 큐, 판단, 평가 루프를 연결했습니다.
기본 실행은 paper trading으로 두고, live order는 env opt-in, 관리자 API guard, broker adapter readiness를 모두 통과해야 제출되도록 분리했습니다.
브로커 오류, LLM readiness, scheduler guard, workflow step처럼 운영 중 부딪히는 상태를 화면에서 확인할 수 있게 다듬었습니다.
핵심 guard 로직은 unittest로 검증하고, backend compile check와 frontend production build를 통과시켜 포트폴리오 시연 전 기본 안정성을 확인했습니다.

기술 스택

Python FastAPI PostgreSQL Redis React Docker Broker API LLM API-ready RAG-ready Workflow Audit unittest