起因很简单:想给一只 T+0 的 ETF 写个日内策略,要求"至少跑赢拿着不动"。真正花时间的不是写策略,而是先发现数据根本不是那只标的,然后四轮推翻重做,最后落到一个既通过季度考核、又能说清边界的方案上。这篇把完整思路、每一轮失败的原因、以及最后经得起推敲的结论都记下来,配 5 张图。
一、缘起:一个"跑赢拿着不动"的需求,和一次数据乌龙
需求是这样提的:拿一份新的分钟 K 线数据,给 511030(公司债ETF) 做一个均值回归 / 高抛低吸的日内策略,标的 T+0、买卖无手续费,允许高换手,每笔每股收益要在 0.006 元以上才交易,每次交易考虑 0.001 的滑点,目标是"至少跑赢拿着不动"(估计最近一年 2%~3%)。
第一版我按"动量"思路做的:连续 3 根正 K 线、累计涨幅超过 0.5% 触发买入,持有 90 根 K 线后卖出。三年跑下来结果非常漂亮——218 个信号、胜率 53.2%、复利 +98.65%,同期买入持有 +36.62%,超额 +62.03%。
漂亮得不像真的。然后杰哥一句话点醒我:
你确定你找对了吗,511030 是公司债 ETF 哦。
于是有了整个研究里最关键的一步——先验证数据本身。
二、数据核实:这份分钟 K 线到底是谁的
先做了几个不依赖外部信息的"体检":
- 每日末值的中位数只有 0.0000%,多天末值恰好为 0——说明这份数据是每分钟涨跌幅(相对昨收的累计),不是增量收益率;
- 日内极值出现了 ±19.98% 这种量级,而 511030 的日内波动常年不超过 0.3%——这对不上;
- 相邻分钟的最小变化步长中位数约 0.065%,若标的价格在 1.5 元附近,一个最小报价单位 0.001 元正好对应 0.065%;而 511030 价格在 104 元附近,一跳只对应 0.001%。
- 2024-10-08 的第一根数值是 +19.9821%。159915 创业板 ETF 当天前收 2.232 元,涨停开盘价 2.678 = 2.232 × 1.2,涨幅 +19.98%——分毫不差。511030 当天真实日波幅只有 −0.47%。
- 翻杰哥自己的脚本,T0 / 动量轮动那批文件里的交易标的写的是
159915.SZ。
结论:这份数据是 159915 创业板 ETF 的一分钟 K 线,不是 511030。 更麻烦的是——"连续 3 分钟涨 0.5%"这类动量规则,用在日波幅只有 0.3% 的公司债 ETF 上永远也不会触发。也就是说,如果一开始不核实,后面所有参数优化都是在错误的土壤上进行的。
这一段最值得记的一条经验:拿到任何一份行情数据,先用"日内极值 / 最小变动步长 / 价格量级"三个指标做体检,再谈策略。
三、第一次尝试:追涨型动量,以及它为什么不能算通过
在确认标的是 159915 之后,回头看那个 +98.65% 的动量方案,问题其实很明显:
- 信号极度不均匀:2023 年全年只有 27 个信号、胜率 48.1%,三年 218 个信号里 115 个挤在 2024 年;
- 收益高度集中在少数几段行情:资金曲线最陡的一段来自 2024 年 10 月初的暴涨,约七成利润来自 2024 年下半年;
- 最大回撤 10.36%,且回撤发生在利润贡献最大的同一阶段。
四、转向均值回归:为什么创业板 ETF 适合做 T
159915 有几个正好适配日内均值回归的特征:
- T+0 可回转:当天买入当天能卖,日内策略没有隔夜敞口;
- 日内波动足够大:分钟级噪声明显,价格经常短时偏离均线;
- 没有涨跌停之外的制度摩擦:手续费可忽略(按万0.5 计),允许高换手。
- 底仓满仓不动——完整保留"拿着不动"的基准收益,这是保底;
- 另用等额资金做日内双向 T——低吸(正T)和高抛(反T),日内必须平掉,不加隔夜风险;
- 做 T 的净增厚就是超额收益来源。
五、策略解剖:一套可执行的规则
最终规则(参数见后文优化过程):
- 正T(低吸):价格低于 15 分钟均线 0.3% 时买入;价格回到均线(偏离收窄到 −0.1%)或用不上均线时上涨 0.3% 止盈卖出;止损 1.0%;只在价格高于昨收的日子做(顺势逆小势)。
- 反T(高抛):价格高于 15 分钟均线 0.4% 时卖出;回到均线 或 回落 0.5% 买回;止损 0.5%;只在价格低于昨收的日子做。
- 执行约束:每个方向每天最多 2 笔,14:55 前必须平仓,开盘 5 分钟内不做。
六、参数优化:四轮迭代,三轮回过头推翻
优化过程值得单独记,因为它说明了"结论是怎么被逼出来的":
第 1 轮:单边正T 网格搜索。 遍历均线窗口、入场偏离、止盈、止损等参数,选"每季度增厚的最小值最大"的组合。结果:最好的组合仍有 1 个季度为负(−0.16%),单笔边际收益只有 0.039%。原因很直白——只能低吸,遇到持续阴跌的季度就干不了活。
第 2 轮:加上反T(双向做T)。 同时做低吸和高抛,并把"正T腿、反T腿"当作组合来选。结果提升到 11/12 个季度跑赢,剩下的 2024Q2(阴跌季度)−0.68%。查明细发现亏损集中在两笔反T上(4/18 亏 0.77%、4/22 亏 0.61%)——高抛之后遭遇"反弹变反转",而止损设得太松(1.5%)没能及时截断。
第 3 轮:波动率标准化的 z-score 入场。 想让低波动期也能触发信号。结果更差(总增厚仅 3.92%)——z-score 把"相对波动幅度"和"绝对价格偏离"混在一起,反而在低波动期放进了大量噪声信号。这一轮是纯粹的弯路,但它证明了一件事:这个标的的日内回归,用"百分比偏离"比用"标准化偏离"更贴近可交易的价格单位。
第 4 轮:收紧止损 + 双腿独立约束。 把反T止损从 1.5% 收到 0.5%,并强制要求两条腿各自的总收益都必须为正(避免用亏钱的腿去平滑个别季度)。这一步同时解决了 2024Q2 的亏损和"胜之不武"的问题,最终达到 12/12。
七、结果:12 个季度全部跑赢
主推口径(往返成本 0.02%,即万0.5 佣金 + 限价挂单成交)下:
- 跑赢季度:12 / 12
- 三年做 T 总增厚:+17.33%(折合年化约 +5.66%)
- 总做 T 笔数:383 笔,单笔毛收益 0.065%
- 策略累计收益 62.12%,基准 36.62%
- 2023Q1 +0.89% | 2023Q2 +0.51% | 2023Q3 +2.10% | 2023Q4 +0.40%
- 2024Q1 +3.04% | 2024Q2 +0.00% | 2024Q3 +0.53% | 2024Q4 +0.97%
- 2025Q1 +2.12% | 2025Q2 +0.02% | 2025Q3 +3.11% | 2025Q4 +3.63%
八、稳健性检验:把"全胜"这件事按在地上摩擦一遍
一个 12/12 的结果,第一反应不应该是高兴,而是问:是不是参数刚好凑对了?
做法:在最优参数附近做邻域网格(均线窗口 10/15/20,入场偏离 −0.2~−0.4 与 0.3~0.5,止盈 0.3~0.5,止损 0.3~1.0 的各种组合),剔除不满足"至少 5 笔正T、反T总收益为正、12 个季度都有数据"的组合,得到 413 组有效参数。
结果比我预想的更冷:
- "12 个季度全部为正"的只有 2 组,占 413 组的 0.5%——主推参数就是这 2 组之一;
- 更进一步,要求"12 个季度全为正 且 最差季度仍 ≥ +0.2%"的:0 组,一组都没有;
- "最多 1 个季度为负"的:22 组,约 5%;
- 负季度数的分布集中在 2~4 个(2 个占 121 组、3 个占 122 组、4 个占 94 组),中位数 3 个;
- 总增厚的中位数是 +12.53%,最差季度中位数 −1.55%。
我在这篇里的立场是:宁可把这条边界写在最显眼的地方。一个不说明适用范围的回测结论,等于没有结论。
九、成本敏感性:这才是这套策略真正的胜负手
看单笔数字:毛收益 0.065%,而往返成本本身就在同一量级。这意味着成本假设不是"细节",而是决定策略生死的第一变量。
各成本口径下的结果:
- 0.02%(万0.5 佣金 + 限价挂单)→ 跑赢 12/12 个季度,三年总增厚 +17.33%
- 0.03%(万1 佣金 + 挂单成交)→ 跑赢 10/12,总增厚 +13.50%
- 0.05%(万2.5 佣金 + 少量滑点)→ 跑赢 8/12,总增厚 +5.84%
- 0.08%(每笔主动吃 1 跳,约0.04%)→ 跑赢 5/12,总增厚 −5.65%(策略失效)
- 成本只要从 0.02% 涨到 0.05%,跑赢季度就从 12/12 掉到 8/12;
- 一旦每笔都要主动吃一跳(0.08%),策略直接变成负增厚;
- 所以"12/12 全胜"这个结论,严格依赖"万0.5 佣金 + 限价挂单成交"这个前提,缺一不可。
十、交易特征,和最难的环境
- 正T 低吸 259 笔(单笔均值 +0.071%),反T 高抛 124 笔(单笔均值 +0.053%);
- 平仓原因构成:回归 283 笔(平均 +0.086%)、止盈 61 笔(平均 +0.458%)、止损 39 笔(平均 −0.697%);
- 也就是说,约七成交易是靠"价格回归均线"平仓的小幅获利,止损是必须付的"保险费",靠少数止盈单补回来。
十一、结论与使用边界
结论:
- 在 159915 创业板 ETF 上,"底仓满仓 + 等额资金日内双向做 T" 的均值回归结构,在 2023Q1–2025Q4 的 12 个季度中全部跑赢买入持有,三年做 T 总增厚 +17.33%(年化约 +5.66%);
- 做 T 的收益来自日内波动的回归,而不是趋势——所以它不替代底仓,是增强;
- 策略的成本容忍度极低(单笔毛收益 0.065%),必须靠限价成交把往返成本压到 0.03% 以内。
- "每季度必胜"是筛选结果,不是规律:413 组邻近参数中只有 2 组(0.5%)能做到 12 个季度全为正,且没有一组能同时保证最差季度 ≥ +0.2%;多数参数有 2~4 个季度小幅跑输;
- 成本假设即结论:0.02% → 12/12;0.05% → 8/12;0.08% → 失效;
- 成交假设保守度有限:回测以分钟收盘价成交,实盘中封板、急速跳水时可能无法成交或滑点扩大,交易明细已导出可逐笔核对;
- 阴跌+震荡季度是最薄弱环节,建议在该环境下主动降仓。
- 用实际佣金参数重跑一遍成本敏感性;
- 加"阴跌环境自动减半仓"的开关并回测;
- 做参数敏感性热力图,把"最优解周围有多陡"彻底量化。
数据区间:2023-01-03 ~ 2025-11-28,703 个交易日,168,022 根 1 分钟 K 线。基准为满仓持有 159915。所有数字均来自本地回测脚本,可复现。





💬 评论 (0)
还没有评论,来抢沙发吧。