12 votos

¿Cuál es la forma más eficaz de almacenar los datos de las opciones y las series temporales para el backtesting?

Me gustaría saber qué base de datos usarían ustedes para almacenar alrededor de 500GB-1TB de datos de opciones y series temporales de tick.

La idea es utilizarlo para backtesting por lo que tendría que ser lo más eficiente posible.

También me interesa saber qué servicio utilizaríais para almacenarlo online y que sea accesible a más gente.

17voto

Diondon Puntos 1

Si el único propósito es hacer backtest con los datos, el principal (en algunos casos, sólo ) es buscar hasta una hora de inicio y leer todos los datos en serie hasta una hora de finalización. Entonces, hay un fuerte argumento para almacenarlo en archivos planos con codificación binaria, es decir, volcar los structs de datos en su disposición en memoria directamente al disco.

Almacenarla con un SGBD como kdb o Vertica es un gran desperdicio porque (i) no se necesita ninguna de las funcionalidades de consulta, (ii) hay una curva de aprendizaje y mantenimiento importante, (iii) las licencias pueden ser caras, (iv) hay menos potencial de optimización.

Si tiene un caso de uso ocasional para explorar los datos con un REPL o un lenguaje de scripting, podría tener sentido utilizar un formato de disco binario con alguna estructura, como HDF5 o Parquet.

También me interesa saber qué servicio utilizaríais para almacenarlo online y que sea accesible a más gente.

Si quieres que sea accesible a otros a través de la WAN, esto es principalmente una cuestión independiente de la infraestructura y la configuración de la red. Podrías alojarlo en tus propias máquinas y abrir tu cortafuegos, pero eso requiere cierta experiencia y un desembolso de capital inicial. Además, se necesita un trabajo importante para optimizar el almacenamiento para que soporte un gran número de lecturas simultáneas y para escalar el almacenamiento más allá del factor de forma física 2-4U de un solo host.

El uso de un proveedor de la nube es una buena opción en este caso, ya que reduce parte de la complejidad de la gestión de la red y el almacenamiento por sí mismo y gran parte del desembolso inicial de capital. Por ejemplo, podrías utilizar AWS S3 y almacenar esos archivos con nombres clave bastante similares a como los almacenarías en el almacenamiento local POSIX. Esto facilita a los usuarios el acceso a los datos a través de la API HTTP/S3. También podría utilizar EFS si necesita la semántica POSIX o el mapeo de memoria.

Alternativamente, si todavía quieres autoalojar porque tienes una huella muy pequeña (digamos, <30 TB y <10 hosts de backtesting) y sólo necesitas que los usuarios internos accedan a los mismos datos a través de VPN o LAN, una buena opción es configurar un archivador Btrfs o ZFS. Puedes pagar una pequeña prima para conseguir uno ya construido de Synology o FreeNAS y puedes exponer los datos a tus usuarios internos a través de un servicio VPN como Tailscale.

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