0

我正在尝试建立一个分类器来预测股票价格。我使用一些众所周知的技术指标生成了额外的特征,并将这些值以及过去点的值提供给机器学习算法。我有大约 45k 个样本,每个样本代表一小时的 ohlcv 数据。

该问题实际上是一个 3 类分类问题:带有买入、卖出和持有信号。我根据每个时间点的 (%) 变化构建了这 3 个类作为我的目标。也就是说:我只将最大的积极 (%) 变化归类为买入信号,相反的归类为卖出信号,其余的归类为持有信号。

然而,将这个 3 类目标呈现给算法会导致买卖分类器的准确性较差。为了改善这一点,我选择根据每个样本的概率手动分配类。也就是说,我根据价格上涨或下跌将目标设置为1或0。然后,该算法返回一个介于 0 和 1 之间(通常介于 0.45 和 0.55 之间)的概率,用于确定每个样本属于哪个类别的置信度。然后我为这些概率中的每个类选择一些概率界限。例如:我选择 p > 0.53 被归类为买入信号,p < 0.48 被归类为卖出信号,介于两者之间的任何值都被归类为持有信号。

这种方法极大地提高了分类精度,在某些点上达到了 65% 以上。但是,在没有大量验证集的情况下,我无法想出一种方法来选择这些概率界限。我尝试在 3000 个验证集中找到最佳概率值,这提高了分类准确度,但验证集越大,测试集中的预测准确度显然在下降。

所以,我正在寻找的是任何方法,通过它我可以辨别每个训练集的特定决策概率应该是什么,而无需大型验证集。我也欢迎任何其他关于如何改进这个过程的想法。谢谢您的帮助!

4

1 回答 1

0

您所经历的称为非平稳过程。市场走势取决于事件发生的时间。

我用来处理它的一种方法是使用不同时间块的数据构建模型。

例如,将第 1 天到第 10 天的数据用于训练,将第 11 天的数据用于测试/验证,然后向上移动一天,从第 2 天到第 11 天进行训练,将第 12 天的数据用于测试/验证。

您可以将所有测试结果保存在一起,以计算模型的总分。这样你就有了大量的测试数据和一个可以适应时间的模型。

并且您还有 3 个要调整的参数,#1 用于训练的数据量,#2 用于测试的数据量,# 每多少天/小时/数据点重新训练数据。

于 2019-01-25T23:45:32.310 回答