Data sources para backtest de la strategy¶
Qué data necesita la strategy recomendada + dónde obtenerla con/sin budget. Resuelve un bloqueador real para Fase 0 del rollout.
Qué datos necesita¶
Para la strategy en analysis/recommended-strategy-for-user:
- S&P 500 constituents point-in-time (mensual) 2000-2026.
- Daily bar prices (OHLCV) adjusted splits + dividends.
- Fundamentals point-in-time: ROE, debt/equity, P/E, P/B, operating margin. Idealmente con restatements.
- Factor data si se usa factor momentum: returns de factores value/quality/momentum históricos (AQR datasets free).
Setup mínimo viable ($0)¶
| Data | Fuente | Cobertura |
|---|---|---|
| Constituents | fja05680/sp500 GitHub | 1996+ monthly |
| Prices | yfinance (Python) |
EOD desde ~1970 |
| Fundamentals | SimFin free tier | 20+ años, limited API calls |
| Factor returns | AQR datasets | 1926+ factor monthly |
Pros: costa $0, suficiente para validar sistema y primera pasada de backtest. Cons: yfinance puede fallar por cambios en scraping; sin restatements de fundamentals; monthly-only constituents (no intra-mes changes).
Setup serio (~$150-250/mes)¶
| Data | Fuente | Costo |
|---|---|---|
| Constituents + prices (US equity universe histórico) | Norgate Data NDU | ~$40/mes |
| Fundamentals point-in-time con restatements | Sharadar (Nasdaq Data Link) | ~$100-200/mes |
| Real-time prices (post-MVP, live trading) | Polygon.io o Tiingo | ~$30-50/mes |
Pros: point-in-time real, sin survivorship bias, restatements incluidos. Backtest tiene validez académica. Cons: ~$150-250/mes compromiso.
Data pitfall #1: Survivorship¶
Si usas S&P500 actual (503 companies a 2026) como universe histórico → estás excluyendo las que quebraron, fusionaron, fueron adquiridas. Overstates returns +1-4%/año, Sharpe inflado, max DD subestimado.
Fix: fja05680/sp500 (free) tiene constituents históricos mensualmente. Norgate tiene point-in-time real con delisted included.
Data pitfall #2: Fundamentals sin restatements¶
Muchas APIs cheap reportan fundamentals de lo que la empresa dijo al filing → después suelen ser corregidos (restatements). Si tu backtest usa los números finales pero "desde la fecha del filing original", es look-ahead disfrazado.
Fix: Sharadar es gold standard retail porque reporta lo que se sabía en cada momento + restatements marcados.
Data pitfall #3: Adjusted prices¶
yfinance y otros aplican split/dividend adjustments retro. Un precio "ajustado" de 2010 refleja splits posteriores — OK para retornos, NO OK para decisions históricas (un trader en 2010 vio el precio no-ajustado). Usar adj_close para signals y close crudo para ejecución simulada.
Data pitfall #4: Opciones / derivatives¶
Out of scope por ahora, pero si se explora: opciones data es caro y de calidad variable. CBOE DataShop, OptionsDX — $100-500/mes.
Factor data para combo momentum + quality + value¶
La strategy usa composite score. Cada factor tiene datos free:
- Momentum: calculable de prices (12-month - 1-month return).
- Quality: requiere fundamentals (ROE, debt/equity, margin) → SimFin gratis o Sharadar pagado.
- Value: P/B o P/E → mismo.
AQR libera datasets de factor returns históricos gratis — útil para benchmark vs factor puro.
Plan secuencial recomendado¶
- Semana 1: clonar fja05680/sp500, armar pipeline yfinance → pandas DataFrame con prices por ticker.
- Semana 2: SimFin free tier para fundamentals básicos; ROE, debt/equity para los ~500 tickers.
- Semana 3: backtest momentum-only primer pass con VectorBT.
- Semana 4: agregar quality + value, combo score.
- Si los números son prometedores: upgrade a Norgate + Sharadar antes de real money.
Relaciones¶
- Source: sources/data-sources-point-in-time.
- Enables: concepts/backtest-methodology (plan específico de backtest).
- Resuelve: PP-09 en
gaps.md. - Previene pitfalls documentados en: concepts/backtest-methodology.