UNIT: 후보 시나리오 Stage 판정¶
사용: morning_open U5.5, mid_morning U5, afternoon U6, post_market U6
입력¶
data/tracking/candidate_scenarios.json→ 현재 추적 중인 시나리오 + stage (롤링 파일)collected.json→step_B(거래대금/시초가/상한가)collected.json→step_F(추적종목)collected.json→step_FS(flow_series 20일 수급 시계열) — post_marketdata/tracking/verdict_list.json— post_marketdata/tracking/wait_watchlist.json— post_market
처리¶
A. UNIT 5 매매 검토 → UNIT 6 자동 등록 (post_market 전용)¶
UNIT 5(leader_stock_status)에서 "매매 검토 대상"으로 선정된 종목은 UNIT 6 candidate_scenarios에 자동 등록된다.
등록 규칙:
1. UNIT 5 "매매 검토 대상" N번 종목 → candidate_scenarios에 신규 시나리오 생성
2. material: UNIT 5에서 해당 종목이 속한 테마의 촉매
3. entry_path: UNIT 5 접근법에서 도출 (눌림목=B, 상승초기=A, 낙폭과대=C)
4. Stage 매핑:
- UNIT 5 "상승 중 → 눌림목 대기" → Stage 1 (확인 단계)
- UNIT 5 "눌림목 진입 검토" → Stage 2 (정착 단계. SL 확보 확인 중)
- UNIT 5 조건/SL/kill → Stage 2→3 trigger와 kill에 그대로 반영
5. 이미 candidate_scenarios에 같은 종목이 있으면 Stage만 갱신 (중복 생성 금지)
6. 등록 후 → wait_watchlist.json에도 반영 (문제 3 참조)
예시:
UNIT 5 매매 검토:
1. LS ELECTRIC — sub_leader. 눌림목 -5%. SL 290K.
→ UNIT 6 candidate_scenarios 자동 등록:
material: 전력설비 RE-ACCELERATING (AI DC 전력 인프라)
종목: LS ELECTRIC (010120)
current_stage: 2 (눌림목 = 정착 단계)
Stage 3 trigger: 313K 지지 확인 + 거래량 -30% 감소
kill: 290K 이탈 or 전력설비 COOLING 2일 연속
B. Stage 판정 (모든 시간대)¶
dv = DailyViewManager()
for cand in dv.get_active_candidates():
dv.update_candidate_stage(
code=cand['code'],
new_stage=...,
evidence="...",
checkpoint_phase='midmorning|afternoon|postmarket',
)
Stage 진행: - Stage 0 → 1: D+1 거래량 유지? 테마 연속? - Stage 1 → 2: 3일 연속 거래대금? 외인/기관 진입? - Stage 2 → 3: 눌림목 형성? SL 확보? GO 4조건? - kill: 추적 중단 조건 해당 시
C. GO 4조건 검증 (post_market 전용)¶
Stage 3 도달 종목 + 신규 발굴 종목에 4조건: 1. 고점/전환 신호 부재 2. SL 확보 (R:R >= 2) 3. 재료 뒷받침 (substance A/B) 4. 수급 확인 — flow_series 필수: foreign_cum_5d/20d + pattern + acceleration
Stage 3 미도달이라도 별도 검토 대상: - 신고가 종목: 52주 신고가 + 테마 LEADING + 수급 뒷받침 - 매물소화 종목: 과거 상한가 후 현재 횡보/눌림목 (step_LT 데이터) - 기존 대장 조정 종목: 대장주가 "Weakening" 상태
출력¶
Stage 판정 (모든 시간대)¶
| 재료 | 종목 | 이전 stage | 현재 stage | 근거 | 다음 트리거 or kill |
GO 4조건 (post_market 전용)¶
GO 4조건 검증:
| 종목 | 조건1 | 조건2 | 조건3 | 조건4 | verdict |
추가 주목 (신고가/매물소화/눌림목):
| 종목 | 상태 | 사유 |
추가 주목 → D+N 추적 (post_market 전용)¶
"추가 주목"에 올린 종목은 다음 거래일 POST_MARKET에서 D+1 결과를 반드시 확인한다.
### 전일 추가 주목 D+1 검증
| 종목 | 전일 상태 | 전일 가격 | 오늘 가격 | D+1 수익률 | 판정 |
판정 기준: - D+1 +3% 이상 → HIT (주목이 맞았음. Stage 등록 검토) - D+1 ±3% 이내 → FLAT (아직 판단 불가. D+3까지 추적) - D+1 -3% 이하 → MISS (주목이 틀렸음. 추적 중단 검토)
D+3까지 FLAT이면 추적 중단. HIT이면 candidate_scenarios Stage 1 자동 등록.
목적: "추가 주목"이 실제로 맞았는지 사후 검증. 적중률이 시스템 정확도의 일부.
감시 파일 반영 (post_market finalize 시 필수)¶
Stage 변경 후 아래 파일을 반드시 갱신한다. 리포트에만 쓰고 파일에 반영 안 하면 다음 세션에서 추적 불가.
| Stage 변경 | 반영 대상 파일 | 행동 |
|---|---|---|
| 신규 → Stage 0~1 | data/tracking/candidate_scenarios.json |
시나리오 추가. UNIT 5 매매 검토 대상이면 Stage 2로 등록 |
| Stage 1 → 2+ | data/tracking/wait_watchlist.json |
종목 추가. unmet_conditions + go_trigger 작성 |
| Stage 3 + GO 4조건 통과 | data/tracking/verdict_list.json |
GO 등록. reasons + wrong_if + sl_price 작성 |
| kill | data/tracking/candidate_scenarios.json |
current_stage: "kill" + evidence. wait_watchlist에서 제거 |
| GO → WAIT 전환 | data/tracking/verdict_list.json → archive, wait_watchlist.json 추가 |
양쪽 갱신 |
검증: POST_MARKET 리포트의 Stage 테이블에 있는 모든 종목이 위 파일 중 하나에 존재해야 한다. 리포트에만 있고 파일에 없으면 실패.
candidate_scenarios 작성법 (morning_open 초기화)¶
- EVENING Q3 경로에서 도출: 각 경로(A/B/C)의 구체적 테마/종목이 시나리오의 출발점
- 각 시나리오에 주도주 후보(candidates) 1~3개
- 각 후보에 stage 3단계:
- Stage 1: 확인 (D+1 거래량 유지? 테마 연속?)
- Stage 2: 정착 (3일 연속 거래대금? 외인/기관 진입?)
- Stage 3: 진입 (눌림목 형성? SL 확보? GO 4조건?)
- kill 조건 필수
- current_stage = 0 (MORNING에서는 미진입)
- entry_path 필드 추가: 이 시나리오가 Q3의 어느 경로에서 왔는지 명시
Q3 경로별 시나리오 특성¶
| Q3 경로 | 시나리오 특성 | Stage 진행 속도 |
|---|---|---|
| A (새 재료+초기) | EMERGING/ACCELERATING D+1~3. catalyst chain 짧음. 높은 수익/리스크 | 빠름. D+1~2에 Stage 1→2 가능 |
| B (매물소화+재점화) | COOLING→RE-ACCELERATING. catalyst chain에 새 재료 추가. 중간 수익/리스크 | 중간. 지지 확인 필요 |
| C (낙폭과대) | COOLING 5일+. 내러티브 유효이나 가격 하락. 이벤트 트리거 대기 | 느림. 트리거 발동까지 대기 |
예시¶
{
"material": "이란 MOU 48h → 중동 재건",
"theme": "건설/SOC",
"candidates": [
{
"code": "028050", "name": "삼성E&A",
"why": "중동 플랜트 EPC 1위. 이란 재건 직접 수혜",
"current_stage": 0,
"stages": [
{"stage": 1, "trigger": "이란 MOU 실제 서명 확인", "action": "관찰"},
{"stage": 2, "trigger": "D+3 거래대금 유지 + 외인 매수 전환", "action": "수급 확인"},
{"stage": 3, "trigger": "조정 후 SL 확보 (R:R >= 2)", "action": "GO 검토"}
],
"kill": "MOU 결렬 or 외인 대량 매도 지속"
}
]
}
WAIT 체류 규칙 (SL 미확보 만료)¶
SL 미확보로 WAIT에 머무는 종목은 무기한 대기하지 않는다.
SL이 확보되는 3가지 경우¶
| 경우 | 조건 | 예시 |
|---|---|---|
| A. 조정 발생 | 가격이 하락하여 MA20/POC/이전고점이 SL zone(-10%~-5%) 안에 진입 | 산일전기 331K → 280K 조정 시 MA20(226K)이 SL zone(252K~266K)에 접근 |
| B. 시간 경과 | MA20이 가격을 추격하여 SL zone 안에 도달 (횡보 5~10일+) | 가격 횡보 중 MA20이 올라옴 |
| C. 새 기준봉 형성 | 급등 후 횡보/눌림목에서 거래량 집중 캔들이 새 지지가 됨 | 거래량 집중 양봉의 시가/저가가 SL로 사용 가능 |
체류 기한¶
| 미충족 조건 | 최대 체류 | 만료 시 행동 |
|---|---|---|
| sl_ready (SL 미확보) | 10 거래일 | 10일 내 조정/횡보로 SL 미확보 → 기회비용 판정. 자동 kill은 아님. 아래 판정 수행 |
| supply_confirmed (수급 미전환) | 5 거래일 | 5일 내 외인/기관 전환 없음 → kill 검토 |
| 기타 | 10 거래일 | 동일 |
체류 만료 시 판정 (sl_ready)¶
10 거래일 도달 시 아래 3가지 중 택 1:
- WAIT 유지 (연장): 테마 ACCELERATING 지속 + 재료 Fresh + 가격이 여전히 상승 중 → 5일 연장. 최대 1회.
- 경로 C 전환: "SL 없이 소액 진입" 또는 "돌파 매매(ATH 돌파 시 SL=직전 고점)"로 접근법 변경. GO 조건2를 "고점 돌파 SL"로 대체.
- kill: 테마 COOLING + 재료 Aging → 기회 소멸. 추적 중단.
핵심: SL 미확보가 영속적이면 시스템이 영원히 진입하지 못하는 종목이 생긴다. 10 거래일 후 판정을 강제하여 "진입할 것인가, 포기할 것인가"를 결정한다.
성공기준¶
- candidate_scenarios 전 종목 판정. 누락 0개.
- stage 변경 시 evidence 필수.
- kill 발동 시 명확한 사유.
- (post_market) UNIT 5 매매 검토 대상 전원이 candidate_scenarios에 존재. 누락 시 자동 등록.
- (post_market) GO 4조건 검증 대상 3개+. flow_series 인용 필수.
- GO → verdict_list.json 등록. WAIT → wait_watchlist.json 등록. Stage 1+ → wait_watchlist.json 등록.
- (post_market) "추가 주목" 전일 종목의 D+1 검증이 존재. 누락 시 재확인.
- (post_market) WAIT 체류 10 거래일 도달 종목에 만료 판정(연장/경로C/kill) 존재. 누락 시 판정 수행.