2. 马尔可夫链的数学表达:齐次性与非齐次性、n步转移概率、C-K方程
好,咱们接着聊。上一章我跟你说了马尔可夫链的基本概念,说白了就是「未来只跟现在有关,跟过去没关系」。但光有概念不够,做量化交易你得能算。这一章,我们就来啃啃它的数学骨架。
我个人习惯,学任何模型先搞清楚它的「不变」和「变」。马尔可夫链也一样,核心就两个维度:齐次性和非齐次性。搞懂了这两个,n步转移概率和C-K方程就是顺水推舟的事。
2.1 齐次性与非齐次性
先问个问题:你手里的转移概率矩阵,会不会随时间变化?
齐次马尔可夫链,就是转移概率不随时间变化。今天从状态A到状态B的概率是0.3,明天还是0.3,后天也是0.3。用数学话说:
P(X_{n+1} = j | X_n = i) = P(X_1 = j | X_0 = i) 对所有 n 成立
我在做股指期货的趋势跟踪策略时,一开始就默认用了齐次假设。为什么?因为省事啊!你只需要估计一个转移矩阵,后面所有计算都基于它。但后来我发现,市场在牛熊转换期,这个假设会出大问题。
非齐次马尔可夫链,就是转移概率随时间变化。数学上写成:
P(X_{n+1} = j | X_n = i) = p_{ij}(n)
这里的 p_{ij}(n) 是时间 n 的函数。你想想看,在趋势跟踪中,市场处于震荡期和趋势期的转移概率能一样吗?显然不能。所以非齐次模型更贴近真实市场,但代价是——你需要估计的参数太多了,每个时间点都要一套转移矩阵。
| 特性 | 齐次链 | 非齐次链 |
|---|---|---|
| 转移概率 | 恒定不变 | 随时间变化 |
| 参数数量 | 少(一个矩阵) | 多(每个时间点一个矩阵) |
| 适用场景 | 平稳市场 | 结构变化市场 |
| 计算复杂度 | 低 | 高 |
2.2 n步转移概率
好,现在假设我们有一个齐次马尔可夫链。你当前在状态 i,想知道 n 步之后到达状态 j 的概率。这就是 n步转移概率,记作:
p_{ij}^{(n)} = P(X_{m+n} = j | X_m = i)
注意,这里 n 是上标,表示步数,不是幂次。我刚开始学的时候老搞混,后来干脆在代码里用 p_ij_n 这种命名,一目了然。
怎么算?最简单的方法就是矩阵乘法。一步转移矩阵是 P,两步转移矩阵就是 P²,三步就是 P³,以此类推。n步转移矩阵就是 P 的 n 次幂。
P^{(n)} = P^n
举个例子。假设我们有个两状态系统:状态0是「震荡」,状态1是「趋势」。一步转移矩阵为:
P = [[0.7, 0.3],
[0.4, 0.6]]
那么两步转移矩阵就是:
P² = P × P = [[0.7×0.7 + 0.3×0.4, 0.7×0.3 + 0.3×0.6],
[0.4×0.7 + 0.6×0.4, 0.4×0.3 + 0.6×0.6]]
= [[0.61, 0.39],
[0.52, 0.48]]
你看,从震荡状态出发,两步后还在震荡的概率是0.61,进入趋势的概率是0.39。这个信息对做仓位管理很有用——如果你知道未来两步大概率还是震荡,那就不该重仓。
2.3 C-K方程(Chapman-Kolmogorov方程)
说到n步转移概率,就绕不开C-K方程。这玩意儿说白了就是:从 i 到 j 走 m+n 步,等于先走 m 步到某个中间状态 k,再走 n 步到 j,然后把所有可能的 k 加起来。
数学形式:
p_{ij}^{(m+n)} = Σ_k p_{ik}^{(m)} × p_{kj}^{(n)}
这个方程看起来简单,但威力巨大。它告诉我们:
- 高阶转移概率可以分解为低阶的乘积和
- 不需要每次都重新计算整个矩阵的幂
- 可以递归地计算任意步数的转移概率
我记得有一次在优化策略的回测速度时,发现每次都要计算 P^100 这种高次幂,计算量很大。后来用C-K方程做了个动态规划版本,把计算复杂度从 O(n³) 降到了 O(n² log k),速度提升了一个数量级。
下面我用Python展示一下C-K方程的实现:
import numpy as np
def ck_step(P_m, P_n):
"""
使用C-K方程计算 m+n 步转移矩阵
P_m: m步转移矩阵
P_n: n步转移矩阵
"""
return np.dot(P_m, P_n)
# 示例:计算3步转移矩阵
P = np.array([[0.7, 0.3],
[0.4, 0.6]])
# 先算2步
P2 = ck_step(P, P)
# 再算3步:2步 + 1步
P3 = ck_step(P2, P)
print("3步转移矩阵:")
print(P3)
2.4 本章知识体系
说了这么多,我画个图帮你理清思路。下面这张SVG图展示了本章的核心逻辑:
嗯,到这里你应该明白了。齐次性决定了模型的简洁度,n步转移概率决定了预测的深度,而C-K方程则是连接两者的桥梁。在趋势跟踪中,这三者缺一不可。
我个人觉得,学数学表达不是为了炫技,而是为了在实盘中少踩坑。你想想看,如果你连转移概率怎么算都不清楚,怎么敢用它来指导仓位?所以这一章虽然有点干,但值得你多花点时间消化。
公众号:蓝海资料掘金营,微信deep3321