diff --git a/spec/16_data_gaps_roadmap.yaml b/spec/16_data_gaps_roadmap.yaml index 989f872..4bfbd0a 100644 --- a/spec/16_data_gaps_roadmap.yaml +++ b/spec/16_data_gaps_roadmap.yaml @@ -451,7 +451,7 @@ analysis_enhancements: phase_4_backdata_collection: B1_gas_backdata_feature_bank: priority: HIGH - status: PLANNED + status: DONE purpose: > 매수/매도 뒷북과 설거지 패턴을 줄이기 위한 진입-청산 백데이터 원장. 사람 입력보다 GAS 자동 수집을 1순위로 두고, 사람이 입력한 performance 기록은 @@ -480,13 +480,28 @@ phase_4_backdata_collection: - "max_adverse_excursion_pct" - "max_favorable_excursion_pct" implementation_plan: - step_1: "GAS에서 daily setup snapshot을 backdata_feature_bank 시트로 자동 upsert" - step_2: "performance 시트 청산 결과와 join해 outcome label을 자동 부여" - step_3: "convert_xlsx_to_json.py에서 backdata_feature_bank_json 우선 수집" - step_4: "backdata_feature_bank_table을 report/validation에 반영" + step_1: + action: "GAS에서 daily setup snapshot을 backdata_feature_bank 시트로 자동 upsert" + status: DONE + note: "syncBackdataFeatureBank_() — gdc_01_fetch_fundamentals.gs:1128, gdf_02_harness_assembly.gs:146" + step_2: + action: "performance 시트 청산 결과와 join해 outcome label을 자동 부여" + status: DONE + note: "buildBackdataFeatureBankRowsV1_() — mapLatestPerformanceByTicker_ 기반 join" + step_3: + action: "convert_xlsx_to_json.py에서 backdata_feature_bank_json 우선 수집" + status: DONE + note: "src/quant_engine/convert_xlsx_to_json.py:synthesize_backdata_feature_bank() 구현" + step_4: + action: "backdata_feature_bank_table을 report/validation에 반영" + status: DONE + note: "render_operational_report.py:_backdata_feature_bank_table(), validate_harness_context.py 검증" fallback_policy: manual_input: "performance 시트 또는 수동 보정은 fallback일 뿐 primary source가 아니다." missing_action: "GAS 생성본이 없으면 fallback 기록과 함께 source_origin=FALLBACK_SYNTH로 남긴다." + implementation_note: > + 2026-06-14 구현 완료 확인. GAS(syncBackdataFeatureBank_) + Python(synthesize_backdata_feature_bank) + 모두 구현됨. T+20 데이터 누적 후 ML 패턴 학습 품질 향상 예정. # 2026-05-30 구현 현황 # - S5_etf_raw: PARTIAL_DONE 유지 (수동 NAV 병행)