本文由优矿金融工程团队撰写,未经允许私自转载者必究。
投稿合作邮箱:service.uqer@datayes.com
深度学习这个词“耳闻目染”了很多次了,大家也都跃跃欲试,想在量化研究中用上深度学习。优矿集成了TensorFlow 1.4.1版本,我们终于可以大展身手了。
下手前,我们先大概的了解一下TensorFlow。TensorFlow字面上的意思是张量在流动,那什么是张量,张量又在哪流动呢?Google对TensorFlow的定位其实不仅仅是一个深度学习的库,而是一个基于数据流图的数值计算框架。在数据流图中节点表示操作,边表示在节点间相互联系的多为数组即张量,只要把这个数据流图画好,张量就可以在图上“流动”起来。使用TensorFlow前,先画个图(graph)。除此之外我们还需要了解:
使用Variable表示那些可被训练的变量,维护计算状态;
在会话session中执行图;
使用feed和fetch可以为任意的操作赋值或获取数据。
以上几点我们会在实际代码中一一介绍到。随着近几年深度学习的火热,使得模型变得越来越多,CNN、RNN、LSTM等等一个个都如雷灌耳,它们在图像语音上的效果很好,能否在量化投资上取得成效就看各位的了。本系列只作为一个TensorFlow的使用教程,帮助大家能快速上手,希望大家多多在优矿上使用,榨干我们的服务器资源。本系列预计分下面几贴:
使用TensorFlow基础函数构建简单的神经网络模型进行回测;
使用TensorFlow中的高级API:Estimator、Experiment和Dataset;
使用TensorFlow构建深度学习网络并进行调优。
本文将展示如何用TensorFlow画一个简单LR和多层神经网络模型流程图并进行效果回测。画图前我们得明确输入输出是啥,从多因子模型角度来说我们的输入是一堆因子然后希望得到alpha信号,从机器学习模型的角度来说输入就是一堆特征输出是分类或回归结果。本文中我们的输入是优矿提供的因子,基于我们对这些因子有预测能力的假设,我们目标是通过因子判断下一个调仓周期中股票是涨是跌。具体而言,我们取每月末的每只股票的因子为输入特征,以下个月股票是涨(值为1)是跌(值为0)为输出标签。一般而言我们需要分训练集、测试集。训练集用来训练我们的模型,测试集用来验证我们的模型效果如何,是否过拟合导致模型在测试集上的效果大打折扣。
(完整版请点击文末“阅读原文”获取)
准备完输入输出,我们就要开始画图了。
(完整版请点击文末“阅读原文”获取)
我们说了半天画图,但其实是在堆代码,那我们的图到底长啥样呢?我们将上面定义的图可视化后如下图所示,图中标识了主要的计算节点,边就是流动的张量,和本文开头介绍的一样。
上面我们定义了一个简单的LR模型,下面我们增加网络的层数。
(完整版请点击文末“阅读原文”获取)
训练完模型后,如果模型的效果不错,我们就可以用模型来进行回测。下面我们将保存的模型载入内存,然后用回测框架进行回测。
(完整版请点击文末“阅读原文”获取)
我们用的是15年的数据进行训练,16年的数据进行测试的,因此我们回测区间要避开这两个时间段。因为我们在训练测试时会进行调优,如果在测试集上进行回测就有可能过拟合。我们选取模型预测值最大的前10个来构建我们的组合。
(完整版请点击文末“阅读原文”获取)
同样我们尝试下多层网络的效果,下面代码展示如何载入之前训练的MLP模型。
(完整版请点击文末“阅读原文”获取)
本文粗浅地介绍了如何在优矿上使用TensorFlow,特征、模型、组合构建本身都有很多可以调整。TensorFlow作为一个计算框架还有许多值得研究的地方,例如我们在训练定义LR和MLP的图时是不是有很多重复的工作?其实TensorFlow也将这些重复的工作抽象化,作为一个框架可以方便用户进行模型的定义和训练。下次我们会介绍如何使用TensorFlow中的高级API:Estimator、Experiment和Dataset。另外深度学习模型还有很多参数需要进行调整优化,后面有机会我们还会进行介绍。
--- the end ---
Read More:
优矿是由通联数据出品,覆盖研究、回测、模拟、实盘交易全流程的量化平台。优矿不仅拥有通联海量的金融数据、动态丰富的策略框架,同时还通过知识库信号库提供持续的知识输出,满足用户在研究过程中高效获取、迅速验证、多维度挖掘、多策略并行的迫切需求,为投资决策提供重要支持。
扫二维码,立即预约试用!
↓↓↓ 点击"阅读原文" 【查看源码】