对于股票价格的预测对于大多数交易员来说都是非常重要的。人们多年来一直在使用各种预测技术。我们将探索这些技术以及最近流行的算法,比如神经网络。在这篇文章中,我们将专注于对源自市场数据的特征应用到线性模型。
问题定义
首先我们来定义一下我们的问题,我们想要解决的问题是去预测证券的价格变化(或者回报)。
在上图中的每个点,我们想要在 1 分钟后预测其价格。让我们看看上图中的各个点 —— 这里有超过 200000 个数据点,但我们只能看到一部分内容。
我们可以看到 AAPL 价格再接下来的 1 分钟里应该上涨了 0.13 美元。我们想建立一个回归算法来预测这个价格差异。当然,不言而喻,这是一个难以置信的难题。即使是轻微的成功也可以获得巨大的利润。
请注意,预测回报率通常会比预测价格变动会更有效。比如,对于一只 100 元的股票,0.5 的价格变动对他本身来说不是很大。但是如果是一只 10 元的股票,0.5 的价格变动对他本身来说是很大的。
数据预处理
股票价格会受到众多因素的影响。以下是其中一些因素:
市场流动性。供需是影响大多数股票日常价格变动的最关键因素。如果你决定花巨款去投资一家公司,那么它们的股票流动性肯定受到影响,这时候不可避免的就会提高股价。
舆情系统。有名的特朗普的推特治国。他说的很多东西都会影响到股价的波动。有很多的学术研究就来做新闻/博客/推文对股票价格的影响。
全球事件对股票价格的影响。比如最近的 G20 峰会,英国退欧等等。
上述因素的影响跨越不同的时间范围。例如,特定股票的新闻通常会影响未来 1-3 天的价格。全球事件的影响可能会有数周。在这篇文章中,我们只会使用从市场数据中得出的特征来预测下一个 1 分钟的价格变化。
特征
特征集可大致分为两类:描述当前市场波动的特征和描述历史市场波动的特征。
- 买价,卖价
- 中间价(买入价和卖出价的平均值)
- 买卖价差
- 移动平均价格
- 1分钟,5分钟等等的买价和卖价
我们暂时会跳过这些功能的数学细节。但请注意,这些功能试图捕捉当前的市场状况以及最近的过去。
规范化
上述特征的原始值具有非常不同的尺度。虽然 AAPL 的价格一天可以在 153 到 155 之间,但是过去 5 分钟的数量可以在 100 到 1000000 之间。由于大多数学习算法在输入特征的比率相似事效果最好。这就是规范化步骤至关重要的原因。我尝试了一些自定义缩放技术,但发现 scikit-learn 的 RobustScaler 工作非常好。
线性模型
让我们首先来尝试一下在这个数据集上的简单线性模型。
普通最小二乘回归
设 x 是实值特征向量,y 是我们想要预测的实数值。 θ \theta θ 是我们想要学习的模型参数。
普通最小二乘回归试图最小化以下损失函数:
线性模型我们采用 scikit-learn 中的模型,但是根据下面的实验结果,这个模型已经过拟合!
在上表中,MSE 指的是均方误差,MAE 指的是平均绝对误差。Insample 是指训练数据,Outsample 是指测试数据。即 Outsample 上的 MAE 表示测试数据集上的平均绝对误差。
预测值的标准偏差具有有用的信息。盘中价格变化的平均值通常接近于 0 。这个数据集有很多噪音而且信号不多。这两者的组合使得对于任何 x 的预测都会接近于 0 。但是,输出 0 的模型绝对没有价值。我们需要可用于交易或者执行的固定模型。因此,需要将预测值 h(x) 的标准偏差与 y 的标准偏差进行比较。
L2 正则化
对误差项添加权重惩罚是正则化的一种简单方法。这有助于稳定训练,模型通常更易于推广。我做的下一个实验是岭回归模型(L2 正则化),并且检查一下性能。
我们采用 ElasticNet 模型来进行训练,具体参数为
我们可以看到 Outsample 的结果比线性回归模型要好很多。Outsample 的 0.01722 的平均绝对误差在我看来非常好。虽然预测值的标准偏差略小,但它仍然与 y 的标准偏差相同。
线性模型的其它实验
- 我使用了可用于上述结果的所有数据,本来希望从更多的数据中找到某种规律。但是结果却是啥都没找到,有些结果还不如上面的结果。
- 特征选择策略并没有真正增加任何价值,有时候,还会使得结果倒退。因为,你根本不知道啥特征是真正有用的。
- 使用 PCA 降维并没有带来显著效果。
- 合理的对数据进行采样操作时非常有效果的,例如,选择一些特殊行情,一些平缓行情等等。
集成方法
神经网络
使用具有 hidden_size1 = 100 和 hidden_size2 = 50 的2层前馈神经网络获得以下结果。对网络进行了批量归一化和 dropout ,以减少过度拟合并且改善泛化。
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。