# Attention Overlay Architecture

## 목표
공식 문서와 가격 반응으로 생성된 `trade_candidates` 에 대해, 추가적인 **리테일 관심도 / 미디어 확산 / crowding** 신호를 계산해 `overlay_score` 를 부여한다.

## 설계 원칙
1. Overlay는 **후행 확인 신호** 다.
2. Overlay 데이터는 소스별 신뢰도 가중치를 갖는다.
3. Overlay는 결측이 많을 수 있으므로 sparse-friendly 하게 설계한다.
4. Overlay는 독립 장애 도메인으로 분리한다.
5. Overlay feature는 모두 타임스탬프와 source provenance를 남긴다.

## 상위 구조
```text
source adapters
  ├── yahoo_rss_adapter
  ├── youtube_overlay_adapter
  ├── wikimedia_adapter
  ├── google_trends_adapter (experimental)
  └── finra_overlay_loader

normalized events
  ├── headline_mentions
  ├── video_mentions
  ├── pageview_timeseries
  ├── trend_topic_timeseries
  └── crowding_metrics

entity resolution layer
  ├── symbol ↔ company aliases
  ├── symbol ↔ wikipedia page
  ├── symbol ↔ youtube mention matcher
  └── symbol ↔ trend topic map

feature builder
  ├── headline burst
  ├── publisher breadth
  ├── youtube influence score
  ├── pageview shock
  ├── theme heat
  └── crowding stress

overlay scorer
  ├── overlay_score
  ├── overlay_confidence
  ├── hold_extension_hint
  └── add_on_eligibility
```

## 데이터 흐름
1. Phase 2/3에서 `trade_candidates` 생성.
2. overlay adapters가 소스별 raw 수집.
3. entity resolution이 종목 단위로 정규화.
4. feature builder가 observation window 기준 feature 생성.
5. overlay scorer가 각 후보에 score 부여.
6. backtester/live trader가 score를 사용해 ranking, sizing, holding rule 조정.

## 장애 격리
- overlay adapter 실패는 core signal 생성에 영향 주지 않는다.
- 특정 소스 실패 시 나머지 소스로 점수 계산 가능해야 한다.
- 모든 overlay feature가 누락되면 `overlay_mode=disabled` 로 자동 강등한다.

## 추천 배치 순서
- T day 18:30 ET: Yahoo RSS / FINRA 수집 완료
- T day 20:00 ET: Wikimedia/YouTube/Trends 업데이트
- T day 20:30 ET: overlay feature build
- T day 21:00 ET: candidate rerank

## 사용 방식
- `candidate_rank_score = core_score * 0.85 + overlay_score * 0.15`
- 또는 core score bucket 내 tie-breaker
- 또는 holding period extension/trim decision only

v1 권장: **tie-breaker + hold adjustment only**
