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.

331 lines
12 KiB
Markdown

# data_source_policy.md
- 문서명: Data Source Policy
- 프로젝트 코드명: **ACE-F v1**
- 상태: Draft for Phase 0 Sign-off
- 버전: 0.1
- 작성일: 2026-03-12
- 목적: 프로젝트에서 허용되는 데이터 소스, 금지 소스, 사용 원칙, 비용 원칙, 보관 및 변경 정책을 고정합니다.
> 핵심 원칙: **무료**, **공식 우선**, **재현 가능**, **출처 추적 가능**, **약관 위반 금지**
## 1. 데이터 정책의 최상위 원칙
1. **유료 데이터 금지**
- 구독료, API 요금, 별도 라이선스 비용이 드는 데이터는 v1 범위에서 사용하지 않습니다.
2. **공식 소스 우선**
- 동일 정보가 여러 곳에 있다면 발행자 또는 공식 기관이 제공한 원문을 우선 사용합니다.
3. **재현 가능성 우선**
- live에서 쓰는 데이터 경로와 backtest에서 쓰는 데이터 경로를 최대한 같게 유지합니다.
4. **소셜/미디어는 보조 신호**
- 공식 이벤트를 대체할 수 없습니다.
5. **출처 추적 가능성**
- 모든 feature는 어느 소스에서 왔는지 provenance를 남겨야 합니다.
6. **약관/쿼터/접속 정책 준수**
- 무료라고 해서 무제한 사용을 전제로 하지 않습니다.
## 2. 소스 분류
### 2.1 Core Approved Sources (핵심 허용)
이 소스가 없으면 전략이 동작하지 않거나 품질이 크게 저하됩니다.
1. **SEC EDGAR / data.sec.gov**
- 용도: 8-K, 10-Q, 10-K, 6-K, 20-F, 40-F, XBRL, Exhibit 99.1 수집
- 역할: 원문 이벤트와 공식 숫자 데이터의 기준 원장
- 정책:
- 공정접속 정책 준수
- user-agent 명시
- 필요한 문서만 다운로드
- raw 원문과 정규화 결과를 함께 저장
2. **Alpaca Basic**
- 용도: 일봉/분봉 시세, paper trading, 주문 상태
- 역할: 기본 가격 확인 및 시뮬레이션/실행 reference
- 정책:
- 무료 플랜 제약에 맞춘 폴링 설계
- 정교한 intraday 전략의 기준 feed로 사용하지 않음
- IEX 중심 무료 데이터임을 전제로 해석
3. **FRED API**
- 용도: 거시/시장 레짐 보조 feature
- 역할: risk-on / risk-off 필터
4. **FINRA Daily Short Sale Volume**
- 용도: crowding / short activity overlay
- 역할: 당일 short sale volume anomaly 탐지
- 주의:
- short interest와 동일 개념으로 해석 금지
### 2.2 Secondary Approved Sources (보조 허용)
핵심 전략이 살아 있는 상태에서 보조 feature로만 사용합니다.
1. **Wikimedia Pageviews**
- 용도: retail curiosity / 관심 급증 측정
- 역할: attention overlay
2. **YouTube Data API**
- 용도: whitelist 채널 기반 mention/engagement 추적
- 역할: 관심 확산 속도 측정
- 정책:
- 전수 검색 금지
- 채널 whitelist 우선
- 제목/설명/댓글/조회수 기반 feature만 사용
- 공개 영상 자막 대량 수집 구조 금지
3. **Yahoo Finance RSS**
- 용도: headline burst / publisher breadth 카운팅
- 역할: 미디어 확산 보조 판단
- 정책:
- 원문 사실 확인 소스가 아니라 보조 attention 레이어로만 사용
- headline 중복 제거 필수
### 2.3 Experimental Sources (연구용)
즉시 production 의존성을 두지 않습니다.
1. **Google Trends API Alpha**
- 용도: 테마/키워드 관심 급증
- 정책:
- 접근권이 있는 경우에만 사용
- 핵심 진입 신호로 사용 금지
- 보유기간/랭킹 보조로만 연구
2. **Reddit**
- 용도: 연구용 mention/engagement feature
- 정책:
- 약관/상업적 사용 가능 여부 확인 전 live 핵심 입력 금지
- research-only flag 필요
### 2.4 Disallowed / Not-in-scope Sources (금지 또는 범위 밖)
- 유료 earnings estimate API
- 유료 transcript API
- X/Twitter 유료 API 의존 구조
- 현재 신규 접근성이 불안정한 비공식 금융 커뮤니티 API
- robots/약관 위반 가능성이 있는 무단 스크레이핑
- captcha/로그인 우회 수집
- 저작권/재배포 정책이 불명확한 자막 다운로드 사이트
- 웹사이트 화면 파싱을 기반으로 한 핵심 전략
## 3. 소스별 구체 정책
## 3.1 SEC EDGAR
### 허용 사용
- filing metadata
- filing body
- exhibit 99.1
- XBRL facts
- company submissions history
### 요구사항
- 명시적 user-agent
- 합리적 캐시
- 재다운로드 최소화
- 문서 원본 불변 저장
### 금지사항
- 불필요한 전수 크롤링
- rate limit 무시
- 원문 없이 파싱 결과만 보관하는 구조
## 3.2 Alpaca Basic
### 허용 사용
- 일봉/분봉 bars
- latest bar 확인
- paper trading
- 기본 주문 상태 확인
### 제한사항
- 무료 플랜 제약을 고려한 호출 빈도 설계
- IEX 중심 무료 실시간 데이터 한계를 감안한 해석
- v1에서 초단타 실시간 전략의 진실 원장으로 사용 금지
## 3.3 FRED
### 허용 사용
- 금리/스프레드/거시 레짐
- regime filter
### 제한사항
- 개별 종목 진입 신호로 직접 사용하지 않음
## 3.4 FINRA Short Sale Volume
### 허용 사용
- short volume ratio
- abnormal short activity
- off-exchange crowding 힌트
### 제한사항
- short interest 대용으로 사용 금지
- 단독 진입 신호 금지
## 3.5 Wikimedia
### 허용 사용
- 회사/브랜드 pageview spike
- retail curiosity shock
### 제한사항
- 문서/가격 확인 없이 단독 진입 금지
## 3.6 YouTube
### 허용 사용
- whitelist 채널의 업로드 감시
- 제목/설명에서 ticker/키워드 추출
- 조회수 증가 속도
- 댓글 수/간단 감성
### 제한사항
- search.list 남용 금지
- captions.download 기반 대량 수집 금지
- “유명인이 찍었으니 산다” 식 단독 신호 금지
## 3.7 Yahoo Finance RSS
### 허용 사용
- 헤드라인 burst
- 유니크 publisher 수
- 기사 수 증가율
### 제한사항
- 동일 보도자료의 다중 복제 기사 중복 제거
- 공식 사실 검증 소스 아님
## 3.8 Google Trends
### 허용 사용
- 섹터/테마 열기 확인
- 특정 키워드의 관심 확산
### 제한사항
- 접근성/안정성 불확실
- alpha 의존성 때문에 core pipeline 금지
## 4. 데이터 우선순위와 진실 원장(Source of Truth)
### 4.1 이벤트 원장
- 1순위: SEC 공시 원문
- 2순위: 회사 IR 자료
- 3순위: 정규화 파서 결과
- 4순위: 미디어/소셜 overlay
### 4.2 가격 원장
- 1순위: 브로커 reference price feed
- 2순위: 저장된 historical bars
- 3순위: 파생 계산 feature
### 4.3 attention 원장
- 원장 개념보다는 보조 signal
- core signal을 override할 수 없음
## 5. 데이터 비용 정책
### 5.1 외부 데이터 비용
- 데이터 API 구독료는 **0원/0달러**여야 합니다.
- 테스트 편의를 위해 일시적으로 쓰는 유료 trial 데이터도 core feature로 편입하지 않습니다.
### 5.2 LLM 비용
- LLM은 데이터 API가 아니지만 운영비에 포함됩니다.
- 모든 문서에 LLM을 호출하지 않고, 규칙 필터 통과 문서만 호출합니다.
- accession/file hash 단위 캐시 필수
- 비용 상한 초과 시 low-priority 문서는 규칙 기반 fallback
## 6. 수집 및 저장 정책
### 6.1 Raw 저장
- 원문은 수정 없이 보관합니다.
- 원문 저장 경로에는 source / date / entity / accession 정보를 포함합니다.
- raw는 immutable 원칙을 따릅니다.
### 6.2 Structured 저장
- 파싱 결과, feature, label은 별도 테이블로 분리합니다.
- raw와 structured를 섞어 저장하지 않습니다.
- schema version을 관리합니다.
### 6.3 Provenance 필수 필드
모든 구조화 레코드는 최소한 아래를 포함해야 합니다.
- source_name
- source_url
- fetched_at
- document_id or accession
- parser_version
- llm_prompt_version (해당 시)
- feature_build_version
## 7. 검증 정책
### 7.1 ingestion 검증
- 중복 적재 방지
- 누락 탐지
- 스키마 검증
- 일일 job 성공/실패 로그
### 7.2 파서 검증
- 샘플 수동 검수
- low confidence 큐 별도 관리
- source별 실패 패턴 기록
### 7.3 변경 검증
- 소스 포맷이 바뀌면 adapter contract 테스트 업데이트
- source availability 저하 시 fallback 설계 여부 확인
## 8. 장애 및 fallback 정책
### 8.1 SEC 장애
- 신규 이벤트 탐지 중단
- 과거 저장분만으로는 신규 주문 생성 금지
### 8.2 Alpaca 데이터 지연
- 신규 진입 보류
- 보유 포지션 안전관리만 수행
### 8.3 Secondary source 장애
- attention score를 0 또는 missing 처리
- core 전략은 계속 동작해야 함
## 9. 소스 변경 및 폐기 정책
- 무료 정책이 유료 정책으로 바뀌면 즉시 production source에서 제외 검토
- 쿼터/약관/라이선스 변경은 문서화 후 승인
- 핵심 소스 변경은 Phase 0~1 수준의 재검토 필요
## 10. 승인된 소스 목록 요약
| 분류 | 소스 | 역할 | Production 허용 여부 |
|---|---|---|---|
| Core | SEC EDGAR | 이벤트 원문/XBRL | 허용 |
| Core | Alpaca Basic | 가격/주문/paper | 허용 |
| Core | FRED | 시장 레짐 | 허용 |
| Core | FINRA Short Volume | crowding overlay | 허용 |
| Secondary | Wikimedia | attention | 허용 |
| Secondary | YouTube Data API | attention | 허용 |
| Secondary | Yahoo RSS | headline burst | 허용 |
| Experimental | Google Trends Alpha | theme heat | 제한적 |
| Experimental | Reddit | research-only | 제한적 |
| Disallowed | Paid market/earnings APIs | 유료 데이터 | 금지 |
| Disallowed | X/Twitter paid API | 비용/정책 불안정 | 금지 |
| Disallowed | Unofficial scraping | 약관 리스크 | 금지 |
## 11. 변경 관리
- 새로운 소스를 추가하려면 다음을 충족해야 합니다.
1. 무료 여부
2. 약관/라이선스 검토
3. provenance 저장 가능 여부
4. 핵심 전략을 오염시키지 않을 것
5. 장애 시 graceful degradation 가능 여부
## 부록 A. 현재 확인된 주요 운영 전제
- SEC는 data.sec.gov에서 인증 없이 JSON API를 제공하며, 실시간 업데이트와 bulk ZIP을 지원합니다.
- SEC는 공정접속을 위해 최대 접근률을 제한하고 과도한 자동 요청을 관리합니다.
- Alpaca Basic은 무료 기본 플랜이며, 주식 무료 실시간 커버리지는 IEX 중심입니다.
- YouTube Data API는 기본 일일 할당량이 존재하며, 검색 호출은 비용이 큽니다.
- 공개 YouTube 자막은 공식 API로 자유롭게 대량 다운로드하는 구조가 아닙니다.
- Wikimedia pageviews는 공개 API로 제공됩니다.
- Google Trends API는 alpha 접근 구조입니다.
## 부록 B. 참고 링크
- SEC EDGAR APIs: https://www.sec.gov/search-filings/edgar-application-programming-interfaces
- SEC Developer Resources: https://www.sec.gov/about/developer-resources
- SEC rate limit / fair access notes: https://www.sec.gov/about/webmaster-frequently-asked-questions
- Alpaca Market Data API: https://docs.alpaca.markets/docs/about-market-data-api
- Alpaca rate limit support note: https://alpaca.markets/support/usage-limit-api-calls
- FINRA short sale volume: https://www.finra.org/finra-data/browse-catalog/short-sale-volume-data/daily-short-sale-volume-files
- FINRA short volume explanation: https://www.finra.org/filing-reporting/adf/adf-regulation-sho
- Wikimedia Analytics API: https://doc.wikimedia.org/generated-data-platform/aqs/analytics-api/reference/page-views.html
- YouTube quota cost: https://developers.google.com/youtube/v3/determine_quota_cost
- YouTube captions download policy: https://developers.google.com/youtube/v3/docs/captions/download
- Yahoo Finance RSS: https://finance.yahoo.com/rss/
- Google Trends API alpha: https://developers.google.com/search/apis/trends