量化百科

神经网络应用于算法交易

由ypyu创建,最终由ypyu 被浏览 13 用户

今天编辑部带来关于在基于金融时间序列的预测模型案例,我们将通过神经网络来增强一个经典的移动平均策略,并表明它真的是有所改善相对原策略。

基于技术分析的投资策略

image|514x333

但这种交易策略有一个主要的缺陷:在震荡行情中,策略没有过多的触及信号并交易,这样我们也很难赚到钱。 image|690x376

那我们怎么应用机器学习去改善呢?

我们来看下面的策略假设:在移动平均线金发生叉死叉的时刻,我们会对某些特征的变化做出预测,如果我们真的期望这个交叉点是可行的,我们便选择相信这个交易信号。 否则我们会跳过。

作为预测目标,我想用偏度来衡量分布的不对称性。 让我们假设,如果我们预测分布的变化,这意味着我们目前的趋势将来也会发生变化。 image|690x289

输入数据

在这里,我们将使用pandans和PyTi生成更多的指标。 我们将使用MACD,Ichimocku cloud,RSI等指标。 所有这些指标算出来的值将形成多变量时间序列,用flatten函数处理后,使用在 MLP 或继续使用再 CNN 或 RNN中。

PyTihttps://github.com/kylejusticemagnuson/pyti)

image|690x196

image|690x387

获得的指标特征连接到OHLCV元组以产生最终向量。

网络结构

在这里我们展示一个如何训练正则化MLP进行时间序列预测的例子:

image|572x185

这里的““Novel”是增加小的噪声给单层神经网络的输入和输出。它非常类似于L2正则化,数学解释如下:(http://www.deeplearningbook.org/)

image|690x151

image|690x298

我们在2012年至2016年间以AAPL的价格训练我们的网络,在2016-2017年进行样本外测试。

训练网络后,我们绘制收盘价,均线和垂直线的交叉点:红色线和橙色线代表我们要交易的点。绿色线代表我们不去交易的点。

image|614x452

神经网络结果

[(‘Total Return’, ‘1.66%’),

(‘Sharpe Ratio’, ‘16.27’),

(‘Max Drawdown’, ‘2.28%’),

(‘Drawdown Duration’, ‘204’)]

Signals: 9

Orders: 9

Fills: 9

image|669x440

我们将如何使用“红色”和“橙色”交易信号,并跳过绿色。 我们可以看到,策略减少了2次交易,并帮助我们减少了第一个drawdown,最终提高了几乎两倍的回报!

[(‘Total Return’, ‘3.07%’),

(‘Sharpe Ratio’, ‘27.99’),

(‘Max Drawdown’, ‘1.91%’),

(‘Drawdown Duration’, ‘102’)]

Signals: 7

Orders: 7

Fills: 7

image|657x447

部分代码

image|505x500

image|373x500

image|419x500

总结

通过这篇文章,我们可以使用神经网络来完成(至少一段时间)有关金融时间序列预测的一些研究。 但是,我们不能直接用它来预测价格知否涨跌。 我们必须考虑不同的数据源和目标值,认真对待处理过拟合和超参数优化,那么我们可以得出什么结论呢?

1、注意过拟合! 你会在99%的情况下做到这一点,不要完全相信你的回测曲线,它一定是有问题的。

2、除了收盘价,波动收益率,偏度等,尝试着预测其他特征。

3、如果有不同的数据源,请使用多模态学习。

4、不要忘记找到正确的超参数!

5、编写一个可以混合一些经典机器学习的策略!

标签

神经网络算法交易投资策略交易算法经典算法