
멀티 에이전트 퀀트 백테스팅 시스템 구축: Amazon Bedrock AgentCore + Strands Agents
요약
Amazon Bedrock AgentCore와 Strands Agents SDK를 활용하여 멀티 에이전트 기반의 퀀트 백테스팅 시스템을 구축하는 실습 가이드입니다. 자연어 매매 전략을 분석하여 완전한 성과 보고서로 변환하는 아키텍처와 워크숍 과정을 소개합니다.
핵심 포인트
- Amazon Bedrock AgentCore와 Strands Agents SDK 활용
- 멀티 에이전트 협업을 통한 매매 전략 자동 분석
- 퀀트 트레이딩을 위한 백테스팅 시스템 아키텍처 설계
- 에이전트 간 협업, 샌드박스 실행, 가드레일 등 핵심 설계 원칙 제시
Amazon Bedrock AgentCore와 Strands Agents SDK를 사용하여 멀티 에이전트(multi-agent) 퀀트 백테스팅(backtesting) 시스템을 구축하는 실습 가이드입니다. 세 개의 특화된 AI 에이전트가 협력하여 일반적인 영어로 된 매매 전략을 완전한 성과 보고서로 변환합니다. 이 포스트는 8개 실습으로 구성된 90분 워크숍의 입문편이며, 여러 파트로 구성된 시리즈의 첫 번째 글입니다. 아키텍처(architecture), 세 가지 파운데이션 모델(foundation models), 그리고 실습 진행 과정을 다루며, 향후 협업(A2A), 안전한 실행(sandboxing), 거버넌스 기반 액션(guardrails), 그리고 복합 메모리(compounding memory)에 관한 후속 포스트의 시작을 알립니다.
문제점
퀀트 트레이딩(quantitative trading)의 성공과 실패는 상당 부분 **백테스팅 (backtesting)**에 달려 있습니다. 실제 자금이 시장에 투입되기 전에, 전략은 과거 데이터를 통해 스스로를 증명해야 합니다: 수익을 내는가? 최악의 경우 손실은 얼마인가? 이 정도의 수익이 그만큼의 리스크를 감수할 가치가 있는가?
어려운 점은 매매 아이디어에서 신뢰할 수 있는 백테스트 보고서로 나아가는 과정이 트레이딩 도메인 지식, 데이터 엔지니어링 (data engineering), Python 코딩, 그리고 통계 분석 (statistical analysis) 등 여러 영역을 동시에 아우른다는 것입니다. 이것이 바로 AI 에이전트가 빛을 발하는 다단계, 다기술 문제의 전형적인 사례입니다. 이 포스트에서 탐구하는 실습 워크숍은 정확히 그러한 시스템을 구축합니다. 즉, 여러 특화된 에이전트가 협력하여 한 문장으로 된 전략 설명을 완전한 성과 분석으로 자동 변환하는 시스템입니다.
이 포스트는 워크숍에서 다루는 내용과 왜 그 설계 결정들이 여러분의 프로젝트에 채택할 가치가 있는지를 빠르게 살펴봅니다.
면책 조항 (Disclaimer): 본 콘텐츠는 학습 및 토론 목적으로만 제공됩니다. 이는 투자 조언, 권고 또는 권유를 구성하지 않습니다. 모든 투자 결정과 그에 따른 이익 또는 손실은 전적으로 개인의 책임입니다.
이 시리즈에 대하여
이 포스트는 여러 파트로 구성된 시리즈의 시작입니다. 여기서는 전체적인 그림을 보여드리며, 이어지는 포스트들은 이 시스템을 데모 수준에서 프로덕션 준비 단계(production-ready)로 전환시키는 각각의 설계 결정들을 심층적으로 다룹니다.
- 파트 1 (본 포스트) — 전체적인 그림: 아키텍처 (architecture), 모델 (models), 그리고 8단계 실험 과정.
- 파트 2 — 협업 (A2A 프로토콜): 에이전트들이 독점적인 API 대신 개방형 표준을 사용하여 계정, 클라우드 및 프레임워크를 가로질러 서로를 어떻게 발견하고 호출하는지에 대하여.
- 파트 3 — 안전한 실행 (코드 인터프리터 (Code Interpreter) 샌드박스): LLM이 생성한 코드를 왜 직접 실행해서는 안 되는지, 그리고 샌드박스가 이를 어떻게 격리하는지에 대하여.
- 파트 4 — 통제된 동작 (Cedar 가드레일 (guardrails)): 확률론적인 에이전트(probabilistic agent)에 어떻게 결정론적인 가드레일을 부여하는지 — 에이전트가 어떤 결정을 내리더라도 결코 넘을 수 없는 경계선.
- 파트 5 — 누적되는 메모리 (Compounding memory): 에이전트에게 메모리를 부여함으로써 일회성 백테스트를 문맥을 축적하고 대화하는 연구 동반자로 만드는 방법.
전체적인 흐름은 다음과 같습니다: 전체적인 그림 → 협업 → 안전 → 축적. 이 중 공감되는 부분이 있다면 계속 따라와 주시기 바랍니다.
여러분이 구축하게 될 것
이 과정은 중급 (300) 수준의 약 90분 분량의 실습 워크숍입니다. 과정을 마치면 여러분은 다음을 갖게 됩니다:
- Amazon Bedrock AgentCore에 배포된 세 개의 특화된 AI 에이전트
- AgentCore MCP 게이트웨이 (Gateway)를 통해 에이전트를 외부 시장 데이터에 연결하는 능력
- 전략 입력부터 성과 분석까지 전 과정을 실행하는 풀스택 (full-stack) 백테스팅 애플리케이션
- 복잡한 금융 워크플로우를 위한 멀티 에이전트 오케스트레이션 (orchestration) 패턴에 대한 이해
진입 장벽은 높지 않습니다: 기본적인 Python 및 커맨드 라인(command-line) 숙련도, 그리고 매수(buy), 매도(sell), 기술적 지표(technical indicators)와 같은 일반적인 트레이딩 개념에 대한 이해만 있으면 됩니다. AI 에이전트(AI agents)나 백테스팅 프레임워크(backtesting frameworks)에 대한 사전 경험은 필요하지 않습니다. 워크숍 환경에는 브라우저 기반 코드 에디터(Code-OSS/VS Code Open Source)가 포함되어 있어, 로컬에 별도로 설치할 것이 없습니다.
세 가지 파운데이션 모델 (Three Foundation Models)
이 워크숍의 핵심 아이디어는 작업에 적합한 모델을 매칭하는 것입니다. 하나의 거대한 모델이 모든 것을 수행하게 하는 대신, 각 에이전트는 자신의 직무에 가장 적합한 모델을 사용합니다:
| 모델 | 역할 | 책임 |
|---|---|---|
| Amazon Nova Lite 2.0 | 결과 요약기 (Result summarizer) | 성과 지표를 분석하고 전문적인 보고서 작성 |
| ... |
코드 생성에는 강력한 모델을 사용하고, 요약에는 더 가볍고 빠른 모델을 사용하는 것 자체가 비용 및 지연 시간 최적화 (cost-and-latency optimization)에 대한 실질적인 교훈이 됩니다.
왜 백테스팅인가, 그리고 왜 에이전트인가
백테스팅은 실제 자본이 투입되기 전에 가장 중요한 질문들에 답을 제공합니다: 총 수익률 및 연율화 수익률 (total and annualized return), 최대 낙폭 (maximum drawdown), 샤프 지수 (Sharpe ratio) 및 소르티노 지수 (Sortino ratio), 승률 (win rate), 손익비 (profit/loss ratio), 그리고 강세장(bull), 약세장(bear), 횡보장(sideways markets)에서 전략이 어떻게 작동하는지 등에 대한 답입니다.
전통적인 흐름은 다섯 단계로 구성됩니다: 전략 정의, 과거 데이터 (OHLCV) 수집, 코드로 구현, 시뮬레이션 실행, 그리고 결과 분석입니다. 문제는 각 단계마다 서로 다른 기술이 요구된다는 점입니다.
워크숍에서는 이벤트 드리븐 엔진 (event-driven engine), 내장된 기술적 지표 (SMA, EMA, RSI, MACD), 주문 관리 (order management), 그리고 성과 분석 기능을 갖춘 인기 있는 오픈 소스 Python 백테스팅 프레임워크인 Backtrader를 사용합니다. 이 시스템에서는 전략 생성기(strategy generator)가 Backtrader 코드를 작성하고, 퀀트 에이전트(quant agent)가 실제 시장 데이터를 바탕으로 이를 실행하여, 사람이 전략 자체에만 집중할 수 있도록 합니다.
왜 하나의 거대한 에이전트 대신 여러 개의 에이전트인가
모든 것을 다 하는 단일 에이전트는 복잡하고 다단계인 작업을 수행할 때 어려움을 겪는 경향이 있습니다. 본 워크숍은 다음 네 가지 축을 기준으로 멀티 에이전트 아키텍처 (multi-agent architecture)를 옹호합니다:
- 전문화 (Specialization) — 각 에이전트가 단일 책임을 가짐으로써 정확도를 향상시킵니다.
- 확장성 (Scalability) — 분산 처리 (distributed processing)를 통해 탄력적이고 독립적으로 확장할 수 있습니다.
- 비용 효율성 (Cost efficiency) — 에이전트별로 필요에 따라 리소스를 할당합니다.
- 유지보수성 (Maintainability) — 세밀한 제어, 독립적인 상태 모니터링 (health monitoring), 격리된 테스트가 가능합니다.
Strands Agents는 네 가지 협업 패턴 (collaboration patterns)을 지원합니다:
- 도구로서의 에이전트 (Agent-as-Tool) (오케스트레이터 (orchestrator)가 전문화된 에이전트를 호출 가능한 도구로 호출함)
- 스웜 (Swarm) (에이전트들이 공유 메모리 (shared memory)를 통해 협업함)
- 그래프 (Graph) (에이전트들이 명시적인 엣지 (edges)로 연결된 노드 (nodes) 역할을 함)
- 워크플로우 (Workflow) (구조화된 순차적 협업)
사용 사례 (Use Cases):
- 대출 승인 프로세스 (Loan approval processes) — 순차적 단계: 신원 확인 (identity verification) → 신용 조사 (credit check) → 리스크 평가 (risk assessment) → 승인 결정 (approval decision)
- CI/CD 파이프라인 (CI/CD pipelines) — 빌드 (Build) → 테스트 (test) → 보안 스캔 (security scan) → 배포 (deploy), 단계 간 정의된 의존성 포함
- 보험 청구 (Insurance claims) — 서류 수집 (Document collection) → 손해 평가 (damage assessment) → 보험 증권 검증 (policy validation) → 정산 계산 (settlement calculation)
아래 다이어그램은 각 패턴에 대한 샘플 사용 사례를 보여줍니다.
본 워크숍에서는 도구로서의 에이전트 (Agent-as-Tool) 패턴을 사용합니다. 백테스팅 흐름은 본질적으로 계층적이기 때문입니다:
사용자 요청 (User Request)
↓
퀀트 에이전트 (Quant Agent, 오케스트레이터 (Orchestrator))
...
각 전문 에이전트 (Specialized Agent)가 독립적으로 실행되기 때문에, 서로 다른 모델과 고유한 설정을 사용할 수 있으며, 개별적으로 테스트, 확장 및 업데이트가 가능합니다.
AgentCore가 제공하는 기능
Amazon Bedrock AgentCore는 프로덕션 환경에서 에이전트를 배포, 실행 및 확장할 수 있는 관리형 인프라 (Managed Infrastructure)를 제공합니다. 본 워크숍에서는 다음 다섯 가지 서비스를 사용합니다:
- Runtime (런타임) — 각 에이전트를 호스팅하는 서버리스 컴퓨팅 환경 (Serverless Compute Environment)입니다. 관리해야 할 서버나 컨테이너가 없으며, 호출 부하에 따라 자동 확장 (Auto-scaling)되고, 보안 환경 변수를 지원하며, 에이전트 간 호출 (Agent-to-agent invocation)을 가능하게 합니다. 세 가지 에이전트 모두 여기에 배포됩니다.
- Gateway (게이트웨이) — 시장 데이터 Lambda 함수를 모든 에이전트가 호출할 수 있는
get_market_dataMCP 도구 (Tool)로 래핑하며, 시맨틱 라우팅 (Semantic Routing) 및 Cognito 기반의 OAuth를 지원합니다. - Identity (아이덴티티) — 기존 ID 제공자 (이 경우 Amazon Cognito)와 통합된 보안 인증으로, 권한이 있는 에이전트만 시장 데이터 도구에 접근할 수 있도록 보장합니다.
- Memory (메모리) — 단기 및 장기 컨텍스트 저장소 (Context Storage)로, 퀀트 에이전트가 후속 질문을 처리하고 반복적인 전략 개선 (Iterative Strategy Refinement)을 수행할 수 있도록 합니다.
- Observability (관측성) — 오케스트레이터 (Orchestrator)에서 서브 에이전트 (Sub-agents), 그리고 Gateway 도구 호출에 이르기까지 전체 실행 경로에 대한 OpenTelemetry 호환 트레이싱 (Tracing)을 제공하며, 이는 Amazon CloudWatch로 흐릅니다.
배포 과정은 매우 간단합니다. AgentCore CLI를 Python 엔트리 파일 (Entry file)로 지정하기만 하면, 패키징, 종속성 (Dependencies), 컨테이너 관리 및 확장을 자동으로 처리합니다:
agentcore configure --entrypoint quant_agent.py --name quant_agent \
--requirements-file requirements.txt --idle-timeout 900
...
시스템 아키텍처 (System Architecture)
전체 시스템 아키텍처. 출처: "Agentic Backtesting for Quants" 워크숍 (AWS).
시스템은 세 개의 계층 (Layers)으로 구성됩니다:
시스템은 세 개의 계층(Layers)으로 구성됩니다:
- 프론트엔드(Frontend) (Next.js) — 전략 입력 폼, 실시간 워크플로우 진행 표시기, 그리고 지표 및 AI 생성 분석이 포함된 결과 대시보드.
- 오케스트레이션 계층(Orchestration layer) (Bedrock AgentCore) — 퀀트 에이전트가 요청을 받고, 코드 생성을 위해 전략 생성기를 호출하며, 시장 데이터 게이트웨이를 통해 데이터를 가져오고, Backtrader 시뮬레이션을 로컬에서 실행한 다음, 결과 요약기를 호출합니다.
- 데이터 계층(Data layer) — S3 테이블(Apache Iceberg 형식)에는 Yahoo Finance에서 출처를 얻은 과거 일별 OHLCV 데이터가 저장되어 있습니다 (교육용으로만 사용). Lambda 함수가 PyIceberg를 통해 데이터를 쿼리하며, 게이트웨이는 이 Lambda 함수를
get_market_data도구로 노출합니다.
실습 과정(The Hands-On Labs)
이 실습들은 점진적으로 구축되며, 각 단계마다 이전 것 위에 새로운 AgentCore 기능을 추가합니다. 사용자는 프롬프트 전용 에이전트에서 시작하여, 관찰 가능성(observability)과 가드레일(guardrails)을 갖춘 완전한 멀티 에이전트 시스템으로 단계별로 발전시킵니다:
- 실습 1 — 전략 생성기 배포 (AgentCore Runtime): 간단하고 프롬프트 전용인 에이전트를 실행합니다.
- 실습 2 — 시장 데이터가 있는 퀀트 에이전트 구축 (AgentCore Gateway & Identity): 에이전트를 외부 도구에 연결합니다.
- 실습 3 — 멀티 에이전트 오케스트레이션 (Agent-as-Tool): 단일 에이전트에서 '오케스트레이터 + 전문가' 구조로 전환합니다.
- 실습 4 — 첫 번째 백테스트 실행 (AgentCore Observability): 추적(traces)과 스팬(spans)을 사용하여 블랙박스를 투명하게 만듭니다.
- 실습 5 — 백테스트 메모리 및 채팅 (AgentCore Memory): 상태 비저장(stateless)에서 상태 저장(stateful)으로 전환하여 에이전트가 컨텍스트를 기억할 수 있게 합니다.
- 실습 6 (보너스) — 가드레일 추가 (AgentCore Policy): 제약 없는 실행에서 통제되는 실행으로 전환합니다.
- 실습 7 (보너스) — 샌드박스 실행 (AgentCore Code Interpreter): 코드를 로컬이 아닌 안전한 샌드박스에서 실행합니다.
- 실습 8 (보너스) — A2A 프로토콜 (Agent-to-Agent): 독점 API를 개방적이고 상호 운용 가능한 표준으로 대체합니다.
이러한 진화 경로는 그 자체로 보상입니다. 각 실습은 에이전트를 "장난감(toy)" 수준에서 "프로덕션(production)" 수준으로 끌어올릴 때 직면하게 될 실제적인 역량 격차(capability gap)에 대응합니다.
당신이 구축한 것
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

