量化数据中台系列(一)——技术架构概述

      本文从“量化数据存储”和“因子计算引擎”两大模块介绍量化数据中台的技术架构。

      所有的技术架构,以满足实际应用要求为目标,所以本文所设计的技术架构以满足“量化交易实用性”为目的,不追求技术上的极致性能!!!

一、量化数据存储

     1.量化交易的基础数据类型
     1.1 行情数据

      包含level-2(逐笔成交、逐笔委托、十档盘口、委托队列)、level-1(五档盘口、最新价)、分钟K线、日K线、周K线、月K线等.

     1.2 资讯数据

      财务数据(资产负债表、现金流量表、利润表、业绩预告等)、股东数据、龙虎榜数据、板块成分股、行业成分股、除权除息数据等

     1.3 另类数据

      产业链数据、舆情数据、宏观数据等;

     2.数据存储的技术架构

      为保障数据的一致性和准确性,配合量化因子的计算技术框架,数据存储分为服务端和客户端。

      2.1 服务端实现主备切换、数据落库、数据清洗、高速读写等功能;

      2.1.1 行情数据使用时序数据库clickhouse

      选型原因如下:

      行情数据是时序数据,所以需时序数据库,目前开源的、免费的、支持多核、支持分布式,只有clickhouse较为免费、简单、实用。

      kdb国外用的比较多,但是太贵,且易用性较差;

      influxDB的集群版本,太贵;

      dolphinDB的集群版本也收费;

      clickhouse优势:

  •             数据底层以列式存储

  •             利用单节点的多核并行处理

  •             为数据建立索引一级、二级、稀疏索引

  •             使用大量的算法处理数据

  •             支持向量化处理

  •             预先设计运算模型-预先计算

  •             分布式处理数据

      2.1.2 资讯数据和另类数据,选用非关系型数据MongoDB,从数据结构和性能上比MySQL关系型数据库都更合适

      2.2 客户端

     客户端需要从服务端拉取数据并完成因子计算,技术选型需“因子计算性能”与“因子计算易用性”整体考虑,最终方案选用HDF5文件格式。

选型原因如下:

(1)读取数据的性能

相比较与各类数据库、CSV、excel等格式,HDF5读取到内存为Dataframe格式性能最快。测试很多次了的结论了,但测试数据没保留,就不赘述了;

(2)与因子计算的相适应

因子计算全部都需改为dataframe或numpy格式之后,再计算,hdf5适用性比较好。

二、因子计算引擎

     为满足因子计算的实时性和巨大数据量的要求,设计分布式计算引擎的技术框架;

      使用Celery构建适用于分布式因子计算框架;

     Celery是Python开发的简单、灵活可靠的、处理大量消息的分布式任务调度模块,专注于实时处理的异步任务队列。

      (1)消息中间件

      broker 提交的任务函数都放在这里,消息中间件使用rabbitmq;

      (2)任务执行单元

      worker,是真正执行任务的的地方, 每个进程中执行函数;

      (3)结果存储

      backend, 函数return的结果都存储在这里, 借助于redis 数据库;

      数据存储的客户端有N台服务器,每台服务器的CPU有M个核心,故总计有N*M个 worker;每个worker中执行不用股票的相同因子计算函数(包含模型计算逻辑和数据缓存功能);

      worker计算完成因子,celery自动将计算结果存储到redis中,策略从redis中实时读取因子计算结果产生交易信号,或计算得出的因子历史数据存储到clickhouse中;

猜你喜欢

转载自blog.csdn.net/zhanggao2014/article/details/130572781