virtual-insanity
← 리포트 목록

fundamental/technical analyst knowledge source mapping

2026-04-16 analyst [analyst, knowledge-context, source-mapping, fundamental, technical, macro-boundary]

결론

해리 피드백 반영 완료. 이제 wrapper/context/prompt 레이어에서 macro / fundamental / technical 역할 경계가 더 선명해졌다.

  • macro는 CPI/PCE/GDP/고용/금리/FX/중앙은행 정책/유가/원자재 실물 지표와 그 해석만 담당.
  • z-score, MA 대비, 이동평균, 편차, 과열/과매도, 통계적 이상치, 표준편차, 변동성 밴드, RSI, 볼린저, 브레이크아웃은 macro 금지 → technical 전담.
  • fundamental은 실적/밸류/마진/경쟁력/해자/수주/어닝콜만 담당하고 차트·모멘텀·RSI·z-score를 결론 근거로 쓰지 않게 했다.
  • technical은 차트/수급/모멘텀/변동성/기술통계만 담당하고 PER/PBR/DCF/어닝을 매매 근거로 쓰지 않게 했다.

원본 analyst 실행 본체는 건드리지 않았고, s:4가 쓰는 knowledge_context_builder.py와 analyst prompt만 수정했다.

수정 파일

  • ~/.hermes/workspace/scripts/knowledge_context_builder.py
  • ~/.hermes/workspace/scripts/analyst_macro_prompt.md
  • ~/.hermes/workspace/scripts/analyst_fundamental_prompt.md
  • ~/.hermes/workspace/scripts/analyst_technical_prompt.md

백업:

  • ~/.hermes/workspace/scripts/knowledge_context_builder.py.bak-source-mapping-20260416T085408
  • ~/.hermes/workspace/scripts/analyst_macro_prompt.md.bak-source-mapping-20260416T085408
  • ~/.hermes/workspace/scripts/analyst_fundamental_prompt.md.bak-source-mapping-20260416T085408
  • ~/.hermes/workspace/scripts/analyst_technical_prompt.md.bak-source-mapping-20260416T085408

s:4 knowledge_context_builder 호환 매핑

knowledge_context_builder.pySourceSpec 기반 소스가 추가/정리됐다. 현재 인식 소스 수:

key count pattern analyst 주용도
telegram 1308 *.md macro 해석, 일부 trader/수주 힌트
macro_bond_telegram 10 *.md macro 보조
newsletter 40 2604*_*.md fundamental 우선, macro/pm 보조
fundamental_research 2256 *.md fundamental 기업·산업 리서치
blog 128 *ranto28*.md fundamental/pm 보조
twitter 3 *twitter*.md technical/fintwit
technical_events 17 *.json technical 핵심
nepcon 4 *nepcon*.md fundamental 리서치 보조
credit 59 *.md fundamental credit, macro 보조

핵심 변경:

ANALYST_SOURCE_LIMITS = {
  "macro": {
    "telegram": 4, "macro_bond_telegram": 3, "newsletter": 2,
    "blog": 2, "credit": 1,
    "twitter": 0, "nepcon": 0, "fundamental_research": 0, "technical_events": 0
  },
  "fundamental": {
    "newsletter": 4, "credit": 3, "fundamental_research": 4,
    "nepcon": 2, "telegram": 1, "blog": 1,
    "twitter": 0, "technical_events": 0
  },
  "technical": {
    "technical_events": 4, "twitter": 4, "telegram": 2,
    "newsletter": 0, "blog": 0, "credit": 0, "fundamental_research": 0
  }
}

macro에는 technical_eventstwitter를 0으로 막았다. technical에는 technical_events를 최우선으로 올렸다. fundamental에는 newsletter/credit/fundamental_research를 우선 배정했다.

fundamental analyst 소스 매핑

소스 경로 최신 N 추출 명령 사용 방식 금지
Gmail 뉴스레터: AppEconomy ~/knowledge-agent/100 수신함/121 뉴스레터/*AppEconomy* ls -lt ~/knowledge-agent/100\ 수신함/121\ 뉴스레터/*AppEconomy* | head -5 실적/비즈니스 모델/어닝 비주얼 차트·모멘텀 해석
Gmail 뉴스레터: QualityCompounding .../*CompoundingQuality* ls -lt ~/knowledge-agent/100\ 수신함/121\ 뉴스레터/*CompoundingQuality* | head -5 퀄리티/해자/밸류에이션/장기 복리 가격 z-score
Gmail 뉴스레터: BondEconomics .../*BondEconomics* ls -lt ~/knowledge-agent/100\ 수신함/121\ 뉴스레터/*BondEconomics* | head -5 금리/크레딧이 기업 펀더멘털에 주는 비용·수요 영향 macro 레짐 결론 대체
크레딧 메일 ~/knowledge-agent/100 수신함/119 크레딧메일/*.md ls -lt ~/knowledge-agent/100\ 수신함/119\ 크레딧메일/*.md | head -5 회사채/CP/입찰/수요예측 → 기업 자금조달 여건 차트 시그널화
기업·산업 리서치 ~/knowledge-agent/100 수신함/116 croned_data/반도체IT, ~/knowledge-agent/200 아토믹/220 기업 find ... -iname '*.md' | rg '실적|어닝|매출|EPS|가이던스' 실적·수주·마진·경쟁력 근거 RSI/MA/브레이크아웃

실측 최신 예시:

  • AppEconomy: 260410_AppEconomyInsights_Anthropic-Leapfrogs-OpenAI.md, 260411_AppEconomyInsights_PRO-This-Week-in-Visuals.md
  • QualityCompounding: 260415_CompoundingQuality_A-Strategy-For-Challenging-Times.md, 260409_CompoundingQuality_Is-LOréal-an-interesting-stock.md
  • BondEconomics: 260410_BondEconomics_Public-Bank-Lending.md, 260401_BondEconomics_Postal-Savings-Banks.md, 260408_BondEconomics_Ceasefire.md
  • 크레딧: 260415_황대진_전달-금일-416-목-입찰-및-CP-발행내역-DS증권-황대진.md, 260415_황대진_전달-일일-415-수-채권시장-마감정리-DS증권-황대진.md
  • 기업 리서치: 260318_skitteam.md, 260315_ITforYouFromHana.md, 260312_분석_케이에스피_실적브레이크다운.md, 260319 Kingsoft Cloud (KC) 정밀 분석.md

technical analyst 소스 매핑

소스 경로 최신 N 추출 명령 사용 방식 금지
트위터/fintwit ~/knowledge*/**/*twitter*.md find ~/knowledge-agent ~/knowledge -iname '*twitter*.md' | head trader 관점, chart/flow 힌트 PER/PBR/DCF 근거화
차트 분석 글 ~/knowledge-agent/500 시그널/530 테크니컬, ~/knowledge-agent/400 판단/450 에이전트리포트 find ~/knowledge-agent -iname '*.md' | rg '차트|RSI|볼린저|브레이크아웃|이동평균|모멘텀' 기존 기술 리포트/차트 패턴 펀더멘털 결론 대체
기술적 이벤트 JSON ~/.hermes/workspace/memory/technical-signals/*.json ls -lt ~/.hermes/workspace/memory/technical-signals/*.json | head -5 RSI/MACD/BB/MA/ADX/월간 range macro 정책 해석
가격 이력 ~/.hermes/workspace/memory/price-history/*.json ls -lt ~/.hermes/workspace/memory/price-history/*.json | head -5 MA 대비, volume spike, 52주 신고가 계산 입력 밸류 판단
전략 흐름 ~/.hermes/workspace/memory/strategy-flow/*.json ls -lt ~/.hermes/workspace/memory/strategy-flow/*.json | head -8 거래량/투자자 주체/CFTC 흐름 어닝 근거화

실측 최신 예시:

  • Twitter: 260315_x_twitter.md, 260315_x_twitter_httpsxcomgarrettbullishstatus2032.md, 260306_x_twitter_httpsxcomMrMarket89status20297572.md
  • Technical events: technical-signals/latest.json, technical-signals/2026-04-15.json, price-history/SPY.json, strategy-flow/trading_volume_history.json
  • Chart/technical notes: 260416_technical_시그널.md, 260416_pm_크로스검증.md, 260415_technical_시그널.md 계열

역할 분리 룰

macro 금지

macro prompt와 context wrapper에 반영:

  • 금지어: z-score, MA 대비, 이동평균, 편차, 과열/과매도, 통계적 이상치, 표준편차, 변동성 밴드, RSI, 볼린저, 브레이크아웃, 모멘텀, 차트 패턴.
  • macro 담당: CPI/PCE/PPI, GDP/소비/투자, 고용, 금리/금리차, FX, 중앙은행 정책, 유가·원자재 실물 지표, 재정/무역/공급망, 그리고 이들의 원인·정책 함의.
  • context builder에서 macro는 technical_events=0, twitter=0으로 차단했고, macro-forbidden technical terms가 있는 항목은 점수에서 강하게 감점한다.

fundamental 금지

fundamental prompt에 반영:

  • 차트, z-score, MA 대비, 이동평균, 편차, 과열/과매도, 표준편차, 변동성 밴드, RSI, 볼린저 밴드, 브레이크아웃, 모멘텀을 결론 근거로 쓰지 않는다.
  • 기술 지표가 context에 있으면 technical_validation_needed로 넘긴다.
  • 기존 prompt의 ETF z-score/RSI 기반 섹터 판단 문구를 실적·마진·수주·공시·어닝콜 기준으로 바꿨다.

technical 포함

technical prompt와 context wrapper에 반영:

  • 담당: z-score, MA 대비, 편차, 이동평균, 변동성, 모멘텀, 차트 패턴, RSI, 볼린저 밴드, 브레이크아웃, 거래량/Volume spike, 52주 신고가.
  • 금지: PER/PBR/DCF/어닝 서프라이즈/마진/경쟁력/해자를 매수·매도 근거로 쓰지 않는다.
  • macro의 CPI/PCE/GDP/고용/정책 해석은 배경 조건으로만 사용한다.

짜치는 표현 블랙리스트 설계

context header에 공통 가드로 넣었다.

금지 표현:

  • 관심 필요
  • 모니터링 필요
  • 수혜 기대
  • 리스크 있음
  • 좋아 보임
  • 단기적으로 긍정적
  • 중장기적으로 유망

허용 조건:

  • 반드시 수치 + 원인 + 검증 질문이 붙어야 한다.
  • 예: “관심 필요” 금지. 대신 “FY26 Q3 매출 +201%, DustPhotonics 인수 후 SerDes+광모듈 통합 시너지 확인 필요”처럼 쓴다.

생성한 context 샘플

fundamental

파일:

  • ~/.hermes/logs/context_sample_fundamental.md

검증:

10363 /Users/ron/.hermes/logs/context_sample_fundamental.md
역할 경계: 실적/밸류에이션/마진/경쟁력/해자/수주/어닝콜만 담당한다. 차트·모멘텀·z-score·RSI·이동평균은 사용 금지.

주입된 핵심 섹션:

  • 최근 뉴스레터: AppEconomy, CompoundingQuality 중심.
  • 최근 기업·산업 리서치: SK IT팀, 하나 IT, 케이에스피 실적 breakdown, Kingsoft Cloud.
  • 최근 채권/크레딧: 황대진 DS증권 메일.

technical

파일:

  • ~/.hermes/logs/context_sample_technical.md

검증:

4918 /Users/ron/.hermes/logs/context_sample_technical.md
역할 경계: z-score, MA 대비, 편차, 이동평균, 변동성, 모멘텀, 차트 패턴, RSI, 볼린저 밴드, 브레이크아웃만 담당한다.

주입된 핵심 섹션:

  • 최근 트윗/X: 260315_x_twitter.md 등.
  • 최근 기술적 이벤트/가격 데이터: technical-signals/latest.json, 2026-04-15.json, price-history/SPY.json, strategy-flow/*.json.

검증 커맨드

python3 -m py_compile ~/.hermes/workspace/scripts/knowledge_context_builder.py
python3 ~/.hermes/workspace/scripts/knowledge_context_builder.py --list-sources
python3 ~/.hermes/workspace/scripts/knowledge_context_builder.py --analyst fundamental --hours 720 --max-chars 6500 --output ~/.hermes/logs/context_sample_fundamental.md
python3 ~/.hermes/workspace/scripts/knowledge_context_builder.py --analyst technical --hours 720 --max-chars 5000 --output ~/.hermes/logs/context_sample_technical.md
rg -n "z-score|MA 대비|이동평균|편차|과열/과매도|통계적 이상치|표준편차|변동성 밴드|테크니컬 영역|매크로 관장|펀더멘털 ≠ 테크니컬|테크니컬 전담 영역|짜치는 표현" ~/.hermes/workspace/scripts/analyst_*_prompt.md ~/.hermes/workspace/scripts/knowledge_context_builder.py

검증 결과:

PY_COMPILE_OK
context_sample_fundamental.md 생성: 10363 bytes
context_sample_technical.md 생성: 4918 bytes

남은 리스크

  • technical용 Twitter corpus가 현재 로컬에서 풍부하지 않다. twitter SourceSpec은 잡아뒀지만 실제 최신 fintwit trader 글은 3~8개 수준이라, collector 쪽 보강이 필요하다.
  • 일부 기존 뉴스레터 요약 품질이 낮다. 오늘 gmail_newsletter_collector.py 프롬프트를 고쳤지만 기존 저장분은 재생성하지 않았다.
  • fundamental sample에 Telegram 수주/계약 힌트가 1건 들어간다. 이는 HD현대마린엔진 수주 같은 펀더멘털 사실일 때만 허용하고, 가격/차트성 Telegram은 technical로 보내는 방향이다.
  • macro prompt에는 금지어를 “금지어 목록”으로 표시하기 위해 단어 자체가 등장한다. 실제 출력에서는 금지하도록 명시했다.

자체평가

  • 정확성: 4.6/5 — 해리의 macro/technical 경계 룰을 prompt와 wrapper 양쪽에 반영했고, fundamental/technical 소스 매핑을 실제 경로 기준으로 만들었다.
  • 완성도: 4.5/5 — 샘플 context 2개 생성 완료. 다만 technical Twitter 원천 자체가 적은 것은 collector 보강 과제로 남는다.
  • 검증: 4.7/5 — py_compile, source listing, sample generation, grep verification 수행.
  • 최소 변경: 4.5/5 — analyst 본체는 수정하지 않고 prompt/context wrapper만 변경했다.

종합: 4.6/5