feat(quant-engine): 10개 고전 기술전략 갭분석 후 7개 보조신호 채택

사용자 제시 10개 고전 기술전략(골든크로스/모멘텀/52주신고가/연속상승하락/이격도/돌파실패/
강한종가/변동성확장/평균회귀/추세필터)을 기존 엔진과 대조한 갭분석 결과:
- 이미 구현됨: 모멘텀(VELOCITY_V1/RS_MOMENTUM_V1), 이격도·평균회귀(MEAN_REVERSION_GATE_V1)
- 신규 채택 7개: GOLDEN_CROSS_SIGNAL_V1, STRONG_CLOSE_SIGNAL_V1,
  VOLATILITY_EXPANSION_BREAKOUT_V1, FIFTY_TWO_WEEK_HIGH_TRIGGER_V1, CONSECUTIVE_STREAK_V1,
  BREAKOUT_FAILURE_STOP_V1, TREND_FILTER_GATE_V1

AGENTS.md 하드룰(추격매수 방지, anti-late-entry gate 필수통과)에 따라 BUY 방향 신호 전부를
STRATEGY_SCORING의 보조신호로만 편입 — BREAKOUT_QUALITY_GATE_V2/FOLLOW_THROUGH_DAY_CONFIRM_V1/
ANTI_LATE_ENTRY_GATE_V2 게이트 체인을 우회하는 독립 BUY 트리거로는 사용하지 않음.

검증: validate_specs/validate_golden_coverage_100(100%)/validate_calibration_registry_v1/
validate_schema_model_generation_v1/validate_agents_shrink_v1 전부 PASS. golden test 22/22 PASS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 00:29:18 +09:00
parent aedabdd37b
commit 782fe74578
43 changed files with 1709 additions and 4 deletions
+67
View File
@@ -254,6 +254,73 @@ golden_cases:
input: {weekly_legacy_to_cma_transfer_plan_krw: 4000000, transfer_confirmed: true, transfer_confirmed_amount_krw: 3800000}
expected: {deployable_cash_contribution_krw: 3800000.0, plan_status: CONFIRMED_DEPLOYABLE}
# ── 기술적 신호 7종 채택 (governance/todo/technical_signals_p4_adoption_plan.yaml) ──
- formula_id: GOLDEN_CROSS_SIGNAL_V1
id: GV4_GCS_001
name: ma20가 ma60을 상향 돌파하면 golden_cross_today=true
input: {ma20_prev: 98, ma60_prev: 99, ma20: 105, ma60: 100}
expected: {golden_cross_today: true}
- formula_id: GOLDEN_CROSS_SIGNAL_V1
id: GV4_GCS_002
name: 전일값 결측 시 null(DATA_MISSING), false로 추정 금지
input: {ma20_prev: null}
expected: {golden_cross_today: null}
- formula_id: STRONG_CLOSE_SIGNAL_V1
id: GV4_SCS_001
name: 종가가 고가 근처(90%)면 strong_close=true
input: {close: 99, high: 100, low: 90}
expected: {strong_close: true, close_position_pct: 90.0}
- formula_id: STRONG_CLOSE_SIGNAL_V1
id: GV4_SCS_002
name: high==low(거래정지 등) 시 null
input: {high: 100, low: 100}
expected: {strong_close: null}
- formula_id: VOLATILITY_EXPANSION_BREAKOUT_V1
id: GV4_VEB_001
name: squeeze(저백분위) 후 급등 시 volatility_expansion_breakout=true, BREAKOUT_QUALITY_GATE_V2 별도 통과 필요
input: {bb_width_20d_percentile_prev: 10, ret_1d: 4.5}
expected: {volatility_expansion_breakout: true, hard_constraint: requires_BREAKOUT_QUALITY_GATE_V2_pass_separately}
- formula_id: FIFTY_TWO_WEEK_HIGH_TRIGGER_V1
id: GV4_FTW_001
name: 종가가 52주 최고가 이상이면 breakout=true, 단독 매수 트리거 아님
input: {close: 105, high52w: 100}
expected: {fifty_two_week_high_breakout: true, hard_constraint: feeds_BREAKOUT_QUALITY_GATE_V2_only_not_buy_trigger}
- formula_id: CONSECUTIVE_STREAK_V1
id: GV4_CST_001
name: 최근 3일 연속 상승이면 up_streak=3, down_streak=0
input: {daily_close_changes: [1, 2, -1, 1, 2, 3]}
expected: {up_streak: 3, down_streak: 0}
- formula_id: BREAKOUT_FAILURE_STOP_V1
id: GV4_BFS_001
name: 돌파 후 7일 이내 전고점 아래로 재이탈하면 SELL_RISK_EXIT_REVIEW
input: {prior_high: 100, close: 95, days_since_breakout: 3}
expected: {breakout_failure: true, gate: SELL_RISK_EXIT_REVIEW}
- formula_id: BREAKOUT_FAILURE_STOP_V1
id: GV4_BFS_002
name: 7일 초과 후 재이탈은 breakout_failure 규칙 미적용(false)
input: {prior_high: 100, close: 95, days_since_breakout: 10}
expected: {breakout_failure: false}
- formula_id: TREND_FILTER_GATE_V1
id: GV4_TFG_001
name: 종가가 ma120 위 + ma120 상승 중이면 trend_filter_pass=true
input: {close: 105, ma120: 100, ma120_prev: 99}
expected: {trend_filter_pass: true}
- formula_id: TREND_FILTER_GATE_V1
id: GV4_TFG_002
name: 종가가 ma120 아래면 trend_filter_pass=false
input: {close: 95, ma120: 100, ma120_prev: 99}
expected: {trend_filter_pass: false}
# ── STOP_BREACH_V1: profit_pct < -20% 경계값 3 케이스 ─────────────────────
- formula_id: STOP_BREACH_V1
id: GV4_STOP_001