You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.4 KiB
Markdown
150 lines
4.4 KiB
Markdown
# 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은 심볼 기준보다 날짜 기준 우선
|