“在使用 DolphinDB 前,我们团队投研语言涉及 Python、C++、R、Matlab 等,多套语言的投研结果通常难以统一,高频投研人员往往还需额外花费精力提升代码性能。”在谈到团队的架构演变时,王萌提到了一些当时急于解决的问题。
目前,恒泰证券顾问服务部的量化团队使用了一套自己摸索出的科学化的量化 IT 架构,既可保证投研计算性能,又能高效完成任务协调、资源共享,同时还能降低量化研究员的工程技术门槛,突破团队的人才瓶颈。
这次我们有幸请到了恒泰证券负责量化高频业务的王萌王总来分享。他的经验与见解将为我们揭示一条新的道路,帮助我们在如何更好地利用物理资源、提高投研效率以及降低人才门槛方面迈出重要一步。
本文整理自恒泰证券顾问服务部王萌的访谈。
架构、性能与成本:量化团队的共性难题
Python 具有丰富的生态环境和易上手的技术特点,一直是量化的热门工程选择。但在需要处理大规模数据、进行复杂并发计算与 I/O 的高频策略研究中,Python 的性能可能成为局限。
同时,Python 的执行效率无法满足时延敏感的交易场景,因此量化团队通常会引入 C++ 来弥补这一问题。
但采用 Python 加 C++ 的技术架构也存在一些弊端。
首先,两种不同的编程语言带来更复杂的开发与维护工作。
团队需要同时管理不同的工具链、库和依赖关系,跨语言的接口开发和调试也可能增加团队的工作量和风险。例如,从投研进入生产环境的过程中,两套代码的转换和数据匹配,会成为问题,
“如果自己用 Python 做投研,再对接到 C++ 中,经常会出现百分之一到千分之五左右的数据点计算差异。“
其次,这种混合编程环境意味着更高的招聘和培训成本。
为了实现业务目标,团队成员需要熟练掌握多种编程技能,并达到较高水平。例如使用 C++ 编译 SO 文件,再通过 Python 调用或粘合。
另一方面,如果想进一步提升 Python 的资源调用率,研究员需要精通线程、进程、协程等复杂写法,养成计算与读写并行处理的代码习惯。这就对研究员的代码工程能力提出了更高的要求。
也就是说,面对复杂的工程需求,既想提高投研交易全流程效率,又希望尽量保证数据一致性,意味着无论是研究员还是 IT 人员,都要具备深厚的技术功底。尤其对于研究员来说,想要发挥自己擅长的金融与数学思想,必须先跨过代码编写这道门槛。
恒泰证券量化团队深耕以 Alpha 为代表的大截面策略和以 T+0 为代表的大时序策略,想要在市场上不断突破,就要持续追求更佳的策略数理表现、更高的工程计算性能和更低的交易延时。而这些,工程方案作基础,人才竞争是关键。
破题关键:专注业务逻辑,降低人才成本
当前市场风格切换迅速、有效信息愈加高维,如果没有敏捷迭代的 IT 架构和易于协作整合的工程方案,就很难在高频领域有所发展。而想要更进一步,则需要更优秀的人才力量支撑。
有没有一套能够同时解决这些问题,还没有太大人才招聘和培训成本的方案呢?
自2020年使用 DolphinDB 以来,恒泰量化团队经过摸索和尝试,总结出了一套适合自己的量化工程架构,不但提升了投研计算性能,还科学合理地解决了任务协调、资源共享以及人才降本问题。
“集合了程序语言与数据库读写,帮我们流批一体地联结了 IaaS、DaaS、PaaS,性能高,易上手,具有不可替代性。“
这是王萌使用 DolphinDB 后的评价。在访谈中,王萌分享了团队实现业务增效与人才降本的实践经验。接下来为大家介绍这套基于 DolphinDB 的一体化投交平台解决方案。
科学的量化 IT 架构
一套完整的投研架构首先需要聚合网络安全和流数据组件等 IT 基础资源,形成基础架构层(IaaS)。对于高频量化业务,需要高性能的存查来支撑数据服务层(DaaS)。同时,需要因子端、模型端和评价端共同组成支撑投研回测业务的平台服务层(PaaS),来提供因子计算、模型和策略评价等功能,并封装各类函数、模型插件等 IT 组件。
恒泰量化团队的 IT 设计架构如下图所示:
其中,数据服务层(DaaS)用于对接和存储全市场行情,包括逐笔、快照、分钟线以及基本面等各类数据。对于数据库来说,有效压缩与高吞吐量的支持可以提升存储性能,毫秒级响应能够保证查询速度,同时一套合适的编程语句是实现高效对接、便捷读写与分析计算的重要前提。在这一层中,由于 DolphinDB 天然融合了数据库与类 Python、SQL 的脚本语言,因此很好地适配了架构需求。
此外,在这套整合了 IaaS、DaaS、PaaS 的高性能计算存储一体化框架中,DolphinDB 替代了 Python 或 C++ 执行各类计算任务。例如通过 Python API,应用可通过会话(Session)在 DolphinDB 服务器上执行脚本和函数,以及在两者之间双向传递数据。Python 作为本地调度语言,粘合、服务整个团队的同时,可以将 DolphinDB 代码发送至远程服务器,远程服务器不留存核心计算代码。
DolphinDB 完备的技术功能点,完美匹配了量化团队所需架构的需求。所有进程都在后台进行管理,实现了会话内与会话间的并行协调,同时研究员也实现了与基础 IT 架构的分离。此外,DolphinDB 的流批一体计算,可以使投研代码无缝迁移到生产交易;其插件式管理,也便于生产交易使用 C++ 整合
这套方案简化了技术栈,同时降低了人才成本,既可以让成员专注业务,又能保证新鲜血液的注入。
”一体化投交平台可以最大化并行任务,这一过程研究员是无感的,是一种更符合科学化的投研架构设计。”
突破性能瓶颈,高频量化更进一步
搭建这样一套平台后,团队的开发效率有了显著提升,这其中,最关键的是使用 DolphinDB 替代了 Python 作为投研工具,突破了高频因子计算的性能瓶颈。据统计,单因子多参数的计算速度比 Python 快了50-100倍以上。
但这也不仅仅是简单的计算速率提升。对于研究员来说,计算复杂因子时,需要调用 DolphinDB 内置的1500+函数,这些函数针对金融场景做了特定优化,因此节省了大量实现算法或工程逻辑的时间与精力。
此外,该团队采用了”股票/因子+时间“组合分区的最佳存储方案,在 DolphinDB 中可以以模块化、函数化的形式,快速实现行情数据和海量因子数据的存储。
投研对接生产环境时,由于 DolphinDB 底层使用 C++ 编译,天然适配了大多数交易平台,可以以插件、内置函数等形式更快、更方便地使投研结果贴合实盘。在提高计算与执行速度的前提下,该团队将数据差异率缩小到了万分之一以内。
最大化资源利用率,投研成本再降
在不断优化策略盈利能力的同时,恒泰量化团队实现了内存与磁盘读写任务的并行调用,使服务器资源利用率最大化。相比 Python 原生的并行能力,
“DolphinDB 可以通过多线程并行使 CPU 与磁盘 IO 都达到100%。”
团队使用原生分布式的 DolphinDB 时,可以天然、透明地实现资源利用率最大化。此外,通过内嵌的分布式文件系统,成员可以便捷管理分区数据及副本,在分布式计算框架下实现负载均衡和高容错。
破局!
”一个量化团队要持久保持市场突破能力,最重要的就是不断吸收新鲜血液,维持团队创新活力。”
随着数学算法、计算机技术等前沿研究更新迭代,量化领域对人才的要求也日益提高——既要懂数学,又要会写代码,量化领域尤其要能写好 C++,同时还要能将其他领域的创新算法融入到金融体系中,追求更优的收益……只有更低的学习成本,才能降低原本需要精通 Python、C++ 的量化人才门槛。
恒泰证券量化团队使用 DolphinDB 近3年,谈及上手体验,王萌表示,由于 DolphinDB 脚本支持标准 SQL 兼容,使用解释性语言编程,因此上手非常容易——只要有一定代码基础的研究员,“一周左右就可以学会”。
在过去的一年半内,该团队通过 DolphinDB 累计开发的 T0 因子和 Alpha 因子均达上万,在统一的策略体系内平均每天有2个投研因子纳入或替代生产因子。
量化机构如何在飞速发展的行业中建立起自己的核心竞争优势?或许从恒泰证券量化团队的使用案例中,可以窥见一二——提升投研交易一体化效率,控制人才成本。量化机构真正需要的,是一套能够帮助研究员们打破代码编写的桎梏,充分发挥数学、金融思想优势,把更多精力投放在业务逻辑上的解决方案。