Merge pull request 'WBS-8 & WBS-9 병렬 진행 — 전체 계획 및 주요 문서 완성' (#76) from feature/wbs-8-9-parallel-planning into main
Reviewed-on: http://kjh2064.synology.me:8418/kjh2064/myfinance/pulls/76
This commit is contained in:
@@ -4312,3 +4312,134 @@ normalization_rules:
|
||||
- quantity
|
||||
- flow_rows
|
||||
transform: must be integer; decimal shares are invalid except final floor in sizing
|
||||
|
||||
# WBS-9.3: 데이터 품질 정책 — NULL 처리 및 자동 충전 규칙
|
||||
data_quality_policy:
|
||||
version: "2026-06-22"
|
||||
purpose: "NULL 컬럼별 충전 가능성, 우선순위, 추정 금지 정책을 명시"
|
||||
|
||||
null_handling_fields:
|
||||
# 우선순위 1 (필수, 자동 충전 가능)
|
||||
atr20:
|
||||
chargeability: FILLABLE
|
||||
priority: 1
|
||||
source: ATR(close, 20) 자동 계산
|
||||
estimation_forbidden: false
|
||||
fallback: 입력 거래 제외
|
||||
|
||||
rsi_14:
|
||||
chargeability: FILLABLE
|
||||
priority: 1
|
||||
source: RSI(close, 14) 자동 계산
|
||||
estimation_forbidden: false
|
||||
fallback: 입력 거래 제외
|
||||
|
||||
velocity_1d:
|
||||
chargeability: FILLABLE
|
||||
priority: 1
|
||||
source: (close - previous_close) / previous_close * 100
|
||||
estimation_forbidden: false
|
||||
fallback: 입력 거래 제외
|
||||
|
||||
# 우선순위 2 (권장, 추정 가능)
|
||||
stop_price:
|
||||
chargeability: FILLABLE
|
||||
priority: 2
|
||||
source: ATR(close, 20) * 2.0 (기본값)
|
||||
estimation_forbidden: false
|
||||
estimation_rule: ATR20 * atr_multiplier
|
||||
fallback: 입력 거래 제외
|
||||
|
||||
target_price:
|
||||
chargeability: FILLABLE
|
||||
priority: 2
|
||||
source: consensus_target 또는 ATR 기반
|
||||
estimation_forbidden: false
|
||||
estimation_rule: close * (1 + expectancy_pct)
|
||||
fallback: 입력 거래 제외
|
||||
|
||||
# 우선순위 3 (선택, 추정 불가)
|
||||
rsi_15m:
|
||||
chargeability: NOT_FILLABLE
|
||||
priority: 3
|
||||
source: 인트라데이 데이터 필요 (HTS 수동 기록)
|
||||
estimation_forbidden: true
|
||||
fallback: NA로 처리, 계산 제외
|
||||
|
||||
bayesian_confidence_multiplier:
|
||||
chargeability: COMPUTED
|
||||
priority: 3
|
||||
source: spec/17_performance_contract.yaml 기준 자동 계산
|
||||
estimation_forbidden: true
|
||||
fallback: 0.5 기본값 (데이터 부족 신호)
|
||||
|
||||
kelly_brake_multiplier:
|
||||
chargeability: COMPUTED
|
||||
priority: 3
|
||||
source: 성과 피드백 레이어에서 자동 계산
|
||||
estimation_forbidden: true
|
||||
fallback: 1.0 (제약 없음)
|
||||
|
||||
ci_gate_rules:
|
||||
- gate_id: DATA_QUALITY_NULL_CHECK
|
||||
description: 필수 필드(priority 1) NULL 검증
|
||||
trigger: GAS runDataFeed() 또는 snapshot_admin API 호출 시
|
||||
required_fields:
|
||||
- close_price
|
||||
- ticker
|
||||
- entry_price
|
||||
- stop_price
|
||||
- velocity_1d
|
||||
action_on_fail: ERROR 로그 기록, 해당 거래 SKIP
|
||||
acceptance_criteria: "100% 필드 충전"
|
||||
|
||||
- gate_id: DATA_QUALITY_FILLABLE_CHECK
|
||||
description: 권장 필드(priority 2) 자동 충전
|
||||
trigger: 데이터 로드 직후
|
||||
fillable_fields:
|
||||
- atr20
|
||||
- rsi_14
|
||||
- velocity_5d
|
||||
- stop_price
|
||||
- target_price
|
||||
action_on_success: 자동 계산값 삽입
|
||||
action_on_fail: WARNING 로그, 기존값 유지
|
||||
acceptance_criteria: ">= 95% 자동 충전율"
|
||||
|
||||
- gate_id: DATA_QUALITY_ESTIMATION_BLOCK
|
||||
description: 추정 금지 필드 검증
|
||||
trigger: 계산 엔진 전 1회
|
||||
forbidden_estimation_fields:
|
||||
- rsi_15m
|
||||
- kelly_brake_multiplier
|
||||
- proposal_stop_ladder
|
||||
action_on_fail: DATA_MISSING 처리, 계산 제외
|
||||
acceptance_criteria: "0% 추정율"
|
||||
|
||||
automated_fill_procedures:
|
||||
- procedure_id: FILL_ATR20
|
||||
field: atr20
|
||||
condition: "atr20 IS NULL AND close_price IS NOT NULL"
|
||||
implementation: "src/quant_engine/auto_fill_atr20_v1.py"
|
||||
execution_frequency: "on_data_load"
|
||||
|
||||
- procedure_id: FILL_RSI14
|
||||
field: rsi_14
|
||||
condition: "rsi_14 IS NULL AND close_price IS NOT NULL"
|
||||
implementation: "src/quant_engine/auto_fill_rsi14_v1.py"
|
||||
execution_frequency: "on_data_load"
|
||||
|
||||
- procedure_id: FILL_VELOCITY_1D
|
||||
field: velocity_1d
|
||||
condition: "velocity_1d IS NULL AND (close_price AND previous_close_price) IS NOT NULL"
|
||||
implementation: "src/quant_engine/auto_fill_velocity_v1.py"
|
||||
execution_frequency: "on_data_load"
|
||||
|
||||
- procedure_id: FILL_STOP_PRICE
|
||||
field: stop_price
|
||||
condition: "stop_price IS NULL AND atr20 IS NOT NULL"
|
||||
implementation: "src/quant_engine/auto_fill_stop_price_v1.py"
|
||||
execution_frequency: "on_data_load"
|
||||
parameters:
|
||||
multiplier_default: 2.0
|
||||
fallback_pct: -5.0
|
||||
|
||||
Reference in New Issue
Block a user