Saltar al contenido
Todos los documentos de la biblioteca

Creación y evaluación de datos financieros sintéticos

Artículo Machine Learning for Trading

Resumen

Este capítulo repasa métodos para generar datos financieros sintéticos y decidir si el resultado es útil. Parte del número limitado de trayectorias de mercado observadas y del riesgo de que la búsqueda repetida de estrategias infle el rendimiento aparente de un backtest. Compara referencias de simulación interpretables, como métodos bootstrap y modelos estocásticos, con generadores aprendidos como GAN, modelos de difusión y modelos de lenguaje para tablas estructuradas. Los ejemplos abarcan series de rendimientos, riesgo de cola, estructura temporal, observaciones irregulares y datos financieros de tipos mixtos.

La evaluación se organiza en torno a la fidelidad, la utilidad posterior y la privacidad, que pueden entrar en conflicto. Los diagnósticos incluyen hechos estilizados, dependencia, comportamiento condicional, comparaciones basadas en tareas —como entrenar con datos sintéticos y probar con datos reales— y comprobaciones de privacidad. La principal advertencia del capítulo es que muestras de aspecto plausible pueden fallar ante sucesos raros o cambios en la dependencia, y que los modelos aprendidos pueden filtrar información, amplificar sesgos, sobreajustarse a sus datos de entrenamiento o aportar poca novedad en los escenarios. Las trayectorias sintéticas pueden ampliar el análisis de robustez, pero no sustituyen la evidencia de los mercados reales ni eliminan la necesidad de una validación cuidadosa.

Ideas clave

  • La búsqueda adaptativa repetida de estrategias sobre un historial limitado puede exagerar el rendimiento del backtest.
  • Los métodos bootstrap y de simulación estocástica ofrecen referencias interpretables para generadores aprendidos.
  • La elección del generador debe corresponderse con la estructura de los datos y la tarea posterior.
  • Evalúa los datos sintéticos por su fidelidad, utilidad y privacidad, ya que estos objetivos pueden entrar en conflicto.
  • Las muestras plausibles aún pueden no reproducir sucesos de cola, cambios de dependencia o dinámicas condicionales.

Etiquetas

Texto completo
# ETF Universe (Yahoo Finance)


# ETF Universe (Yahoo Finance)

100 diversified ETFs spanning nine thematic categories — the red-thread
universe for the Ch6 momentum strategy and the ETF case study that runs
through Ch11-20. Daily OHLCV back to 2006.

## Dataset

- **Source**: Yahoo Finance, pulled via the `yfinance` Python package.
- **Coverage**: 2006-01-01 → present, daily OHLCV.
- **Symbols**: 100 ETFs across 9 categories.
- **Size on disk**: ~29 MB.
- **Runtime**: ~2-3 minutes for a full refresh (yfinance uses public
  Yahoo Finance endpoints with light rate-limiting).
- **API key**: not required.
- **License / attribution**: Yahoo Finance data is free for personal
  and educational use (https://policies.yahoo.com/us/en/yahoo/terms/index.htm).
  Redistribution of the raw OHLCV is not permitted; derived analytics
  (returns, features, model outputs) are fine. When publishing results,
  cite Yahoo Finance as the source.

## Categories

| Group                    | Count | Symbols                                                                                          |
| ------------------------ | ----- | ------------------------------------------------------------------------------------------------ |
| US Equity — Broad        | 10    | SPY, QQQ, IWM, DIA, VTI, MDY, IJR, RSP, IVW, IVE                                                 |
| US Equity — Style        | 10    | VTV, VUG, MTUM, QUAL, VLUE, USMV, DVY, SDY, VIG, SCHD                                            |
| US Sectors               | 13    | XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLU, XLV, XLY, XLRE, VNQ, IYR                                 |
| International Developed  | 18    | EFA, VEA, VGK, IEFA, ACWI, ACWX, EWJ, EWG, EWU, EWT, EWH, EWQ, EWL, EWN, EWI, EWP, EWC, EWA      |
| Emerging Markets         | 11    | EEM, VWO, IEMG, FXI, MCHI, EWZ, EWY, EWW, INDA, EZA, THD                                         |
| Fixed Income             | 15    | AGG, BND, BNDX, TLT, IEF, SHY, GOVT, BIL, LQD, VCSH, HYG, JNK, TIP, EMB, MUB                     |
| Commodities              | 9     | GLD, IAU, SLV, PPLT, USO, UNG, DBC, GSG, DBA                                                     |
| Specialty                | 10    | IBB, XBI, SMH, SOXX, KRE, XME, OIH, XRT, ITB, ITA                                                |
| Currency                 | 4     | UUP, FXE, FXY, FXB                                                                               |

Full symbol list + category tagging: `config.yaml`.

## Download

```bash
uv run python data/etfs/market/download.py              # all 100 ETFs
uv run python data/etfs/market/download.py --symbol SPY # single symbol
uv run python data/etfs/market/download.py --dry-run    # plan only
```

Output layout under `$ML4T_DATA_PATH/etfs/market/`:

```
etf_universe.parquet                    # consolidated 100-ETF daily OHLCV (loader target)
ohlcv_1d/ticker=<TICKER>/...            # hive-partitioned per-symbol bars (provider-native)
etf_universe_dictionary.parquet         # symbol metadata (symbol, group, description)
etf_universe_metadata.json              # dataset metadata (row counts, date span)
```

## Loading

```python
from data import load_etfs

df = load_etfs()                                             # all 100 ETFs
df = load_etfs(symbols=["SPY", "QQQ", "IWM"])
df = load_etfs(start_date="2020-01-01", end_date="2024-12-31")
```

Schema (canonical):

| Column      | Type     | Description   |
| ----------- | -------- | ------------- |
| `symbol`    | String   | ETF ticker    |
| `timestamp` | Date     | Trading date  |
| `open`      | Float    | Opening price |
| `high`      | Float    | High price    |
| `low`       | Float    | Low price     |
| `close`     | Float    | Closing price |
| `volume`    | Int      | Trading volume|

## Consumers

- **Ch2**: `01_etf_eda.py`.
- **Ch6**: `01_etfs_setup.py` (strategy definition).
- **Ch8**: `01_price_volume_features.py`, `03_structural_cross_instrument_features.py`, `05_feature_selection.py`, `06_robustness_sensitivity.py`, `07_event_studies.py`.
- **Ch16**: `06_framework_parity.py`, `09_performance_reporting.py`, `11_sharpe_ratio_inference.py`.
- **Ch18**: `01_cost_taxonomy.py`, `03_market_impact_calibration.py`, `06_ml4t_execution_demo.py`.
- **`case_studies/etfs/`**: full pipeline from `01_feasibility_analysis.py` through
  `20_strategy_analysis.py` — the flagship reader case study.

Se muestra íntegramente con atribución según la licencia de la fuente. Licencia: MIT

Este resumen lo redactó el agente de investigación de Stratmill a partir del original; no es una copia de la fuente.