섹터 리포트와 대표종목 모니터 고도화

This commit is contained in:
2026-06-15 02:30:02 +09:00
parent 82ca4ddbfd
commit 2439980730
5 changed files with 192 additions and 25 deletions
@@ -187,6 +187,7 @@ def build_sector_trend_analysis(payload: dict[str, Any]) -> dict[str, Any]:
proxy_ticker = _txt(row.get("Proxy_Ticker"))
proxy_name = _txt(row.get("Proxy_Name"))
proxy_type = _txt(row.get("Proxy_Type"), "UNKNOWN")
universe_source = _txt(row.get("Universe_Source"), "DEFAULT_TEMPLATE")
etf_code = _txt(row.get("ETF_Code"), proxy_ticker)
etf_execution_use = _txt(row.get("ETF_Execution_Use"))
etf_liquidity_status = _txt(row.get("ETF_Liquidity_Status"), "UNKNOWN")
@@ -224,6 +225,7 @@ def build_sector_trend_analysis(payload: dict[str, Any]) -> dict[str, Any]:
"proxy_ticker": proxy_ticker,
"proxy_name": proxy_name,
"proxy_type": proxy_type,
"universe_source": universe_source,
"etf_code": etf_code,
"etf_execution_use": etf_execution_use,
"etf_liquidity_score": etf_liquidity_score,
@@ -356,6 +358,7 @@ def build_sector_trend_analysis(payload: dict[str, Any]) -> dict[str, Any]:
"sector_rotation_momentum_rows": len(rotation_rows),
"sector_concentration_rows": len(concentration_rows),
"proxy_coverage_pct": round((etf_proxy_count / len(rows)) * 100.0, 2) if rows else 0.0,
"template_source_count": sum(1 for r in rows if str(r.get("universe_source") or "").upper() == "DEFAULT_TEMPLATE"),
},
}
return result