市场状态(趋势型与均值回归型)
市场状态(market regime)是指价格序列在某个可测维度上表现一致的一段时期,最常见的维度是持续性(趋势型对均值回归型)或波动性(躁动对平静)。状态度量把最近这段窗口归类,好让一条策略只在它当初为之设计的条件下才被启用。
Senzoukria · 术语表 · 更新于 2026 年 9 月
状态的几个维度
每个维度彼此独立。市场可以既是趋势型又很平静,也可以既是均值回归型又很躁动。策略通常只依赖其中一两个维度:反向介入需要回归性,突破规则则需要持续性,而且往往还需要波动率扩张。
| 维度 | 取值 | 常用度量 |
|---|---|---|
| 持续性 | 趋势、随机、均值回归 | 赫斯特指数、收益率自相关 |
| 波动性 | 躁动、普通、平静 | 短期 ATR 与长期 ATR 之比、已实现波动率 |
| 期权持仓 | 被压制、被放大、处于翻转点 | 做市商伽马敞口相对现价的位置 |
| 潜在状态 | 由模型定义,例如危机对正常 | 作用于收益率的隐马尔可夫模型 |
诚实地度量一个状态
- 任何状态度量都是在一个窗口上算出来的;分类描述的是那个窗口,并且会滞后于任何切换。
- 在原始数值不可比的地方,比值是可比的:短期与长期波动率之比接近 1,在任何合约上含义都一样。
- 当分母为零或者窗口不完整时,度量没有定义;此时应当显示「无数值」,而不是一个中性值。
- 状态标签是决定「何时启用某条规则」的过滤器,它本身并不是信号。
在 Senzoukria 里
「Volatility Regime」指标(目录 id 为 volatility-regime)用一个快速 ATR 除以一个慢速 ATR,默认取 14 和 100,把高于 1 读作躁动状态,低于 1 读作平静,接近 1 读作普通。因为它是一个无量纲的比值,所以可以跨品种、跨时期比较。当慢速 ATR 为零时,指标返回「无数值」,因为 0 ÷ 0 不是平静状态,而是信息缺失。
在持续性维度上,「Hurst Exponent (R/S)」指标和 Hurst MR 信号的状态徽章会对着 0.5 这个阈值给出状态标签。GEX 工作区把期权状态标为「被压制」「被放大」或「处在边缘」,参照对象是伽马翻转点;但要注意,这个读数假定做市商整体是期权净空头,而且它依赖于已配置的期权数据源。脚本模板「Mean reversion under regime (HMM + Hurst)」用 Python 把一个隐马尔可夫状态和赫斯特过滤器结合在一起。
常见错误
- 以为一个状态标签适用于所有周期;5 分钟图和日线图完全可能给出相反的结论。
- 把状态切换本身当成可交易对象,仿佛度量能在切换发生的那根 K 线上就察觉到它。
- 用原始 ATR 跨品种比较躁动程度,而只有比值才可比。
- 把缺失的状态值读成「普通」,而不是读成「没有信息」。
相关内容
其他语言版本
常见问题
- 为什么要用两个 ATR 的比值,而不是直接用 ATR?
- ATR 的单位是价格,取决于品种和所处的年代,所以脱离上下文时,12 这个数值什么也说明不了。快速 ATR 除以慢速 ATR 是无量纲的,它拿当下和它自己的常态作比较。慢速窗口必须足够长,不能跟着快速窗口一起跑,否则比值会塌向 1。
- 状态过滤器可以回测吗?
- 可以,作为策略的一部分:过滤器的窗口和阈值都是参数,必须在训练数据上选定,并像其他参数一样在样本外评估。一个在用于评判它的同一批数据上调出来的过滤器,看上去总会比实际更好;回测面板里的向前滚动工具正是为了把这一点暴露出来。
- GEX 状态是同一类度量吗?
- 它分类的是另一个维度。持续性和波动性状态都只由价格算出;GEX 状态则来自期权链和做市商持仓,并且以配置了期权数据源为前提。三者可以放在一起读,但彼此不能替代。