最近研究了一套量化方法,用Python分析股价的追涨(趋势延续)和抄底(超跌反弹)信号。这篇文章会手把手教你用方差比和自相关分析方法来识别市场的“暴利阶段”和“死亡陷阱”。代码已打包,直接下载就能用!你有没有想过,股市的涨跌其实不是完全随机的?
为啥同样的股票,有时追高能赚,有时要回调?
今天我带你用Python和K线图,挖掘股市的赚钱区间,让你知道什么时候该追,什么时候该等。
无编程基础的也没关系,文章超简单,都能看懂!
The "Three States" of the Stock Market股市就像个任性的孩子,有时一根筋往上冲(趋势),有时又调头往下跑(回调),还有时候完全没方向(随机)。
这三种状态,决定了你的交易策略:
趋势阶段(比如GME散户大战华尔街):GameStop先是趋势暴涨,追涨的人赚疯;后来回调,抄底的才有机会。这个阶段适合“追涨杀跌”,顺势而为。
反转阶段(比如暴涨后的阴跌回调):价格涨多必跌,适合“高抛低吸”。
随机阶段(比如振荡市):股价无规律,乱操作必亏,不如躺平。
那么问题来了:怎么知道当前是哪种状态?
答案是:用数据!我们可以用两个工具——方差比和自相关分析,来判断股价的“性格”。
方差比听起来高大上,其实是个简单的“探测器”。它能告诉你,股价是按部就班(随机),还是有规律(趋势或回调)。
如下图:我用量化程序分析GME 2021年暴涨暴跌案例,标注关键买卖点。

- 看股价在200日均线上方(上图)+方差比>1(中图红区)+成交量放大(下图),就是"闭眼买"信号;
- 跌破均线+方差比<1(绿区)则是"高抛低吸"时机;
记住口诀:"线上红柱跟趋势,线下绿柱等反转,量能不够别硬干"。
设股价完全随机(像抛硬币),那么10天的波动应该是1天波动的10倍。方差比率就是拿实际波动和理论波动比一比:

这个方法来自1988年两位大神Lo和MacKinlay的研究,他们发现:股市并不总是随机的,总有些“赚钱区间”能被抓住!
这个代码示例会算出方差比率,告诉你股价是趋势、回调还是随机。还能生成上面那张分析图。
ticker = 'GME'
data = yf.download(ticker, start='2020-01-01', end='2025-04-01', interval='1d')
data['Returns'] = data['Close'].pct_change().dropna()
holding_periods = [2, 5, 10, 20, 60]
window_size = 252
def rolling_variance_ratio(returns, q, window):
vr_series = pd.Series(index=returns.index, dtype=float)
pval_series = pd.Series(index=returns.index, dtype=float)
df_vr = pd.DataFrame(index=data.index)
df_pval = pd.DataFrame(index=data.index)
for q in holding_periods:
vr, pval = rolling_variance_ratio(data['Returns'], q, window_size)
df_vr[f'VR_{q}'] = vr
df_pval[f'PVal_{q}'] = pval
ax2.tick_params(axis='both', which='major', labelsize=10)
plt.xlabel('Date', fontsize=8)
plt.tight_layout()plt.show()
代码说明:
数据:拉取2020-2025年的GME日K线数据,计算日收益率。
方差比率:用252天(一年)的滑动窗口,算不同周期(2、5、10、20、60天)的方差比率。
p值:如果p值<0.05,说明方差比率显著,股价有规律可循。
运行结果:2021年初,GME的方差比率>1,p值<0.05,说明是强趋势,适合追涨;2021年后,方差比率<1,进入回调,适合抄底。
Autocorrelation Coefficient除了方差比,还有个更直观的工具——自相关分析。它就像是检查股价的“记忆力”:今天涨了,明天还涨吗?

这套图解释了多个频率下收益的滚动自相关性。
自相关系数看的是股价的“前后关系”:

我们用一个滑动窗口(比如60天),算出自相关系数,再看看它是否“显著”(超过某个阈值)。如果显著,就说明股价有规律可循!
再来看自相关系数的代码,帮你确认股价的“记忆力”。
ticker = 'GME'
data = yf.download(ticker, start='2020-01-01', end='2025-04-01', interval='1d')
data['Returns'] = data['Close'].pct_change().dropna()
window = 60
lag = 1
def rolling_acorr(series, window, lag):
return series.rolling(window).apply(lambda x: pd.Series(x).autocorr(lag=lag), raw=False)
acorr = rolling_acorr(data['Returns'], window, lag)
threshold = 2 / np.sqrt(window)
代码说明:
运行结果:2021年初,自相关系数为正且显著,说明趋势强;2021年后,系数变负,进入回调。
用上文方差比和自相关分析章节介绍的理论和代码分析GameStop,结果一目了然:
2021年初:方差比率>1,自相关系数为正,p值<0.05,股价暴涨,追涨赚翻。
2021年后:方差比率<1,自相关系数为负,股价回调,抄底有机会。
其他时间:方差比率≈1,自相关系数≈0,股价随机,观望最好。
方差比和自相关分析很强大,但不是万能的:

市场变化快:今天是趋势,明天可能回调,随时更新分析。
风险别忘:量化分析只是工具,交易还得看资金管理和心态。
结合其他指标:比如成交量、RSI,综合判断更靠谱。
通过方差比率和自相关系数,我们能找到股市的“赚钱区间”,知道什么时候追涨,什么时候抄底。GameStop的案例告诉我们:股市不是完全随机的,数据能帮你占先机!快用Python试试,跑出属于你的“赚钱图”!
- 股市有三种状态:趋势、回调、随机,用对策略能赚钱。
- 用Python的yfinance和matplotlib,小白也能分析K线图。
以上的代码可直接下载完整源文件,或在我的Google Colab中查看,内附中文构建说明。
如觉得对您有所帮助,请我喝杯
咖啡。