【学术】算法交易的神经网络:强化经典策略

今天我想做一个带有实际预测的金融时间序列结论:我们将用神经网络强化经典移动平均策略,证明它真的改善了最终结果,并且审查新的预测目标。

  • 训练神经网络的代码地址:https://github.com/Rachnog/Deep-Trading/blob/master/strategy/skew.py

主要思路

我们可以预测不同的价值——从价格变化到波动率。在我们把这些预测看作是一种抽象的东西之前,只是看这些“up-down”的预测就尝试交易,即使这些预测并不是很好。但我们也知道,有很多其他的交易策略都是基于技术分析和财务指标。例如,我们可以构建不同窗口(长就是30天,短大概是14天)的移动平均值,我们相信交叉点是趋势变化的时刻。

但是这个贸易战略从有一个主要的缺点:在平坦区,我们仍然会在没有实际变化的地方进行交易,所以我们会赔钱:

如何用机器学习来克服这个问题呢?

让我们来看看下面的策略假设:在移动平均线交叉的时刻,我们将预测一些特征的变化,如果我们真的期望跳跃,我们将相信这个交易信号。否则,我们就会跳过它,因为我们不想在平坦区域上赔钱。

作为预测目标,我想尝试一下偏斜度——一种不对称分布的度量。让我们假设,如果我们预测一个分布的变化,它将意味着我们当前的趋势(不只是平坦区域)将在未来发生变化。

输入数据

在这里,我们将使用Pandas和PyTi生成更多的指标,以将它们作为输入。我们将使用MACD、Ichimocku cloud、RSI、波动率等。所有这些值将形成多变量时间序列,平面化后用于MLP或将保留为CNN或RNN。

nine_period_high= pd.rolling_max(pd.DataFrame(highp), window= ROLLING/ 2)
nine_period_low= pd.rolling_min(pd.DataFrame(lowp), window=  ROLLING/ 2)
ichimoku= (nine_period_high+ nine_period_low)/2
ichimoku= ichimoku.replace([np.inf,-np.inf], np.nan)
ichimoku= ichimoku.fillna(0.).values.tolist()
macd_indie= moving_average_convergence(pd.DataFrame(closep))
wpr= williams_percent_r(closep)
rsi= relative_strength_index(closep,  ROLLING/ 2)
volatility1= pd.DataFrame(closep).rolling(ROLLING).std().values#.tolist()
volatility2= pd.DataFrame(closep).rolling(ROLLING).var().values#.tolist()
volatility= volatility1/ volatility2
volatility= [v[0]for vin volatility]
rolling_skewness= pd.DataFrame(closep).rolling(ROLLING).skew().values
rolling_kurtosis= pd.DataFrame(closep).rolling(ROLLING).kurt().values

得到与OHLCV元组连接的指标特征I,以生成最终向量。

网络架构

在这里我想展示如何训练正则化MLP进行时间序列预测:

main_input= Input(shape=(len(X[0]), ), name='main_input')
x= GaussianNoise(0.05)(main_input)
x= Dense(64, activation='relu')(x)
x= GaussianNoise(0.05)(x)
output= Dense(1, activation= "linear", name= "out")(x)
final_model= Model(inputs=[main_input], outputs=[output])
opt= Adam(lr=0.002)
final_model.compile(optimizer=opt, loss='mse')

“Novel”点在神经网络的单层输入和输出中加入小噪音。它类似于L2正则化,数学解释你可以在一本神奇的书籍里查到。

书籍地址:http://deeplearningbook.org/

神经网络以常规方式进行训练,让我们检查一下我们偏斜度的预测如何改善(或不)移动平均策略。

从2012年到2016年,我们以AAPL的价格训练我们的网络,并在2016 – 2017年进行测试,就像我们在之前的一个教程中做的那样。

教程地址:https://medium.com/machine-learning-world/neural-networks-for-algorithmic-trading-1-2-correct-time-series-forecasting-backtesting-9776bfd9e589

在训练了一个神经网络后,我绘制了收盘价、移动平均线和相交点的垂直线:红色和橙色线代表了我们想要交易,绿色的线不是我们想要的。它看起来不太完美,还需要做个事后检验(do backtesting)来判断它。

没有使用神经网络的结果

我在该文章中使用了事后检验(do backtesting),所以我将提供一些关键的指标和绘图:

文章地址:https://medium.com/machine-learning-world/neural-networks-for-algorithmic-trading-1-2-correct-time-series-forecasting-backtesting-9776bfd9e589

[(“总收益(Total Return)”,“1.66%”),

(“夏普比率(Sharpe Ratio)”,“16.27”),

(“最大回撤(Max Drawdown)”,“2.28%”),

(“回撤时间(Drawdown Duration)”,“204 ”)]

信号(Signal):9

订单(Order):9

填写(Fill):9

使用神经网络的结果

我们将使用“红色”和“橙色”交易信号,并跳过绿色交易信号。 我们可以看到,这样的策略减少了2个交易,帮助我们降低第一个下降,并使最终收益提高了几乎两倍。

[(“总收益(Total Return)”,“3.07%”),

(“夏普比率(Sharpe Ratio)”,“2799”),

(“最大回撤(Max Drawdown)”,“1.91%”),

(“回撤时间(Drawdown Duration)”,“102”)]

信号(Signal):7

订单(Order):7

填写(Fill):7

可能的改进

这个方法似乎是可行的,我想向你介绍一些可能的改进,我强烈建议你自己尝试一下:

  • 不同的指标策略:MACD,RSI;
  • 配对交易策略可以通过提出的方法进行优化;
  • 尝试预测不同的时间序列特征:赫斯特指数,自相关系数,可能还有其他统计时刻。

在这篇文章中,我想用神经网络来完成(至少在一段时间内)金融时间序列预测主题。我们不能直接用它们来预测价格是否会上涨或下跌,来赚很多钱。我们考虑了不同的数据源和目标,仔细地处理过拟合和优化过的超参数。我们能得出以下结论:

  • 小心过度拟合;
  • 试着预测一些不同但很接近的价格或回报的东西——波动,偏斜度或者其他特征;
  • 如果有不同的数据源,使用多模式学习;
  • 找到正确的超参数。
  • 创建一个策略,它可以是一些经典的、基于机器学习和反向测试的组合。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

【技巧】应赛技巧,教你如何在Kaggle比赛中排在前1%

网友Akira Sosa最近参加了Kaggle比赛,并在medium上分享了他的参赛经验,以下是全文。 最近,我参加了Kaggle比赛。虽然这是我第一次参赛,但...

3198
来自专栏量子位

AI界的七大未解之谜:OpenAI丢出一组AI研究课题

林鳞 编译自 OpenAI官方博客 量子位 出品 | 公众号 QbitAI 今天,OpenAI在官方博客上丢出了7个研究过程中发现的未解决问题。 OpenAI希...

3399
来自专栏企鹅号快讯

算法到实战,如何把深度学习应用到生活?

计算机视觉是一门研究如何使机器“看”的科学,掌握解决具体计算机视觉任务的方法则会帮助我们解决大规模系统的复杂问题,其应用相当广泛,包括并不限于:图像分类,人脸识...

2018
来自专栏大数据文摘

大咖 | GAN之父Ian Goodfellow在Quora:机器学习十问十答

1424
来自专栏后端技术探索

白话AI

过去我们用通过编写设定程序来直接让计算机完成某些特定任务,现在,我们还可以训练计算机,就像我们训练宠物一样。这就是用大白话来解释机器学习。当然了,对于一些相对简...

586
来自专栏PPV课数据科学社区

学习攻略 | 机器学习和深度学习技能树、面试宝典

人工智能的浪潮正在席卷全球,这些得益于数据量的上涨、运算力的提升和机器学习新算法(深度学习)的出现。机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习...

3425
来自专栏AI科技评论

学界 | 北京大学王立威教授:机器学习理论的回顾与展望(下)

AI科技评论按:本文根据王立威教授在中国人工智能学会AIDL第二期人工智能前沿讲习班*机器学习前沿所作报告《机器学习理论:回顾与展望》编辑整理而来,AI科技评论...

35913
来自专栏机器之心

GMIS 2017 | 腾讯AI Lab副主任俞栋:语音识别研究的四大前沿方向

机器之心整理 演讲者:俞栋 5 月 27-28 日,机器之心在北京顺利主办了第一届全球机器智能峰会(GMIS 2017),来自美国、加拿大、欧洲,香港及国内的众...

3308
来自专栏机器之心

你的论文能否中顶会?这篇分析同行评审结果的论文可帮助你

1764
来自专栏AI科技评论

学界 | 来认识认识微软的「画家 AI」

AI 科技评论按:近年来图像生成模型方面的研究可谓是突飞猛进,内容的丰富程度和清晰程度都在不断刷新着以往的记录。终于,微软研究院的这篇新论文突破了另一个瓶颈,能...

32610

扫描关注云+社区