金融时间序列分析:使用11个量价因子预测沪深300指数涨跌
金融时间序列分析:使用11个量价因子预测沪深300指数涨跌
本文介绍了一种使用11个量价因子预测沪深300指数涨跌的方法。通过格兰杰因果关系检验选择有效的外生变量,并将其应用于SARIMAX模型进行预测。虽然文章中的数据和结果基于2023年12月,但仍具有一定的参考价值。
一、外生变量选择
在实际投资中,通常会引入外生变量来增强预测效果。由于股票的基本面因素在一天内变化不大,因此选择日内技术因子作为预测变量。从华泰证券的研报中选取了11个日内技术因子,并通过格兰杰因果关系检验验证它们对沪深300日收益率的预测效果。
1. 平稳性检验
格兰杰因果关系检验要求时间序列是平稳的。使用ADF检验对11个因子及指数收益率数据进行检验,结果证明所有时间序列都是平稳的。
2. 格兰杰因果关系检验
格兰杰因果检验是一种统计假设检验,用于确定一个时间序列是否对预测另一个时间序列有价值。检验结果显示,'kmid','kmid2','kup2'三个因子对指数收益率没有预测效果,因此将这三个因子剔除,将其余8个外生变量代入SARIMAX模型进行预测。
二、SARIMAX预测
SARIMAX模型是在SARIMA模型的基础上引入外部变量的线性组合,使我们能够模拟外部变量对时间序列未来值的影响。使用pmdarima包的auto_arima类自动找出最合适的SARIMAX参数。
从2023-12-29开始,用过去3400个交易日的历史数据,滚动预测后面25个交易日的收益率,每次滚动一天。将SARIMAX的预测效果与基准模型(直接用上一交易日收益率代替下一交易日收益率)进行对比。
结果显示,SARIMAX模型的预测效果显著优于基准模型:
- 基准模型均方误差:0.000238
- SARIMAX模型均方误差:0.000130
三、策略表现
根据SARIMAX的预测结果构建了一个简单的交易策略:如果预测第二天上涨则做多,否则做空。将策略执行结果与买入持有策略进行对比。
结果显示,简单的策略表现明显优于买入持有策略。
总结
SARIMAX模型是线性模型,虽然在本案例中取得了较好的预测效果,但业界更倾向于使用非线性的深度学习模型进行时间序列预测。后续可以尝试使用CNN和RNN等深度学习模型进行预测。
参考资料:
- 量化如何追求模糊的正确:有序回归,华泰金工,林晓明,李子钰,何康
- Time Forcasting in python,Macro Peixeiro
- 金融时间序列分析--如何用ARMA+GARCH模型预测股市
- 金融时间序列分析--股市真的不可预测吗?