曼德博分形第二章:分形与自相似性——多尺度市场几何

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. 不要基于单一时间框架的图表形态得出结论。 由于价格的自相似分形结构,日线图上的"头肩顶"在分钟图上同样常见且同样不具备预测力,图表形态识别必须与其他独立证据交叉验证。
  2. 用分形维度量化市场状态,而非单纯依赖移动平均线。 当分形维度从 1.3 附近上升至 1.6 以上,意味着市场结构从趋势性转为高度折返的震荡/恐慌状态,应主动降低趋势跟踪仓位。
  3. 认识到"周期越长越可靠"的说法是错觉。 分形几何证明,价格路径不存在天然更"真实"的时间尺度;月线图并不比 5 分钟图具有更高的结构真实性,只是波动的绝对单位不同。