采用 DolphinDB 构建的策略回测系统,涵盖了从信号生成、回测执行到策略优化的完整流程,在海量数据实时分析、策略动态调整与验证等环节中展现了极高的效率和稳定性,能够有效应对中低频策略开发的核心需求。
我们以基于指数信号的股票投资组合交易策略为例,通过这个典型的中低频交易回测案例,来为大家介绍如何利用 DolphinDB 的回测引擎构建策略框架、模拟交易过程并分析回测结果。
P.S: 阅读原文获取回测案例完整脚本,另还有基于成分股信号的股指期货回测案例分享~
股票投资组合交易策略逻辑
近年来,金融市场的复杂性和不确定性显著增加,投资者面临着市场波动性增强、指数与个股联动性加剧以及多因子模型应用场景多样化的挑战。在此背景下,基于指数信号的股票投资组合交易策略应运而生。
基于指数信号的股票投资组合交易策略通过结合技术指标信号和动态风控机制,进行股票投资组合的筛选与调整,以实现风险控制和收益优化。

如上图所示,该策略的核心逻辑可分为选股、权重分配、整体持仓调整等步骤:
计算技术指标:首先调用 mytt 模块计算所需技术指标,用于后续操作。
选择初始建仓标的:遍历所有股票,根据一系列趋势指标和动量指标,对股票进行评分和排序,筛选符合买入条件且不符合剔除条件的股票,作为最终投资组合。本策略选取的指标为 RSI 和长短期均线交叉。
个股风控:根据股票波动率和 RSI 进行个股风险控制,限制波动率超标的股票权重、限制单只股票的最大和最小持仓比例;当检测到 RSI 信号小于70时,解除风控。
个股权重归一化:将风控后确定的最终权重进行归一化,作为各种建仓各个标的的权重。
仓位调整:根据各个股票的预期权重算出预期市值,和现有持仓市值进行比较,当预期市值大于持仓市值时,执行买入操作;当预期市值小于持仓市值时,执行卖出操作。
用 DolphinDB 回测插件实现上述策略
DolphinDB 实现了事件型回测引擎插件,回测引擎中提供了多个事件函数,用户可以在策略初始化函数中定义指标,在其他相应的回调函数中编写自定义策略逻辑,然后配置相应开始和结束日期,执行策略回测,全流程便捷高效。

我们来为大家拆解一下其中的关键步骤——设置回调函数:
设置策略回调函数
检查是否为交易时间。首先检查当前时间是否为预设的交易时间(activeTime),如果不是交易时间,直接返回,避免不必要的运算。
初始化信号和列表。初始化两个列表,buyList(买入列表)和 deleteList(剔除列表),分别用于存储符合买入条件的股票和符合剔除条件的股票。
遍历每只股票,计算买卖信号,筛选出待买和待卖标的。
筛选出最终投资组合列表并进行个股风控。
个股权重归一化。使所有个股权重的总和等于 1,保证所有资金被合理分配到投资组合中的每只股票。
根据预期市值和现有持仓市值计算持仓市值变化。
遍历待卖字典和待买字典,根据预期市值和现有持仓市值的差异绝对值从大到小卖出和买入。
即刻 GET 回测插件
为了提升用户的回测体验,DolphinDB 推出了更快速、更精确、支持更多品类且触发规则更灵活的回测插件,以及提高回测精度的模拟撮合插件。用户可以在回测插件中自定义指标,基于逐笔、快照、分钟和日频行情进行策略回测,并获取回测的收益、持仓、交易明细等信息。模拟撮合引擎插件则支持沪深交易所 Level-2 逐笔行情和快照行情,实现了与交易所一致的 “价格优先,时间优先” 高精度撮合,还支持基于多种行情数据的撮合模式,提供丰富的撮合配置,以期模拟真实的实盘交易环境。







