华尔街的工作环境充满了机遇与挑战。这里的人们通常穿着正式,神情严肃,手中夹着香烟。尽管环境喧嚣,每个人的目标却很明确——利用手中的资金或者借贷的资金来赚钱。金融行业实际上并不创造价值,而是通过投资来获取回报。
股票市场是普通人可以通过投资获利的一种常见方式。如果有人能够破解股市的规律并准确预测未来的股价,他们或许能够成为市场的主宰者。
然而,准确预测未来股价几乎是不可能的。尽管有许多分析师、研究人员和聪明的人士都在努力研究股市,但至今没有人能够得出一致的结果。这篇文章的目的并不是为了展示如何通过机器学习来预测股市,而是为了提供一个学习机器学习和金融的好机会。
如果你想深入了解这个项目,请访问GitHub代码库:https://github.com/jerrytigerxu/Stock-Price-Prediction
Stocker是一个简单的Python库,包含了许多有用的股票市场预测函数。虽然它在默认状态下不够准确,但通过调整参数可以显著提高其准确性。首先需要克隆GitHub代码仓库:
bash
!git clone https://github.com/WillKoehrsen/Data-Analysis.git
然后安装所需的库:
bash
!pip install quandl
!pip install pytrends
接下来可以导入Stocker模块并创建一个Stocker对象。本文选择了谷歌作为预测目标,但这并非强制要求。Stocker模块有一个名为plot_stock()
的函数,可以自动完成很多任务。
Stocker对象的日期并未更新至最新,止于2018年3月27日。数据来源于Quandl的WIKI交易所。Stocker模块使用了Facebook开发的Prophet包,该包在加法建模方面非常有用。
为了评估Stocker的预测效果,需要创建一个测试集和一个训练集,其中训练集包括2014年至2016年的数据,测试集则包括2017年的数据。结果显示,Stocker的预测效果并不理想,几乎与随机猜测无异。
通过调整参数,特别是更改changepoints
,可以改善预测效果。尽管有所改进,但整体预测效果仍然不尽如人意。
即使经过所有调整,买入并持有的策略依然产生了更高的回报。这表明,对于普通投资者而言,买入并持有可能是更稳健的选择。
接下来尝试使用机器学习来预测股票价格,而不是依赖于Stocker模块。本文将使用Stocker提供的make_df
函数来获取谷歌的股票数据。
移动平均线是一种常用的技术分析指标,通过过去的价格来预测未来的价格。它可以消除短期波动,找出长期趋势。然而,这种预测方法在实际操作中效果有限。
尝试使用线性回归来预测股票价格。首先创建一个新的数据集,然后添加更多特征。通过使用fastai
库中的函数,可以进一步优化数据集。最终,通过线性回归算法进行预测,结果显示它在一定程度上把握了总体趋势,但未能捕捉到关键细节。
接下来尝试K元最近邻算法(KNN)。尽管算法本身适用于分类和小规模回归,但在预测股票价格方面表现不佳,显示出明显的过度拟合现象。
最后,使用多层感知器(一种简单的神经网络)来进行预测。结果显示,神经网络在预测股价方面的效果也不尽如人意。这可能是因为缺乏有意义的特征和数据。
通过这些实验,我们可以得出结论:除非你是像Ray Dalio或Warren Buffett这样杰出的投资者,否则试图打败股市是非常困难且风险较高的。大多数对冲基金的表现甚至不如标准普尔500指数。因此,采取买入并持有的策略可能是更明智的选择。
希望这些内容对你有所帮助。如果你有任何问题或建议,欢迎留言交流。