본문으로 건너뛰기

© 2026 Molayo

r/ClaudeAI분석2026. 06. 23. 06:58

Robinhood 계정을 Claude Code 및 Codex에 연결하여 자율적인 에이전트 기반 트레이딩 구현... 업데이트 1

요약

Claude Code, Codex, Gemma 모델을 활용하여 Robinhood 계정과 연동된 자율 주식 트레이딩 에이전트 시스템을 구축하는 방법론을 소개합니다. 헌장(Charter), 결정 저널, 플레이북 등 에이전트의 의사결정과 리스크 관리를 위한 체계적인 프레임워크를 다룹니다.

핵심 포인트

  • Claude Code와 Codex를 활용한 CEO/레드팀 역할 분담 구조
  • 리스크 관리를 위한 엄격한 헌장(Charter) 및 가드레일 설정
  • 결정 저널과 코칭 로그를 통한 에이전트의 지속적 학습 루프
  • 시장 변동성에 대응하는 서킷 브레이커 및 주문 실행 규칙

제 원문 게시물에 대한 업데이트입니다: https://www.reddit.com/r/ClaudeAI/comments/1u8nagi/connected_a_robinhood_account_to_claude_code_and/

저는 Robinhood "에이전트 기반 (Agentic)" 계정에서 완전히 자율적인 데일리 주식 트레이딩 데스크를 구축하고 있습니다. Opus는 CEO/PM 역할을 수행하고, Codex(다른 모델 제품군)는 모든 거래를 저지하려는 레드팀 (red-team) 역할을 하며, 로컬 Gemma 모델은 상시 가동되는 뉴스 스카우트 역할을 합니다.

지난 며칠 동안 프로세스를 미세 조정하고, 가드레일 (guardrails)을 확보하며, 목표를 설정하고, 버그 및 문제를 수정하는 데 시간을 보냈습니다. 저희가 생성한 일부 .md 파일들을 공유하고 싶었습니다. 그런 다음 첫 번째 게시물에서 주신 질문들에 답변하겠습니다. 아래는 핵심 .md 파일들과 그 이면의 연결 구조, 그리고 이번 주에 저희가 맞춤화한 내용입니다.

🔹 헌장 (The Charter, 헌법). 에이전트들이 매 실행 시마다 반드시 준수해야 하는 단일 파일입니다. 이는 위임 사항을 고정합니다 — 즉, 절반은 광범위한 ETF로 구성된 생존 코어, 나머지 절반은 비대칭적 스윙 (asymmetric swings)으로 구성된 50/50 "바벨 (barbell)" 전략입니다. 또한 투자 범위를 제한합니다: 상장 주식/ETF만 허용하며, 옵션, 암호화폐, 마진 거래는 제외하여 최악의 경우에도 손실이 제한되도록 합니다. 그다음은 엄격한 규칙들입니다: 모든 스윙 거래에 대한 스탑 (stop), 포지션당 규모 제한, 매수/매도 비율이 포함된 일일 주문 제한, 자산 감소 시 새로운 리스크를 중단하는 서킷 브레이커 (circuit breaker), 그리고 비상 정지(시장이 급락하거나 변동성이 급증할 경우 새로운 매수 금지)가 포함됩니다. 또한 실행 품질도 고정합니다 — 온주 (whole-share) 거래는 시장가 주문 (naked market orders)을 절대 사용하지 않고 시장가 지정가 주문 (marketable limit orders)을 사용합니다. 에이전트가 수행하는 그 어떤 것도 헌장을 무시할 수 없으며, 변경 사항은 날짜 및 사유와 함께 기록됩니다.

🔹 결정 저널 (The Decision Journal). 결정이 내려지는 즉시 작성되는 거래 및 거절 건당 하나의 기록입니다: 논거 (thesis), 리서치 내용, 레드팀 (red-team)의 의견, 결정 사항 및 이유, 그리고 검토 날짜를 포함합니다. 거절된 사례도 체결된 사례만큼 중요합니다. 오늘의 기록은 문서화된 프로세스 위반 사례입니다 — CEO가 자신의 오전 결정을 번복했고, 이후 레드팀이 이를 실수로 판정했으며, 이 모든 내용이 있는 그대로 기록되어 있습니다. 아첨하는 것보다 정직한 것이 낫습니다.

🔹 플레이북 (The Playbook).

어떤 아이디어를 생성하기 전에 루프(loop)가 읽는 체크리스트 — 추세/모멘텀/상대 강도(trend/momentum/relative strength), 변동성(volatility), 촉매제(catalysts), 규모 산정(sizing) — 그리고 계속해서 늘어나는 축적된 교훈 목록입니다. 매일 아침 진행되는 코칭 리뷰를 통해 지속 가능한 교훈을 플레이북으로 승격시킬 수 있으며, 이를 통해 한 번 저지른 실수는 이후 매일 읽어야 하는 규칙이 됩니다.

🔹 코칭 로그 (The Coaching log). 다음 날 아침의 자기 검토: 어제의 저널과 실제 가격을 읽고, 각 판단에 등급을 매깁니다 (가설이 실현되었는가, 스탑(stop)이 제대로 작동했는가, 교훈은 무엇인가). 지속 가능한 내용은 무엇이든 플레이북으로 승격시킵니다. 이것이 하루를 마무리하는 루프입니다.

🔧 내부 구조 (Under the hood, 배선 방식의 맛보기).
데스크(desk)는 예정된 헤드리스 에이전트 세션(headless agent sessions, cron을 생각하세요)으로 실행됩니다: 평일 아침 트레이딩 루프, 오후 장 마감 전 리스크 점검, 일요일 전략 리뷰. 각각은 프롬프트 파일을 따르고, 도구(tools)를 호출하며, .md 파일을 작성하는 Claude 세션입니다. 모델은 비용을 위해 계층화되어 있습니다 — 일상적인 업무에는 Sonnet, 고도의 적대적 추론(adversarial reasoning)을 위한 CLI(codex exec)로서의 Codex, 주간 리뷰 및 예외 에스컬레이션(exception escalations)을 위한 Opus를 사용합니다. 트레이딩은 브로커를 위한 MCP (Model Context Protocol) 서버를 통해 이루어지므로, 에이전트는 화면을 스크래핑하는 대신 get_portfolio 및 place_equity_order와 같은 타입화된 도구(typed tools)를 호출합니다.

실제로 자율성을 부여한 부분 (오늘 아침의 .json 변경 사항): 두 개의 독립적인 게이트가 있으며, 두 게이트가 모두 열려 있어야 합니다.

브로커 측 — 계정은 에이전트가 거래할 수 있도록 허용된 Robinhood "에이전트형(Agentic)" 계정(agentic_allowed: true)입니다.
Harness 측 — Claude Code 자체는 에이전트에게 단순히 "당신은 자율적입니다"라는 말만으로 실제 돈이 들어가는 주문을 넣도록 허용하지 않으며, 에이전트가 스스로에게 그 권한을 부여하는 것도 허용하지 않습니다. 우리는 이 상황을 실시간으로 겪었습니다: 첫 번째 거래 시도가 차단되었고, 에이전트가 자신의 설정을 수정하려는 시도 또한 차단되었습니다.

잠금 해제는 settings.json에 대한 단 한 번의 수동 편집으로 이루어집니다:

"permissions": { "allow": [ "mcp__<broker>__place_equity_order", "mcp__<broker>__cancel_equity_order" ] }

이 단 하나의 허용 목록 (allow-list)이 "모든 거래에 대해 승인을 요청하는 상태"와 "스스로 거래하는 상태"를 가르는 경계선입니다. 사람이 의도적으로 그 열쇠를 단 한 번 돌리는 것 — 이것이 바로 올바른 설계입니다. 실제 돈을 움직일 수 있는 권한을 스스로 조용히 부여할 수 있는 AI는 당신이 원치 않는 바로 그 존재일 것입니다.

그다음은 신뢰성을 위한 구조 (reliability scaffolding) — 예약된 작업 (scheduled jobs)이 호출하는 작은 스크립트들입니다:

  • 중복 실행이나 수동 세션이 서로 충돌하며 거래하지 못하도록 하는 단일 인스턴스 잠금 (single-instance lock, 원자적 잠금 파일(atomic lockfile) + 만료 시간 초과(stale-timeout) 방식);
  • 로컬 스카우트 (local scout)가 중단될 경우 재시작하는 와치독 (watchdog, 5분마다 실행되는 Windows 예약 작업);
  • 노트북 외부의 데드맨 스위치 (dead-man switch, healthchecks.io) — 루프가 완료 시점에 이를 핑(ping)하고, 스카우트가 시장 운영 시간 동안 하트비트 (heartbeat)를 핑합니다. 따라서 실행이 멈추거나 기기가 꺼지면 별도의 채널로 알림을 받습니다;
  • 시작/종료 하트비트를 내 휴대폰으로 전송하여, 조용한 실패가 보이지 않는 것이 아니라 명확히 드러나도록 합니다.

마지막 클러스터는 "자율적 (autonomous)"이라는 말이 실제로 신뢰할 수 있게 만들기 위한, 화려하지는 않지만 핵심적인 80%의 작업이며, 이번 주의 대부분을 이곳에 보냈습니다.

지난 스레드에서 나온 몇 가지 질문에 답변해 드립니다:

"시장 뉴스는 어디서 가져오나요?" 두 가지 계층이 있습니다. 항상 켜져 있는 스카우트가 공개 RSS (MarketWatch, CNBC, Yahoo Finance 등)에서 헤드라인을 가져오고, 로컬 Gemma 모델이 각 뉴스를 실제 호가창 (book)과 대조하여 분류 (triage)합니다. 즉, 뉴스 내용이 유의미한지, 그리고 어떤 보유 종목과 관련이 있는지를 판단하여 실제 사건만이 저나 레드팀 (red-team)에 도달하게 합니다. 아침 리서치 에이전트들 또한 시장 상황 (regime) 파악을 위해 실시간 웹 검색을 수행합니다. 로컬 분류 (triage) 단계는 여러분 중 여러 명이 숨은 핵심 요소 (sleeper hit)라고 불러주신 부분입니다.

"교차 모델 레드팀 (cross-model red-team)은 결국 평균으로의 회귀 (regression to the mean) 아닌가요?" 타당한 지적입니다. 그래서 Codex는 제2의 의견을 내는 것이 아니라, 반박하고 기본적으로 "아니오"라고 답하도록 명령받은 검사 역할을 합니다. 의도적으로 다른 학습 계열 (training family)을 사용했습니다. 여기서의 가치는 다양성이 아니라 적대성 (hostility)에 있습니다.

"전략이 문제가 아니라, 소리 없는 충돌 (Silent crashes)이 진짜 문제입니다." 100% — 이 댓글이 이번 한 주 전체의 방향을 결정했습니다 (위에서 언급한 데드맨 스위치 (dead-man switch)와 하트비트 (heartbeats) 관련 내용).

AI 자동 생성 콘텐츠

본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0