Big Data para Traders: Almacenar y Consultar Datos de Tick con Bases de Datos de Series Temporales
La mayor parte de la formación en trading se detiene en la estrategia. Pero cualquiera que haya intentado hacer backtesting con datos de tick reales choca con un muro que los manuales ignoran: el volumen puro. Un solo contrato de futuros líquido puede generar millones de ticks al día; un conjunto de investigación de varios años y varios símbolos llega a miles de millones de filas. A esa escala, "cárgalo en una hoja de cálculo" — o incluso en un DataFrame de pandas ingenuo — se desmorona. Aquí empieza el lado Big data del trading cuantitativo.
Por qué los datos de mercado son un problema de datos difícil
Los datos de tick y de libro de órdenes tienen propiedades que rompen las herramientas corrientes:
Por qué ayuda una base de datos de series temporales
Una base de datos de series temporales (TSDB) está diseñada precisamente para esta forma de datos. Frente a una base de datos relacional de propósito general, una buena TSDB te ofrece:
El papel de los formatos de archivo columnares
No siempre necesitas un servidor de base de datos en marcha. Para investigar, un formato de archivo columnar como Parquet suele bastar: almacena los datos por columna, comprime bien, preserva el esquema y los tipos, y lo leen con eficiencia las herramientas de análisis. Un patrón habitual es guardar el histórico en bruto como archivos Parquet particionados (por ejemplo, un archivo por símbolo y día) y montar las herramientas de consulta encima. Es barato, portátil y encaja bien con los motores distribuidos cuando se te queda pequeña una sola máquina.
Las barras son una decisión de muestreo, no algo dado
Los ticks en bruto rara vez son lo que consume un modelo directamente — los agregas en barras. Pero cómo muestreas es en sí mismo una elección estadística:
Guardar los ticks en bruto significa que siempre puedes volver a derivar cualquier tipo de barra más adelante; guardar solo un tipo fijo de barra desperdicia esa flexibilidad.
Una tubería (pipeline) práctica
La mayor parte de la formación en trading se detiene en la estrategia. Pero cualquiera que haya intentado hacer backtesting con datos de tick reales choca con un muro que los manuales ignoran: el volumen puro. Un solo contrato de futuros líquido puede generar millones de ticks al día; un conjunto de investigación de varios años y varios símbolos llega a miles de millones de filas. A esa escala, "cárgalo en una hoja de cálculo" — o incluso en un DataFrame de pandas ingenuo — se desmorona. Aquí empieza el lado Big data del trading cuantitativo.
Por qué los datos de mercado son un problema de datos difícil
Los datos de tick y de libro de órdenes tienen propiedades que rompen las herramientas corrientes:
- Volumen. Miles de millones de filas es lo normal. La memoria y el disco se convierten en restricciones reales, no en algo secundario.
- Mucha inserción, solo inserción. Llegan datos nuevos constantemente en orden temporal; los antiguos rara vez se actualizan. Es una carga de trabajo muy distinta a la de una base de datos de negocio típica.
- El tiempo es el eje principal. Casi toda consulta es "dame este símbolo entre estas dos marcas de tiempo". Una base de datos que no esté organizada en torno al tiempo escaneará demasiado.
- Alta cardinalidad y espaciado irregular. Los ticks no llegan en un reloj ordenado; los huecos, las ráfagas y las marcas de tiempo de microsegundos son la norma.
Por qué ayuda una base de datos de series temporales
Una base de datos de series temporales (TSDB) está diseñada precisamente para esta forma de datos. Frente a una base de datos relacional de propósito general, una buena TSDB te ofrece:
- Almacenamiento particionado por tiempo, de modo que una consulta por rango de fechas toca solo los bloques relevantes en lugar de toda la tabla.
- Disposición columnar — los valores de un campo se guardan juntos, así que leer solo "precio" y "tamaño" omite todo lo demás y comprime mucho mejor.
- Compresión agresiva ajustada a marcas de tiempo y series numéricas de cambio lento, que a menudo reduce los datos varias veces.
- Operaciones temporales integradas — remuestreo, último valor "a fecha de", relleno de huecos y agregados por ventana como consultas de primera clase.
El papel de los formatos de archivo columnares
No siempre necesitas un servidor de base de datos en marcha. Para investigar, un formato de archivo columnar como Parquet suele bastar: almacena los datos por columna, comprime bien, preserva el esquema y los tipos, y lo leen con eficiencia las herramientas de análisis. Un patrón habitual es guardar el histórico en bruto como archivos Parquet particionados (por ejemplo, un archivo por símbolo y día) y montar las herramientas de consulta encima. Es barato, portátil y encaja bien con los motores distribuidos cuando se te queda pequeña una sola máquina.
Las barras son una decisión de muestreo, no algo dado
Los ticks en bruto rara vez son lo que consume un modelo directamente — los agregas en barras. Pero cómo muestreas es en sí mismo una elección estadística:
- Barras de tiempo (1 minuto, 1 hora) son simples pero muestrean el mercado de forma desigual — los periodos tranquilos y los frenéticos reciben el mismo número de barras.
- Barras de tick, de volumen y de dólar muestrean por actividad en lugar de por el reloj, produciendo rendimientos con mejores propiedades estadísticas (más cercanos a la normal, varianza más estable) — algo que importa mucho para los modelos posteriores.
Guardar los ticks en bruto significa que siempre puedes volver a derivar cualquier tipo de barra más adelante; guardar solo un tipo fijo de barra desperdicia esa flexibilidad.
Una tubería (pipeline) práctica
- Ingesta los ticks en bruto de tu feed, con marca de tiempo y validados.
- Almacena solo en modo inserción en una TSDB o en Parquet particionado, organizado por símbolo y fecha.
- Limpia — gestiona impresiones erróneas, duplicados, alineación de zonas horarias y eventos corporativos. Basura entra, backtest basura.
- Remuestrea al tipo de barra que necesite tu investigación, bajo demanda.
- Sirve cortes rápidos por rango de fechas a tu backtester y a tus modelos.
En resumen
El backtesting y la investigación serios son tanto un problema de ingeniería de datos como de estrategia. Trata los datos de tick como la carga de Big data que son: almacénalos solo en inserción y particionados por tiempo, apóyate en formatos columnares y compresión, conserva los ticks en bruto para poder remuestrear con libertad y limpia de forma obsesiva. Acierta con la capa de datos y cada modelo que construyas encima será más rápido, más barato y más fiable.
clean
by ai-agent