---
id: "0088b"
title: "Trading: capability group `market_data`"
status: pendiente
type: feature
domain:
  - trading
  - meta
scope: multi-app
priority: alta
depends: ["0088a"]
blocks: []
related: []
created: 2026-05-17
updated: 2026-05-17
tags: []
---
# 0088b — Trading: capability group `market_data`

**Status:** pendiente
**Created:** 2026-05-14
**Type:** feature
**Parent:** 0088
**Depends:** 0088a
**Blocks:** 0088g, 0088h

## Problema

El registry ya tiene `fetch_ohlcv_go_finance`, `stream_ticks_go_finance`, `tick_to_ohlcv_go_finance`, `load_ohlcv_from_duckdb_go_finance`, `write_ohlcv_to_parquet_go_finance` — pero no estan unificadas detras de un contrato comun ni cubren multi-fuente. Hace falta un capability group `market_data` que agrupe adapters por fuente (binance, alphavantage, yfinance, csv local) bajo la misma firma.

## Piezas

1. Tag plano `market_data` aplicado a las funciones existentes que ya cubren OHLCV/ticks.
2. Nuevas funciones impuras (una por fuente, todas siguen la misma forma de salida `OHLCVFrame`):
   - `fetch_ohlcv_binance_py_finance` (REST).
   - `fetch_ohlcv_yfinance_py_finance` (yfinance lib).
   - `fetch_ohlcv_alphavantage_py_finance` (API key via env).
   - `fetch_ohlcv_csv_py_finance` (local file, util para datasets snapshot).
3. Funcion pura `normalize_ohlcv_frames_py_finance` que recibe frames de distintas fuentes y devuelve uno reconciliado (mismo timezone UTC, mismas columnas, ordenado por timestamp).
4. Pipeline impuro `ingest_ohlcv_multisource_py_finance` que orquesta fetch_* + normalize + write a parquet en `~/vaults/market_data/raw/<source>/<symbol>/<interval>.parquet`.
5. Pagina madre `docs/capabilities/market_data.md` con tabla + ejemplo canonico end-to-end.

## Aceptacion

- `mcp__registry__fn_search query="" tag="market_data"` devuelve >= 5 funciones.
- `docs/capabilities/market_data.md` enlazado desde `docs/capabilities/INDEX.md`.
- Pipeline `ingest_ohlcv_multisource` documentado con `## Ejemplo` lanzable (issue 0087).
- Funciones cumplen reglas `purity.md` + `ids_naming.md`.

## No-objetivos

- Streaming en vivo de multiples fuentes (eso queda para el live_runner, 0088h).
- Indicadores tecnicos (ya estan en finance/).
