콘텐츠로 이동

스킬별 데이터 연결 가이드

목적: 각 시간대별 /rs 스킬에서 어떤 데이터를 어떻게 참조하는지 정의. 연결 함수: claude_trader/stock_lookup.pylookup(), lookup_brief(), screen()


공통 규칙

  1. 종목이 언급되면 반드시 lookup_brief() 호출 — DNA/캐릭터/테마를 함께 보여줌
  2. 스크리닝 요청 시 screen() 사용 — 조건 조합 필터
  3. 숫자는 API/fdr에서 가져옴 — 기억으로 쓰지 않음
  4. 프로파일은 all_profiles.json 참조 — 주말 갱신
  5. 아래 API 레시피를 정확히 따른다 — 파라미터/키 이름을 추측하지 않는다

API 실행 레시피 (VERIFIED — 추측 금지)

키움 REST API (kiwoom_rest_api.py)

from kiwoom_rest_api import KiwoomRestAPI
api = KiwoomRestAPI(is_mock=True)  # 모의투자
# api = KiwoomRestAPI(is_mock=False)  # 실투자

상승률/하락률 상위

# Signature: get_top_change_rate(market='000', sort_type='1', mang_stk_incls='4', stex_tp='1') -> dict
# sort_type: '1'=상승률, '2'=하락률
# !! count 파라미터 없음. 전체 200개 반환 !!
result = api.get_top_change_rate(market='000', sort_type='1')

# Response: dict, key='pred_pre_flu_rt_upper', value=list[dict]
items = result['pred_pre_flu_rt_upper']  # 200개
# 각 item keys: stk_cls, stk_cd, stk_nm, cur_prc, pred_pre_sig, pred_pre, flu_rt, sel_req, buy_req, now_trde_qty, cntr_str, cnt
# cur_prc: +/- prefix 있음 (예: '+15360', '-202500')
# flu_rt: 등락률 문자열 (예: '+29.84', '-1.70')
# now_trde_qty: 당일 거래량
# cntr_str: 체결강도

거래대금 상위

# Signature: get_top_volume_today(market='000', sort_tp='3', mang_stk_incls='4', trde_prica_tp='100', pric_tp='0', stex_tp='1', cont_yn='N', next_key='') -> tuple
# sort_tp: '3'=거래대금순
# !! count 파라미터 없음 !!
data, next_key = api.get_top_volume_today(market='000', sort_tp='3')

# Response: tuple(dict, str)
# dict key='tdy_trde_qty_upper', value=list[dict] (100개)
items = data['tdy_trde_qty_upper']
# 각 item keys: stk_cd, stk_nm, cur_prc, pred_pre_sig, pred_pre, flu_rt, trde_qty, pred_rt, trde_tern_rt, trde_amt, opmr_trde_qty, ...
# trde_amt: 거래대금 (백만원)
# trde_qty: 거래량
# cur_prc, flu_rt: +/- prefix

개별 종목 투자자별 매매

# Signature: get_investor_trading(stock_code: str, base_date: str = None) -> dict
# !! market 파라미터 없음. 종목코드 기반 !!
result = api.get_investor_trading('005930')

# Response: dict, key='stk_invsr_orgn', value=list[dict] (100일)
items = result['stk_invsr_orgn']
# 각 item keys: dt, cur_prc, pre_sig, pred_pre, flu_rt, acc_trde_qty, acc_trde_prica,
#   ind_invsr(개인), frgnr_invsr(외인), orgn(기관), fnnc_invt(금투), insrnc(보험),
#   invtrt(투신), etc_fnnc(기타금융), bank(은행), penfnd_etc(연기금), samo_fund(사모),
#   natn(국가), etc_corp(기타법인), natfor(외국인합계)

개별 종목 현재가/예상체결가/호가

# 현재가
price = api.get_current_price('005930')  # -> int

# 예상체결가 (08:30~09:00 동시호가)
exp = api.get_expected_price('005930')  # -> int (장 마감 후 0)

# 호가
hoga = api.get_hoga('005930')  # -> dict (flat)
# keys: tot_buy_req, tot_sel_req, buy_fpr_req, sel_fpr_req 등

# 기본정보
info = api.get_stock_basic_info('005930')  # -> dict

키움 숫자 파싱 주의

# cur_prc: '+206000' or '-202500' → int(str.lstrip('+-'))
# flu_rt: '+29.84' or '-1.70' → float
# 이중부호: '--282' = -282, '++36568' = +36568

네이버 주식 API (claude_trader/naver_stock.py)

from claude_trader.naver_stock import fetch_stock_basic, fetch_stock_news, fetch_stock_investors, fetch_stock_disclosure

기본 시세

# Signature: fetch_stock_basic(code: str) -> Dict
r = fetch_stock_basic('005930')
# Response keys: code, name, price(float), change(float), change_pct(float),
#   market_cap(str), per(str), eps(str), pbr(str), dividend_yield(str),
#   industry(str), stock_exchange(str)
# !! 'now' 아님, 'price' 임 !!

뉴스

# Signature: fetch_stock_news(code: str, count: int = 5) -> List[Dict]
news = fetch_stock_news('005930', count=3)
# 각 item keys: date(str), title(str), source(str), body(str)

투자자별 매매 (일별)

# Signature: fetch_stock_investors(code: str, days: int = 5) -> List[Dict]
inv = fetch_stock_investors('005930', days=3)
# 각 item keys: date, close, change_pct, volume, inst(기관), foreign(외인),
#   foreign_total(외인보유), foreign_ratio(외인비율)

공시

# Signature: fetch_stock_disclosure(code: str, count: int = 5) -> List[Dict]
disc = fetch_stock_disclosure('005930', count=3)

글로벌 자산 (yfinance)

# scripts/fetch_global_assets.py 실행
# 또는 직접:
import yfinance as yf
tickers = {
    'S&P500':'^GSPC','NASDAQ':'^IXIC','DOW':'^DJI','SOX':'^SOX',
    'WTI':'CL=F','BRENT':'BZ=F','GOLD':'GC=F','BTC':'BTC-USD',
    'USD_KRW':'KRW=X','US10Y':'^TNX','VIX':'^VIX','KOSPI':'^KS11','NIKKEI':'^N225'
}
t = yf.Ticker(ticker)
hist = t.history(period='5d')
# hist['Close'].iloc[-1] = 최근 종가

해석 규칙 (CRITICAL)

  1. 상한가/급등 종목 "왜?" 연결 순서:
  2. POLICY_TRACKER 교차 확인 (관세/정책/규제 해당 여부)
  3. ISSUE_LOG ACTIVE 이슈와 연결
  4. 네이버 뉴스 확인 (뉴스 헤드라인은 참고일 뿐, 본체 재료가 아닐 수 있음)
  5. 섹터/테마 내 동반 움직임 확인
  6. !! 뉴스 헤드라인을 재료로 단정하지 않는다 !!

  7. POLICY_TRACKER 교차 예시:

  8. 알미늄 급등 → Section 232 철강/알미늄 25% (4/6 발효, 파생상품 확대) = 본체
  9. 뉴스가 "이란 긴장으로 알미늄 급등" → 이건 촉매이지 본체가 아님
  10. 반도체 급등 → Section 232 반도체 Phase 2 (4/14 기한) 확인

지식 소스 접근 레시피 (에이전트별 필수 참조)

1. KB 방법론/패턴 (kb-lookup 스킬 또는 직접 Read)

# 방법론 (20개): 대장주, 종가매매, 돌파, VCP, 테마 수명 등
Read('knowledge_base/methods/leader_selection.md')    # 대장주 선정 기준
Read('knowledge_base/methods/closing_trade.md')       # 종가매매 체크리스트
Read('knowledge_base/methods/theme_lifecycle.md')     # 테마 수명주기
Read('knowledge_base/methods/super_stock_detection.md') # 대시세주 판별
Read('knowledge_base/methods/vcp_pattern.md')         # VCP 패턴
Read('knowledge_base/methods/momentum_trade.md')      # 모멘텀 트레이딩
Read('knowledge_base/methods/pullback_trade.md')      # 눌림목 매매
Read('knowledge_base/methods/limit_up_trade.md')      # 상한가 매매
Read('knowledge_base/methods/breakout_trade.md')      # 돌파 매매
Read('knowledge_base/methods/position_sizing.md')     # 포지션 사이징

# 패턴 (7개): 캔들, 차트, MA, 거래량, 박스, 흡수, 시간
Read('knowledge_base/patterns/volume_patterns.md')     # 거래량 패턴
Read('knowledge_base/patterns/absorption_patterns.md') # 매물소화 패턴
Read('knowledge_base/patterns/box_breakout_structure.md') # 박스 돌파
Read('knowledge_base/patterns/chart_patterns.md')      # 차트 패턴

# 시장 구조 (5개): 매크로, 섹터, 수급, 뉴스, 테마
Read('knowledge_base/market/macro_flow.md')       # 매크로 자금 흐름
Read('knowledge_base/market/sector_rotation.md')  # 섹터 로테이션
Read('knowledge_base/market/supply_demand.md')    # 수급 해석
Read('knowledge_base/market/news_flow.md')        # 뉴스 재료 등급 (S/A/B/C/D)
Read('knowledge_base/market/market_structure.md') # 시장 구조

# 평가 프레임워크
Read('knowledge_base/TRADE_EVALUATION_FRAMEWORK.md')  # WHY/WHERE/WHO/PEERS/HISTORY 5질문

에이전트별 필수 KB: | 에이전트 | 필수 Read | |---------|----------| | 차티스트 | patterns/*, methods/vcp_pattern, breakout_trade, pullback_trade | | 섹터 애널리스트 | market/sector_rotation, market/news_flow, methods/theme_lifecycle, leader_selection | | 매크로 이코노미스트 | market/macro_flow, market/market_structure | | 데이 트레이더 | methods/closing_trade, position_sizing, TRADE_EVALUATION_FRAMEWORK | | 펀더멘털 | methods/earnings_reaction | | 센티먼트 | market/supply_demand, market/news_flow | | 리서치 익스팬더 | methods/bull_bear_debate |

2. 정책/이슈/이벤트 (Read 도구)

# 정책 추적 — 각국 아젠다 파이프라인, 검색어 포함
Read('docs/trading_playbook/POLICY_TRACKER.md')
# 이슈 추적 — ACTIVE 이슈 타임라인
Read('docs/trading_playbook/ISSUE_LOG.md')
# 이벤트 일정
Read('docs/trading_playbook/EVENT_CALENDAR.md')
# 팀 역할/행동 지침
Read('docs/trading_playbook/TEAM_ROLES.md')
# 대장주 스코어링
Read('docs/trading_playbook/LEADER_SCORING.md')
# 추적 프로토콜
Read('docs/trading_playbook/TRACKING_PROTOCOL.md')

사용 시점: 모든 WHY 분석에서 POLICY_TRACKER → ISSUE_LOG 순서로 교차.

3. 전문가/투구루 (WebSearch)

# 전문가 발언 검색 — config/data_sources.yaml expert_sources 참조
# 국내: 조영무, 성상현, 이선엽, 박병창, 김한진, 유신익, 김명실, 박석중, 문홍철, 윤지호, 월가아재
# 해외: Cathie Wood, Nancy Pelosi, Howard Marks, Larry Fink, Ray Dalio, Warren Buffett,
#       Stanley Druckenmiller, Bill Ackman, Jensen Huang, Elon Musk, Jamie Dimon

# 사용법: WebSearch로 최신 발언/포지션 확인
WebSearch("{이름} 최근 발언 전망 2026")
WebSearch("{name} latest market outlook April 2026")

# 규칙:
# - 발언 직접 인용 금지. "이런 관점이 존재한다" 수준으로만 활용
# - 한 사람의 의견에 고정 금지 (Anti-Anchoring)
# - Bull/Bear 양쪽 전문가 의견 반드시 대조
# - 트레이딩 방법론 전문가(하승훈 등)의 방법론은 KB에 축적됨 → knowledge_base/sources/transcripts/

4. 종목 히스토리/프로필 (ats_main.json, S228)

import sys
sys.path.insert(0, 'c:/Users/eutha/Documents/ats_cpt')
import json

# v4 통합 프로필 — 782종목의 모든 것
with open('data/ats_main.json', 'r', encoding='utf-8') as f:
    v4 = json.load(f)
profile = v4['profiles'].get('005930', {})

# profile 구조:
# zones: [{high, low, break_rate, recovery_rate, avg_hold_days}, ...]  — 일봉 존
# box: {width_pct, box_high, box_low}  — 박스 패턴
# dna: {gap_fill_rate, limit_up_count, shake_ratio, recovery_days, consecutive_days}
# traits: ['zone_absorb', 'fast_recovery', 'limit_up_freq', ...]  — 캐릭터 태그
# supply: {foreign_5d, inst_5d, program_5d}  — 수급 요약
# events: [{date, type, change_pct, volume_ratio, description}, ...]  — 과거 이벤트 (상한가/급등/급락 등)
# themes: [{theme, confidence, source}, ...]  — 소속 테마
# tracking: {status, added_date, trigger, thesis}  — 추적 상태
# is_leader: bool  — 대장주 여부
# current_state: {level, trend, ma_align}  — 현재 기술적 상태
# theme_activity: [{date, theme, type}, ...]  — 테마별 활동 이력

# 날짜별 이벤트 인덱스 — "그날 무슨 일이 있었는지"
# S228: v4_events_index → ats_main.events_by_date
with open('data/ats_main.json', 'r', encoding='utf-8') as f:
    events_idx = json.load(f)
# events_idx['2026-04-08'] = [{code, name, type, change_pct}, ...]

# 테마별 종목 인덱스 — "이 테마에 어떤 종목이 있는지"
# S228: v4_theme_index 폐기. ats_main.valuechain 사용
with open('data/ats_main.json', 'r', encoding='utf-8') as f:
    theme_idx = json.load(f)
# theme_idx['광통신'] = ['010170', '115440', ...]

5. 시장 히스토리 (market_diary + daily_review)

# 시장 일지 — 매일 매크로+지수+테마+수급 기록
# data/market_diary/YYYYMMDD.json
# 최근 5일:
from claude_trader.market_diary import show_recent
show_recent(5)

# 일일 리뷰 — 매일 종합 분석+매매 후보
# data/daily_review/YYYYMMDD_*.json 또는 latest.json
from claude_trader.daily_reviewer import show_latest
show_latest()

# S228: theme_classifier + leader_watchlist 폐기.
# 대체: ats_main.valuechain segment + tracking_list
with open('data/ats_main.json', 'r', encoding='utf-8') as f:
    ats = json.load(f)
valuechain = ats['valuechain']  # branch/segment 분류 권위
# bottleneck segment 종목 = 대장주 후보
# PM 추적 종목: data/tracking/tracking_list.json

# 추적 종목 — PM이 관심 등록한 종목
with open('data/tracking/tracking_list.json', 'r', encoding='utf-8') as f:
    tracking = json.load(f)

# 섹터 강도 — 당일 테마별 등락률
# S228: sector_strength/latest 폐기. ats_main.valuechain + 실시간 FDR 시세 사용
sector = {}  # 폐기됨

6. KB 활용 원칙 — 해석 렌즈이지 체크리스트가 아니다

KB 방법론은 "이 조건이면 매수"가 아니라 "이런 특징이 보이면 이런 가능성이 있다"를 읽는 렌즈. OK/FAIL로 기계적 적용하지 않는다. 에이전트가 데이터를 보고 "이 상황에서 이 가능성이 얼마나 높은가"를 해석한다. 핵심 원칙: 목적이 방법론을 정하는 게 아니라, 데이터가 방법론을 결정한다.

예시 — 같은 KB 기준, 다른 해석:

KB(pullback_trade.md): "MA3 첫 눌림에서 지지가 나오면서 상승하는 경우가 많다"

종목A: MA3 근처 + 거래량 줄며 횡보 + 외인 매수 + 재료 살아있음
  → 차티스트: "매물소화 진행 가능성 높음"
  → 센티먼트: "외인 매수가 이 해석을 지지"
  → 매크로: "재료가 구조적이므로 조정 후 재상승 가능성"

종목B: MA3 근처 + 거래량 변동 없음 + 외인 매도 + 시장 동반 하락
  → 차티스트: "단순 시장 동반 하락이지 눌림목이 아님"
  → 센티먼트: "외인 이탈이 이 판단을 지지"
  → 결론: 같은 MA3 근처이지만 해석이 완전히 다름

screen() 함수의 역할: 에이전트가 봐야 할 종목 풀을 좁혀주는 필터. "이 종목이 눌림목이다"라는 판단이 아님. 에이전트의 역할: screen() 결과 종목을 실제로 보고, KB 렌즈를 통해 "이 상황에서 이 가능성이 있다"를 해석.

종목 심층 분석: 데이터 → 상태 읽기(해석) → 가능성 판단 (이 순서 강제)

Step 1: 5질문 데이터 수집 + 상태 읽기 (TRADE_EVALUATION_FRAMEWORK 강제)

종목당 반드시 5질문을 서술로 답한다. 숫자 나열이 아니라 상태를 읽는다.

[종목명] 심층 분석

1. WHY — 왜 움직이는가?
   a. 본체 재료: (POLICY_TRACKER Read → 해당 정책 항목. 없으면 직접 탐색)
   b. 촉매: (fetch_stock_news → 뉴스. 본체와 구분)
   c. 리스크 공시: (fetch_stock_disclosure → 계약해지/투자경고 등)
   → 본체가 구조적(정책/법률)이면 지속, 일회성(공시/이벤트)이면 단발

2. WHERE — 가격이 어디에 있는가?
   a. v4 zones: 현재가가 어느 존에 위치? break_rate/recovery_rate는?
   b. DNA: gap_fill_rate가 높으면 갭업 추격 위험. zone_absorb면 이탈해도 복귀
   c. 기준봉 위치: 월봉Mid/주봉Mid/일봉Mid 대비 ABOVE/BELOW
   → 같은 +15%라도 존 하단 돌파 vs 존 상단 과열은 판단이 다르다

3. HISTORY — 이 종목은 어떤 성격인가?
   a. v4 events: 과거 급등 후 패턴 (D+1 이어짐? 급조정? 반납?)
   b. v4 dna: 상한가 빈도, 흔들기 비율, 회복 속도, 연속 일수
   c. traits: zone_solid면 안정, limit_up_freq면 급등주, fast_recovery면 눌림 빠름
   → "이 종목이 +15% 간 다음날 보통 어떻게 되는가"

4. WHO — 누가 사고 있는가?
   a. fetch_stock_investors(days=5): 외인/기관 방향
   b. v4 supply: 프로그램 순매수 방향
   → 외인이 사면서 올라가는가 vs 개인만 사는가 → 지속성 전혀 다름

5. PEERS — 같은 영역 다른 종목은?
   a. v4_theme_index: 같은 테마 종목 3~5개
   b. 각각 fetch_stock_basic: 동반 상승 여부 (군 움직임)
   c. 누적 선행 + 방어력 + 거래대금으로 대장주 vs 편승주
   → 편승주를 대장주로 오판하면 안 됨 (태웅 -9.2% 복기)

Step 2: 상태 읽기 → 가능성 해석 (목적 사전 고정 금지)

5질문 답변을 종합해서, 이 종목의 현재 상태가 무엇을 말하고 있는지 해석한다. KB 방법론은 "이 조건이면 매수"가 아니라 "이런 특징이 보이면 이런 가능성이 있다"를 읽는 렌즈.

[해석 렌즈 — KB 경로 포함. 체크리스트가 아님.]

KB: closing_trade.md 
  → "거래대금 폭발 + 종가 고가마감 + 수급 유지가 동시에 관찰되면, 
     D+1 모멘텀 지속 가능성이 높은 상황일 수 있다"
  → 하지만 기관이 이탈하면서 올랐다면 개인 추격일 가능성도 있다

KB: breakout_trade.md
  → "박스 상단에서 거래대금 동반 돌파가 관찰되면, 
     새로운 가격 영역 진입 가능성이 있다"
  → 하지만 돌파 직후 거래량이 줄면 가짜돌파(fake breakout)일 수 있다

KB: pullback_trade.md
  → "큰 양봉 후 거래량 줄며 횡보 + 기준봉 Mid 위 유지가 관찰되면,
     매물소화가 진행 중이고 재상승 가능성이 있다"
  → 하지만 외인이 이탈 중이면 단순 관심 이탈일 수 있다

KB: super_stock_detection.md
  → "저점 꾸준히 높이며 거래량 줄고 구조적 재료가 살아있으면,
     누군가 조용히 모으고 있을 가능성이 있다"
  → 하지만 대형주에서 기관 매수는 리밸런싱일 수도 있다

각 가능성은 다른 에이전트의 해석과 교차하여 강화/약화된다.

Step 3: 에이전트 해석 교차 → 가능성 판단

[종목명] 상태 읽기

차티스트: "이 종목에서 [이런 특징]이 관찰된다. KB에 따르면 [이런 가능성]을 시사."
센티먼트: "수급 데이터가 차티스트의 해석을 [지지/반박]. 근거: [데이터]"
매크로: "재료 환경이 이 해석을 [지지/반박]. 근거: [POLICY_TRACKER 항목]"

교차 결과:
- 3명+ 일치 → 가능성 높음
- 차티스트 + 센티먼트 반대 → 신호 혼재, WAIT
- 매크로(재료 소멸) + 차티스트(에너지 소진) → 관망

최종: [GO] / [WAIT] / [PASS]
+ 진입 조건 (어떤 상황이 되면 가능성이 확정으로 바뀌는가)
+ 무효화 조건 (어떤 상황이 되면 이 해석이 틀린 것인가)
+ 이 판단이 틀릴 수 있는 경우 1가지

대장주 판별 (leader_selection.md 기준 — 독립 실행)

[종목명] 대장주 판별
1. 선행: 테마 초기부터 먼저 움직였는가? (ats_main.events_by_date → 첫 급등 날짜, S228)
2. 방어력: 조정 시 테마 내 가장 적게 빠졌는가? (fetch_stock_investors 5일 비교)
3. 거래대금 연속: 3일+ 거래대금 상위 유지? (data/daily_review 비교)
4. 군 움직임: 같은 테마 2+ 종목 동시 상승? (v4_theme_index 조회)
→ 3개+ 충족 = 대장주. 1~2개 = 편승주 [WARN 태웅복기]. 0개 = 테마 무관

supervisor 검증: Step 1~3 순서 위반 시 [PROCESS] 판정. 항목 빠지면 [SHALLOW]. 데이터 없이 추측이면 [GUESS].

7. 에이전트 프롬프트용 통합 블록

모든 에이전트 프롬프트의 [Data Access Rules]에 아래를 포함:

[Knowledge Sources -- 정확한 경로. 추측 금지.]
- KB 방법론: knowledge_base/methods/*.md (에이전트 역할에 맞는 파일 Read)
- KB 패턴: knowledge_base/patterns/*.md
- KB 시장: knowledge_base/market/*.md (news_flow.md = 뉴스 등급 기준)
- KB 평가: knowledge_base/TRADE_EVALUATION_FRAMEWORK.md (WHY/WHERE/WHO/PEERS/HISTORY)
- 정책: docs/trading_playbook/POLICY_TRACKER.md (교차 필수)
- 이슈: docs/trading_playbook/ISSUE_LOG.md (ACTIVE 이슈)
- 이벤트: docs/trading_playbook/EVENT_CALENDAR.md
- 통합 메타: data/ats_main.json (S228 단일 진실 소스, 788 종목 zones/dna/events/themes)
- 이벤트 인덱스 (S228): ats_main.events_by_date (날짜별)
- 밸류체인 (S228): ats_main.valuechain (branch/segment 분류, 종목 분류 권위)
- 대장주 (S228): ats_main.valuechain bottleneck segment + data/tracking/tracking_list.json
- 추적 종목: data/tracking/tracking_list.json
- 전문가: config/data_sources.yaml expert_sources (WebSearch로 최신 발언)
  - 국내: 조영무/성상현/이선엽/박병창/김한진/유신익/김명실/박석중/문홍철/윤지호/월가아재
  - 해외: Buffett/Dalio/Druckenmiller/Ackman/Jensen Huang/Cathie Wood/Pelosi
  - 규칙: 직접 인용 금지. Bull/Bear 양면 대조. Anti-Anchoring.


/rs_pre_market (08:50~09:30)

참조 데이터

데이터 용도 코드
POLICY_TRACKER.md 오늘 영향받을 정책 이벤트 Read
뉴스 웹검색 장전 재료 확인 WebSearch
all_profiles.json 관련 종목 DNA 조회 lookup_brief(code)

출력에 포함할 것

[오늘 핵심 이벤트]
- 4/14 Section 232 반도체 Phase 2 보고 (TRACKER)

[영향 종목 DNA]
삼성전자(005930) | 206,000 | 저점UP | 박스28.4% | zone_absorb/fast_recovery | 갭되메우기100%
→ 갭업 시 되메우기 잦으므로 시초가 추격 주의

[PM 모니터링 종목 상태]
SNT에너지(100840) | 62,200 | 저점UP | zone_solid | 6주 연속 저점 상승 중

/rs_morning_open (09:00~09:30)

참조 데이터

데이터 용도 코드
all_profiles.json 갭업/갭다운 종목 DNA lookup(code) → dna.gap_fill_rate
ka10001 실시간 시가/현재가 API

핵심 판단

# 갭업 종목이 나왔을 때
profile = lookup(code)
gap_fill = profile['profile']['dna']['gap_fill_rate']
if gap_fill > 0.7:
    "이 종목은 갭업 되메우기율 {gap_fill:.0%} — 시초가 추격 위험"
elif gap_fill < 0.3:
    "이 종목은 갭업 유지력 강함 — 시초가 진입 가능성"

/rs_mid_morning (09:30~10:30)

참조 데이터

데이터 용도
장중 상승률 TOP ka10027 등
all_profiles.json 급등 종목 캐릭터 확인

출력

[10:30 간단 브리핑]
오전 상승 TOP 3:
1. XXX(code) +8.2% — DNA: zone_absorb / 상한가빈출 / 회복1.8일
2. YYY(code) +6.1% — DNA: zone_break / 추격 위험

/rs_afternoon (14:00~15:30) — 종가매매 핵심

참조 데이터

데이터 용도 코드
all_profiles.json 후보 종목 DNA/존 lookup(code)
energy_theme_stocks.json 에너지 테마 매핑
energy_supply_analysis.json 수급 확인
POLICY_TRACKER.md 재료 지속성 판단

종가매매 후보 평가 시 필수 참조

[종목 프로파일]
대우건설(047040) | 24,300
- DNA: 상한가6회 / 흔들기1.69 / 회복1.8일 / 갭되메우기100% / 연속8일
- 캐릭터: 매물소화 복귀형 / 상한가빈출 / 빠른회복
- 가장 가까운 일봉 존: 19,205~20,425 (이탈률100%, 복귀율67%)
- 수급: 외인+854억(주간), 기관-1,501억 (엇갈림)
- 테마: 원전 — 복합재료(전쟁+대미투자+추경+에너지안보)
- 판단: 갭업 되메우기 100%이므로 갭업 진입 위험. 존 이탈해도 복귀하는 성격.

시나리오 카드에 DNA 포함

시나리오 A (매수): 종가 X원 이하에서 진입
  근거: 일봉 존 하단 Y원 + zone_absorb(이탈해도 복귀)
시나리오 B (관망): Z원 이상이면 추격 금지
  근거: 갭되메우기율 100% + 이번 주 이미 +40%

/rs_post_market (15:30~18:00)

참조 데이터

데이터 용도 코드
당일 상한가/거래대금 fdr or ka10030
all_profiles.json 상한가 종목 DNA 확인 lookup_brief(code)
ats_main.valuechain (S228) segment 활성도 갱신 PM 직접 편집

출력 형식

[오늘 상한가 종목]
1. XXX(code) +29.8% 거래대금4,850억
   DNA: zone_absorb / 상한가빈출 / 회복2.7일
   테마: LNG/해운
   판단: 상한가 빈출 종목이므로 D+1 추적 가치. 단, 갭되메우기 잦음

[거래대금 급증 (전일 대비 3배+)]
1. YYY(code) 거래대금 15,532억 (전일대비 5배)
   DNA: zone_break / 추격시 손절 필요

segment 활성도 갱신 (S228)

# 오늘 상한가/거래대금 TOP을 valuechain segment별로 분류
# → ats_main.events_by_date에 자동 추가 (v4_daily_update.py가 처리)
# → segment 활성도는 events_by_date 빈도로 추론

/rs_evening (20:00~06:00)

참조 데이터

데이터 용도
해외 지수/원자재 yfinance
POLICY_TRACKER.md 해외 정책 이벤트 확인

출력: 내일 장전에 필요한 정보 사전 정리


/rs_weekend (토/일)

실행 순서

1. all_profiles.json 배치 갱신 (chart_profiler_batch.py)
2. 주간 시장 데이터 수집 (weekly_market_data.py)
3. 주간 수급 TOP (ka10063)
4. 주간 리포트 작성 (WEEKLY_REPORT_TEMPLATE.md 기반)
5. /rr 실행 (TRACKER 순회 + 딥리서치)

/rr (주말 리서치)

참조 데이터

데이터 용도
POLICY_TRACKER.md 전 항목 순회
all_profiles.json 테마→종목 DNA 교차
energy_theme_stocks.json 에너지 종목 매핑
energy_supply_analysis.json 수급 교차
weekly_*.json 주간 상한가/거래대금

스크리닝 예시

from claude_trader.stock_lookup import screen

# "에너지 테마 + 저점UP + 박스좁은 + 거래대금 있는"
screen({'low_trend': 'UP', 'max_box': 20, 'min_amt': 200, 'energy_theme': True})

# "상한가빈출 + 빠른회복"
screen({'traits_include': ['limit_up_freq', 'fast_recovery'], 'min_amt': 100})

# "zone_solid (희귀, 14개뿐)"
screen({'traits_include': ['zone_solid']})

갱신 책임

데이터 갱신 주체 시점
all_profiles.json chart_profiler_batch.py 주말
ats_main.json (S228) v4_daily_update.py 매일 장후
energy_supply_analysis.json ka10045 스크립트 주말
weekly_*.json weekly_market_data.py 주말
POLICY_TRACKER.md /rr 주말