콘텐츠로 이동

UNIT: 후보 시나리오 Stage 판정

사용: morning_open U5.5, mid_morning U5, afternoon U6, post_market U6


입력

  • data/tracking/candidate_scenarios.json → 현재 추적 중인 시나리오 + stage (롤링 파일)
  • collected.jsonstep_B (거래대금/시초가/상한가)
  • collected.jsonstep_F (추적종목)
  • collected.jsonstep_FS (flow_series 20일 수급 시계열) — post_market
  • data/tracking/verdict_list.json — post_market
  • data/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 초기화)

  1. EVENING Q3 경로에서 도출: 각 경로(A/B/C)의 구체적 테마/종목이 시나리오의 출발점
  2. 각 시나리오에 주도주 후보(candidates) 1~3개
  3. 각 후보에 stage 3단계:
  4. Stage 1: 확인 (D+1 거래량 유지? 테마 연속?)
  5. Stage 2: 정착 (3일 연속 거래대금? 외인/기관 진입?)
  6. Stage 3: 진입 (눌림목 형성? SL 확보? GO 4조건?)
  7. kill 조건 필수
  8. current_stage = 0 (MORNING에서는 미진입)
  9. 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:

  1. WAIT 유지 (연장): 테마 ACCELERATING 지속 + 재료 Fresh + 가격이 여전히 상승 중 → 5일 연장. 최대 1회.
  2. 경로 C 전환: "SL 없이 소액 진입" 또는 "돌파 매매(ATH 돌파 시 SL=직전 고점)"로 접근법 변경. GO 조건2를 "고점 돌파 SL"로 대체.
  3. 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) 존재. 누락 시 판정 수행.