주도주 스코어링 시스템¶
v3 (현행, S250): 7축 종합 ���코어. RS + 차트 프로필(조정깊이/반등속도/지지/캔들) 통합. v2: RS-Ratio + RS-Momentum + RRG만. 단일 축(시장 대비 강도)으로 대장 판별 부족. v1 (DEPRECATED): 100점 체계(테마30+종목30+차트25+수급15). 자의적 가중치.
목적¶
주도 테마 안에서 대장주를 7가지 특성으로 종합 판별한다.
대장주 = 테마 내에서 거래대금 최고, 가장 빠르게 상승, 상승률 최고, 조정이 얕고, 반등이 빠르��, 지지가 명확하고, 캔들이 깨끗한 종목.
v3 — 7축 종합 스코어 (S250)¶
테마 수준 — 5축 Composite (S253 공식화)¶
테마/섹터의 강도와 방향성을 5축으로 종합 평가. 종목이 아닌 테마 자체를 판단한다.
| 축 | 측정 대상 | 가중치 | 데이터 소스 |
|---|---|---|---|
| 1. 거래대금 집중도 | 테마 거래대금 / 전체 시장 거래대금 | 20% | 키움 당일 |
| 2. 거래대금 가속도 | 5일 전 대비 거래대금 변화율 | 20% | 키움 5일 시계열 |
| 3. 수익률 RS | 테마 평균 수익률 / KOSPI 수익률 x 100 | 25% | theme_rs_history |
| 4. 하방 경직성 | 테마 내 종목 중 하락 종목 비율 역수 | 15% | 키움 당일 |
| 5. RS 트렌드 5d | 5일 전 RS 대비 현재 RS 변화 | 20% | theme_rs_history |
등급 판정: | 등급 | Composite 점수 | 의미 | |---|---|---| | LEADING | 80+ | 주도 테마 = 매매 1순위 영역 | | STRONG | 60-80 | 강세 테마 | | ACTIVE | 40-60 | 참여 테마 | | FADING | <40 | 둔화/소멸 테마 |
테마 상태표 규칙: - 대장주 컬럼 금지 — 종목 판단은 아래 7축의 영역 - 시계열 변화 내러티브 필수 (등급 전환, 가속/감속 방향)
기존 RS 지표 (참고): - JdK RS-Ratio: 20일 수익률 / KOSPI 수익률 x 100 - RS-Momentum: 5일 RS MA / 15일 RS MA x 100 - RRG: Leading/Weakening/Improving/Lagging
종목 수준 — 9축 누적 스코어 (S253)¶
대장주 = 하루 스냅샷이 아니라 테마 사이클 전체의 누적 성적표. 오늘 가장 올랐다고 대장이 아니다. 테마가 시작된 이후 누적 수익률이 가장 높고, 누적 거래대금이 가장 많고, 그 기간 조정이 얕고 반등이 빨랐던 종목이 대장주다. 매일 스팟으로 계산하면 대장주가 날마다 바뀐다. 누적이어야 안정적인 대장주 판정이 가능하다.
| 축 | 측정 대상 | 점수 기준 | 기간 | 데이터 소스 |
|---|---|---|---|---|
| 1. 누적 거래대금 | 테마 사이클 시작 이후 누적 거래대금 순위 | 1위=100, 2위=80, ... | 사이클 전체 | stock_rs_timeseries 일별 누적 |
| 2. 누적 수익률 | 테마 사이클 시작 이후 누적 등락률 순위 | 1위=100, 2위=80, ... | 사이클 전체 | stock_rs_timeseries |
| 3. RS 안정성 | RS-Ratio가 100 이상 유지된 일수 비율 | 80%+=100, 60%=80, 40%=60, else=30 | 최근 20일 | stock_rs_timeseries |
| 4. 조정깊이 | 최근 3개 decline phase 중 최소 하락폭 | <3%=100, <5%=80, <10%=60, <15%=40, else=20 | 시계열 | mtf_chart_profiler price_journey |
| 5. 반등속도 | 최근 decline phase 최단 일수 | <=2d=100, <=4d=80, <=7d=60, else=30 | 시계열 | mtf_chart_profiler price_journey |
| 6. 지지명확 | support_test 횟수 + 최근접 지지 거리 | base 50 + test당 15 + 3%이내 +20 | 시계열 | mtf_chart_profiler sr_levels |
| 7. 캔들품질 | 최근 10일 body_pct 평균 + upper_wick_pct 평균 | body>0.7 & wick<0.15=100, ... | 10일 평균 | mtf_chart_profiler candle_analysis |
| 8. 거래대금 가속도 | 최근 5일 거래대금 / 이전 5일 거래대금 | 2배+=100, 1.5배=80, 1배=60, 감소=30 | 5일 vs 5일 | 키움 시계열 |
| 9. 수급 품질 | 외인+기관 누적 순매수 일수 비율 | 양주체 80%+=100, 60%=80, 편주체=50, 개인주도=20 | 최근 10일 | 키움 투자자별 |
총점 = 9축 평균 (각 0~100, 균등). 차트 프로필 없으면 4~7축은 50(중립) 적용. 사이클 초기(데이터 5일 미만)는 누적 불충분으로 follower 처리.
누적이 바꾸는 것: 오늘 +20% 터진 종목도 누적 거래대금/수익률에서 사이클 초반이면 순위가 낮다. 반대로 2주간 꾸준히 +2~3%씩 올라온 종목은 스팟은 평범하지만 누적 1위가 된다. 대장주는 쌓아온 것으로 판정한다.
대장주 판정¶
테마 내에서 총점 1위 = LEADER (is_leader=true). 2위 이하는 leader_rank_in_theme 부여.
실행¶
# 1. RS 시계열 구축 (FDR, 일 1회)
powershell.exe -ExecutionPolicy Bypass -File scripts/run_py.ps1 scripts/theme_rs_history.py
# 2. 당일 대장주 판별 + 7축 스코어 (키움 API)
powershell.exe -ExecutionPolicy Bypass -File scripts/run_py.ps1 scripts/detect_theme_leaders.py
# 3. 차트 프로필 (4~7축 데이터, pool 종목 대상)
powershell.exe -ExecutionPolicy Bypass -File scripts/run_py.ps1 scripts/detect_theme_leaders.py --run-mtf
산출물:
- data/theme_leaders/YYYYMMDD.json — 전체 RS + 7축 스코어
- data/theme_leaders/stock_rs_timeseries.json — 종목별 RS 일별 시계열 + 테마 내 순위
- data/chart_profiles/mtf_pool.json — pool 종목 (스코어 순)
과열/리버설 경고 (v2 유지)¶
- 이전 10일 +40% 이상 → [WARN] 과열
- Spread < 0 → 공식 예측력 약함, 신규 진입 자제
해석 체크리스트¶
- [ ] Active 테마 확인 (Leading/Improving만)
- [ ] 7축 스코어 70+ = 강한 대장, 50~70 = 보통, <50 = 약함
- [ ] 프로필 있��� 종목(
*) 우선 — 7축 전부 보임 - [ ] 프로필 없는 종목은 RS 편향이므로
--run-mtf로 프로필 보충 후 재판단 - [ ] 과열 [WARN] 종목 추격 매수 금지
v1 (DEPRECATED, 참고용)¶
이 섹션은 참고용으로만 보존된다. 실매매 판단은 v2 공식을 따른다.
v1이 DEPRECATED된 이유: 100점 가중치가 자의적이며 Walk-Forward 검증 없이 구성됨. 단, v1의 일부 보정 요소(동일 사업영역 비교, 돌파 거래대금 비교, 기준봉 품질)는 v2와 병행 체크리스트로 활용 가능.
스코어링 항목 (100점 만점)¶
A. 테마/섹터 주도력 (30점)¶
종목이 속한 테마/섹터/업종의 강도. 개별 종목이 아무리 좋아도 테마가 죽으면 의미 없다.
| 항목 | 배점 | 기준 |
|---|---|---|
| 소속 테마 상태 | 10 | LEADING=10, EMERGING=7, FADING=2, DEAD=0 |
| 테마 등락률 | 5 | +5%+=5, +3%+=3, +1%+=1, 0이하=0 |
| 테마 3일 모멘텀 | 5 | 3일 연속 양수=5, 2일=3, 1일=1 |
| 업종 동반 강세 | 5 | 같은 업종 +3%+=5, +1%+=3, 0이하=0 |
| 테마 상승비율 | 5 | 80%+=5, 60%+=3, 40%+=1, 이하=0 |
B. 종목 강도 (30점)¶
종목 자체의 가격/거래 강도. 테마 안에서 가장 강한 종목이 대장주.
| 항목 | 배점 | 기준 |
|---|---|---|
| 당일 등락률 순위 | 10 | 테마 내 1위=10, 2위=7, 3위=5, 이하=3 |
| 거래대금 | 5 | 100억+=5, 50억+=3, 10억+=1 |
| 거래대금 증가율 | 5 | 평소 3배+=5, 2배+=3, 1.5배+=1 |
| 상한가/근접 | 5 | 상한가=5, +20%+=4, +10%+=2 |
| 연속 강세일수 | 5 | 3일+=5, 2일=3, 1일=1 |
C. 차트 구조 (25점)¶
기술적 분석 점수. 추세, 위치, 매물소화 상태.
| 항목 | 배점 | 기준 |
|---|---|---|
| 추세 (주봉) | 5 | bullish=5, mixed=2, bearish=0 |
| 52주 위치 | 5 | NEAR_HIGH/NEW_HIGH=5, RESISTANCE=3, MID=1 |
| 매물소화 신호 | 5 | absorption score 3+=5, 2=3, 1=1 |
| 이평선 배열 | 5 | 정배열=5, 혼합=2, 역배열=0 |
| 종가 위치 | 5 | 고가 마감(윗꼬리 없음)=5, 중간=3, 저가 마감=0 |
D. 수급 (15점)¶
외인/기관의 실제 돈 흐름. 스마트머니가 들어오고 있는가.
| 항목 | 배점 | 기준 |
|---|---|---|
| 외인 순매수 | 5 | 3일 연속 순매수=5, 당일만=3, 순매도=-2 |
| 기관 순매수 | 5 | 3일 연속 순매수=5, 당일만=3, 순매도=-2 |
| 프로그램매매 | 5 | 프로그램 순매수=5, 중립=2, 순매도=0 |
추가 판단 기준 (S199 보강)¶
동일 사업영역 비교 (필수)¶
스코어링 전에 같은 사업/제품을 하는 종목끼리 비교해야 한다:
- 같은 테마이지만 다른 제품이면 각자 독립 평가 (대장주 경쟁 관계 아님)
- 예: 후성(전해질 LiPF6) vs 엘앤에프(양극활물질) = 다른 영역
- 같은 제품이면 스코어로 대장주 판별
돌파 거래대금 비교 (종목강도 보정)¶
B항목(종목 강도) 판정 시, 단순 당일 거래량만이 아니라:
- 이전에 같은 가격대를 돌파했을 때의 거래대금과 비교
- 현재 < 이전의 50% → B항목 -5점 감점
- 이전 돌파 데이터 없으면 20일 평균 대비로 판단
기준봉 품질 (차트구조 보정)¶
C항목(차트 구조) 판정 시 기준봉 품질 반영:
- 최근 기준봉 위꼬리 13% 이하 + 종가위치 85%+ = CLEAN → +3점
- 위꼬리 30%+ = MESSY → -3점
- Vol ratio 10x+ (과도) → -3점
등급 분류¶
| 등급 | 점수 | 의미 | 행동 |
|---|---|---|---|
| S (대장주) | 80+ | 테마+종목+차트+수급 모두 강함 | 종가매수 1순위 |
| A (선도주) | 65~79 | 대부분 강하나 일부 약점 | 종가매수 2순위, 약점 확인 후 |
| B (주도주) | 50~64 | 테마는 강하나 종목/차트에 아쉬움 | 관찰, 조건 충족 시 진입 |
| C (후보) | 35~49 | 잠재력 있으나 아직 미확인 | 워치리스트만 |
| D (부적격) | 0~34 | 조건 미달 | 제외 |
리포트 출력 형식¶
=== 주도주 스코어 랭킹 ===
#1 [S] 삼성E&A (028050) -- 82점
테마: 플랜트/건설 (LEADING 3일, +12.6%)
A.테마주도력: 27/30 (LEADING + 업종 동반)
B.종목강도: 25/30 (테마 내 1위, 거래대금 179억, 2일 연속 +15%)
C.차트구조: 18/25 (bullish, NEAR_HIGH, absorption 2/4)
D.수급: 12/15 (외인+6,847, 기관+4,462)
약점: 2일 연속 +30% 누적 -> 단기 과열 가능
#2 [A] 대한광통신 (010170) -- 71점
...
스코어링 시점¶
| 시점 | 용도 |
|---|---|
| 장후 POST_MARKET (15:40~) | 당일 기준 전체 스코어링 -> 내일 종가매수 후보 |
| 장중 14:50 | 종가매수 직전 최종 스코어 갱신 (분봉 반영) |
| 프리장 (08:50) | 전일 스코어 + 야간 뉴스 반영 -> 시나리오 수정 |
추천 이력 연동¶
스코어 기반 추천 -> recommendations.json에 점수와 함께 기록 -> 이후 실제 수익률과 비교 - 어떤 점수대에서 승률이 높은지 축적 - 어떤 항목이 수익에 가장 기여하는지 분석