张春成

V2

2022/02/14阅读:55主题:默认主题

股价预测

股价预测

本文是使用机器学习方法对股票价格进行预测的实用方法。

但如果想用它来赚钱, 猜猜你会赔多少?


数据来源

数据来自在2021年及2022年至今的美国纳斯达克指数数据。 数据包含当天的

  • 开盘价(Open);
  • 收盘价(Close/Last);
  • 全天高值(High);
  • 全天低值(Low)。

从形式上来说,不管是哪个值, 它都是一个时间序列,采样间隔为1

其中, 代表指数, 代表天的时间数。

Stock 1
Stock 1

最后一个小问题, 这里的“指数”和“股票价格”有什么关系?

The NASDAQ-100 Index includes 100 of the largest domestic and international non-financial companies listed on The NASDAQ Stock Market based on market capitalization.

The Index reflects companies across major industry groups including computer hardware and software, telecommunications, retail/wholesale trade and biotechnology.

简单来说,它又叫做纳斯达克 100, 是美国100家非金融类的大公司股票价格指数。

再简单来说,它代表“美股大盘”的整体趋势。 如果能够对它的值进行预测, 那么就能在股市赚钱。

基本方法

什么叫预测呢? 是已知既往的值,对之后的值进行估计

比如,我想知道明天的指数( ), 就使用已知今天( )、昨天( )和前天( )的指数去预测它。

本文采用了三个经典的机器学习方法来做这个事情, 分别是

  • Linear SVR 线性回归模型;
  • RBF SVR 核回归模型;
  • Bayesian Ridge 概率模型。
# SVR with linear and RBF kernels
from sklearn.svm import SVR
# Bayesian Ridge Regression
from sklearn.linear_model import BayesianRidge

# Some amazing code for stock analysis
# ...

计算结果

具体来说, 我使用较长一段时间的数据来训练回归模型

  • 模型的输入参数为前20天的指数值;
  • 输出参数为“明天”的指数值。

之后用训练好的模型,对另一段时间的数据进行预测, 预测效果如下

  • 用后半段时间训练,用前半段时间测试

    Stock 2
    Stock 2
  • 用前半段时间训练,用后半段时间测试

    Stock 3
    Stock 3

可见,线性模型(Linear)和概率模型(BR)的预测效果较好, 而核函数的非线性模型(RBF)预测效果较差。

总体来说,如此简单的模型已经能够达到 “看上去不错” 的预测效果。

机器学习模型的“偏见”

接下来, 我来仔细看一下预测的细节, 就会发现一个十分有意思的现象, 这涉及到

机器学习模型的“偏见”问题,

从大的趋势上看, 这个指数从去年开始, 一直呈现稳步下降的趋势。

而由于回归模型只能学习到它看到的数据, 因此,它必然会带有“偏见”

  • 对后段时间的指数进行预测

    Stock 4
    Stock 4

    由于之前的指数都比真实值高, 因此,回归模型有预测值应该稍大的偏见;

  • 对前段时间的指数进行预测

    Stock 5
    Stock 5

    这个结果与之前相反, 回归模型有预测值应该稍小的偏见。

由于这是纯数据驱动的结果, 因此,从大数据的角度来说没什么问题。 但人的情感上,会认为它存在一定的“伦理”问题。

因为之前数据的偏见, 会像幽灵一样影响着后面的结果。 股市是比较中立的地方, 但如果预测的值是人的“能力”、“水平”或者别的什么东西, 就会造成不可避免地渗入人类的“道德判断”, 从而造成实质上的不平等。

分类:

后端

标签:

后端

作者介绍

张春成
V2