北交所开盘还是收盘调仓:同信号对照回测
全历史统一使用前一交易日收盘定名单,隔日开盘执行并未改善收益。周度现金账本年化从55.09%降到45.07%,双周从42.91%降到38.66%;下降集中在少数调仓日,不能外推成永恒规律。
相同名单,开盘收益更低
两个版本共享同一套前日信号、目标股票、交易日历和选股参数。每个周期首个实际交易日调仓,周度与双周分别对照。现金账本在调仓时等权,此后股数保持不变、权重自然漂移;保留股票的加减仓也收取费用。
| 频率 | 执行时点 | 年化收益 | 最大回撤 | 夏普 | 累计收益 |
|---|---|---|---|---|---|
| 周度 | 收盘 | 55.09% | −38.27% | 1.23 | 685.97% |
| 周度 | 开盘 | 45.07% | −40.80% | 1.07 | 474.28% |
| 双周 | 收盘 | 42.91% | −42.56% | 1.04 | 435.21% |
| 双周 | 开盘 | 38.66% | −42.06% | 0.97 | 364.43% |
周度开盘少10.02个百分点年化,最大回撤扩大约2.53个百分点;双周开盘少4.25个百分点年化,回撤略小约0.50个百分点。周度期末财富为收盘版本的73.07%,双周为86.78%。这是本段历史、这套参数的结果。
为什么不是直接拿页面60.55%和开盘比较?
原页面的历史部分用当日收盘数据选股、又假设当日收盘成交。此次先逐日复现它,周度与双周全部1185个净值点一致;再把全历史信号移到前一交易日,区分信号修正与成交时点的作用。
| 频率 | 页面接近的指数口径 | 年化收益 | 最大回撤 | 夏普 |
|---|---|---|---|---|
| 周度 | 旧版当日信号+收盘 | 60.55% | −40.41% | 1.33 |
| 周度 | 前日信号+收盘 | 55.48% | −37.72% | 1.24 |
| 周度 | 前日信号+开盘 | 48.18% | −40.12% | 1.13 |
| 双周 | 旧版当日信号+收盘 | 51.37% | −42.81% | 1.19 |
| 双周 | 前日信号+收盘 | 46.80% | −41.55% | 1.11 |
| 双周 | 前日信号+开盘 | 43.74% | −40.98% | 1.07 |
这一表沿用页面每日隐含等权的近似口径。前日信号+收盘一栏与原计算程序切换到前日信号后的净值差异不超过0.0000011;因此55.48%→48.18%的周度下降才是这个近似模型中的开盘时点影响。现金账本进一步计入持仓漂移及保留股票重新等权的交易费,所以主表的数值不同。
统一前日信号后,周度与双周首次建仓均为2023-02-20;之前合格股票不足10只而空仓。全期年化保留2021-11以来的空仓期,2023年的收益也包含年初空仓。2026-10-08起的线上规则仅向前修正信号时点,本报告为了公平研究,对全历史统一重算。
开盘调仓当天,谁承担涨跌?
前一交易日收盘后,使用当时市值、PE、公告财务、安全分和20日平均成交额确定名单。开盘版本先将旧仓从上一收盘计价到当日开盘,卖出旧仓、买入新仓,再将新仓计价到当日收盘;收盘版本保留旧仓到当日收盘,再换仓。隔夜缺口始终属于旧仓,没有把开盘前的涨幅送给新买入的股票。
参数固定为:上市满180日、市值至少1亿元、0<PE≤50、净利润同比增长>10%、20日平均成交额≥500万元,按原脚本安全分剔除末30%,再取最小市值10只。合格不足10只时,沿用原策略:未建仓则继续持现金,已有持仓则等待下一次有效目标,不临时加入清仓规则。财务公告日≤信号日,供应商未提供披露时刻。
价格使用同一供应商缓存的原始开盘与收盘,并对两者应用相同复权因子。实际开盘价格全部存在,没有用收盘填造开盘价格。持仓使用复权股数核算,股息等由原复权口径处理;允许零股、没有本金容量和整手约束。费用对每笔实际交易额收取,不额外优化参数。
差异从哪里来?
两种时点的年化费用消耗近似相同:周度约5.80%与5.78%,双周约4.12%与4.12%(按每次费用占成交前净值累加、再除以样本年数;不是从CAGR直接扣除的固定费用)。主要差异来自持有调仓日不同股票和成交时的持仓价格,而不是开盘版本多设了一档手续费。
| 频率 | 对开盘最不利的日期 | 开盘减收盘的当日对数收益 |
|---|---|---|
| 周度 | 2025-04-07 | -11.50个百分点 |
| 周度 | 2024-02-05 | -6.52个百分点 |
| 周度 | 2024-10-28 | -4.86个百分点 |
| 双周 | 2024-10-28 | -5.28个百分点 |
| 双周 | 2024-02-05 | -5.18个百分点 |
| 双周 | 2025-06-23 | -3.25个百分点 |
周度最差三天贡献约72.9%的全期对数财富差距,双周约96.7%。这些是看到结果后追加的解释性诊断,没有据此筛除日期或挑选新策略。开盘并非每年都差,2023年反而较好;因此不能把“收盘更好”解释成每天稳定获得的价差。
提高成本与截断样本,方向是否改变?
| 频率 | 压力情景 | 执行 | 年化收益 | 最大回撤 |
|---|---|---|---|---|
| 周度 | 单边0.5% | 收盘 | 49.21% | −40.60% |
| 周度 | 单边0.5% | 开盘 | 39.58% | −43.03% |
| 周度 | 单边0.3%+涨跌停近似 | 收盘 | 56.05% | −38.27% |
| 周度 | 单边0.3%+涨跌停近似 | 开盘 | 45.07% | −40.80% |
| 双周 | 单边0.5% | 收盘 | 39.04% | −44.09% |
| 双周 | 单边0.5% | 开盘 | 34.90% | −43.61% |
| 双周 | 单边0.3%+涨跌停近似 | 收盘 | 43.07% | −42.56% |
| 双周 | 单边0.3%+涨跌停近似 | 开盘 | 38.66% | −42.06% |
涨跌停压力使用成交价格相对供应商当日pre_close的±29.5%作为近似,买入接近涨停或卖出接近跌停就不成交,不是精确涨跌停价或盘口队列回放。卖不掉的股票继续持有,可用现金不足时缩减新买入;之后到下一次有效周期目标才重试。该压力下开盘也未胜出。
分年收益
| 频率 | 年份 | 收盘累计收益 | 开盘累计收益 |
|---|---|---|---|
| 周度 | 2023 | 40.71% | 49.14% |
| 周度 | 2024 | 169.34% | 132.12% |
| 周度 | 2025 | 146.19% | 108.35% |
| 周度 | 2026(至9月30日) | -15.76% | -20.38% |
| 双周 | 2023 | 35.49% | 42.51% |
| 双周 | 2024 | 128.63% | 95.41% |
| 双周 | 2025 | 119.77% | 111.89% |
| 双周 | 2026(至9月30日) | -21.38% | -21.29% |
减少缺失半年报影响,及最近两年的历史切片
| 频率 | 样本 | 收盘年化 | 开盘年化 |
|---|---|---|---|
| 周度 | 截至2026-07-31 | 56.20% | 45.93% |
| 周度 | 2024-10起,历史切片 | 145.67% | 102.91% |
| 双周 | 截至2026-07-31 | 43.58% | 39.16% |
| 双周 | 2024-10起,历史切片 | 102.96% | 88.31% |
截至2026-07-31的周度开盘年化45.93%,收盘56.20%,方向一致。最近两年仅作描述性检验,历史已被本项目多次研究,没有声称是新留出的样本外证据。
差距的抽样不确定性
| 频率 | 开盘减收盘的年化对数差 | 20日区块重抽样95%区间 |
|---|---|---|
| 周度 | -6.68个百分点 | -14.63 ~ -0.03个百分点 |
| 双周 | -3.02个百分点 | -8.69 ~ 1.71个百分点 |
采用配对日收益、20日环形区块、2000次重抽样。周度区间上界仅略低于零,双周跨零;区块长度、尾部日期、历史探索和供应商修订都会影响推断。它描述当前历史差异,不构成新样本验证或多重检验校正后的优势证明。
这份结果有哪些实际限制?
财务公告缓存最晚为2026-04-30。8—9月继续使用缓存内旧财务值,缺少半年报更新;截至7月的结果用于减少这个影响,但也不能保证财务数据完全新鲜。高历史年化不能直接作为未来收益预期。
- 共有257078条原策略行情,开盘缺失为0。两套缓存有174条原始收盘差异,研究主对照使用内部一致的开盘与收盘;另外保留原价格源复现原页面。有效持仓对照的指数净值与原程序前日信号结果在舍入误差内一致。
- 名单、市值、安全分、财务值和复权因子沿用原缓存,仍有财务历史修订、历史代码整理、历史上市及退市覆盖、参数曾经全样本探索等限制,没有因改成交时点而解决这些问题。
- 基准开盘和收盘都假设能够按官方价格成交。单边0.3%是统一费用假设,并未提供开盘集合竞价、收盘集合竞价、冲击成本或资金容量的精确仿真。
- 主表已有持仓自然漂移,按成交顺序自筹资金并校验现金、持股与费用守恒;无杠杆和做空。代码另有收益统计、隔夜归属、双边收费、持股漂移和跌停卖不出无法给新仓融资的5项合成校验,两组旧版净值复现及两组前日信号指数一致性校验全部通过。
结果支持继续保留收盘作为当前研究执行口径;如果要评估实盘成交质量,还需要盘口或分钟行情,而不是只更换回测标签。本次只新增一次性研究报告。
下载与复现
完整结果逐日净值各期目标名单逐笔交易与费用换仓与资金核对结果前固定设计校验结果回测源码原策略快照报告生成源码
需要本项目只读SQLite缓存,以及pandas、numpy、matplotlib。将本目录置于原仓库my-app/public/reports后运行backtest.py,再运行build_report.py;数据读取不会调用外部API或改写策略。结果取决于对应缓存版本。一次性研究截至2026-09-30,不接每日更新。