# Feature Catalog ## 1. 원칙 1. feature는 반드시 **point-in-time safe** 해야 한다. 2. 각 feature는 `as_of_ts`, `source`, `feature_version`을 가진다. 3. 미래 데이터를 암묵적으로 쓰는 rolling 통계는 금지한다. 4. missing value는 명시적으로 처리하고, silent fill 금지. ## 2. Feature 그룹 ### 2.1 Event features | feature | 타입 | 설명 | 계산/정의 | null 처리 | |---|---|---|---|---| | event_type | categorical | taxonomy 기반 이벤트 종류 | parser output | 불가 | | event_direction | categorical | bullish/bearish/mixed | parser output | unknown 허용 | | guidance_direction | categorical | raised/inline/lowered/... | parser output | unknown 허용 | | quality_assessment | categorical | high/mixed/low/unknown | parser output | unknown 허용 | | oneoff_suspicion | categorical | none/possible/likely | parser output | unknown 허용 | | confidence_overall | float | parser 종합 confidence | parser output | 불가 | | document_count | int | event에 연결된 문서 수 | count | 0 불가 | | evidence_span_count | int | 핵심 필드 evidence 수 | count | 0 허용 | ### 2.2 Document text features | feature | 타입 | 설명 | |---|---|---| | demand_strength_score | float | backlog/bookings/orders/customers 관련 점수 | | pricing_power_score | float | pricing / ASP / price realization 점수 | | margin_strength_score | float | margin expansion 관련 점수 | | tone_score | float | management tone ordinal 매핑 | | oneoff_keyword_count | int | 일회성 관련 키워드 출현 수 | | guidance_statement_count | int | guidance 관련 문장 수 | | doc_length_tokens | int | 정규화 문서 토큰 수 | | qa_risk_flag | bool | ambiguous language 또는 parser disagreement 여부 | 권장 ordinal mapping 예시: - strong_positive = +2 - mild_positive = +1 - neutral = 0 - mild_negative = -1 - strong_negative = -2 - mixed = 0 ### 2.3 Numeric issuer features XBRL 또는 rule parser에서 추출: - revenue_yoy_pct - gross_margin_yoy_delta - operating_margin_yoy_delta - free_cash_flow_yoy_pct - debt_to_cash_delta - prior_company_guidance_surprise_pct 주의: - 컨센서스 surprise는 v1에 없음 - 회사 가이던스 대비 actual만 허용 - 분모 0 또는 누락 시 null ### 2.4 Market reaction features 반응일 기준: - reaction_day_return_pct - reaction_gap_pct - reaction_volume_ratio_20d - reaction_close_location - reaction_intraday_range_pct - reaction_close_vs_vwap (가능한 경우) - reaction_close_vs_20d_ma - reaction_sector_relative_return 정의: - `reaction_close_location = (close - low) / (high - low)` - `reaction_volume_ratio_20d = volume / avg_volume_20d_prior` 주의: - moving average / ATR은 반드시 entry 이전 데이터만 사용 ### 2.5 Regime features - spy_trend_20d - qqq_trend_20d - sector_etf_trend_20d - vix_level - vix_change_1d - fred_rate_regime_bucket ### 2.6 Attention features Phase 3에서는 ingestion이 아니라 결합/정규화만 구현: - yahoo_headline_burst_6h - yahoo_unique_publishers_24h - wiki_pageview_zscore_1d - youtube_influence_score_24h - finra_short_volume_ratio - finra_short_ratio_zscore_20d 주의: - attention feature는 core trigger 아님 - missing source가 있어도 학습 레코드는 유지 ## 3. Feature naming 규칙 - snake_case - 단위 포함 (`_pct`, `_ratio`, `_count`, `_score`) - 날짜창 포함 (`_1d`, `_3d`, `_20d`) - categorical은 값 집합 문서화 필수 ## 4. Leakage 금지 규칙 금지 예시: - reaction day close 후 생성되어야 하는 feature를 same-day open entry 모델에 사용 - future bar를 포함한 ATR/MA - 거래 종료 후 게시되는 FINRA data를 당일 시초 진입 feature로 사용 필수 메타데이터: - `feature_as_of_ts` - `feature_available_ts` - `entry_convention` ## 5. Feature availability by entry convention ### next_open_entry 허용: - event filing timestamp까지 공개된 정보 - reaction day 종가까지의 가격/거래량 - previous day까지의 FINRA/FRED/attention 금지: - entry day 장중 가격 - entry day 종가 ### dayplus1_close_entry 허용: - entry day 종가까지의 정보 ## 6. Feature export 형식 Canonical feature record는 최소 아래를 포함: - ids: event_instance_id, filing_id, symbol, reaction_date - parser summary - all feature columns - availability metadata - schema_version Parquet 저장 시: - 파티션: `reaction_year=YYYY/reaction_month=MM` - row group은 심볼 기준보다 날짜 기준 우선