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
+143
View File
@@ -112,6 +112,13 @@ formula_registry:
- REBALANCE_CADENCE_GATE_V1
- WALK_FORWARD_BOOTSTRAP_V1
- WEEKLY_LEGACY_TRANSFER_PLAN_V1
- 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
implementation_map:
REGIME_CONDITIONAL_MACRO_FACTOR_V1: tools/build_predictive_alpha_dialectic_engine_v2.py:NF1
REBOUND_CAPTURE_THESIS_FACTOR_V1: tools/build_predictive_alpha_dialectic_engine_v2.py:NF2
@@ -151,6 +158,13 @@ formula_registry:
REBALANCE_CADENCE_GATE_V1: tools/build_rebalance_cadence_gate_v1.py
WALK_FORWARD_BOOTSTRAP_V1: tools/build_walk_forward_bootstrap_v1.py
WEEKLY_LEGACY_TRANSFER_PLAN_V1: tools/build_weekly_legacy_transfer_plan_v1.py
GOLDEN_CROSS_SIGNAL_V1: tools/build_golden_cross_signal_v1.py
STRONG_CLOSE_SIGNAL_V1: tools/build_strong_close_signal_v1.py
VOLATILITY_EXPANSION_BREAKOUT_V1: tools/build_volatility_expansion_breakout_v1.py
FIFTY_TWO_WEEK_HIGH_TRIGGER_V1: tools/build_fifty_two_week_high_trigger_v1.py
CONSECUTIVE_STREAK_V1: tools/build_consecutive_streak_v1.py
BREAKOUT_FAILURE_STOP_V1: tools/build_breakout_failure_stop_v1.py
TREND_FILTER_GATE_V1: tools/build_trend_filter_gate_v1.py
formulas:
FLOW_CREDIT_V1:
purpose: 가격·거래량·5D 수급 품질을 0~1 점수로 계산
@@ -3162,6 +3176,135 @@ formula_registry:
canonical_ref: spec/risk/portfolio_exposure.yaml:cash_floor
implementation: tools/build_weekly_legacy_transfer_plan_v1.py
version: 2026-06-17_P3_v8_9_adoption
GOLDEN_CROSS_SIGNAL_V1:
purpose: >
단기 이동평균(ma20)이 장기 이동평균(ma60)을 상향 돌파하는 골든크로스를 정량 판정한다.
STRATEGY_SCORING 보조신호로만 사용 — 단독 BUY 트리거 금지.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-1)
inputs:
- field: ma20
unit: KRW_per_share
- field: ma20_prev
unit: KRW_per_share
- field: ma60
unit: KRW_per_share
- field: ma60_prev
unit: KRW_per_share
expression: "golden_cross_today = (ma20_prev <= ma60_prev) AND (ma20 > ma60)"
output:
field: golden_cross_today
unit: boolean
missing_policy: ma20_prev/ma60_prev 결측 시 null.
canonical_ref: spec/formulas/domains/entry.yaml:GOLDEN_CROSS_SIGNAL_V1
implementation: tools/build_golden_cross_signal_v1.py
version: 2026-06-18_technical_signals_p4
STRONG_CLOSE_SIGNAL_V1:
purpose: >
종가가 당일 고가-저가 범위 중 고가 근처에서 마감하는지 판정한다.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-2)
inputs:
- field: close_price
unit: KRW_per_share
- field: high_price
unit: KRW_per_share
- field: low_price
unit: KRW_per_share
expression: "close_position_pct = (close_price-low_price)/(high_price-low_price)*100; strong_close = close_position_pct >= 80"
output:
field: strong_close
unit: boolean
missing_policy: high_price==low_price면 null.
canonical_ref: spec/formulas/domains/entry.yaml:STRONG_CLOSE_SIGNAL_V1
implementation: tools/build_strong_close_signal_v1.py
version: 2026-06-18_technical_signals_p4
VOLATILITY_EXPANSION_BREAKOUT_V1:
purpose: >
bb_width 수축(squeeze) 후 급등하는 패턴을 판정한다. BREAKOUT_QUALITY_GATE_V2 통과가 전제조건.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-3)
inputs:
- field: bb_width
unit: percent
- field: bb_width_20d_percentile
unit: percent
- field: ret_1d
unit: percent
expression: "squeeze_detected = bb_width_20d_percentile <= 20; volatility_expansion_breakout = squeeze_detected_previous_day AND ret_1d >= 3.0"
output:
field: volatility_expansion_breakout
unit: boolean
missing_policy: bb_width_20d_percentile 결측 시 null.
canonical_ref: spec/formulas/domains/entry.yaml:VOLATILITY_EXPANSION_BREAKOUT_V1
implementation: tools/build_volatility_expansion_breakout_v1.py
version: 2026-06-18_technical_signals_p4
FIFTY_TWO_WEEK_HIGH_TRIGGER_V1:
purpose: >
종가가 52주 최고가(high52w)를 갱신하는지 판정해 BREAKOUT_QUALITY_GATE_V2 입력으로 공급한다.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-4)
inputs:
- field: close_price
unit: KRW_per_share
- field: high52w
unit: KRW_per_share
expression: "fifty_two_week_high_breakout = close_price >= high52w"
output:
field: fifty_two_week_high_breakout
unit: boolean
missing_policy: high52w 결측 시 null.
canonical_ref: spec/formulas/domains/entry.yaml:FIFTY_TWO_WEEK_HIGH_TRIGGER_V1
implementation: tools/build_fifty_two_week_high_trigger_v1.py
version: 2026-06-18_technical_signals_p4
CONSECUTIVE_STREAK_V1:
purpose: >
N일 연속 상승(up_streak)/하락(down_streak)을 대칭적으로 공식화한다.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-5)
inputs:
- field: daily_close_changes
unit: list_of_percent
output:
field: up_streak
unit: count
missing_policy: daily_close_changes 비어있으면 null.
canonical_ref: spec/formulas/domains/entry.yaml:CONSECUTIVE_STREAK_V1
implementation: tools/build_consecutive_streak_v1.py
version: 2026-06-18_technical_signals_p4
BREAKOUT_FAILURE_STOP_V1:
purpose: >
전고점 돌파 후 7거래일 이내 재이탈하면 SELL_RISK_EXIT_REVIEW를 발동한다.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-6)
inputs:
- field: prior_high
unit: KRW_per_share
- field: close_price
unit: KRW_per_share
- field: days_since_breakout
unit: trading_days
expression: "breakout_failure = (days_since_breakout <= 7) AND (close_price < prior_high)"
output:
field: breakout_failure
unit: boolean
missing_policy: prior_high 결측 시 null.
canonical_ref: spec/formulas/domains/exit.yaml:BREAKOUT_FAILURE_STOP_V1
implementation: tools/build_breakout_failure_stop_v1.py
version: 2026-06-18_technical_signals_p4
TREND_FILTER_GATE_V1:
purpose: >
종가가 ma120 위에 있고 ma120이 상승 중인지 단일 게이트로 판정한다.
(governance/todo/technical_signals_p4_adoption_plan.yaml P4-7)
inputs:
- field: close_price
unit: KRW_per_share
- field: ma120
unit: KRW_per_share
- field: ma120_prev
unit: KRW_per_share
expression: "trend_filter_pass = (close_price > ma120) AND (ma120 > ma120_prev)"
output:
field: trend_filter_pass
unit: boolean
missing_policy: ma120/ma120_prev 결측 시 null.
canonical_ref: spec/strategy/entry_core.yaml:entry_timing_guardrails.regime_based_entry
implementation: tools/build_trend_filter_gate_v1.py
version: 2026-06-18_technical_signals_p4
SELL_EXECUTION_TIMING_V1:
purpose: '장중 가격 움직임에 따라 매도 주문 유형과 타이밍을 결정론적으로 판정. 장초반 패닉 매도, 반등 직전 저점 투매 방지.