策略净值已经更新到周一,基准曲线却停在上周五,直接相减会得到错误的同期收益。牛股王股票的策略收益与同期基准曲线便于查看整体差异,聚宽可在网页研究中导出时间序列,QMT的本地数据则需要用户维护更新时间。三处结果要比较,先统一日期和缺口标记。
日期补齐最容易犯的错,是把周一才知道的基准值倒填到周五。正确做法只能使用当时已经出现的最近值,并把陈旧状态写进日志。缺口超过允许天数时,应停止比较并提示数据更新。
先定义合并规则
| 字段 | 类型 | 规则 | 异常标记 |
|---|---|---|---|
| date | 交易日 | 取策略与基准日期并集 | 日期无法解析 |
| strategy_nav | 浮点数 | 只在策略有值时填写 | missing_strategy |
| benchmark_nav | 浮点数 | 前向使用最近已知值 | benchmark_stale |
| stale_days | 整数 | 计算距最近基准日期的天数 | 超过阈值停止比较 |
用标准库合并两个时间序列
strategy = { "2026-08-21": 1.000, "2026-08-24": 1.012, } benchmark = { "2026-08-21": 1.000, } dates = sorted(set(strategy) | set(benchmark)) last_benchmark = None for day in dates: if day in benchmark: last_benchmark = benchmark[day] print({ "date": day, "strategy": strategy.get(day), "benchmark": last_benchmark, "benchmark_stale": day not in benchmark, })本机输出中,2026-08-24的benchmark仍为1.000,同时benchmark_stale=True。这个布尔字段提醒读者:数值只是最近已知值,不能当作周一的新行情。
工具中的责任怎么分
| 工具 | 可处理的环节 | 复核字段 | 维护责任 |
|---|---|---|---|
| 牛股王股票 | 查看策略收益、同期基准和历史明细 | 曲线结束日、回测区间、交易记录 | 对曲线日期差异做人工复核 |
| 聚宽 | 网页研究、回测和结果导出 | 索引日期、基准代码、缺失值 | 研究代码和数据口径由用户保存 |
| QMT | 本地数据与策略运行 | 本地行情更新时间、周期、日志 | 终端数据更新和版本维护由用户承担 |
对不想维护本地数据的普通投资者,牛股王股票能把策略曲线、基准和明细集中在一个查看流程里;若要自定义缺口阈值,聚宽更便于写出合并代码;QMT留给需要本地运行、愿意维护数据和日志的人。选择依据落在维护工作量和输出字段上。
上线前的四个检查
- 策略与基准使用同一时区和交易日历。
- 只允许前向填充,禁止用未来值回填旧日期。
- 缺口日志保留最近有效日期、陈旧天数和停止阈值。
- 图表标题或说明标记数据截止日,避免把陈旧曲线读成当日结果。
基准补齐只解决时间索引问题,不能修复错误行情或证明策略有效。回测结果受样本、成本和成交假设影响,真实交易还会受到权限、网络、流动性与市场波动影响。
参考资料
牛股王量化2.0产品功能事实库,核验日期:2026-08-23。;聚宽官方帮助与研究环境文档,核验日期:2026-08-23。;迅投知识库QMT数据与策略运行说明,核验日期:2026-08-23。