# spec/strategy/fundamental_quality_v3.yaml # P1-011: FUNDAMENTAL_EVIDENCE_UPGRADE — engine_audit vs data_quality 충돌 해소 # # 충돌 근거: # data_quality.schema_presence_score = 100 ← 필드 존재 여부만 확인 # engine_audit.fundamental_score = ~62 ← 실제 값 존재 여부 + missing_penalty # conflict_gap_pct = 40.0 (OCF/FCF 0% 커버리지가 원인) # # 해소 방법: # 1. OCF/FCF 데이터 HTS 캡처 (OPERATIONAL_ACTION) # 2. data_quality=FULL 레이블 기준 강화 (OCF or FCF 필수) → v2에서 적용됨 # 3. fundamental_multifactor_v4 missing_penalty 적용 meta: formula_id: FUNDAMENTAL_QUALITY_V3 version: "2026-06-06" python_tools: - tools/build_fundamental_raw_v2.py - tools/build_fundamental_multifactor_v4.py sources: - Temp/fundamental_raw_v1.json # FUNDAMENTAL_RAW_INGEST_V1 출력 - Temp/fundamental_raw_v2.json # v2: field-level coverage 수정 - Temp/fundamental_multifactor_v4.json # ── 충돌 정의 ───────────────────────────────────────────────────────────────── conflict_definition: issue: > v1에서 data_quality=FULL이지만 OCF/FCF=None인 tickers가 존재함. ROE/OPM/PER/PBR/EPS 5개 필드 기준으로 FULL 판정했으나 multifactor 점수에서 OCF/FCF 합산 30점 비중이 빠지는 문제. v1_full_label_count: 7 v2_reclassified_to_partial: 7 # 전원 PARTIAL로 재분류 root_cause: OCF/FCF HTS 캡처 미완료 (OPERATIONAL_ACTION) # ── 필드 가중치 ──────────────────────────────────────────────────────────────── field_weights: roe_pct: 25 # ROE opm_pct: 20 # 영업이익률 ocf_krw: 15 # 영업현금흐름 ← 현재 0% 커버리지 fcf_krw: 15 # 잉여현금흐름 ← 현재 0% 커버리지 net_debt_krw: 10 # 순부채 per: 8 # PER pbr: 7 # PBR total_weight: 100 # ── data_quality 레이블 기준 (v2) ────────────────────────────────────────────── data_quality_labels: FULL: "ROE/OPM + 밸류에이션 + (OCF or FCF) 모두 있음" PARTIAL: "ROE/OPM + 밸류에이션 있음, OCF/FCF 없음" SPARSE: "ROE/OPM만 있음" MISSING: "핵심 필드 없음" ETF_EXCLUDED: "ETF — 펀더멘털 미적용" # ── missing_penalty ──────────────────────────────────────────────────────────── missing_penalty: ocf_krw: -5.0 # OCF 없을 때 감점 fcf_krw: -5.0 # FCF 없을 때 감점 note: "penalty는 quality_multiplier 적용 후 차감" # ── 수락 기준 ───────────────────────────────────────────────────────────────── acceptance_criteria: raw_field_coverage_pct: target: ">=90" current: 60.0 status: FAIL remediation: "OCF/FCF HTS 캡처 → OPERATIONAL_ACTION" fundamental_score_not_available_count: target: "==0" current: 7 status: FAIL remediation: "OCF/FCF 캡처 후 자동 해소" conflict_gap_pct: target: "<5" current: 40.0 status: FAIL remediation: "field coverage 개선 후 자동 해소" # ── 장기투자 제한 ────────────────────────────────────────────────────────────── long_horizon_policy: condition: "OCF=None AND FCF=None" action: "long_horizon_buy_allowed=False" note: "현금흐름 근거 없이 장기투자 추천 금지" # ── 금지 사항 ───────────────────────────────────────────────────────────────── prohibitions: - "OCF/FCF 결측 상태에서 data_quality=FULL 레이블 사용 금지" - "fundamental_score 결측을 0점으로 대체해 등급 산출 금지" - "conflict_gap_pct >= 5인 상태에서 펀더멘털 기반 장기투자 추천 금지"