量化研究工作流:
把 5MA、波动与回测放进同一条证据链
量化不是把图表变得更复杂,而是把研究问题、资料口径、公式、执行规则与失效条件写清楚。本篇以 5MA/20MA 扣抵、波动度 Z-Score 与样本外回测建立一套可复盘流程。
先看结论
- 均线扣抵描述「窗口中被移出的价格」与新价格的差,不是单独的买卖信号。
- 波动 Z-Score 只能说明当前波动相对于其历史分布偏高或偏低,不能据此推导方向。
- 回测最重要的不是漂亮曲线,而是时间切分、下一根执行、成本、样本外与失效监控。
一、先把研究问题写成可反驳命题
1.1 从「会不会涨」改成可观测条件
「5MA 向上所以会涨」不是完整命题,因为它没有定义讯号形成时点、进场价格、持有多久、交易成本与失效条件。较可测试的写法是:「当收盘后的 5MA 高于 20MA,下一交易日持有一根日线,扣除双边成本后的平均回报是否仍为正?」这样才知道要收集哪些字段。
1.2 固定数据口径
研究前要记录标的、交易所、币别、调整方式、频率与截止日。若使用 ETF,分配股利是否回补价格会改变结果;若使用期货,连续合约的换月方法会改变报酬。不同口径不能在同一条曲线中静默混合。
二、5MA/20MA 扣抵值:先懂窗口,再谈转折
2.1 均线与扣抵公式
n 日简单移动平均是最近 n 个收盘价的平均。今天与明天之间,窗口会移除最旧的价格,加入新价格,因此均线变化不只取决于今天是否上涨。
MA(n,t+1) − MA(n,t) = (C_{t+1} − C_{t-n+1}) / n
2.2 可重现的示范
2.3 5MA 与 20MA 的使用边界
短均线对噪音敏感,长均线对转折延迟。比较扣抵值时,应同时观察成交量、波动状态、支撑压力与交易成本;不要把「扣高助跌、扣低助涨」写成必然因果。可直接使用波动度 Z-Score 工具检查当时的波动环境,再把历史收盘价交给自己的试算表核对。
三、波动度 Z-Score:把高波动与低波动定义清楚
3.1 从价格到收益
先用相同调整口径的价格计算日收益 r_t=P_t/P_{t-1}−1,再以固定窗口计算样本标准差。若把价格直接拿来做标准差,会把价格水准误当成风险。
Z_t = (σ_t − mean(σ)) / stdev(σ)
3.2 解读三种情况
| 结果 | 可说的事 | 不可说的事 |
|---|---|---|
| Z ≥ 2 | 当前滚动波动高于样本自身分布 | 不能直接说要做空或一定下跌 |
| −2 < Z < 2 | 接近自身样本中段 | 不能说风险已消失 |
| Z ≤ −2 | 当前波动低于自身分布 | 不能说低波动等于安全 |
窗口、样本长度与市场体制都会影响 Z-Score。它适合用来做研究分层,例如调整回测成本假设或缩短杠杆曝险,而不是代替交易计划。
四、样本外回测:防止把历史噪音当优势
4.1 时间先切开,再调参
把资料分成研究期、验证期与封存的样本外期。参数只能在研究期决定;样本外资料只能在规则锁定后使用。若反覆看样本外结果再改参数,它就不再是样本外。
4.2 下一根执行与成本
收盘形成的信号不能同时使用同一根收盘成交,除非你能证明有收盘撮合机制。保守做法是在下一根 K 线执行,并纳入手续费、点差、滑价、税费、换月与停牌。策略收益与买入持有要用同一价格口径比较。
4.3 回撤不是装饰栏位
除了总回报,至少要报告最大回撤、回撤持续时间、交易次数、单笔分布、最差连续亏损与样本外落差。用少量交易得到高 Sharpe,可能只是估计误差;用很多参数把曲线修成直线,则是过度拟合风险。
可搭配历史 VaR 估算器與Kelly 风险预算工具,把研究结果转成压力测试,而不是直接转成下单比例。
五、可复盘的量化研究检查表
- 研究假设是否能被数据推翻?
- 价格、股息、期货换月口径是否固定?
- 是否明确隔离样本外期间?
- 訊號與成交是否至少錯開一根 K 線?
- 成本、滑价、税费与流动性是否压力测试?
- 参数数量是否与样本量相称?
- 是否记录版本、截止日与每次改动理由?
- 失效条件与停机规则是否事前写下?
把研究流程变成可操作的计算
先粘贴你查证的日收益,再用 Z-Score 看波动位置;最后用风险预算检查仓位上限。
常见问题
扣抵值高就一定助跌吗?
不是。扣抵值只描述均线窗口替换的机械效果,实际价格仍受新信息、成交量、流动性与市场制度影响。
Z 分数可以预测崩盘吗? Z-Score
不能。它是相对分布的描述统计;即使波动 Z-Score 很高,也不提供方向与时间点。
样本外结果不好是否代表策略一定无效?
它至少代表目前规则与资料口径没有在封存期间重现优势。应先检查资料、成本与执行假设,再决定是否停止研究,而不是回头偷改样本外参数。