张春成
2022/02/14阅读:55主题:默认主题
股价预测
股价预测
本文是使用机器学习方法对股票价格进行预测的实用方法。
但如果想用它来赚钱, 猜猜你会赔多少?
数据来源
数据来自在2021
年及2022
年至今的美国纳斯达克指数数据。 数据包含当天的
-
开盘价( Open
); -
收盘价( Close/Last
); -
全天高值( High
); -
全天低值( Low
)。
从形式上来说,不管是哪个值, 它都是一个时间序列,采样间隔为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 3
可见,线性模型(Linear
)和概率模型(BR
)的预测效果较好, 而核函数的非线性模型(RBF
)预测效果较差。
总体来说,如此简单的模型已经能够达到 “看上去不错” 的预测效果。
机器学习模型的“偏见”
接下来, 我来仔细看一下预测的细节, 就会发现一个十分有意思的现象, 这涉及到
机器学习模型的“偏见”问题,
从大的趋势上看, 这个指数从去年开始, 一直呈现稳步下降的趋势。
而由于回归模型只能学习到它看到的数据, 因此,它必然会带有“偏见”
-
对后段时间的指数进行预测
Stock 4 由于之前的指数都比真实值高, 因此,回归模型有预测值应该稍大的偏见;
-
对前段时间的指数进行预测
Stock 5 这个结果与之前相反, 回归模型有预测值应该稍小的偏见。
由于这是纯数据驱动的结果, 因此,从大数据的角度来说没什么问题。 但人的情感上,会认为它存在一定的“伦理”问题。
因为之前数据的偏见, 会像幽灵一样影响着后面的结果。 股市是比较中立的地方, 但如果预测的值是人的“能力”、“水平”或者别的什么东西, 就会造成不可避免地渗入人类的“道德判断”, 从而造成实质上的不平等。
作者介绍