均值回归策略在A股ETF市场获利的可能性
如何在股票市场获利曾经有人告诉我一个在股票市场赚钱的秘诀,只要掌握这个秘诀,赚钱就像捡钱一样容易。他说:这个秘诀其实很简单,就是在股票价格低的时候买入,在价格高的时候卖出。
啧啧,不愧是秘诀,明明是句废话,但又挑不出毛病。
问题是,如何判断价格是低还是高?我知道你想说:价值。低于价值就是低,高于价值就是高。但是,如何估算出它的价值?我知道现在估值方法一大堆,公式指标漫天飞,但是任何公式任何指标都是参考都不能直接用。而当你无法准确估算价值时,其他的都无从谈起。至于股神的“价值投资”,你说它是艺术也好,说它是玄学也罢,都不是我等凡人能搞明白的。
既然是凡人,那就要用凡人的方法。如果公式太复杂让人摸不着头脑,如果指标太多让人无所适从,那就都不用,我们就简单粗暴地求平均值。当然,也不能随便什么股票拿过来就求平均值,我们得挑,挑那种上下波动的股票,不要一路跌,也不要一路涨(我知道你可能青睐这种股票,但是这种股票不适合均值回归)。用统计学中的术语就是平稳,我们目标就是要寻找那种价格在时间序列上表现平稳的股票。
我们找到价格平稳的股票之后,还要弄清楚,它是多长时间从低点到高点然后又回到高点,就是周期。有两个原因:1.我们要把周期太长的抛弃,你也不想等5年挣1%吧。2.我们尽量在一个周期内完成一次买卖操作,不要错过周期,它一年低点到高点波动10次,你就买卖一次,那就有点辜负人家的好意了。
接下来,我们就需要解决这两个问题:平稳性和周期。
平稳性测试
我打算使用ETF的数据来测试,因为ETF关联的是一篮子股票,和单只股票相比应该更平稳,更符合我们的意图。(至于,自己挑选多只股票,以不同权重组合起来以达到平稳,那是另外一个问题了,以后有机会再议)所有的数据都通过akshare来获取,你可以访问akshare的官方网站获取更多信息。
使用Dickey-Fuller(迪基-富勒)检验判断股票价格序列的平稳性。至于迪基-富勒检测的原理,你可以自行搜索,也可以看我在这篇关于迪基-富勒检验1整理的一些概念。
我们先把A股所有ETF查出来,然后逐一检测。检测的时候仅获取2023年1月1日以后的数据,使用的是收盘价。
import akshare as akimport pandas as pd from statsmodels.tsa.stattools import adfullerfrom datetime import datetimedef adf_test(hist_data): results=adfuller(hist_data, maxlag=None, regression='c', autolag='AIC') # print('ADF Statistic: %f' % results) # print('p-value: %f' % results) # print('Critical Values:') # for key, value in results.items(): # print('\t%s: %.3f' % (key, value)) if results > 0.05: # print("时间序列是非平稳的,p-value > 0.05") return False else: # print("时间序列是平稳的,p-value
页:
[1]