8 votos

¿Qué base de datos elegir para almacenar y agregar datos financieros?

Estoy planeando almacenar datos del mercado de valores en tiempo real y agregar ticks para dibujar un gráfico de clúster de volumen. Algo como esto:

Introduce aquí la descripción de la imagen

Cada tick (o segundo) de datos se agrupará por período (1,5,10 minutos; 1,4,24 horas), tipo (compra, venta) y precio; sumando el volumen. El resultado será algo así:

[
  {timestamp: "2016/01/30 15:04:00", período: "1m", precio: 123.45, compra: 2345, venta: 1998},
  {timestamp: "2016/01/30 15:04:00", período: "1m", precio: 123.46, compra: 3111, venta: 1040},
  {timestamp: "2016/01/30 15:05:00", período: "1m", precio: 123.46, compra: 1421, venta: 3475},
  {timestamp: "2016/01/30 15:05:00", período: "1m", precio: 123.47, compra: 6056, venta: 9138},
]

Para entregar ticks de acciones a la base de datos, utilizaré nats (https://github.com/nats-io/gnatsd). ¿Qué base de datos puedo usar para almacenar y agregar en tiempo real?

0 votos

Estoy consciente de que algunas personas utilizan MongoDB stackoverflow.com/questions/23198100/…

1 votos

¿Qué hay acerca de KDB+ kx.com/kdb-plus-faq.php?

5voto

Dan Puntos 138

Echa un vistazo a Arctic. Es una base de datos Mango DB desarrollada por Man AHL para almacenar sus series temporales financieras. Se dice que es realmente buena. Pero yo aún no la he probado.

0 votos

¿El Ártico es la clase de Python para generar consultas a MongoDB? ¿Algo similar a ActiveRecord para bases de datos relacionales, pero especializado en finanzas?

0 votos

Creo que es similar. Es un marco en el que podrías usar python para almacenar, consultar tus datos desde MongoDB. y han hecho mucho trabajo para ajustar el rendimiento. No puedo estar seguro porque no lo he usado yo mismo.

2voto

Luther Baker Puntos 2656

Como dijo @Nicholas en un comentario, KX/KDB+ es popular en finanzas para este propósito. En mi opinión, el envío de mensajes directo y la agregación local en la máquina pueden ser el mejor método en este caso.

0 votos

Muy propietario y necesita expertos para trabajar con +q, es mejor optar por tecnología de código abierto

0 votos

KDB+ es extremadamente caro: cifras de 6 dígitos por año en adelante. Tienen una versión gratuita, pero está limitada en el tiempo y estrictamente para uso no comercial. Se prohíbe cualquier actividad generadora de ingresos.

2voto

KernelM Puntos 3234

Hay muchos tipos de bases de datos allá afuera, cada una especializada para diferentes casos de uso. Las principales partes que deberías considerar son:

  1. Usar una base de datos de series temporales, ya que pueden manejar datos marcados con marcas de tiempo (por ejemplo, ticks) de manera más eficiente que cualquier solución SQL usando agrupación y otros métodos.
  2. Usar una base de datos con un buen lenguaje de consulta, por ejemplo para agregar múltiples valores, calcular máximos y mínimos, etc.

Por lo tanto, la mejor solución en mi opinión actualmente disponible sería InfluxDB. No solo por la API fácil para insertar y consultar datos, sino también por todo el stack de InfluxData.

1voto

Raptor007 Puntos 121

Apache Cassandra sería una buena opción. Es una tienda de filas particionada, donde las filas se organizan en tablas utilizando una clave de partición.

Es común almacenar datos de series temporales, simplemente podrías usar un identificador y un período como clave de partición. Cassandra está optimizada para escrituras y es fácil de escalar, pero necesitas al menos 3 servidores para que funcione.

0 votos

No específicamente destinada a series temporales, influxdb o timescale son más específicos para este caso de uso

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X