市场里有两种永恒的叙事。
一种说:涨多了必跌,跌多了必涨。股价像被一根看不见的橡皮筋牵着,总要回到某个"合理"的位置。支撑这种信念的证据随手可见——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 共同的风险管理原则
无论你最终选择均值回归还是动量路线,以下原则必须遵守:
- 止损先于预测:不要等"这次不一样"来验证你的假设。市场不会为你的固执买单。
- 头寸规模决定存活概率:一个胜率 60% 的策略,如果单笔亏损达到本金的 20%,只需要连续三次止损就能让账户元气大伤。凯利公式或其保守版本(凯利半额)是计算头寸规模的基准。
- 分散化是免费的午餐:均值回归策略和动量策略本身就是低相关甚至负相关的——在组合中同时持有,可以在不动用额外资本的情况下降低最大回撤。
- 监控你的信号质量:当策略的 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 线数据和实时深度数据,加速策略研究与回测。
风险提示:本文不构成任何投资建议。均值回归和动量效应在历史上曾持续有效,但也存在显著的周期性衰减和策略拥挤风险。在实际部署任何量化策略前,请务必进行充分的样本外测试和风险管理。