TRENDSHIFT · 2026.06.15

UZI-Skill 딥다이브
— "투자 판단 규칙"을 66명의 페르소나 + 규칙엔진으로 코드화한 에이전트 스킬

UZI-Skill(游资·UZI Skills, 패키지명 stock-deep-analyzer)은 종목 코드 하나를 넣으면 Claude Code 같은 에이전트가 22개 차원의 데이터를 수집 → 17~22종의 기관급 밸류에이션 모델을 계산 → 66명의 투자 거장 페르소나가 각자의 방법론으로 채점 → Bloomberg 풍 HTML 리포트로 묶어 주는 A주/홍콩주/미국주 개별 종목 심층 분석 엔진이다. 핵심은 "각 거장의 투자 철학을 추상적 문장이 아니라 가중치가 달린 검증 규칙(Rule)으로 기계화"했다는 점 — 버핏, 그레이엄, 조라오거(赵老哥) 같은 서로 안 맞는 사람들이 같은 종목을 한 표씩 던진다. (저장소: wbh604/UZI-Skill · Python 3.10+ · MIT · 버전 v3.9.0 · 무료 데이터 소스, API 키 불필요)

이 문서는 "투자 판단 로직을 어떻게 에이전트 스킬·규칙엔진으로 설계하는가"에 초점을 둔 아키텍처 학습용 해설이다. 특정 종목 추천이나 투자 조언이 아니며, 본 도구의 점수·시그널은 어떤 수익도 보장하지 않는다(§2·§7 명시).
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 / 환경 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"애널리스트 한 명이 며칠 걸려 하던 일을,
데이터 수집 + 규칙엔진 채점 + 66명 페르소나 토론으로 자동화한 것."

보통 한 종목을 보려면 재무제표를 뒤지고, 차트를 보고, 여러 거장이라면 이걸 어떻게 볼까 상상하고, DCF를 엑셀로 두드린다. UZI-Skill은 이 "데이터 수집 → 다각도 분석 → 결론" 과정을 22개 데이터 fetcher + 규칙엔진(investor_criteria) + 51개 페르소나 YAML로 모듈화해, 에이전트가 차례대로 실행하게 만든 Claude Code 플러그인(스킬 묶음)이다.

가장 독특한 설계는 "거장이 어떻게 볼까"를 LLM의 막연한 흉내가 아니라, 각 거장마다 가중치 달린 Rule 리스트로 명문화한 점이다. 예컨대 버핏은 "ROE 5년 연속 15% 초과(가중치 5)", "PE 5년 중앙값 이하(가중치 3)" 같은 규칙으로 표현되고, 종목 데이터를 이 규칙에 통과시켜 0~100점과 bullish/bearish/neutral 시그널을 뽑는다.

UZI-Skill은 하나의 거대한 프로그램이 아니라 4개의 협력하는 스킬로 구성된다 — deep-analysis(핵심 심층 분석 워크플로), investor-panel(66인 평가단만 단독 실행), lhb-analyzer(중국 "용호방=龙虎榜" 거래 좌석 분석), trap-detector("작전 세력·살돼지반(杀猪盘)" 위험 8신호 스캔). 사용자가 "삼성전자 분석해줘" 같은 말을 하면 CLAUDE.md의 트리거 표에 따라 적절한 스킬이 자동 발동한다. A주는 akshare, 미국·홍콩주는 yfinance전부 무료·키 불필요 데이터 소스로 동작한다.

용어
에이전트 스킬 (Agent Skill)
Claude Code·Codex·Cursor·Gemini CLI 같은 에이전트가 읽어서 행동 지침으로 삼는 구조화된 지시서 묶음. 보통 SKILL.md(워크플로·게이트 규칙) + 보조 스크립트 + 참조 문서로 구성된다. UZI-Skill은 "주식 분석"이라는 업무를 이 형식으로 패키징해, 어느 에이전트에 꽂아도 같은 절차로 돌아가게 만들었다.
용어
游资 (유자, youzi)
중국 증시의 단기 투기성 큰손 자금·세력을 가리키는 말. 가치투자(버핏류)와 정반대로 거래량·상한가(涨停板)·테마 발효 정도를 보고 초단기에 치고 빠진다. 이 프로젝트 이름 "UZI"가 바로 游资의 병음(yóuzī)을 음차한 것 — 평가단 66명 안에 조라오거(赵老哥) 같은 실제 중국 유자 거물 페르소나가 다수 포함돼 있어, 가치파와 유자파가 같은 종목을 두고 충돌하는 구도가 이 도구의 정체성이다.

2왜 주목받는가

트렌딩 이유 · 경쟁 제품(Anthropic financial-services-plugins 등) 대비 장점.

"주식 분석 AI"는 흔하지만 대부분 세 문단짜리 헛소리를 뱉는 GPT 래퍼이거나, 비싼 기관용 단말기다. UZI-Skill이 TrendShift 상위에 오른 이유는 그 사이의 빈틈을 정밀하게 메웠기 때문이다. Anthropic이 낸 financial-services-plugins는 방법론(DCF/Comps/LBO)은 훌륭하지만 철저히 미국주 시각 + 전부 유료 데이터다. UZI-Skill은 그 방법론을 가져오되 중국 A주를 1급 시민으로, 전부 무료 데이터로 풀어냈다.

비교 항목일반 "주식 GPT 래퍼"Anthropic fin-pluginsUZI-Skill
데이터 소스모델 기억(환각 위험)유료 단말·API 키 필수akshare·yfinance 등 전부 무료, 키 0개
시장 커버리지주로 미국주미국주 중심A주·홍콩주·미국주(중국 시장 1급)
분석 깊이요약 몇 줄DCF/Comps/LBO 정통22차원 데이터 × 22종 기관 방법 × 66 평가단
"거장 의견"그럴듯한 흉내없음가중 규칙(Rule)로 기계화 + 페르소나 role-play
위험 검출거의 없음없음살돼지반(작전) 8신호 + 용호방 좌석 분석
산출물채팅 텍스트모델·메모자가완결 HTML 리포트 + SNS 카드 + 한줄 요약
이식성특정 챗봇 종속Claude 전용Claude Code·Codex·Cursor·Gemini·CLI 다 지원
기존 "AI 주식 분석"의 두 가지 함정
환각(hallucination) 숫자, 그리고 "좋아 보임"으로 끝나는 결론

LLM에게 그냥 "이 종목 어때?"라고 물으면 ① 실제 재무 수치를 지어내고(작년 ROE를 기억에서 날조), ② "기초체력 양호, 전망 밝음" 같은 아무 정보도 없는 결론으로 끝난다. 게다가 어느 거장의 입을 빌려도 결국 톤만 바꾼 같은 말이 나온다.

UZI-Skill의 해결
"숫자는 스크립트가, 판단은 규칙·페르소나가" + 충돌 강제 노출

UZI-Skill은 데이터는 무조건 스크립트나 실제 웹검색에서만 오게 막고(SKILL.md의 하드 게이트), 판단은 거장별 가중 규칙으로 점수화한다. 더 흥미로운 건 "결론이 갈리면 화해시키지 말고 갈등을 그대로 리포트에 써라"는 규칙이다 — "DCF는 28% 고평가라는데 LBO는 PE 매수자가 21% IRR을 번다는 분기 자체가 정보"라는 식이다. "기초체력 양호" 같은 공허한 표현은 게이트에서 실패로 처리된다.

반드시 읽을 것 · 투자 조언 아님
이 도구의 점수는 "정답"이 아니라 "구조화된 의견 시뮬레이션"이다

66명의 점수, DCF 결과, 시그널은 과거·공개 데이터에 규칙을 적용한 결과물일 뿐, 미래 수익을 전혀 보장하지 않는다. 페르소나는 실존 인물의 공개 철학을 모사한 것이지 본인의 실제 판단이 아니며, 데이터 소스 오류·시차·결측이 결과를 왜곡할 수 있다. 이 문서와 도구는 "투자 의사결정 로직을 코드로 설계하는 법"을 배우기 위한 교육 자료이며, 어떤 종목의 매수·매도 권유도 아니다. 실제 투자 판단과 그 책임은 전적으로 본인에게 있다.

3기술 스택 전체 지도

데이터 계층(백엔드)·리포트(프론트엔드)·스킬/인프라 각각.

① 데이터 & 분석 엔진 (백엔드) — Python 100%

UZI-Skill은 전부 파이썬으로 짜였고, "분석"은 본질적으로 외부 데이터 수집(I/O 바운드) + 수치 계산이다. 핵심은 종목 코드/이름을 받아 22개 차원의 fetch_*.py 스크립트를 (가능하면 병렬로) 돌려 원시 데이터를 모으는 부분이다.

요소역할
Python 3.10+전체 언어. run.py 단일 진입점 + skills/deep-analysis/scripts/ 엔진.
akshareA주·홍콩주 무료 데이터의 심장. 재무·K선·자금흐름·용호방·기관보유 등을 키 없이.
yfinance미국주(및 일부 글로벌) 데이터. Yahoo Finance 래퍼.
baostockK선 폴백 소스(공식 무료 인터페이스). akshare 실패 시 이중화.
pandas모든 fetcher의 표 데이터 처리·정규화.
ddgs (DuckDuckGo)정성 차원(뉴스·여론) 보강용 웹검색. 데이터 결측 시 폴백.
playwright헤드리스 Chromium — 일부 사이트 스크래핑 폴백 + 리포트 캡처(SNS 카드).
mplfinance / richK선 PNG 렌더링 / 터미널 진행 막대·서식.
용어
I/O 바운드 (I/O-bound)
작업 시간의 대부분을 CPU 계산이 아니라 외부 응답 대기(네트워크)에 쓰는 작업. 22개 데이터 소스를 순서대로 두드리면 느리므로, UZI-Skill은 Task 1에서 fetcher들을 4개 wave로 병렬 실행하라고 게이트로 강제한다("직렬로 22개 돌리면 감점").

② 규칙엔진 & 페르소나 (분석의 핵심 자산)

이 레포의 진짜 가치는 데이터가 아니라 "거장의 판단을 코드로 옮긴 두 개의 자산"이다.

요소역할
lib/investor_criteria.py규칙엔진의 단일 진실원. 거장별 Rule 리스트(rule_id·name·weight·check 람다·pass/fail 메시지).
lib/investor_evaluator.py규칙 실행기. (거장, features) → 0~100점 + 시그널 + 통과/실패 규칙 + 근거.
lib/stock_features.py원시 데이터 → 약 60개 표준화 특징(feature, 파일 자체 docstring 기준; 실제 키 수는 버전마다 증가 중). 규칙은 raw가 아니라 이 feature만 참조.
personas/*.yaml (51개)거장별 철학·핵심지표·기피대상·말투·대표 포지션. LLM의 role-play 입력. (flagship 12개 + stub 39개; 나머지 15명은 investor_knowledge/personas 모듈 구동)
lib/deep_analysis_methods.py / fin_models.pyDCF·Comps·LBO·3-statement·segmental 등 기관급 밸류에이션 계산.
lib/self_review.py16개 자가검증 게이트(v2.9.1 기준). 리포트에 공허한 표현·날조 숫자가 없는지 기계적으로 점검.
비유 — 규칙엔진 vs 페르소나

이 둘의 분업을 "채점 기준표(rubric)와 면접관"으로 보면 쉽다. investor_criteria.py는 버핏용 채점표(ROE·부채비율·해자 점수…)를 기계적으로 매겨 객관 점수를 낸다. 그런데 그것만으론 "버핏이 애플을 ROE/PE만으로 62점 중립"이라 오판한다(실제론 그의 최대 보유 종목). 그래서 LLM이 buffett.yaml의 철학·실제 포지션을 읽고 규칙 점수를 참고하되 최종 판단은 페르소나로 보정한다. 규칙엔진=숫자의 객관성, 페르소나=맥락의 판단력.

③ 리포트 · 프론트엔드

요소역할
assemble_report.py모든 Task 산출 JSON → 단일 자가완결 HTML(약 600KB)로 조립.
HTML 리포트Bloomberg 풍 다크모드 + sticky 목차 + 용어 호버. 오프라인 열람 가능.
render_share_card.py / render_war_report.py1080×1920 SNS 세로 카드 / 1920×1080 단톡방 "전보(战报)" 이미지.
inline_assets.pyCSS·이미지를 HTML에 인라인 — 파일 하나로 완결되게.

④ 스킬 패키징 · 멀티 에이전트 인프라

요소역할
.claude-plugin/plugin.json·marketplace.json — Claude Code 플러그인 마켓 메타데이터.
skills/*/SKILL.md스킬별 워크플로 + 하드 게이트(YAML 프런트매터 description으로 트리거).
commands/*.md (20개)슬래시 명령(/dcf·/scan-trap·/ic-memo 등) 정의.
CLAUDE.md·AGENTS.md·CODEX.md·GEMINI.md에이전트별 컨텍스트 파일 — 같은 스킬을 여러 CLI에 이식.
hooks/session-start세션 시작 시 GitHub 최신 릴리스 확인 → 업데이트 안내(hook).
.env.example / UZI_LEGACY 등 env선택적 키(없어도 동작) + 파이프라인 동작 모드 토글.
용어
멀티 에이전트 이식 (CLAUDE.md / AGENTS.md / CODEX.md / GEMINI.md)
같은 분석 엔진을 Claude Code·Codex·Cursor·Gemini CLI 등 서로 다른 에이전트에 모두 꽂을 수 있게, 각 에이전트가 관례적으로 읽는 컨텍스트 파일을 각각 따로 둔 것. 본체 로직(파이썬)은 공유하고, "이 에이전트야 이렇게 행동해"라는 지침만 파일별로 분리한 영리한 이식 전략이다.

4아키텍처 심화 분석

종목 입력 → 데이터 수집 → 규칙 채점 → 페르소나 토론 → 리포트, 그리고 게이트 설계.

전체 흐름 한눈에 — 6단계 Task 파이프라인

핵심 스킬 deep-analysisTask 1 → 1.5 → 2 → 3 → 4 → 5의 엄격한 순서를 갖는다. "앞 Task의 산출 JSON이 없으면 다음 Task 시작 금지"가 하드 게이트다. 이렇게 단계마다 JSON을 떨어뜨리는 구조 덕분에, 데이터 수집(스크립트)과 정성 판단(LLM)이 깔끔히 분리되고 매 단계가 감사(audit) 가능해진다.

종목 입력 (예: "贵州茅台" 또는 "AAPL") │ ┌───────────────▼────────────────┐ │ stage1() · 이름→코드 해석 │ │ name_matcher · market_router │ │ (ETF/펀드/전환사채면 게이트 차단) │ └───────────────┬────────────────┘ │ ╔═════════ Task 1 · 22차원 데이터 수집 (4 wave 병렬) ═════════╗ ║ fetch_basic / financials / kline / valuation / capital_flow ║ ║ lhb / fund_holders / moat / peers / industry / events ... ║ ║ → raw_data.json (스크립트만, 환각 금지) ║ ╚════════════════════════════╤════════════════════════════════╝ ▼ ┌──── Task 1.5 · 기관급 밸류에이션 (계산) ──────────────────┐ │ DCF · Comps · LBO · 3-Statement · Segmental · Porter ... │ │ fin_models.py / deep_analysis_methods.py │ │ → modeling.json (+ methodology_log: 추론 체인 감사용) │ └────────────────────────────┬──────────────────────────────┘ ▼ ┌──── Task 2 · 22차원 점수화 + (네가) 정성 판단 ────────────┐ │ stock_features.py → 약 60개 표준화 feature │ │ → dimensions.json │ └────────────────────────────┬──────────────────────────────┘ ▼ ┌──── Task 3 · 66인 평가단 (규칙엔진 + 페르소나) ───────────┐ │ investor_criteria(가중 Rule) → investor_evaluator(점수) │ │ ↑ 참고 + LLM이 personas/*.yaml로 role-play 보정 │ │ 9개 유파 sub-agent 병렬 → agent_analysis.json │ └────────────────────────────┬──────────────────────────────┘ ▼ ┌──── Task 4 · 종합(synthesis) ─────────────────────────────┐ │ "충돌을 화해시키지 말고 그대로 노출하라" (하드 게이트) │ │ DCF vs Comps 분기 · 66인 분산 자체가 정보 │ └────────────────────────────┬──────────────────────────────┘ ▼ ┌──── Task 5 · 리포트 조립 + 16개 자가검증 게이트 ──────────┐ │ assemble_report.py + self_review.py │ │ → report.html(600KB) · share_card.png · war_report.png │ └───────────────────────────────────────────────────────────┘

핵심 ① — "투자 철학을 가중 규칙으로" (규칙엔진의 실제 모습)

이 프로젝트에서 가장 배울 점은 추상적 투자 철학을 어떻게 실행 가능한 데이터 구조로 떨어뜨렸는가다. investor_criteria.py의 각 거장은 Rule 객체 리스트이고, 각 규칙은 가중치(1~5) + 람다 검증 함수 + 통과/실패 시 보여줄 메시지를 갖는다. 점수는 "통과한 규칙들의 가중치 합 ÷ 전체 가중치 합"으로 나온다.

버핏 규칙 정의 예시 (investor_criteria.py)
# 각 Rule = rule_id · 한글(원문은 중문)이름 · 가중치 · check 람다 · 메시지
BUFFETT_RULES = [
    Rule("roe_5y_15", "ROE 5년 연속 > 15%", 5,
         check=lambda f: f.get("roe_5y_above_15", 0) >= 4
                         and f.get("roe_5y_min", 0) > 12,
         pass_msg="ROE 5년 연속 > 15% (최저 {roe_5y_min:.1f}%)",
         fail_msg="ROE 5년 최저 {roe_5y_min:.1f}%, 달성 {roe_5y_above_15}/5"),
    Rule("debt_ratio_50", "부채비율 < 50%", 3,
         check=lambda f: 0 < f.get("debt_ratio", 100) < 50, ...),
    Rule("moat_clear", "해자 명확 (해자점수 ≥ 24/40)", 4,
         check=lambda f: f.get("moat_total", 0) >= 24, ...),
    Rule("safety_margin_pe", "PE가 5년 중앙값 이하", 3,
         check=lambda f: f.get("pe_quantile_5y", 100) < 50, ...),
]

핵심은 check 람다가 raw 데이터를 직접 보지 않고 stock_features.py가 만든 표준 feature(roe_5y_min·debt_ratio·moat_total…)만 본다는 점. 덕분에 데이터 소스가 A주든 미국주든 feature 계층이 흡수하고, 규칙은 시장 독립적으로 재사용된다.

용어
규칙엔진 (Rule Engine)
"조건(check) → 결과(점수·시그널)"의 규칙들을 데이터로 모아 두고, 입력에 대해 일괄 평가하는 패턴. if-else를 코드에 박지 않고 규칙을 1급 데이터로 외부화해서, 새 거장 추가가 코드 수정이 아니라 INVESTOR_RULES에 리스트 한 줄 추가로 끝난다. maigret이 사이트 판정을 data.json으로 뺀 것과 같은 "데이터 주도 설계" 철학이다.

핵심 ② — 규칙엔진을 "참고"로만 쓰는 이유 (Agent 보정)

흥미롭게도 이 도구는 규칙엔진을 최종 판단으로 쓰지 않는다. 참조 문서 task3-agent-evaluation.md는 순수 규칙엔진의 한계를 표로 못 박는다.

상황규칙엔진의 답올바른 답
버핏이 애플 분석ROE pass / PE fail → 62점 중립100점 매수 — 실제 1대 보유 종목
유자가 미국주 분석Stage 2 pass → 75점 매수부적합 — 유자는 미국주 안 함
캐시 우드가 백주(白酒) 분석매출증가 10% < 20% → 0점 매도부적합 — 그는 파괴적 혁신만 봄
그레이엄이 엔비디아 분석PE 60 > 15 → 0점 매도0점 매도지만 "왜"를 설명해야 함

그래서 Task 3은 9개 유파(가치/성장/거시/기술/중국가치/A주유자/퀀트/테크리더/AI병목)별로 sub-agent를 병렬 돌리고, 각 sub-agent는 ① raw_data ② feature dict ③ 규칙엔진 점수(참고) ④ 페르소나 YAML을 받아 거장 본인이 쓴 듯한 headline과 reasoning을 직접 작성한다. 규칙엔진은 "객관 닻", 페르소나는 "맥락 보정"이라는 2단 구조다.

핵심 ③ — 하드 게이트로 품질을 강제하는 설계

UZI-Skill의 또 다른 교훈은 "LLM을 믿지 말고 게이트로 막아라"다. SKILL.md는 위반 즉시 중단되는 규칙들을 둔다.

게이트강제하는 것
순서 게이트Task 1→1.5→2→3→4→5. 앞 단계 JSON 없으면 다음 시작 금지.
데이터 출처 게이트모든 숫자는 스크립트나 실제 웹검색만. 날조 금지, 추론엔 출처 표기.
공허표현 게이트"기초체력 양호·전망 밝음·주목할 만" 3종 출현 시 실패 처리.
충돌 노출 게이트DCF vs Comps가 갈리면 화해 금지, 분기를 그대로 써라.
종목 해석 게이트이름이 모호하면 추측 금지 → 사용자에게 후보 제시 후 재실행.
비개별주 게이트ETF·펀드·전환사채면 개별주 규칙 적용 불가 → 구성종목으로 유도.
자가검증(self_review)리포트 조립 후 16개 자동 점검 통과해야 완료.
비유 — 게이트 설계

이 게이트들은 "공장 라인의 품질 검사대"와 같다. 작업자(LLM)가 아무리 유능해도 컨디션에 따라 대충 할 수 있으니, 각 공정 끝에 통과 못 하면 다음으로 못 넘어가는 검사대를 박아 둔 것. 특히 "공허표현 게이트"는 LLM이 가장 빠지기 쉬운 함정(그럴듯하지만 내용 없는 문장)을 금지어 리스트로 기계 차단한다는 점에서, 프롬프트 엔지니어링의 모범 사례다.

5디렉토리 구조 해부

스킬 4개 + 공유 엔진(lib) + 페르소나 자산이 핵심.

UZI-Skill/ ├── run.py ★ 단일 진입점 (어느 에이전트든 python run.py 종목) ├── .claude-plugin/ │ ├── plugin.json 플러그인 메타 (name: stock-deep-analyzer) │ └── marketplace.json /plugin marketplace add 용 카탈로그 ├── CLAUDE.md / AGENTS.md ★ 에이전트별 컨텍스트 (트리거 표·워크플로) ├── CODEX.md / GEMINI.md Codex·Gemini CLI 이식용 컨텍스트 ├── commands/ 슬래시 명령 20개 │ ├── analyze-stock.md /analyze-stock — 풀 분석 │ ├── quick-scan.md /quick-scan — 30초 속판 │ ├── scan-trap.md /scan-trap — 작전 위험 스캔 │ ├── dcf.md · comps.md · lbo.md 개별 밸류에이션 명령 │ └── ic-memo.md · thesis.md · ... 투자위 메모·논거 추적 등 ├── agents/investor-panel.md 평가단 sub-agent 정의 ├── hooks/session-start 세션 시작 시 버전 체크 hook ├── skills/ ★★ 핵심 — 4개 스킬 │ ├── deep-analysis/ ★ 메인 워크플로 │ │ ├── SKILL.md 6단계 Task + 하드 게이트 │ │ ├── personas/ ★★ 51개 거장 YAML (buffett·zhao_lg·...) │ │ ├── references/ Task별 상세 지침 (task1~5 .md) │ │ ├── assets/ 리포트 템플릿·아이콘 │ │ └── scripts/ ★ 엔진 │ │ ├── run_real_test.py 주 엔진 (stage1/stage2) │ │ ├── fetch_*.py 22개 데이터 fetcher │ │ ├── compute_deep_methods.py 기관 밸류에이션 실행 │ │ ├── assemble_report.py HTML 리포트 조립 │ │ ├── render_share_card.py / render_war_report.py SNS 이미지 │ │ └── lib/ ★★ 공유 로직 │ │ ├── investor_criteria.py ★ 거장별 가중 Rule (규칙엔진 소스) │ │ ├── investor_evaluator.py 규칙 실행기 (점수·시그널) │ │ ├── stock_features.py raw → 60개 표준 feature │ │ ├── fin_models.py / deep_analysis_methods.py DCF·LBO 등 │ │ ├── self_review.py 16개 자가검증 게이트(v2.9.1) │ │ ├── market_router.py · name_matcher.py 시장/이름 해석 │ │ ├── pipeline/ · providers/ · tier1/ 파이프라인·데이터원·신규 방법 │ │ └── i18n.py 다국어(중/영) 출력 │ ├── investor-panel/ 66인 평가단 단독 실행 │ ├── lhb-analyzer/ 용호방(龙虎榜) 좌석 분석 │ └── trap-detector/ 살돼지반 8신호 (references/eight-signals.md) ├── docs/ 연구 도시에·테스트 플랜·데이터 제공자 문서 ├── requirements.txt akshare·yfinance·playwright 등 └── README.md(中) / README_EN.md / RELEASE-NOTES.md(193KB!)
읽는 순서 추천

CLAUDE.md로 "어떤 말이 어떤 스킬을 트리거하나" 파악 → ② deep-analysis/SKILL.md로 6단계 Task와 게이트 → ③ personas/buffett.yaml 한 개로 페르소나 스키마 실물 → ④ lib/investor_criteria.py로 규칙엔진의 Rule 구조 → ⑤ lib/investor_evaluator.py로 점수가 어떻게 합산되는지 → ⑥ references/task3-agent-evaluation.md로 "왜 규칙엔진만으론 안 되는가". 설계 통찰은 이 여섯 곳에 거의 다 있다.

페르소나 YAML 스키마 (zhao_lg.yaml · 유자 거물 "조라오거")
id: zhao_lg
name: 赵老哥 (조라오거)
school: youzi_faction      # 유파 = F조(A주 유자)
group: F
philosophy: |               # 투자 철학 (LLM role-play 핵심)
  龙头战法 — 가장 센 한 종목만 친다. 양봉 하나가 신앙을 바꾼다.
  상한가는 가장 싼 칩이다. 龙一龙二만, 끊긴 연속상한가는 안 건드린다.
key_metrics:               # 그가 실제로 보는 지표
  - 봉판(封板) 시각 (10시 전 = A급)
  - 봉단금액/유통시총 (> 5% = 강한 봉판)
  - 환율(换手率) 10~30% 건강 · > 50% 천량(위험)
avoids:                    # 절대 안 사는 것
  - 백마주(우량주) · 느려서 못 번다
  - 시총 > 1000억 (못 끌어올림 — 茅台·宁德 제외)
voice: |                     # 말투 (리포트 톤)
  짧은 문장 · 북방 사투리 · "사라" "튀어" "안 건드려"만.
  기술지표 경멸: "KDJ MACD는 개미들 장난감"

버핏 YAML과 정반대다. 버핏은 avoids에 "고밸류 성장주·레버리지"를 넣는데, 조라오거는 "저가 + 국유 배경 + 테마"를 가장 좋아한다고 적혀 있다. 이렇게 상극인 66명이 같은 종목을 채점하면 분산 자체가 정보가 된다(Task 4의 "충돌 노출" 게이트).

6학습 포인트 (기술별)

에이전트 스킬·규칙엔진 설계에서 무엇을 배우나.

A. 도메인 지식을 "데이터 주도 규칙"으로 외부화

가장 큰 교훈은 "전문가의 판단 기준을 if-else가 아니라 가중 규칙 데이터로 빼는 법"이다. 66명을 if-else로 짰다면 코드가 폭발하고, 새 거장 추가가 악몽이었을 것이다. UZI-Skill은 Rule(rule_id, name, weight, check, msgs)라는 한 가지 구조로 통일해, 거장 추가 = 리스트 한 줄, 점수 계산 = 가중 통과율로 일반화했다. "변하는 부분(규칙)은 데이터로, 안 변하는 부분(채점 로직)만 코드로"의 모범 사례다.

실습: 당신이 아는 분야(영화 평점, 맛집, 채용)에서 "심사위원 3명"을 각자 가중 규칙 리스트로 정의하고, 동일 항목을 0~100점으로 채점하는 미니 규칙엔진을 40줄로 짜 보라.

B. 규칙엔진 + LLM 보정의 2단 구조

순수 규칙엔진은 맥락맹(脈絡盲)이고(버핏=애플 62점 중립), 순수 LLM은 환각·일관성 부족이다. UZI-Skill은 규칙엔진으로 객관 닻을 내리고, LLM이 페르소나로 보정하는 하이브리드를 택했다. 이는 "결정론적 계산 + 확률적 판단"을 결합하는 현대 에이전트 설계의 핵심 패턴이다 — 검색(RAG)·코드 실행·도구 호출 모두 같은 사상.

실습: A의 미니 규칙엔진 결과를 LLM 프롬프트에 "참고 점수"로 주고, "이 심사위원이라면 점수를 어떻게 보정할지 한 문단으로"를 받아 보라. 규칙 점수만 vs 보정 후를 비교.

C. 하드 게이트로 LLM 출력 품질 강제

SKILL.md의 게이트는 "프롬프트로 부탁하지 말고 규칙으로 막아라"를 보여 준다. 특히 ① 순서 게이트(앞 산출물 없으면 다음 금지), ② 공허표현 금지어 리스트, ③ 데이터 출처 강제는 그대로 어떤 에이전트 워크플로에도 이식 가능하다. self_review.py의 16개 자동 점검은 "사람이 리뷰 전에 기계가 먼저 거르기"의 좋은 예다.

실습: 당신의 글쓰기 봇에 "'사실상·기본적으로·매우' 3개 단어가 출력에 보이면 재작성" 게이트를 넣어 보라. 프롬프트 지시만 했을 때와 후처리 검사로 막았을 때의 준수율을 비교.

D. 멀티 에이전트 이식 & 단일 진입점

같은 엔진을 Claude Code·Codex·Cursor·Gemini에 모두 꽂기 위해 본체(파이썬)는 공유하고 에이전트별 컨텍스트 파일만 분리한 전략, 그리고 어디서든 python run.py 종목 한 줄로 도는 단일 진입점 설계는 "도구를 여러 환경에 배포"할 때 바로 쓸 수 있는 패턴이다. run.py는 repo-root 레이아웃과 Hermes skill-dir 레이아웃을 자동 탐지하는 등, 이식성을 위한 디테일이 많다.

실습: 작은 CLI 도구 하나를 만들고, Claude Code용 CLAUDE.md와 Codex용 AGENTS.md를 각각 써서 "같은 도구, 다른 에이전트 지침"을 분리해 보라.

7시스템 / 환경 요구사항

설치는 가볍지만, '판단 책임'이 가장 중요한 전제다.

항목요구사항
런타임Python 3.10+ · pip install -r requirements.txt + playwright install chromium.
에이전트(권장)Claude Code / Codex / Cursor / Gemini CLI 중 하나. 또는 순수 CLI로 python run.py.
네트워크인터넷 필수(데이터·웹검색). 데이터 소스가 무료라 API 키는 불필요.
API 키전부 선택. --ai 요약 시 OpenAI 호환 키, 일부 보강 소스에 키(없어도 동작).
설치(Claude Code)/plugin marketplace add wbh604/UZI-Skill/plugin install stock-deep-analyzer@uzi-skill.
분석 시간lite 30~60초 · medium 2~4분 · 풀(66인+모델) 5~8분.
원격 열람(선택)--remote → Cloudflare Tunnel로 공개 링크 생성.
판단 책임(필수)도구의 점수·시그널은 참고 자료일 뿐, 모든 투자 결정과 책임은 본인. 이것이 가장 중요한 "요구사항"이다.
반드시 읽을 것 · 투자 조언 아님 (재확인)
"66명이 매수라 했으니 사도 되겠지"는 위험한 오독이다

이 도구는 과거·공개 데이터에 규칙·페르소나를 적용한 시뮬레이션을 보여 줄 뿐이다. ① 페르소나는 실존 인물의 공개 철학 모사이지 본인의 실제 의견이 아니고, ② 무료 데이터 소스는 시차·결측·오류가 있을 수 있으며, ③ 어떤 점수도 미래 수익률과 인과관계가 없다. 특히 trap-detector가 "안전(🟢)"이라 해도 그것이 매수 권유가 아니며, "위험(🔴)"이라고 반드시 사기라는 보장도 아니다. 이 문서·도구는 "투자 판단 로직을 코드로 설계하는 법"을 배우는 학습 자료이며, 특정 종목의 매수·매도 권유가 아니다. 투자 손익의 책임은 전적으로 본인에게 있다.

8직접 해볼 수 있는 실습 과제

난이도별 5단계 — 모두 학습·코드 이해 목적으로. 실제 투자 판단은 별개다.

과제 1 난이도 ★☆☆☆☆

페르소나 YAML 한 개 정독 + 한 명 추가

personas/에서 서로 상극인 둘(예: buffett.yaml vs zhao_lg.yaml)을 비교해 philosophy·key_metrics·avoids·voice 스키마를 익힌다. 그다음 당신이 아는 투자자/투자 스타일 하나를 같은 스키마로 새 YAML로 작성한다. 점수가 아니라 "철학을 구조화하는 법"을 익히는 게 목적.

과제 2 난이도 ★★☆☆☆

규칙엔진 채점 흐름 추적

investor_criteria.pyBUFFETT_RULESinvestor_evaluator.py를 읽고, "통과 규칙 가중치 합 ÷ 전체 가중치 합 = 점수"가 어떻게 계산되는지 종이에 손으로 따라 계산해 본다. 임의의 feature dict를 만들어 버핏 점수를 직접 산출.

과제 3 난이도 ★★★☆☆

나만의 미니 규칙엔진 만들기

@dataclass Rule(가중치 + check 람다) 구조를 흉내 내, 임의 도메인(예: 노트북 구매 추천)에서 "심사위원 2~3명"을 가중 규칙으로 정의하고 후보들을 0~100점으로 채점하는 60줄 엔진을 만든다. UZI의 가중 통과율 공식을 그대로 차용.

과제 4 난이도 ★★★★☆

하드 게이트 + 자가검증 붙이기

과제 3의 엔진이 내는 "추천 리포트"에 self_review.py식 자동 점검을 5개 추가한다(예: 금지어 검출, 점수 합 검증, 출처 누락 검출). 통과 못 하면 리포트를 반려하도록 만들어, "프롬프트 부탁 vs 게이트 강제"의 차이를 체감한다.

과제 5 난이도 ★★★★★

스킬로 패키징해 에이전트에 꽂기

과제 3~4의 엔진을 SKILL.md(YAML 프런트매터 description + 워크플로) + 스크립트로 묶어 Claude Code 스킬로 만들고, 트리거 문구로 자동 발동되게 한다. UZI의 CLAUDE.md 트리거 표·deep-analysis/SKILL.md의 게이트 구조를 본떠, "도메인 도구를 에이전트 스킬화"하는 전 과정을 경험한다.

9관련 기술 심화 학습 로드맵

6주 코스 — 규칙엔진 기초부터 에이전트 스킬 설계까지.

주차주제실습 · 참고
1주차데이터 주도 설계 — 로직을 규칙 데이터로 외부화investor_criteria.pyRule 구조 · @dataclass + 람다 패턴
2주차특징 추상화 계층 — raw 데이터와 규칙 분리stock_features.py 분석 · 시장 독립 feature 설계
3주차규칙엔진 + LLM 보정 하이브리드investor_evaluator.py + task3-agent-evaluation.md
4주차에이전트 워크플로 게이트 설계deep-analysis/SKILL.md 하드 게이트 · self_review.py
5주차밸류에이션 방법론(교육용) — DCF·Comps·LBO 원리fin_models.py · Anthropic financial-services-plugins 비교
6주차스킬 패키징 & 멀티 에이전트 이식plugin.json·CLAUDE.md/AGENTS.md · 직접 스킬 발행

※ 5주차 밸류에이션은 방법론의 작동 원리를 이해하는 학습이며, 실제 투자 결정 도구로 쓰라는 의미가 아니다.

10핵심 키워드 사전

본문·소스에 나온 용어 빠른 참조.

용어의미
UZI / 游资(youzi)중국 증시 단기 투기 큰손 자금·세력. 프로젝트 이름의 어원이자 평가단 F조의 정체성.
에이전트 스킬에이전트가 읽고 행동 지침으로 삼는 구조화 지시서(SKILL.md + 스크립트 + 참조).
규칙엔진(Rule Engine)거장별 가중 규칙을 데이터로 모아 입력을 점수화. investor_criteria.py.
Rule (가중 규칙)rule_id·이름·가중치(1~5)·check 람다·통과/실패 메시지로 된 판단 단위.
페르소나 YAML거장의 철학·핵심지표·기피·말투·대표 포지션. LLM role-play 입력.
feature (특징)raw 데이터를 표준화한 약 60개 지표(파일 docstring 기준). 규칙은 raw가 아닌 feature만 참조.
하드 게이트위반 시 진행 중단되는 강제 규칙(순서·출처·공허표현·충돌노출 등).
self_review리포트 조립 후 자동 실행되는 16개 품질 점검(v2.9.1 기준).
Task 1~5 파이프라인수집→밸류에이션→점수화→평가단→종합→리포트의 6단계 순차 워크플로.
DCF / Comps / LBO현금흐름할인·유사기업비교·차입매수 등 기관급 밸류에이션 방법(교육용).
龙虎榜(용호방)중국 거래소가 공개하는 대량 거래 좌석 목록. lhb-analyzer가 분석.
杀猪盘(살돼지반)SNS·단톡 유인 후 빠지는 작전·사기 수법. trap-detector가 8신호로 스캔.
akshare / yfinanceA주·홍콩주 / 미국주의 무료·키불필요 데이터 라이브러리.
멀티 에이전트 이식본체 공유 + CLAUDE.md/AGENTS.md/CODEX.md/GEMINI.md로 여러 CLI 지원.
UZI_LEGACY / UZI_SCHOOL구파이프라인 회귀 / 단일 유파 시각 잠금 등 동작 모드 환경변수.

11참고 링크