曼德博分形第二章:分形与自相似性——多尺度市场几何
Read in English跨时间尺度的自相似性、科赫曲线与海岸线悖论在价格图表中的应用,以及构建多重分形价格生成器。
🔊 聆听文章 (Listen to Article)
曼德博分形第二章:分形与自相似性——多尺度市场几何
"把一张不带时间刻度的股价走势图拿给任何专家看,无论是一分钟图、一天图还是一年图,没有人能仅凭形态判断这是哪个时间周期。这不是巧合,这是分形结构的数学签名。" —— 本华·曼德博
从海岸线悖论到市场几何学
曼德博分形几何学的起点是一个看似简单的问题:"英国的海岸线有多长?" 答案取决于测量所用的尺子长度——用越短的尺子测量,测出的海岸线就越长,因为更短的尺子能捕捉到更多的曲折细节。这种"长度随测量尺度变化"的性质,正是分形(Fractal)的核心特征:自相似性(Self-Similarity),即物体在不同放大倍数下呈现相似的结构。
曼德博将这一几何学洞察直接应用于金融市场价格序列,得出了一个颠覆性的观察:将一张股票走势图的时间轴刻度抹去,无论是分钟图、小时图、日线图还是月线图,其价格波动的统计"纹理"看起来惊人地相似。
分形维度的数学定义
分形维度 $D$ 衡量一个几何对象填充空间的复杂程度,介于其拓扑维度与嵌入空间维度之间。对于自相似分形,维度由下式定义:
$$D = \frac{\log(N)}{\log(1/r)}$$
其中 $N$ 为将图形按比例 $r$ 缩小后可以拼出原图所需的自相似副本数量。
以科赫雪花曲线(Koch Curve)为例:每条线段被分为 3 等份($r = 1/3$),中间一段被替换为两条同样长度的线段($N = 4$):
$$D_{Koch} = \frac{\log 4}{\log 3} \approx 1.2619$$
这一维度介于 1(直线)和 2(平面)之间,恰好量化了科赫曲线"比直线复杂但又填不满平面"的特性。
科赫曲线迭代生成过程:
第0代: ―――――――――――
第1代: ――――/\――――
第2代: 每条线段再次替换...
第N代: 维度收敛于 D ≈ 1.2619,长度趋向无穷大
价格序列的分形维度与市场"粗糙度"
曼德博将分形维度概念引入价格时间序列,用以量化价格路径的"粗糙度"或"折返频率"。价格序列的分形维度可以通过测度盒计数法(Box-Counting Method)估算:
$$D = \lim_{\epsilon \to 0} \frac{\log N(\epsilon)}{\log(1/\epsilon)}$$
其中 $N(\epsilon)$ 为覆盖价格曲线所需边长为 $\epsilon$ 的正方形盒子数量。
| 市场状态 | 分形维度范围 | 价格路径特征 |
|---|---|---|
| 强趋势市场 | $D \approx 1.2 - 1.35$ | 路径相对平滑,方向性折返少 |
| 震荡/随机游走市场 | $D \approx 1.5$ | 路径与标准布朗运动相似 |
| 剧烈波动/恐慌市场 | $D \approx 1.6 - 1.8$ | 路径极度折返曲折,逼近填满平面 |
多重分形价格生成器:曼德博的替代建模方案
传统的几何布朗运动模型假设价格路径处处具有相同的统计性质(单一分形)。曼德博提出用多重分形模型(Multifractal Model)替代——不同时间区间可以具有不同的局部分形维度,从而更真实地刻画市场在平静期与恐慌期的结构性差异。
import numpy as np
def midpoint_displacement_fractal(n_iterations: int = 10, roughness: float = 0.5, seed: int = 42):
"""
中点位移法生成分形价格路径(近似分数布朗运动)
:param n_iterations: 迭代细分次数,价格点数为 2^n + 1
:param roughness: 粗糙度参数,对应赫斯特指数 H = 1 - roughness 的简化映射
"""
np.random.seed(seed)
n_points = 2 ** n_iterations + 1
path = np.zeros(n_points)
path[0], path[-1] = 0.0, np.random.normal(0, 10)
step = n_points - 1
scale = 10.0
while step > 1:
half = step // 2
for start in range(0, n_points - 1, step):
mid = start + half
avg = (path[start] + path[start + step]) / 2
path[mid] = avg + np.random.normal(0, scale)
scale *= (0.5 ** roughness)
step = half
return path
# 生成一条具有分形结构的模拟价格路径
fractal_price = midpoint_displacement_fractal(n_iterations=8, roughness=0.5)
print(f"生成路径点数: {len(fractal_price)}, 起点: {fractal_price[0]:.2f}, 终点: {fractal_price[-1]:.2f}")
print(f"路径最大值: {fractal_price.max():.2f}, 路径最小值: {fractal_price.min():.2f}")
可执行的操作规则
- 不要基于单一时间框架的图表形态得出结论。 由于价格的自相似分形结构,日线图上的"头肩顶"在分钟图上同样常见且同样不具备预测力,图表形态识别必须与其他独立证据交叉验证。
- 用分形维度量化市场状态,而非单纯依赖移动平均线。 当分形维度从 1.3 附近上升至 1.6 以上,意味着市场结构从趋势性转为高度折返的震荡/恐慌状态,应主动降低趋势跟踪仓位。
- 认识到"周期越长越可靠"的说法是错觉。 分形几何证明,价格路径不存在天然更"真实"的时间尺度;月线图并不比 5 分钟图具有更高的结构真实性,只是波动的绝对单位不同。