如何用高斯sklearn进行预测



我正在尝试使用sklearn预测股价。我对预测很陌生。我尝试了sklearn中的例子,用高斯hmm进行股票预测。但预测给出了叠加在价格上的状态序列,它还从给定的输入收盘价格中取点。我的问题是如何生成下一个10个价格?

您将始终使用最后一个状态来预测下一个状态,因此,让我们通过将结束日期更改为23日来添加10天的输入:

date2 = datetime.date(2012, 1, 23)

您可以仔细检查代码的其余部分,以确保我实际上没有使用未来的数据进行预测。这些行的其余部分可以添加到文件的底部。首先,我们想知道给定状态的预期回报是多少。model.means_数组有返回,这两个返回都是使我们达到这种状态的返回,而不是您想要的未来返回。为了获得未来的回报,我们考虑进入5个状态中任何一个状态的概率,以及这些状态的回报是多少。我们从模型中获得进入任何特定状态的概率。transmat _ matrix,即我们使用模型的每个状态的回报。means _ values。我们取点积来获得特定状态的预期回报。然后我们删除了数量数据(如果你愿意,你可以保留它,但你似乎对未来的价格最感兴趣)。

expected_returns_and_volumes = np.dot(model.transmat_, model.means_)
returns_and_volumes_columnwise = zip(*expected_returns_and_volumes)
returns = returns_and_volumes_columnwise[0]

如果打印returns[0]的值,您将看到状态0的预期回报(美元),状态1的回报[1]等。现在,给定一天和一个状态,我们希望预测明天的价格。你说10天,所以让我们用这个作为lastN。

predicted_prices = []
lastN = 10
for idx in xrange(lastN):
    state = hidden_states[-lastN+idx]
    current_price = quotes[-lastN+idx][2]
    current_date = datetime.date.fromordinal(dates[-lastN+idx])
    predicted_date = current_date + datetime.timedelta(days=1)
    predicted_prices.append((predicted_date, current_price + returns[state]))
print(predicted_prices)

如果你在"生产"中运行这个,你会将date2设置为你的最后一个日期,然后lastN将为1。请注意,我没有将周末作为预测日期。

这是一个有趣的练习,但你可能不会在生产中运行它,因此引用了这些话。首先,时间序列是原始价格;这实际上应该是百分比回报或日志回报。此外,没有理由为HMM选择5个州,或者HMM甚至有利于解决这类问题,我对此表示怀疑。他们可能只是举了个例子。我认为使用PCA的另一个sklearn示例要有趣得多。

相关内容

  • 没有找到相关文章

最新更新