Py学习  »  Python

追涨还是抄底Python一眼看穿,教你用量化方法框出“赚钱区间”

老余捞鱼 • 9 月前 • 127 次点击  
图片
 点击上方蓝字 | 关注更多好文
写在前面的话


最近研究了一套量化方法,用Python分析股价的追涨(趋势延续)和抄底(超跌反弹)信号。这篇文章会手把手教你用方差比自相关分析方法来识别市场的“暴利阶段”和“死亡陷阱”。代码已打包,直接下载就能用!

你有没有想过,股市的涨跌其实不是完全随机的?

为啥同样的股票,有时追高能赚,有时要回调?

今天我带你用Python和K线图,挖掘股市的赚钱区间,让你知道什么时候该追,什么时候该等。

无编程基础的也没关系,文章超简单,都能看懂!

股市的三种状态:趋势、回调、振荡


 The "Three States" of the Stock Market
01

股市就像个任性的孩子,有时一根筋往上冲(趋势),有时又调头往下跑(回调),还有时候完全没方向(随机)。

这三种状态,决定了你的交易策略:

  • 趋势阶段(比如GME散户大战华尔街):GameStop先是趋势暴涨,追涨的人赚疯;后来回调,抄底的才有机会。这个阶段适合“追涨杀跌”,顺势而为。

  • 反转阶段(比如暴涨后的阴跌回调):价格涨多必跌,适合“高抛低吸”。

  • 随机阶段(比如振荡市):股价无规律,乱操作必亏,不如躺平。

那么问题来了:怎么知道当前是哪种状态?

答案是:用数据!我们可以用两个工具——方差比自相关分析,来判断股价的“性格”。

方差比:股市的“性格探测器”


Variance Ratio
02

方差比听起来高大上,其实是个简单的“探测器”。它能告诉你,股价是按部就班(随机),还是有规律(趋势或回调)。

如下图:我用量化程序分析GME 2021年暴涨暴跌案例,标注关键买卖点。

  • 看股价在200日均线上方(上图)+方差比>1(中图红区)+成交量放大(下图),就是"闭眼买"信号;
  • 跌破均线+方差比<1(绿区)则是"高抛低吸"时机;
  • 当指标都在1附近徘徊时,管住手别乱动!

记住口诀:"线上红柱跟趋势,线下绿柱等反转,量能不够别硬干"。

2.1


原理超简单

设股价完全随机(像抛硬币),那么10天的波动应该是1天波动的10倍。方差比率就是拿实际波动和理论波动比一比:

这个方法来自1988年两位大神Lo和MacKinlay的研究,他们发现:股市并不总是随机的,总有些“赚钱区间”能被抓住!

2.2


核心代码示例

这个代码示例会算出方差比率,告诉你股价是趋势、回调还是随机。还能生成上面那张分析图。

# 拉取GameStop数据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 = [25102060]  # 不同时间周期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}'] = pvalax2.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
03

除了方差比,还有个更直观的工具——自相关分析。它就像是检查股价的“记忆力”:今天涨了,明天还涨吗?

这套图解释了多个频率下收益的滚动自相关性。

  • 上图:采用移动平均线的价格;

  • 中图:滞后 1 阶自相关性;

  • 下图:滞后 1-3 阶的平均自相关性。虚线表示显著性阈值。

3.1


简单解释

自相关系数看的是股价的“前后关系”:

我们用一个滑动窗口(比如60天),算出自相关系数,再看看它是否“显著”(超过某个阈值)。如果显著,就说明股价有规律可循!

3.2


核心代码示例

再来看自相关系数的代码,帮你确认股价的“记忆力”。

# 拉取数据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  # 滞后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)  # 显著性阈值# 文章容量有限,请到文末下载完整代码

代码说明

  • 自相关 :用60天的滑动窗口,算滞后1天的自相关系数。

  • 阈值:如果系数超过±2/√60,说明显著(趋势或回调)。

  • 画图:股价在上,自相关在下,帮你直观看到规律。

运行结果2021年初,自相关系数为正且显著,说明趋势强;2021年后,系数变负,进入回调。

案例分析:GameStop的“过山车”


 Case Analysis
04

用上文方差比和自相关分析章节介绍的理论和代码分析GameStop,结果一目了然:

  • 2021年初:方差比率>1,自相关系数为正,p值<0.05,股价暴涨,追涨赚翻。

  • 2021年后:方差比率<1,自相关系数为负,股价回调,抄底有机会。

  • 其他时间:方差比率≈1,自相关系数≈0,股价随机,观望最好。

注意事项:别把工具当万能钥匙


 Precautions
05

方差比和自相关分析很强大,但不是万能的:

  • 市场变化快:今天是趋势,明天可能回调,随时更新分析。

  • 风险别忘:量化分析只是工具,交易还得看资金管理和心态。

  • 结合其他指标:比如成交量、RSI,综合判断更靠谱。

⑥观点总结


 Summary of Views
06

通过方差比率和自相关系数,我们能找到股市的“赚钱区间”,知道什么时候追涨,什么时候抄底。GameStop的案例告诉我们:股市不是完全随机的,数据能帮你占先机!快用Python试试,跑出属于你的“赚钱图”!

  • 股市有三种状态:趋势、回调、随机,用对策略能赚钱。
  • 方差比率>1是趋势,<1是回调,≈1是随机。
  • 自相关系数正值是趋势,负值是回调,接近0是随机。
  • 用Python的yfinance和matplotlib,小白也能分析K线图。
  • 量化分析不是万能,结合风险管理和心态才靠谱。
⑦源码下载


Code Download
07

以上的代码可直接下载完整源文件,或在我的Google Colab中查看,内附中文构建说明。

如觉得对您有所帮助,请我喝杯咖啡。
下载地址如下:

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/181462