如何应用机器学习预测股市,成为百万富翁?
作者头像
  • 周心满
  • 2019-10-16 15:06:10 4

华尔街的工作环境充满了机遇与挑战。这里的人们通常穿着正式,神情严肃,手中夹着香烟。尽管环境喧嚣,每个人的目标却很明确——利用手中的资金或者借贷的资金来赚钱。金融行业实际上并不创造价值,而是通过投资来获取回报。

股票市场是普通人可以通过投资获利的一种常见方式。如果有人能够破解股市的规律并准确预测未来的股价,他们或许能够成为市场的主宰者。

然而,准确预测未来股价几乎是不可能的。尽管有许多分析师、研究人员和聪明的人士都在努力研究股市,但至今没有人能够得出一致的结果。这篇文章的目的并不是为了展示如何通过机器学习来预测股市,而是为了提供一个学习机器学习和金融的好机会。

如果你想深入了解这个项目,请访问GitHub代码库:https://github.com/jerrytigerxu/Stock-Price-Prediction

使用Stocker模块

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的预测

为了评估Stocker的预测效果,需要创建一个测试集和一个训练集,其中训练集包括2014年至2016年的数据,测试集则包括2017年的数据。结果显示,Stocker的预测效果并不理想,几乎与随机猜测无异。

通过调整参数,特别是更改changepoints,可以改善预测效果。尽管有所改进,但整体预测效果仍然不尽如人意。

终极测试:模拟股市交易

即使经过所有调整,买入并持有的策略依然产生了更高的回报。这表明,对于普通投资者而言,买入并持有可能是更稳健的选择。

用机器学习预测股票价格

接下来尝试使用机器学习来预测股票价格,而不是依赖于Stocker模块。本文将使用Stocker提供的make_df函数来获取谷歌的股票数据。

移动平均线

移动平均线是一种常用的技术分析指标,通过过去的价格来预测未来的价格。它可以消除短期波动,找出长期趋势。然而,这种预测方法在实际操作中效果有限。

线性回归

尝试使用线性回归来预测股票价格。首先创建一个新的数据集,然后添加更多特征。通过使用fastai库中的函数,可以进一步优化数据集。最终,通过线性回归算法进行预测,结果显示它在一定程度上把握了总体趋势,但未能捕捉到关键细节。

K元最近邻算法

接下来尝试K元最近邻算法(KNN)。尽管算法本身适用于分类和小规模回归,但在预测股票价格方面表现不佳,显示出明显的过度拟合现象。

多层感知器

最后,使用多层感知器(一种简单的神经网络)来进行预测。结果显示,神经网络在预测股价方面的效果也不尽如人意。这可能是因为缺乏有意义的特征和数据。

结论

通过这些实验,我们可以得出结论:除非你是像Ray Dalio或Warren Buffett这样杰出的投资者,否则试图打败股市是非常困难且风险较高的。大多数对冲基金的表现甚至不如标准普尔500指数。因此,采取买入并持有的策略可能是更明智的选择。

如何改进

  1. 使用不同的股票数据:本文只使用了谷歌的股票数据,可以尝试使用其他公司的数据。
  2. 尝试不同的机器学习算法:本文只使用了一小部分机器学习算法,可以尝试更多的算法。
  3. 调整更多的超参数:大多数算法的默认设置并非最优,可以通过验证来确定哪些超参数最有效。

希望这些内容对你有所帮助。如果你有任何问题或建议,欢迎留言交流。

    本文来源:图灵汇
责任编辑: : 周心满
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
百万富翁股市机器预测成为应用如何学习
    下一篇