市场里有两种永恒的叙事。

一种说:涨多了必跌,跌多了必涨。股价像被一根看不见的橡皮筋牵着,总要回到某个"合理"的位置。支撑这种信念的证据随手可见——1987年黑色星期一后的V形反弹、2008年金融危机期间的超卖、A股市场上那无数次"高估值回归"。

另一种说:趋势一旦形成,就会自我强化。突破阻力位后追进去的人赚到了钱,这些钱又吸引更多人入场,价格继续上涨。互联网泡沫前的科技股、比特币的历次牛市、顺周期板块的持续跑赢——涨势似乎永不停歇,直到突然停住。

这两种叙事都是对的。它们同时存在于市场中,分别统治着不同的时间尺度、不同类型的资产、不同程度的市场环境。这不是悖论,是结构。理解这个结构,是每个量化交易者的基本功。


均值回归与动量:量化策略的两大基石

一、为什么市场会均值回归

1.1 来自物理学的隐喻

均值回归的直觉来自一个物理系统:一个小球被风吹离平衡位置,风停之后,它会振摆回来,最终停在平衡点附近。这个过程可以用 Ornstein-Uhlenbeck 过程(简称 OU 过程)精确描述:

$$dx_t = -\theta (\mu - x_t) dt + \sigma dW_t$$

其中 $\theta$ 是均值回归速度,$\mu$ 是均值水平,$\sigma$ 是波动率,$dW_t$ 是布朗运动。

这个方程的解告诉我们:小球偏离均值越远,回归的"拉力"越大。具体来说,从偏离状态恢复到均值的一半所需的平均时间约为 $\ln 2 / \theta$,这就是均值回归半衰期的概念。

应用到金融市场:

  • 当一只股票因为短期利空下跌 30%,如果它的 OU 过程参数 $\theta = 0.5$(对应半衰期约 1.4 天),理论上价格在几天内就会显著反弹
  • 当一个行业板块的估值溢价偏离历史均值两个标准差,如果市场相信"均值终将回归",聪明的资金会提前布局,形成自我实现的预言

1.2 均值回归的三个真实来源

均值回归不是市场的"假设",而是有具体机制的:

流动性驱动回归。当某只小盘股因某个新闻出现短暂抛售,流动性提供商(做市商)在报价时会扩大买卖价差以对冲风险。这种扩大的价差本身就是一种定价错误——聪明的套利者会发现"这个价格偏低",买入后价格反弹。这是最经典的短期均值回归机制。

信息不对称修复。一家公司的股价在公司发布财报前持续下跌(内幕交易者先知先觉)。财报发布后,市场发现实际情况没有那么差,价格快速反弹。这是一种中期的均值回归——信息从少数人扩散到市场全体,错误定价被纠正。

估值体系压缩。当某个行业板块的整体估值(PE、PB)显著偏离历史均值和行业基本面,美联储加息周期中科技股的估值重估,就是一种长期均值回归。它可能持续数年,但最终会发生。

1.3 均值回归的统计证据

检验均值回归是否存在,最直接的方法是计算资产的自相关性

对于股票价格的对数收益率 $r_t$,自相关系数 $\rho_k = \text{Corr}(r_t, r_{t-k})$ 衡量了"过去收益"对"当前收益"的预测能力。

  • 如果 $\rho_k < 0$(负自相关):存在均值回归。今天上涨 → 明天倾向于下跌
  • 如果 $\rho_k > 0$(正自相关):存在动量。今天上涨 → 明天倾向于继续上涨
  • 如果 $\rho_k \approx 0$:价格随机游走,无法预测

学术界对美股日收益率的共识是:$\rho_1$ 接近于零(在 -0.05 到 +0.05 之间),这意味着美股在日级别几乎没有显著的均值回归或动量效应。但这个结论高度依赖时间尺度。在更低频(周、月)和更高频(分钟、tick)上,结论截然不同——这一点我们后面会深入讨论。


二、为什么趋势会延续

2.1 动量不是赌徒谬误

有人批评动量策略是"追涨杀跌"的合理化版本,是"赌徒谬误"(认为连开5次红之后,第6次更可能开红)的逆向版本。但这种批评混淆了两件事:

赌徒谬误是无视独立事件的概率偏差。

动量是有真实市场结构支撑的收益率可预测性。

动量效应的来源有三个层次:

信息扩散的延迟。好消息从核心机构投资者传到场外散户,需要时间。在这个过程中,股价不是一步到位,而是逐级上涨。每次部分信息被定价,就推动价格再涨一段。这个过程本身就是趋势。

行为金融的羊群效应。人类决策者有从众倾向——当周围的人都在买某只AI概念股,即使基本面估值已经离谱,加入泡沫的成本也低于被市场淘汰的成本。这种行为金融驱动下的趋势,比纯粹的信息扩散持续更久、幅度更大。

系统性的风险厌恶不对称。投资者在亏损时更愿意持有等待回本(损失厌恶),在盈利时更倾向于过早止盈(处置效应)。这导致市场在下跌趋势中"跌过头"——因为持有者的不理性行为延迟了抛压;在上涨趋势中"涨过头"——因为买入行为本身就是滞后的。这两种效应共同制造了短期的趋势和长期的反转。

2.2 动量持续性的量化表达

如果说均值回归的核心参数是半衰期(恢复速度),动量的核心参数就是持续性(趋势寿命)。

在时间序列分析中,持续性通常用 AR(1) 过程的系数 $\phi$ 来描述:

$$r_t = \phi r_{t-1} + \varepsilon_t$$

  • $\phi > 0$ 意味着正自相关,趋势延续
  • $|\phi| < 1$ 保证了系统的稳定性
  • 特征时间为 $1/(1-\phi)$——这个数字越大,趋势持续得越久

在实际市场数据中,不同资产类别的动量持续性差异极大

资产类型 典型时间尺度 动量特征 主要驱动
高频(tick到分钟) 秒~分钟 强正自相关($\phi$ ~ 0.3-0.7) 订单流惯性、流动性不对称
日级别 1~20天 接近零,自相关噪声 信息扩散 + 噪声交易的混合
周级别 3~12周 弱正自相关 分析师预期调整的惯性
月级别 3~12个月 较强正自相关 基本面周期、机构调仓惰性
年级别 1~5年 负自相关(长期反转) 估值回归

这个表格揭示了一个关键规律:均值回归和动量不是非此即彼,而是不同时间尺度上的主导模式

2.3 经典动量因子:过去12个月收益

金融学中最著名的动量因子来自 Jegadeesh 和 Titman(1993)的研究。他们发现:买入过去3-12个月表现最好的股票,卖出表现最差的股票,这个组合在未来3-12个月能产生显著的异常收益。这个策略在美股市场自1926年以来持续有效(直到2010年代后明显衰减——这是后话)。

但"过去12个月"这个窗口不是随意选出来的。它反映的是:信息扩散到市场定价需要3-12个月,而超过12个月后,估值偏离足够大,开始触发均值回归力量。


三、均值回归与动量如何在不同尺度上共存

3.1 时间尺度的分离机制

这是理解两种策略如何共存的核心。

假设你在观察一只股票的价格序列 $P_t$。如果分别在五个时间尺度上做分析:

Tick 级(秒):价格受订单簿结构主导。大量被动买盘的挂单会支撑价格,形成短期"黏性"。在这个尺度上,微观订单流的行为模式会产生持续性——这正是高频动量策略的利润来源。

分钟级:做市商的库存管理行为开始体现。当某方向上的订单流持续流入,做市商被动累积库存,为平衡风险会调整报价,从而延续趋势几分钟到几十分钟。这是技术分析中"趋势线"和"支撑阻力"在微观层面的来源。

日级:信息不对称 + 噪声交易的混合结果。美股日级自相关接近零,意味着既没有显著的日内动量,也没有显著的日内反转。但这恰恰是最拥挤的策略区间——正因为无明显规律,竞争充分。

周级:机构投资者的反应滞后开始主导。季度报告发布后,机构需要数周时间重新评估和调仓,股价在这个窗口内持续反映信息不对称。这是最经典的动量策略区间。

月级及以上:估值体系开始发挥作用。当估值偏离超过2个标准差,即便趋势再强,也会在某个节点触发均值回归——可能是加息预期、可能是盈利下调、可能是聪明的逆向投资者入场。

3.2 一个直观的比喻

想象一条河流。

在湍急的漩涡中(高频),水流的惯性主导——你扔进去一片叶子,它会沿着漩涡方向漂很远。这是动量

在漩涡外围的缓流中(低频),水面最终会回归平静——无论漩涡多剧烈,水面高度(均值)总是稳定的。这是均值回归

关键洞察:这两种物理现象同时存在,并不矛盾。区别在于你观察的时间窗口和空间尺度。

市场也一样。在秒级,动量占主导。在月度以上,均值回归占主导。在中间的某个区间——对股票来说是几周到几个月——两者势均力敌,这也是策略最丰富、研究最密集的区域。

3.3 横截面与时间序列的区分

在讨论动量和均值回归时,必须区分两种不同的研究视角:

时间序列动量(Time-Series Momentum):同一个资产,自己跟自己的过去比。"过去N个月上涨" → "未来倾向于继续上涨"。

横截面动量(Cross-Sectional Momentum):不同资产之间比。"在这群资产中过去涨得最多" → "未来倾向于继续跑赢"。这是 Jegadeesh-Titman 方法。

类似的:

时间序列均值回归:资产价格跟自己的历史均值比。"当前估值低于历史均值" → "未来倾向于回归均值"。

横截面均值回归:不同资产之间比。"估值最低的这批股票" → "未来倾向于跑赢高估值股票"。这是价值因子(Book-to-Market)的逻辑。

这两种框架在因子投资中都有深厚的研究基础,但它们的有效期不同:横截面动量(个股相对排名)在牛市中后期容易崩溃;时间序列动量在市场结构变化时也会衰减。


四、从理论到策略:均值回归与动量的工程实现

4.1 均值回归策略的经典框架

均值回归策略的工程化通常包含以下核心组件:

第一步:定义"均衡"

最简单的均衡定义是移动平均:
$$\mu_t = \frac{1}{N}\sum_{i=0}^{N-1} P_{t-i}$$

偏离度 = $(P_t - \mu_t) / \mu_t$

更稳健的做法是使用 Z-Score
$$z_t = \frac{P_t - \text{RollingMean}(P_t, N)}{\text{RollingStd}(P_t, N)}$$

当 $z_t > 2$(价格显著高于均衡),做空;当 $z_t < -2$,做多。

第二步:计算回归概率或半衰期

利用 OU 过程的解析性质:
$$\text{HalfLife} = \frac{\ln 2}{\theta}$$

半衰期越小,均值回归发生得越快。如果你的持仓周期远短于半衰期,均值回归策略可能还没兑现就到期了。

第三步:设置止损

均值回归策略最怕的是"不回归"。基本面恶化导致的偏离不会回归,而是演变成永久性损失。因此必须设置硬止损——通常在偏离度超过 3.5 倍标准差或持有超过 $2 \times \text{HalfLife}$ 后强制平仓。

4.2 动量策略的经典框架

动量策略的工程化相对直接:

收益率排序法
$$R_{t-T:t}^i = \frac{P_t^i - P_{t-T}^i}{P_{t-T}^i}$$
$$\text{Rank}^i = \text{rank}(R_{t-T:t}^i)$$

做多排名最高的前 20%,做空排名最低的前 20%,等权或按排名加权。

动量信号的衰减特性

动量信号不是线性的。研究表明,过去 12 个月的动量信号最强,但最近 1 个月的收益需要剔除(因为它往往和长期动量反向——这是短期反转效应)。常用的做法是:

$$\text{Momentum Score} = \sum_{k=1}^{12} r_{t-k} - k \cdot r_{t-1}$$

即对过去 12 个月的收益率加权求和,权重线性递减,并剔除最近 1 个月。

趋势持续性的卡尔曼滤波估计

更动态地估计动量持续性,可以使用卡尔曼滤波实时更新 OU 过程的 $\phi$ 系数:

import numpy as np

def kalman_filter_ou(data, theta_init=0.1, delta=1e-4, lambda_=1e-3):
    """
    使用卡尔曼滤波估计 OU 过程的参数 phi (theta in OU notation)
    OU 过程: dX = -θ(X - μ)dt + σdW
    离散形式: X_{t+1} = φX_t + (1-φ)μ + ε_t
    
    参数:
        data: 价格或收益率序列
        theta_init: 初始回归速度估计
        delta: 状态转移噪声
        lambda_: 观测噪声
    """
    n = len(data)
    # 状态: [φ, μ, σ]
    x = np.array([theta_init, data[0], 0.01])
    P = np.eye(3) * 0.1  # 状态协方差矩阵
    
    # 观测矩阵: 观测 X_t, 预测 X_{t+1} = φX_t + (1-φ)μ
    phi_history = []
    
    for t in range(1, n):
        # 观测向量: [X_{t-1}, 1, 0] 用于估计 X_t = φX_{t-1} + (1-φ)μ
        H = np.array([[x[0], 1 - x[0], 0]])  # ⚠️ 观测矩阵依赖当前状态估计
        
        # 预测步骤
        x_pred = np.array([
            x[0],                           # φ 不变
            x[1],                           # μ 不变
            x[2]                            # σ 不变
        ])
        P_pred = P + delta * np.eye(3)
        
        # 观测: 实际 X_t
        z = data[t]
        z_pred = H @ x_pred
        
        # 卡尔曼增益
        S = H @ P_pred @ H.T + lambda_
        K = P_pred @ H.T / S
        
        # 更新步骤
        innovation = z - z_pred
        x = x_pred + K.flatten() * innovation
        P = (np.eye(3) - np.outer(K, H)) @ P_pred
        
        # 约束 φ 在 (0, 1) 范围内
        x[0] = np.clip(x[0], 0.001, 0.999)
        
        phi_history.append(x[0])
    
    return phi_history

# 示例:估计日收益率的自相关持续性
returns = np.diff(np.log(np.random.randn(1000) + 10))  # 模拟收益率
phi_series = kalman_filter_ou(returns)

print(f"平均持续性系数 φ: {np.mean(phi_series):.4f}")
print(f"特征时间尺度: {1/(1-np.mean(phi_series)):.1f} 天")

卡尔曼滤波的优势在于它能实时跟踪 $\phi$ 的变化——当市场从高动量状态切换到均值回归状态($\phi$ 快速下降),你可以在策略中动态调整仓位。

4.3 两种策略的融合:Adaptive Framework

纯粹依赖一种逻辑的策略在某些市场环境下会持续亏损。更成熟的量化系统会同时监控两种信号,并根据市场状态动态调整权重

一个简单的自适应框架逻辑:

import numpy as np
from collections import deque

class AdaptiveMomentumMeanReversion:
    """
    自适应动量/均值回归框架
    根据短期自相关的符号动态调整策略权重
    """
    def __init__(self, lookback_short=20, lookback_long=60):
        self.short = lookback_short
        self.long = lookback_long
        self.price_history = deque(maxlen=lookback_long + 10)
    
    def compute_signals(self, current_price):
        self.price_history.append(current_price)
        prices = np.array(self.price_history)
        returns = np.diff(prices) / prices[:-1]
        
        if len(returns) < self.long:
            return None, None, None
        
        # 均值回归信号: Z-Score
        mean = np.mean(prices)
        std = np.std(prices)
        z_score = (current_price - mean) / std
        
        # 动量信号: 12个月累计收益率
        mom_return = (current_price - prices[-self.long]) / prices[-self.long]
        
        # 自适应权重: 基于近期自相关判断市场状态
        short_returns = returns[-self.short:]
        if len(short_returns) > 1:
            autocorr = np.corrcoef(short_returns[:-1], short_returns[1:])[0, 1]
        else:
            autocorr = 0.0
        
        # 自相关 > 0 → 动量环境 → 加大动量权重
        # 自相关 < 0 → 均值回归环境 → 加大均值回归权重
        autocorr = np.clip(autocorr, -0.5, 0.5)
        momentum_weight = 0.5 + autocorr  # [0, 1]
        mean_reversion_weight = 1 - momentum_weight
        
        # 合成信号
        # Z-Score > 0 → 做空均值回归; < 0 → 做多均值回归
        # mom_return > 0 → 做多动量; < 0 → 做空动量
        mr_signal = -np.sign(z_score)  # 偏离均值 → 反向操作
        mom_signal = np.sign(mom_return)
        
        combined_signal = (
            mean_reversion_weight * mr_signal + 
            momentum_weight * mom_signal
        )
        
        return combined_signal, z_score, autocorr
    
    def describe_state(self, autocorr):
        if autocorr > 0.15:
            return "强动量市场(自相关显著为正)"
        elif autocorr < -0.15:
            return "强均值回归市场(自相关显著为负)"
        else:
            return "中性市场(自相关接近零)"

这个框架的核心理念是:不预设市场应该服从哪种规律,而是让数据告诉你现在哪种规律在主导。当短期自相关为正,动量策略的预期优势更大;当短期自相关为负,均值回归策略的胜率更高。


五、实践中的关键参数:时间尺度选择

5.1 半衰期与持有期的匹配原则

均值回归策略的持有期应该与半衰期匹配。太短,信号还没兑现就平仓了;太长,承担了不必要的隔夜风险。

资产类型 典型半衰期 建议持有期 适用策略
高频(日内 tick) 分钟级 几秒到几分钟 做市、统计套利
日内波段 小时级 1-4 小时 日内动量/反转
短期均值回归 1-5 天 3-10 天 统计套利、事件驱动
中期动量 3-12 周 4-26 周 趋势跟踪、动量因子
长期价值 月到年 1-3 年 价值投资

5.2 不同时间尺度的信号衰减

动量和均值回归信号都会随时间衰减,但衰减模式不同:

均值回归信号:高置信度的偏离通常在 $1 \times \text{HalfLife}$ 内完成大部分回归。超过 $3 \times \text{HalfLife}$ 仍未回归的信号,均值回归假设大概率失效,应该止损。

动量信号:最强的预测能力在窗口期末尾(最近的信息权重最大)。超过最优窗口(如 12 个月)后,动量信号反转——这叫动量崩溃(Momentum Crash)。Moskowitz 等人(2012)发现,避开动量最差月份(通常是市场从熊转牛的过渡期)可以显著提升风险调整后收益。


六、TickDB 如何支撑这两类策略的实证研究

理解均值回归和动量的理论基础后,下一步是用真实市场数据验证这些假设,并在此基础上构建和回测策略。

TickDB 的数据体系可以为这两类研究提供支撑:

对于均值回归研究:历史 K 线数据(支持最长 10 年级别的跨周期回测)可以用来计算不同时间窗口的 Z-Score,检验均值回归假设在不同资产、不同市场周期下的有效性。你可以用 /v1/market/kline 接口获取多标的的历史数据,计算滚动均值和标准差,验证"偏离多少个标准差后均值回归概率显著上升"。

对于动量研究:WebSocket 实时深度数据(depth 频道)可以用来研究微观层面的订单簿失衡与短期价格动量之间的关系——买卖压力比的变化是否预测未来 5 分钟的价格方向?这是高频动量策略的核心研究课题。

对于自适应策略:结合 REST API 获取历史数据(离线研究)和 WebSocket 实时数据(在线执行),可以实现"白天用实时信号执行自适应策略,夜间用历史数据更新模型参数"的闭环。

一个典型的研究-执行闭环:

import os
import time
import requests
import json

TICKDB_API_KEY = os.environ.get("TICKDB_API_KEY")
BASE_URL = "https://api.tickdb.ai/v1"

def get_historical_klines(symbol, interval="1d", limit=252):
    """
    获取历史 K 线数据用于离线研究
    252 个交易日 ≈ 1 年
    """
    headers = {"X-API-Key": TICKDB_API_KEY}
    params = {
        "symbol": symbol,
        "interval": interval,
        "limit": limit
    }
    
    response = requests.get(
        f"{BASE_URL}/market/kline",
        headers=headers,
        params=params,
        timeout=(3.05, 10)  # ⚠️ 生产环境必须设置超时
    )
    
    if response.status_code == 429:
        retry_after = int(response.headers.get("Retry-After", 5))
        time.sleep(retry_after)
        return get_historical_klines(symbol, interval, limit)
    
    data = response.json()
    if data.get("code") != 0:
        raise RuntimeError(f"API Error: {data.get('message')}")
    
    return data.get("data", [])

def analyze_mean_reversion(prices, window=20):
    """
    基于 Z-Score 的均值回归分析
    返回每个时间点的偏离度和潜在回归幅度
    """
    import numpy as np
    results = []
    
    for i in range(window, len(prices)):
        window_prices = prices[max(0, i-window):i]
        mean = np.mean(window_prices)
        std = np.std(window_prices)
        
        if std > 0:
            z_score = (prices[i] - mean) / std
            results.append({
                "price": prices[i],
                "z_score": z_score,
                "potential_return": -z_score * std / prices[i]  # 预期回归幅度
            })
    
    return results

# 示例:分析 AAPL 近一年的均值回归特征
# klines = get_historical_klines("AAPL.US", interval="1d", limit=252)
# prices = [float(k["close"]) for k in klines]
# analysis = analyze_mean_reversion(prices)

这段代码展示了研究向执行过渡的基本模式:从 TickDB 获取历史数据 → 在本地计算信号 → 将信号转化为策略决策。


七、风险管理与策略存活的关键

7.1 均值回归策略的致命陷阱

均值回归策略最大的风险不是"不回归",而是你不知道它什么时候不回归。几个必须防范的场景:

基本面断裂:一只因"市场恐慌"而下跌 40% 的银行股,如果基本面实际上已经资不抵债(2008 年的雷曼),均值不会回来——它会趋近于零。在这种环境下,基于历史均值或统计偏离度的止损是唯一保险。

流动性枯竭:在 2020 年 3 月新冠暴跌期间,许多基于"均值回归"的策略在流动性最差的时候被迫平仓——不是因为信号错了,而是因为无法执行。此时买卖价差扩大 10 倍以上,任何依赖快速反向交易获利的策略都会在滑点上吃掉所有利润。

参数过拟合:用 10 年历史数据优化出一个"半衰期 = 5 天"的均值回归策略,在样本外可能完全失效。均值回归的半衰期本身是时变的——市场微观结构的改变、参与者结构的改变、交易制度的改变都会影响回归速度。

7.2 动量策略的致命陷阱

动量崩溃:2015 年 8 月 24 日("Black Monday" 盘中),基于短期动量的策略在几分钟内从大赚变成大亏——因为所有资产在同一时刻"动量反转"。历史上几次最大的动量回撤都发生在市场从下跌快速反弹的过渡期。

拥挤交易:当大量资金同时使用相同的动量因子,交易的边际价格会提前——动量效应被套利殆尽。更危险的是,当这些拥挤的策略同时平仓,会引发"动量踩踏"——正是 2021 年初 GameStop 和 2022 年量化策略连锁清算的机制。

尾部风险的非对称性:动量策略在正常市场中小赚,在市场反转时巨亏——损失分布呈负偏态(fat left tail)。用夏普比率衡量时可能看起来不错,但用最大回撤衡量则触目惊心。Moskowitz 等人(2012)提出的时间序列动量期货策略,在 2008 年金融危机中实现了正收益(因为做空了危机中跌得最多的品种),但同年 11 月的急剧反弹也造成了显著回撤。

7.3 共同的风险管理原则

无论你最终选择均值回归还是动量路线,以下原则必须遵守:

  1. 止损先于预测:不要等"这次不一样"来验证你的假设。市场不会为你的固执买单。
  2. 头寸规模决定存活概率:一个胜率 60% 的策略,如果单笔亏损达到本金的 20%,只需要连续三次止损就能让账户元气大伤。凯利公式或其保守版本(凯利半额)是计算头寸规模的基准。
  3. 分散化是免费的午餐:均值回归策略和动量策略本身就是低相关甚至负相关的——在组合中同时持有,可以在不动用额外资本的情况下降低最大回撤。
  4. 监控你的信号质量:当策略的 Z-Score 阈值失效率开始上升(均值回归信号发出后不回归的比例上升),就是模型需要更新的信号。

八、结语:拥抱矛盾,理解尺度

均值回归和动量不是非此即彼的信仰选择,而是市场在不同时间尺度上展现的两种真实结构

涨多了会跌——这是月度和年度尺度上的大概率事件。

趋势会延续——这是分钟到月度尺度上的真实力量。

两者同时存在,因为市场参与者不是一个同质的"理性人",而是不同时间视野的资金混合——高频套利者、散户日内交易者、机构季度调仓者、长期价值投资者。他们的决策周期不同、信息来源不同、风险偏好不同,这让市场在每一个时间尺度上都同时呈现出动量(同一方向参与者的惯性)和均值回归(反向参与者的套利力量)。

理解这一点,比死守"动量万能"或"均值回归至上"更重要。


下一步行动

如果你想深入研究均值回归和动量背后的数学:推荐阅读 Carolin Zhu 的《Quantitative Trading》(Emanualrman 方向补充)和 Lo & MacKinlay 的《A Non-Random Walk Down Wall Street》——后者用严格的统计方法证明了价格序列中的可预测成分。

如果你想用真实数据验证本文中的假设:访问 tickdb.ai 注册,获取免费 API Key(无需信用卡),用本文中的代码框架对你的关注标的进行实证研究。

如果你习惯用 AI 辅助开发:在 AI 助手中搜索并安装 tickdb-market-data SKILL,可以更高效地获取历史 K 线数据和实时深度数据,加速策略研究与回测。


风险提示:本文不构成任何投资建议。均值回归和动量效应在历史上曾持续有效,但也存在显著的周期性衰减和策略拥挤风险。在实际部署任何量化策略前,请务必进行充分的样本外测试和风险管理。