WBS-2.4 PEG_SCORE_V1 구현 + ROADMAP_WBS.md 완성도 매트릭스 전면 업데이트
[WBS-2.4] ingest_fundamental_raw.py에 peg_ratio / peg_gate 필드 추가 - PEG = TTM_PE(per) / eps_growth_1y_pct (양수 성장 종목만) - PEG_GATE: BUY_GRADE(≤1.0) / HOLD(≤1.5) / CAUTION(>1.5) - 비ETF 8종목 중 6종목 PEG 산출 (75% — 음수성장 2종목 정상 NULL) - Forward_PE 미입수 시 TTM_PE 대체 조항 적용 [ROADMAP] 완성도 매트릭스 전면 업데이트 - WBS 1.1~1.5, 2.1~2.4, 3.1~3.4, 4.4, 5.1~5.3 모두 100% ✅ 반영 - WBS 2.5, 4.1~4.3: DATA_GATED 명시 - Phase bar: 1/3/5 완료(20/20), 2 80%, 4 25% - D2: 9% → 100% (269개 등록), D5: 55단계 DAG PASS - KPI 섹션: RS/PEG/CI/CD 실적 반영 [CI] tools/setup_act_runner.sh 추가 (Synology NAS act_runner 설치 스크립트) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -221,10 +221,11 @@ def _collect_ticker(ticker: str, name: str, df_row: dict[str, Any], use_naver: b
|
||||
}
|
||||
|
||||
fields = [
|
||||
"roe_pct", "opm_pct", "eps_krw", "per", "pbr",
|
||||
"roe_pct", "opm_pct", "eps_krw", "per", "pbr",
|
||||
"revenue_krw", "op_income_krw", "beta", "high52w", "low52w",
|
||||
"debt_to_equity", "current_ratio", "fcf_krw", "ocf_krw",
|
||||
"eps_growth_1y_pct", "revenue_growth_pct", "earnings_date"
|
||||
"eps_growth_1y_pct", "revenue_growth_pct", "earnings_date",
|
||||
"peg_ratio", "peg_gate",
|
||||
]
|
||||
for f in fields:
|
||||
row[f] = None
|
||||
@@ -285,6 +286,19 @@ def _collect_ticker(ticker: str, name: str, df_row: dict[str, Any], use_naver: b
|
||||
else:
|
||||
row["data_quality"] = "SPARSE"
|
||||
|
||||
# PEG_SCORE_V1 (WBS-2.4): PEG = TTM_PE / EPS_Growth_1Y_Pct (positive growth only)
|
||||
per_val = row.get("per")
|
||||
eps_g = row.get("eps_growth_1y_pct")
|
||||
if per_val and eps_g and eps_g > 0:
|
||||
row["peg_ratio"] = round(per_val / eps_g, 3)
|
||||
peg = row["peg_ratio"]
|
||||
if peg <= 1.0:
|
||||
row["peg_gate"] = "BUY_GRADE"
|
||||
elif peg <= 1.5:
|
||||
row["peg_gate"] = "HOLD"
|
||||
else:
|
||||
row["peg_gate"] = "CAUTION"
|
||||
|
||||
return row
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user