股票组合管理日频回测案例

本文给出基于外部目标权重文件与行情数据,构建日频自动调仓(再平衡)回测系统的背景与目标,并提供实现思路与示例内容。

Source: https://dolphindb.cn/blogs/250

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部提供活动报名提示与链接入口。

股票组合管理日频回测案例(文章信息与引言)

文章提供标题、作者与日期信息,并引出基于外部权重文件与行情数据构建自动调仓回测系统的背景与目标。

1. 背景介绍

本节定义基于外部持仓权重文件的被动型组合再平衡回测目标与覆盖内容。

1.1 股票组合管理策略背景介绍

本节说明固定频率按目标权重对齐持仓的再平衡机制、与主动交易的区别,并列举回测可分析指标示例。

1.2 DolphinDB 中高频回测解决方案概述

本节概述中高频回测平台关键环节与挑战,并介绍 DolphinDB 的回放、模拟撮合、回测模块及其兼容性。

2. 基于 DolphinDB 的股票组合管理日频策略回测实现

本节介绍使用 DolphinDB 回测插件在日频数据上按目标权重进行每日动态调仓的回测示例。

2.1 编写自定义策略

本节给出交易可行性检查、数量合规与资金约束下单数量计算,并在 onBar 回调中实现按“先卖后买”的调仓逻辑与订单提交。

2.2 根据策略设置相应的配置参数

本节展示回测日期、资金、手续费税率、行情类型与撮合模式等配置,并构建按日目标权重映射并注入策略上下文。

2.3 创建回测引擎

本节说明通过 createBacktester 创建撮合/回测引擎实例,并提及 JIT 开关参数与示例代码。

2.4 执行回测引擎

本节说明加载日频行情数据并通过 appendQuotationMsg 推送到回测引擎执行,同时引用字段类型说明文档链接。

2.5 获取回测结果

本节说明回测结束后可获取持仓、权益、收益概述、成交明细等结果,并给出示例展示。

3. 性能测试

本节给出在特定样本与运行模式下的回测处理规模、订单数量与耗时。

4. 总结

本节概括基于外部权重文件的日频组合再平衡方案,并提及可扩展性与适用场景。

5. 附录

本节提供 demo 策略与数据文件的链接入口。

Facts Index

Entity Attribute Value Confidence
股票组合管理日频回测案例(文章)发布日期2025-11-13high
DolphinDB用于实现本文回测的组件回测插件(Backtest 插件/回测引擎)high
组合回测系统(基于权重文件)输入数据外部生成并按日或既定周期输出存档的组合权重文件 + 行情数据high
本文示例回测策略调仓频率/机制基于给定目标权重文件进行按日调仓(每日动态调仓/自动再平衡)high
本文示例回测策略模拟过程通过解析每日目标权重文件,模拟不同时间点的持仓调整过程以评估历史表现与稳定性medium
被动投资策略(外部权重驱动)策略描述以预先定义的资产权重为输入,在回测中根据每日(或指定周期)的目标权重动态调整组合持仓high
固定频率再平衡策略与主动交易的区别不依赖即时市场预测,更侧重验证权重配置本身的长期稳定性与分散化效果medium
回测结果可分析指标(示例列举)包含净值变化、波动率、最大回撤、夏普比率等绩效指标medium
DolphinDB 中高频回测解决方案包含模块库内行情回放、模拟撮合、中高频回测三大功能high
中高频回测平台关键环节行情数据按顺序回放、委托订单撮合、策略开发与策略回测绩效评估high
中高频回测引擎实现挑战海量中高频交易数据对查询与计算性能要求极高high
回测过程需要模拟的要素(示例列举)订单能否成交、成交价格、成交量以及市场冲击等因素high
回测引擎架构要求灵活、支持多种交易策略和技术指标、易扩展以适应不同市场和交易需求high
DolphinDB 回放功能能力可将一个或多个不同结构的分布式表数据严格按时间或按指定多列排序顺序回放到流表high
DolphinDB 模拟撮合支持数据/市场支持沪深交易所 Level-2 逐笔行情和快照行情high
DolphinDB 模拟撮合撮合规则实现与交易所一致的“价格优先、时间优先”的高精度撮合high
DolphinDB 回测功能支持行情粒度支持逐笔、快照、分钟和日频行情进行策略回测high
DolphinDB 回测功能输出/信息可自定义指标,获取回测的收益、持仓、交易明细等信息high
DolphinDB 回测功能(逐笔/快照)精度/能力逐笔和快照行情支持高精度策略回测,可实现仿真和回测一体化的策略验证high
DolphinDB 三模块方案兼容性与外部解决方案兼容性良好,可与用户已有环节融合成完整回测方案medium
自定义策略函数 isBuyAble不可买条件volume <= 0.001 或 upLimitPrice == close 时返回 falsehigh
自定义策略函数 isSellAble不可卖条件volume <= 0.001 或 downLimitPrice == close 时返回 falsehigh
自定义策略函数 checkBuyVolume科创板(代码前缀“68”)整手规则处理若“68”且 num >= 200 则返回 num;若“68”且 num < 200 则返回 0high
自定义策略函数 checkBuyVolume非“68”股票下单量取整规则floor(int(num)/100)*100(按 100 股取整)high
自定义策略函数 getBuyAbleVolume科创板(代码前缀“68”)可买数量规则若 floor(cash/price) >= 200 则返回 floor(cash/price);否则返回 0high
自定义策略函数 getBuyAbleVolume非“68”股票可买数量取整规则floor(floor(cash/price)/100)*100high
策略回调 onBar获取账户与持仓接口使用 Backtest::getTotalPortfolios 获取总权益;使用 Backtest::getPosition 获取当前持仓high
策略调仓执行顺序顺序先卖出、再买入high
策略下单接口接口名称Backtest::submitOrderhigh
配置参数示例 config回测起止日期startDate = 2012.02.01;endDate = 2022.04.28high
配置参数示例 config初始资金cash = 100000000high
配置参数示例 config手续费率commission = 0.0005high
配置参数示例 config印花税/税率参数tax = 0.001high
配置参数示例 configdataTypedataType = 4high
配置参数示例 configmatchingModematchingMode = 3high
配置参数示例 config是否输出订单信息outputOrderInfo = truehigh
目标权重数据来源(示例代码)加载位置loadTable("dfs://dbweight",`dt) 并筛选 weight > 0,按 tradeDay 排序high
策略上下文 context(示例代码)包含字段targetWeight(按日权重字典)、commission、tax;并设置到 config["context"]high
Backtest::createBacktester第4个参数含义表示是否开启 JIT 优化;默认 false;设为 true 可开启high
执行回测(示例)行情数据加载方式从 ./portfolioData.csv 以给定 schema(name/type)加载为 dailyDatahigh
执行回测(示例)推送行情接口timer Backtest::appendQuotationMsg(engine, dailyData)high
Backtest 插件文档链接(字段类型说明/结果接口)https://docs.dolphindb.cn/zh/plugins/backtest.htmlhigh
回测结果获取可获取内容(列举)每日持仓、每日权益、收益概述、成交明细等信息medium
性能测试样本标的与区间上交所 2000 股票标的;历史日频数据区间为 2025.01.02 到 06.30medium
性能测试运行环境(描述)线程与 JIT单线程、非 JIT 模式high
性能测试结果处理行情条数232196 条high
性能测试结果生成订单数28021 单high
性能测试结果回测耗时约 0.9 秒high
附录资源portfolioStrategy.dos 链接https://docs.dolphindb.cn/zh/tutorials/daily_stock_portfolio_backtest.html#topic_zqx_ybg_hhchigh
附录资源portfolioData.csv 链接https://docs.dolphindb.cn/zh/tutorials/daily_stock_portfolio_backtest.html#topic_zqx_ybg_hhchigh
附录资源weight.csv 链接https://docs.dolphindb.cn/zh/tutorials/daily_stock_portfolio_backtest.html#topic_zqx_ybg_hhchigh
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high