新闻

不确定性市场下的机构策略投研平台探索

2024.07.22

近半年来,市场走势持续缩量,增量资金匮乏,与此同时,各类量化交易新规潮涌。错综复杂的市场环境下,投资者一方面需要保证 β 收益,努力在市场波动中保持相对稳定的盈利,另一方面也要深挖 α 潜力,捕捉能够带来超额收益的机遇。

尽管市场环境波谲云诡,市场的交易撮合机制却依然稳固,其时间优先、价格优先的成交本质未曾改变。因此,降低交易成本提高交易效率正成为实现盈利目标的关键所在。

此时,投资者往往会面临“向内求”与“向外求”这两种抉择。“向内求”,意味着需要整合市场中的各类信息,构建更为复杂精细的交易策略,并确保策略的平衡度。而随着机构客户逐渐成为市场的持仓和交易主体,越来越多机构投资者开始选择“向外求”,将目光投向外部,与券商等金融机构合作,期待借助其成熟的一体化投研交易能力,在激烈的市场角逐中脱颖而出。

面对金融市场的深化改革,近年来光大证券积极布局数智化服务,特别是在机构服务领域,逐步构建了一站式技术服务生态,更为注重金工开发和量化投资的机构打造了一款专业的量化策略平台。近日,我们有幸邀请到了光大证券信息技术总部的量化投研平台架构师邓博来到 D-Day 活动现场,就该平台的构建经验与实践进行了深入分享。

本文整理自光大证券量化投研平台架构师邓博在 DolphinDB 交流会中的分享。

化零为整:量化投研多环节整合

工欲善其事,必先利其器。要想搭建一套能够满足机构投资需求的投研平台,首要之务在于明确量化投研的关键环节及其目标。量化投研包含数据接入、存查管理、特征工程、模型训练、策略调试、对接生产环境中的柜台报盘系统等流程,各个业务板块高效协同,其中如下几大环节尤为关键:

投研的本质就是从历史数据中提取有效信息,对未来市场做预测,因此可以说数据是量化投研的起点。常见的量化数据包含市场量价数据、基本面数据与另类数据,这些数据不但规模庞大,类型繁多,还包含了大量噪声与异常值,需要进行清洗处理。其中行情数据尤为复杂:交易数据具有不唯一性、报价数据的档数较多、逐笔委托与成交的数据量更是巨大……因此,一个理想的数据库系统不仅要能驾驭海量数据的存储需求,还必须针对金融数据的特性,对存储功能进行量身定制。

收集数据后,需要发掘数据背后的潜在规律,并从中提取特征,这一过程也就是俗称的“因子挖掘”。量化特征工程中,特征的提取、选择和构造是核心环节,Python 是常用的技术栈,辅以 Scikit-learn 机器学习库等工具,研究员可以从数据中提炼出对投资决策有价值的特征。然而对中高频行情数据进行特征工程时,由于该类数据具有极高的时间敏感性和庞大的数据量,Python 的全局解释器锁(GIL)等设计带来的性能瓶颈会变得尤为突出,导致数据处理效率显著下降。

从数据中挖掘出因子后,研究员通常会进一步使用深度学习框架,通过训练模型对模型进行参数调优,不断调整和优化交易策略。传统的量化策略开发流程中,通常会使用 Python 或第三方工具生成因子,并以文件格式存储。但随着因子数据量激增,因子数据与深度学习模型的集成工程化和成本问题会随之产生。如果选择自行开发转换工具,将因子数据转化为 PyTorch、Tensorflow 等深度学习框架可识别的 Tensor 格式,这无疑对研究员的编程能力提出了不小的挑战。

在量化策略上线之前,通过因子评价策略回测能够验证因子的有效性、策略的可行性。因子评价环节,借助常见的分析工具如 Alphalens 等 Python 库,研究员能够识别因子中是否存在超额收益,探索如何通过合理的参数设置来最大化这些超额收益。策略回测阶段,研究员则会选择 backtrader、zipline 等开源框架,或者使用 Java、C++ 等自行搭建回测框架,但当面对中高频交易策略时,上述技术栈在数据查询的即时性和计算密集型任务的处理上,性能或显不足。

最后来到实盘交易环节。实盘交易中,策略将直接面对市场的实时波动和不确定性,其盈利能力、风险控制能力和适应性将通过实际交易操作经受检验。目前各大厂商面向策略风控、算法交易等场景推出了一系列成熟的应用产品,但普遍有着价格不菲、高度定制化、二次开发不便的特点,可能还存在性能瓶颈。

实盘产生的真实数据将回流到数据库中,供研究员评价分析,进而指导未来的投研工作。至此,整个量化投研流程形成了一个完整的闭环。

由于一般量化团队的 IT 建设能力有限,需要 IT 部门协助从头搭建这样一套基础设施平台,然而多个技术系统的集成将会导致架构冗余,这势必会带来更高的调试和运维成本。此外,不同技术栈之间会产生数据交互等问题,譬如在模型训练和因子管理等环节,需要 IT 部门自行“造轮子”,既耗时又可能性能不佳。同样,鉴于交易生产环境对 C++ 的刚性需求,如何确保投研阶段基于批处理系统的成果能够准确且高效地与交易系统中的流计算系统对接,也成为了一个亟待解决的问题。

那么有没有一套方案,能够精简技术栈,从而无缝融合投研与 IT 业务,一次性解决上述所有挑战呢?

告别散、乱、难管理:一站式量化平台加速投研

结合多年服务机构客户的经验,光大证券希望为其提供一套全面、高效的量化策略投研平台,客户只需携带投研的核心内容,即可轻松实现“拎包入住”。

这样一套集成了投研全流程的平台,对存储性能、算法逻辑、以及计算效能方面均提出了极高的要求。近年来,随着 DolphinDB 逐渐成为量化行业的标配工具,光大证券信息技术团队也接触到了这一产品。经过严格的选型和测试,光大证券最终选择将 DolphinDB 作为投研平台的底层基座,在此基础上整合投研数据、回测仿真等投研能力,输出策略信号,为金工开发、智能投顾等多个应用场景赋能。

光大证券量化策略平台架构如下图所示:

海量异构数据,高效整合落库

数据量庞大是投研数据的显著特点。对于证券行业而言,全量历史数据大概在百 T 级,而随着系统的深度使用,结果数据很容易达到 PB 级。传统的关系型数据库及文件存储等方式存在压缩比低、性能优化不足等痛点。DolphinDB 的设计采用原生分布式架构,能够在多个节点间均衡地分配数据负载。DolphinDB 还支持数据分区,能够提高数据吞吐量、保证数据文件的高效并行读写、显著降低系统响应延迟。

此外,DolphinDB 还针对行情数据的特点,对存储功能进行了大量针对性优化:底层架构原生支持不唯一数据存储、支持数组类型以存储多档报价数据、提供的宽表存储可以更好地支持面板数据分析、co-location 存储架构更适合逐笔委托数据和逐笔成交数据的关联计算。在存储因子数据时,DolphinDB 则提供了“时间+因子/标的”的组合分区方式,能够实现海量因子数据的灵活存查。

光大量化策略平台的投研数据层所采集的外部源数据中,涵盖了股票、基金、债券、期货、财务等多种数据类型。其中借助 DolphinDB 开发的一系列丰富的行情插件,沪深交易所、期货交易所和诸多厂商提供的实时行情可以通过 DolphinDB 脚本语言丝滑接入平台,极大增强了投研数据层的扩展性。

同时,由于原始数据分散存储于不同的系统中,以不同的格式和结构存在,为保证后续分析的准确性和效率,需要在采集完成后,及时对异构数据进行解析、校验、清洗和处理。DolphinDB 提供了多样的函数,实现对数据的去重、异常值处理、缺失值填充等操作,还提供了一系列时序数据处理工具,能够高效实现时区转换、时间精度转换以及时间类型计算,为金融时序数据的后续分析处理提供了便利。

一键加速:平台效率与便捷性的双重提升

谈及 DolphinDB 为投研平台带来的改进,光大架构师最深刻的感受是业务正向更便捷、更高效的方向演进。

常见的因子挖掘实践中,使用关系型数据库或分布式文件系统存储数据、结合 Python 做计算的这类技术栈,存在数据压缩比低、额外硬件资源成本增加、计算性能不佳等问题。更重要的是,这样一套拼接的因子挖掘方案,会导致数据进行跨平台传输,从而增加计算的耗时。光大证券的量化策略平台采用了 DolphinDB 提供的库内一体化因子计算方案,在数据库内涵盖了因子数据读取、计算的全过程,使用上更为简单、方便。此外,DolphinDB 的库内 SQL 计算更易于实现因子计算调用及并行调用,其成熟的内置函数同样缩减了整体代码量,因此,一体化平台的计算性能远优于传统技术方案。邓老师表示,“客户基于上交所 2020 年全年数据计算 Alpha101 全量因子数据,比普通 Python 写法提速 50 倍”

进行因子模型训练时,研究团队需要手动转化数据格式来对接深度学习框架,这增加了无谓的人力与时间成本。光大量化平台使用了 DolphinDB 开发的 AI Dataloader,可以将数据在库内处理成 PyTorch 或 TensorFlow 等深度学习框架支持的数据格式,直接传入 AI 框架,还支持以流水线作业的方式,增量读取和转换数据。这一条对接深度学习的数据高速通道,不但加速了数据传输过程,还将研究团队从“造轮子”的重复开发工作中解放出来,为因子数据与深度学习模型的集成工程化提供了更多可能。

在策略回测环节,用户也无需搜寻其他工具来搭建回测框架,同样可以通过平台提供的模块化解决方案,轻松实现回测。在基于 DolphinDB 开发的回测方案中,DolphinDB 提供的回放功能将一个或多个不同结构的分布式表中的数据严格按照时间或者按指定多列排序顺序回放到流表中,模拟交易环境;DolphinDB 使用 C++ 语言开发的模拟撮合引擎插件,可以基于快照和逐笔行情数据,模拟委托订单的撮合;借助 DolphinDB 的回测插件,用户可以在其中自定义指标、支持基于逐笔、快照、分钟和日频行情进行策略回测、获取回测的收益、持仓、交易明细等信息。这套系统化回测方案极大地减少了策略回测,尤其是中高频策略回测的整体耗时,同时还能让研究员更专注于策略的开发和优化,从而加速投研全链路。

当需要将策略对接实盘时,用户可以通过光大的量化平台,将投研阶段开发的核心因子表达式直接应用于生产环境的实时数据中。在生产环境中,DolphinDB 提供了实时流计算框架,其中响应式状态引擎内置了大量常用的状态算子,支持自定义状态函数,也可与其他流式计算引擎以流水线的方式任意组合,兼顾了高效开发和计算性能的优势。当实时行情订阅、行情数据收录、交易实时计算、盘后研究建模,全部可以用同一套代码完成,且历史回放和生产交易当中的数据完全一致时,用户就无需再维护两套代码,不但节约了开发成本,还规避了两套体系可能带来的批计算与流计算结果不一致的问题。提及流批一体的技术实现,邓老师表示,“与传统方案相比,客户整体开发上线周期缩短了八九成”

除了从根本上解决了多套投研框架维护的繁重负担以及工程化实现效率低下等难题,DolphinDB 还精心打造了更加易用的投研工具箱,旨在帮助用户翻倍提效。

DolphinDB 内置的近 2000 个函数,适用于多种数据类型和结构,且均针对金融业务场景进行了调优。研究员在计算复杂因子时可以直接调用,因子挖掘效能得以提升。同时,DolphinDB 还支持 TA-Lib、MyTT、WorldQuant 101 Alpha、国泰君安 191 Alpha 等常用因子指标库,研究员无需从头实现复杂的因子计算逻辑,节省了大量时间与精力。

因子管理平台提供了从数据处理、因子构建、因子评价到策略回测的量化一站式解决方案,同时考虑到了权限管理、代码管理和任务监控等一系列运维需求,研究团队不必耗费过多精力在因子开发的管理和运维上,可以更关注因子策略本身。

细微之处见真章

在投研完成后,机构用户的各个部门可以方便地调用经由投研服务层生成的策略信号、策略模型、投资组合,以满足实际场景下的应用需求。

邓老师感慨,在投研平台建设中,与数据和运算层面的优化相比,合理规划控制层面也是券商面对的更大挑战:如何防止数据泄露和非法访问、如何合理分配管理系统资源、如何及时发现潜在问题并进行预警,减少系统宕机时间和数据损失……

DolphinDB 在设计时兼顾到了这些细枝末节的痛点。通过提供角色和组的概念,DolphinDB 灵活且安全的权限控制策略确保了数据的访问安全;DolphinDB 支持用户级别的资源跟踪功能,涵盖了对数据节点资源利用和用户操作的监控;在监控告警方面,系统的各项关键指标既可以通过 DolphinDB Dashboard 展示,也支持与 Grafana 等第三方平台集成展示,此外,DolphinDB 还支持灵活的告警策略配置,为数据库的稳定运行和故障预防提供了有力保障。

结语

在日趋复杂的市场环境下,光大证券的量化投研平台为机构客户挖掘 α 潜力、实现盈利目标提供了有力支持。展望未来,DolphinDB 将与光大证券携手并进,不断探索投研技术的创新边界,通过持续的技术革新和平台升级,为投资者提供更为全面、精准、智能的投研服务。