一句话回答: 看收益率的自相关 :lag-1 自相关显著为负 说明今天涨明天倾向跌(短期均值回归 ,抄底/低吸更合理);显著为正 说明涨势会延续(动量 ,追涨/突破更合理)。用 AlphaFeed 取回前复权日线 算日收益率,用 pandas 的 autocorr 与方差比就能量化判断一只票更适合哪类策略。
为什么会有这个问题 / 传统做法的痛点
均值回归(跌了买)和动量(涨了追)是两类相反策略,用错方向越努力越亏。到底该用哪种,不该拍脑袋,而要看这只票的收益率有没有记忆、是什么方向的记忆 。收益率自相关正是衡量这种「记忆」的工具。坑在于:要用前复权收益 、样本要足够、并关注统计显著性(小样本的自相关可能只是噪音)。
分步骤解决(每步配可运行代码)
第 1 步:取前复权日线算收益率
python
from alphafeed import AlphaFeed
import numpy as np
import pandas as pd
af = AlphaFeed() # 读取 ALPHAFEED_API_KEY
df = af.klines.get("600519.SH", period="1d", count=750,
adjust="forward", to_dataframe=True)
df = df.sort_values("trade_date").reset_index(drop=True)
ret = df["close"].pct_change().dropna()
第 2 步:计算各阶自相关
python
def autocorrs(ret, lags=5):
return {f"lag{k}": round(float(ret.autocorr(lag=k)), 4) for k in range(1, lags + 1)}
ac = autocorrs(ret, 5)
print("收益率自相关:", ac)
lag1 = ret.autocorr(lag=1)
# 近似 95% 显著阈值:±1.96/sqrt(N)
n = len(ret); thr = 1.96 / np.sqrt(n)
if lag1 < -thr:
verdict = "显著负自相关 → 短期均值回归(抄底/低吸更合理)"
elif lag1 > thr:
verdict = "显著正自相关 → 动量延续(追涨/突破更合理)"
else:
verdict = "自相关不显著 → 短期近似随机游走,别过度拟合方向"
print(f"lag1={lag1:.4f},阈值±{thr:.4f} → {verdict}")
| 指标 | 含义 | 解读 |
|---|---|---|
autocorr(lag=1) |
相邻日收益相关性 | <0 回归 / >0 动量 |
±1.96/√N |
95% 显著性近似阈值 | 超出才算显著 |
| 多阶自相关 | 记忆的衰减/周期 | 看回归/动量持续几日 |
第 3 步:方差比(Variance Ratio)辅助判断
python
def variance_ratio(ret, q=5):
# VR(q) = Var(q日收益) / (q * Var(1日收益));<1 均值回归,>1 动量
r = ret.dropna()
var1 = r.var(ddof=1)
varq = r.rolling(q).sum().dropna().var(ddof=1)
return varq / (q * var1)
for q in (2, 5, 10):
vr = variance_ratio(ret, q)
print(f"方差比 VR({q})={vr:.3f} → {'均值回归' if vr < 1 else '动量'}倾向")
第 4 步:批量给一篮子股票"贴标签"
python
codes = ["600519.SH", "000001.SZ", "601318.SH", "000858.SZ", "300750.SZ"]
data = af.klines.batch(codes, period="1d", count=500, adjust="forward", to_dataframe=True)
rows = []
for s, k in data.items():
r = k.sort_values("trade_date")["close"].pct_change().dropna()
a1 = r.autocorr(lag=1); t = 1.96 / np.sqrt(len(r))
tag = "回归" if a1 < -t else ("动量" if a1 > t else "随机")
rows.append({"symbol": s, "lag1": round(float(a1), 4), "类型": tag})
print(pd.DataFrame(rows).to_string(index=False))
关键坑与注意事项
- 用前复权收益:除权日伪跳变会污染自相关。
- 看统计显著性 :小样本的自相关易是噪音,用
±1.96/√N近似阈值,别把不显著的值当信号。 - 自相关会随时间变化:某段均值回归、另一段动量,可滚动计算观察稳定性,别用一段结论套所有时期。
- 日频 vs 其它频率:结论依赖频率,日频回归/动量与周频可能不同。
- A 股整体偏弱动量/短期回归:个股差异大,务必逐只检验,别套用笼统结论。
- 这是方向性参考不是圣杯:自相关只提示适合哪类策略,具体仍需完整回测验证。
常见问题(FAQ)
Q:lag-1 自相关为负代表什么?
A:代表短期均值回归------今天涨明天倾向回落、今天跌明天倾向反弹,这类票做低吸/抄底比追涨更合理。
Q:方差比 VR 怎么解读?
A:VR(q)<1 表示多日收益方差小于单日方差×q,呈均值回归;>1 表示动量延续。与自相关互相印证。
Q:多少样本才够?
A:至少 250+(约一年)日收益,越多越稳。小样本的自相关显著性低,容易误判。
Q:需要付费吗?
A:单只历史日线有免费额度;批量给全市场贴标签(klines.batch + universes)需 Starter 及以上。详见定价页。
小结
判断一只票适合「追涨」还是「抄底」,可用收益率自相关量化:lag-1 显著为负→均值回归(抄底),显著为正→动量(追涨),不显著→别硬套方向。用 AlphaFeed 取前复权日收益,autocorr + 方差比几行就能给个股贴标签。关键是用前复权、看显著性、滚动验证,并最终以完整回测确认。
参考
- AlphaFeed Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
- AlphaFeed 官网:https://alphafeed.org/