Communitygithub.com

uzairansaruzi/robinhood-agent-skill

Robinhood 포트폴리오 어드바이저 — MCP를 통해 포지션, 시세, 펀더멘털, 뉴스, 실적, 애널리스트 평가, 배당금, 옵션에 대한 읽기 전용 접근을 제공합니다. 캐시 우선 전략, 엔티티 페이지 워크플로, 선택적 Obsidian 볼트 통합을 포함합니다.

robinhood-agent-skill란 무엇인가요?

이 스킬은 `robinhood-mcp` MCP 서버를 통해 Robinhood 포트폴리오에 대한 읽기 전용 액세스를 제공합니다. 개발자와 AI 에이전트 사용자는 이를 통해 포트폴리오 가치, 보유 종목, 실시간 시세, 펀더멘털 데이터, 뉴스, 실적, 애널리스트 평가, 배당금 내역, 옵션 포지션 등을 안전하게 조회할 수 있습니다. 캐시 우선 전략을 사용하여 불필요한 API 호출을 줄이고 성능을 최적화하며, 캐시가 15분 이상 경과했거나 사용자가 명시적으로 요청한 경우에만 MCP 도구를 호출합니다. Hermes, Claude Desktop, Claude Code, Codex, OpenCode, Cline, Windsurf 등 다양한 에이전트 플랫폼을 지원하며, 환경 변수(`ROBINHOOD_USERNAME`, `ROBINHOOD_PASSWORD`)를 통해 인증합니다. 선택적으로 Obsidian 볼트와 통합하여 각 종목에 대한 지속적인 연구 노트를 저장하고 포트폴리오 스냅샷을 기록할 수 있습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓OpenCode✓Windsurf
npx skills add uzairansaruzi/robinhood-agent-skill

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Robinhood 포트폴리오 어드바이저

robinhood-mcp 서버를 통해 Robinhood 포트폴리오에 대한 읽기 전용 액세스를 제공합니다. 포지션, 시세, 펀더멘털, 뉴스, 실적, 애널리스트 평가, 배당금, 옵션에 대한 실시간 데이터를 제공합니다.

사전 요구 사항

1. Robinhood 계정

Robinhood 계정이 필요합니다 (robinhood.com에서 무료 가입).

2. MCP 서버 설치

robinhood-mcp 패키지가 MCP 서버를 제공합니다. 다음 중 하나의 방법으로 설치하세요.

# 권장 — uvx로 실행 (전역 설치 불필요, 자동 관리)
# 에이전트 설정에 추가하기만 하면 됩니다. uvx가 첫 실행 시 자동 설치합니다.

# 대안 — 전역 pip 설치
pip install robinhood-mcp

참고: uvx는 uv Python 패키지 관리자에 포함되어 있습니다. 먼저 설치하세요: curl -LsSf https://astral.sh/uv/install.sh | sh

3. 환경 변수

에이전트의 .env 파일이나 셸 프로파일에 다음 변수를 설정하세요.

변수필수 여부설명
ROBINHOOD_USERNAME예Robinhood 이메일
ROBINHOOD_PASSWORD예Robinhood 비밀번호
ROBINHOOD_TOTP_SECRET인증 앱 사용 시에만인증기 설정의 TOTP 시크릿. SMS 인증 사용 시 필요 없음

4. 에이전트 설정

templates/ 디렉토리에서 에이전트별 복사-붙여넣기 설정 스니펫을 확인하세요. 빠른 참조:

Hermes 에이전트 (~/.hermes/config.yaml):

mcp_servers:
  robinhood:
    command: uvx
    args:
      - robinhood-mcp
    env:
      ROBINHOOD_USERNAME: "${ROBINHOOD_USERNAME}"
      ROBINHOOD_PASSWORD: "${ROBINHOOD_PASSWORD}"
      # ROBINHOOD_TOTP_SECRET: "${ROBINHOOD_TOTP_SECRET}"  # 인증 앱 사용 시 주석 해제
    timeout: 60
    connect_timeout: 30

기타 에이전트 — Claude Desktop, Claude Code, Codex, OpenCode, Cline, Windsurf 설정은 templates/ 디렉토리를 참조하세요.

설정을 추가한 후 에이전트를 다시 시작하세요. 다음 명령어로 확인: hermes mcp test robinhood (Hermes) 또는 에이전트의 MCP 상태를 확인하세요.

사용 가능한 MCP 도구

이 도구들은 Hermes 에이전트에서 mcp_robinhood_*로 등록됩니다 (에이전트에 따라 접두사가 다를 수 있음).

도구설명
robinhood_get_portfolio포트폴리오 가치, 자기자본, 매수력, 일일 변동
robinhood_get_positions모든 보유 종목 (원가 기준, 현재 가치, 손익)
robinhood_get_position티커 기준 단일 보유 종목 (단일 심볼의 경우 더 빠름)
robinhood_get_watchlist관심 목록의 주식
robinhood_get_quote실시간 가격, 매수/매도 호가, 거래량
robinhood_get_fundamentalsPER, 시가총액, 배당 수익률, 52주 범위
robinhood_get_historicalsOHLCV 가격 내역 (5분, 10분, 1시간, 1일, 1주)
robinhood_get_news심볼 관련 최신 뉴스 기사
robinhood_get_earnings실적 발표일, EPS 예상치, 실제치
robinhood_get_ratings애널리스트 매수/보유/매도 등급
robinhood_get_dividends배당금 지급 내역
robinhood_get_options_positions현재 옵션 포지션
robinhood_search_symbols종목명 또는 티커로 주식 검색

로컬 캐시

포트폴리오 데이터는 Hermes의 경우 ~/.hermes/data/robinhood/portfolio_cache.json, 기타 에이전트의 경우 ~/.robinhood-mcp/cache.json에 로컬로 캐시됩니다.

캐시 우선 전략

항상 캐시를 먼저 확인하세요. 다음 경우에만 MCP 도구를 호출하세요:

  1. 캐시가 15분 이상 경과했고 사용자가 실시간 데이터를 원하는 경우
  2. 사용자가 명시적으로 새로고침을 요청한 경우 ("포트폴리오 새로고침", "최신 가격 가져와")
  3. 사용자가 캐시에 없는 특정 티커에 대해 물어보는 경우
  4. 사용자가 빠르게 변하는 데이터(뉴스, 실시간 시세)에 대해 물어보는 경우

캐시 업데이트

# Hermes 에이전트 사용자
python3 scripts/refresh_cache.py

# 사용자 정의 경로 사용
python3 scripts/refresh_cache.py --cache-dir ~/my-data --vault-path ~/my-vault

# JSON 출력만 (Obsidian 없이)
python3 scripts/refresh_cache.py --json-only

# 캐시가 최신이어도 강제 새로고침
python3 scripts/refresh_cache.py --force

에이전트는 포트폴리오 쿼리 중 MCP 도구를 호출하고 결과를 캐시 파일에 기록하여 인라인으로 캐시를 업데이트할 수도 있습니다.

포트폴리오 쿼리 워크플로

사용자가 포트폴리오에 대해 물어볼 때:

  1. 캐시 읽기로 컨텍스트 확인 (포트폴리오 가치, 포지션, 할당)
  2. 데이터가 오래되었거나(>15분) 사용자가 실시간 데이터를 원하면 MCP 도구 호출
  3. MCP 가져오기 후 캐시 업데이트
  4. 실제 보유 종목을 기준으로 컨텍스트에 맞게 답변 — 일반적인 조언 금지
  5. 해당되는 경우 원가 기준, 미실현 손익, 할당 비율 참조
  6. 옵션 질문의 경우, 사용자의 전략(예: 0DTE 브레이크아웃)을 알고 있다면 상호 참조

사용자가 특정 티커에 대해 물어볼 때:

  1. wiki/entities/<ticker>.md 파일이 존재하는지 확인 (Obsidian 사용 시)
  2. 기존 투자 논리 및 조사 내역 읽기
  3. MCP를 통해 실시간 데이터 가져오기 (시세, 펀더멘털, 뉴스, 등급)
  4. 위키 지식 + 실시간 데이터를 종합하여 응답
  5. (Obsidian 사용 시) 엔티티 페이지에 연구 노트 항목 추가
  6. 포트폴리오에 없는 티커는 연구 대기열에 추적

MCP vs 캐시 사용 시기

시나리오사용
"내 포트폴리오 가치는 얼마야?"캐시 (충분히 최신인 경우)
"내 NVDA는 어떻게 되고 있어?"캐시 우선, 오래되었거나 티커가 없으면 MCP
"전체 포트폴리오 업데이트를 해줘"MCP (항상 실시간 데이터 확보)
"TSLA 관련 뉴스 있어?"MCP (뉴스는 계속 변경됨)
"AAPL 애널리스트 등급은 어떻게 돼?"MCP (연구 데이터는 항상 실시간)
"내 옵션 포지션을 보여줘"캐시 우선, 오래되었으면 MCP
"어떤 배당금을 받았어?"캐시 우선
"내 데이터를 새로고침해줘"MCP 후 캐시 업데이트

연구-엔티티 워크플로 (선택 사항 — Obsidian 필요)

문제: 주식에 대한 연구 쿼리가 채팅 세션에서 사라집니다. 해결책: 모든 보유 종목 또는 연구된 티커는 영구적인 엔티티 페이지를 갖게 됩니다. 연구 내용은 추가되며 잊히지 않습니다.

엔티티 페이지 구조

각 티커는 wiki/entities/<ticker>.md에 페이지를 갖습니다:

---
title: 회사명
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity
tags: [ticker, sector, ...]
---

# 회사명 (TICKER)

간략한 개요...

## 주요 사실
...

## 투자 논리
...

## 포지션 내역
> 자동 업데이트됩니다. 수동으로 편집하지 마세요.

### 현재 포지션
| 지표 | 값 |
|------|-----|
| 수량 | 50 |
| 평균 단가 | $40.69 |
| 현재 가격 | $45.20 |
| 총 수익률 | +10.8% |

### 포지션 업데이트
- **[2026-04-24]** 50주 @ $40.69 평균

## 연구 노트
> 에이전트가 각 연구 쿼리 후 날짜가 있는 항목을 추가합니다.

### [2026-04-24] HIMS를 $30에 추가 매수해야 할까?
핵심 사항: [요약]
결정: [사용자가 명시한 경우]

엔티티 페이지 업데이트 시점

  1. 모든 포트폴리오 조회 시 — 각 보유 종목의 포지션 데이터 업데이트
  2. 모든 연구 쿼리 후 — 날짜가 있는 연구 노트 항목 추가
  3. 새 엔티티 생성 시 — 펀더멘털 가져오기, 페이지 생성, 위키 인덱스에 추가

연구 대기열

wiki/concepts/research-queue.md는 아직 매수하지 않았지만 평가 중인 티커를 추적합니다:

티커출처투자 논리 (1줄)상태추가일비고
ABCYouTube 영상EV 배터리 관련주연구 중2026-04-24MKBHD 언급

상태 값: 연구 중 → 매수 준비 완료 → (매수 시 제거) 또는 통과

Obsidian 볼트 통합 (선택 사항)

모든 포트폴리오 조회 시 Obsidian 볼트에 두 개의 파일을 쓸 수 있습니다:

파일동작
_ephemeral/portfolio/snapshots/YYYY-MM-DD-HHMM.md변경 불가 — 조회당 하나, 전체 데이터
_ephemeral/portfolio/latest.md덮어쓰기 — 현재 상태 + 이전 대비 변동

Dataview용 프론트매터

두 파일 모두 YAML 프론트매터를 포함합니다:

---
snapshot_time: 2026-04-24T18:58:02Z
date: 2026-04-24
time: 14:58
total_equity: 42700.94
day_change: -834.73
day_change_pct: -1.92
positions_count: 16
options_count: 1
dividends_ytd: 1.68
type: portfolio-snapshot
---

이를 통해 다음과 같은 Dataview 쿼리가 가능합니다:

TABLE date, total_equity, day_change_pct
FROM "_ephemeral/portfolio/snapshots"
SORT snapshot_time DESC

변동 계산

latest.md는 가장 최근 스냅샷과 비교하여 다음을 강조합니다:

  • 🆕 신규 포지션 (이전 조회 이후 매수)
  • ❌ 종료된 포지션 (이전 조회 이후 매도)
  • 📊 유의미한 변동 (>5% 가격 변동 또는 >1% 할당 비중 변동)
  • 이전 스냅샷 대비 자기자본 변동

Obsidian 통합을 활성화하려면 refresh_cache.py 실행 시 --vault-path 인수를 설정하거나 ROBINHOOD_VAULT_PATH 환경 변수를 설정하세요.

자문 지침

  1. 항상 사용자의 실제 보유 종목에 대한 컨텍스트를 바탕으로 답변 — 일반적인 조언 금지
  2. 해당되는 경우 원가 기준, 미실현 손익, 할당 비율 참조
  3. 옵션 질문의 경우 사용자의 전략 이해 (예: 0DTE 브레이크아웃)
  4. 조치를 권장할 때는 계산을 보여줄 것 (현재 할당, 위험/보상)
  5. 사용자가 명시적으로 요청하지 않는 한 절대 거래를 제안하지 않음
  6. 단일 포지션이 포트폴리오의 20%를 초과하는 경우 집중 위험 플래그 표시
  7. 뉴스를 펀더멘털과 상호 참조 — 헤드라인에만 반응하지 않음

보안 및 개인정보 보호

  • 스킬에 자격 증명이 저장되지 않음 — 인증은 MCP 설정의 환경 변수를 통해 이루어짐
  • 읽기 전용 액세스 — MCP 서버는 거래를 실행하거나 계정 설정을 수정할 수 없음
  • 로컬 처리 — 자격 증명은 로컬에서 인증에 사용됨; 세션 토큰은 ~/.tokens/robinhood.pickle에 캐시됨
  • 캐시는 로컬 전용 — ~/.hermes/data/robinhood/는 절대 전송되지 않음
  • Obsidian 볼트 — 스냅샷은 사용자의 로컬 볼트에만 기록됨

문제 해결

문제해결 방법
"로그인되지 않음"ROBINHOOD_USERNAME 및 ROBINHOOD_PASSWORD 환경 변수가 올바르게 설정되었는지 확인
"Non-base32 digit found"ROBINHOOD_TOTP_SECRET에 잘못된 문자가 포함됨 — A-Z와 숫자 2-7만 허용. SMS 인증 사용 시 이 변수 제거
속도 제한 (429 오류)robin_stocks에는 내장 속도 제한이 없음. 몇 분간 활동을 중단하고 재시도
MCP 서버가 시작되지 않음uvx가 설치되었는지 확인 (pip install uv 또는 `curl -LsSf https://astral.sh/uv/install.sh
캐시 스크립트 실패robin_stocks 및 pyotp가 설치되었는지 확인: pip install robin_stocks pyotp
시세가 오래됨Robinhood 시세는 특정 시점의 데이터이며 실시간 스트리밍이 아님. 최신 데이터를 위해 MCP를 통해 새로고침

관련 링크

  • robinhood-mcp — 기본 MCP 서버
  • robin_stocks — 비공식 Robinhood API 래퍼
  • portfolio-obsidian-bridge — 모든 증권사를 위한 일반 Obsidian 동기화
  • llm-wiki — 영구 연구를 위한 Wiki 아키텍처
  • obsidian — Obsidian 볼트 작업

관련 스킬