feat: sector trend analysis + ETF representative monitor (DAG step_count 81->83)

- src/quant_engine/sector_trend_analysis.py: ETF proxy 기반 11개 섹터 동향 + smart money lens
- src/quant_engine/etf_representative_monitor.py: ETF 대표 종목 8개 추적 + 벤치마크 연동
- tools/build_sector_trend_analysis_v1.py: SECTOR_TREND_ANALYSIS_V1 Temp JSON 생성
- tools/build_etf_representative_monitor_v1.py: ETF_REPRESENTATIVE_MONITOR_V1 Temp JSON 생성
- tools/update_workbook_sector_insights.py: Google Sheets 섹터 인사이트 동기화
- spec/41_release_dag.yaml: step_count 81->83, wave_1에 2개 신규 노드 등록
- validate_engine_harness_gate.py: CHECK_87B (SECTOR_TREND_ANALYSIS_V1) + ETF monitor DAG 스텝 추가
- render_operational_report.py: sector_trend_analysis_v1 / etf_representative_monitor_v1 / portfolio_performance_summary 섹션 추가
- gas_lib.gs: doPost + syncSectorInsightSheets_ (섹터 인사이트 GAS 동기화 엔드포인트)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 20:52:17 +09:00
parent e5ef9f1d3b
commit f56dd37286
16 changed files with 2227 additions and 6 deletions
+27 -1
View File
@@ -1,5 +1,5 @@
schema_version: release_dag.v3
step_count: 81
step_count: 83
goal: Linearize package.json scripts into a validated DAG execution graph.
execution_order:
# 토폴로지 정렬 기준 병렬 실행 wave (의존성 없는 노드들을 동시에 실행 가능)
@@ -37,6 +37,7 @@ execution_order:
- build_anti_whipsaw_gate
- build_data_gated_progress
- build_ejce_view_renderer
- build_etf_representative_monitor
- build_factor_shadow_eligibility
- build_formula_outputs
- build_missing_formula_bridge
@@ -44,6 +45,7 @@ execution_order:
- build_rebalance_sheet
- build_regime_trim_guidance
- build_routing_execution_log
- build_sector_trend_analysis
- build_shadow_promotion
- build_value_preservation_scorer
- build_velocity
@@ -226,6 +228,30 @@ dag:
artifact_policy: "keep"
note: "MISSING_FORMULA_BRIDGE_V1 — 10개 공식 커버리지 앵커 등록 (harness auditor PY_FILES)"
build_sector_trend_analysis:
id: build_sector_trend_analysis
command: ["python", "tools/build_sector_trend_analysis_v1.py"]
inputs: ["tools/build_sector_trend_analysis_v1.py", "GatherTradingData.json"]
outputs: ["Temp/sector_trend_analysis_v1.json"]
depends_on: ["convert_xlsx"]
timeout_sec: 30
cache_key: "build_sector_trend_analysis_v1"
strict: false
artifact_policy: "keep"
note: "SECTOR_TREND_ANALYSIS_V1 — ETF proxy 기반 섹터 동향 + smart money 렌즈 집계"
build_etf_representative_monitor:
id: build_etf_representative_monitor
command: ["python", "tools/build_etf_representative_monitor_v1.py"]
inputs: ["tools/build_etf_representative_monitor_v1.py", "GatherTradingData.json"]
outputs: ["Temp/etf_representative_monitor_v1.json"]
depends_on: ["convert_xlsx"]
timeout_sec: 30
cache_key: "build_etf_representative_monitor_v1"
strict: false
artifact_policy: "keep"
note: "ETF_REPRESENTATIVE_MONITOR_V1 — ETF 대표 종목 추적 + 벤치마크 연동"
build_routing_execution_log:
id: build_routing_execution_log
command: ["python", "tools/build_routing_execution_log_v1.py"]