请选择 进入手机版 | 继续访问电脑版
楼主: Dear_Li
1862 0

[其他] 深度学习,量化投资与控制论 [推广有奖]

  • 0关注
  • 14粉丝

等待验证会员

博士生

64%

还不是VIP/贵宾

-

威望
0
论坛币
686 个
通用积分
7.6246
学术水平
12 点
热心指数
16 点
信用等级
2 点
经验
4905 点
帖子
186
精华
0
在线时间
246 小时
注册时间
2018-7-21
最后登录
2019-1-16

Dear_Li 发表于 2018-8-1 16:34:14 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在这片文章中,我们介绍用深度学习来构建量化投资策略的基本步骤以及一些建议。并从控制论和信息论的角度来科学的分析这些步骤。这篇文章一共有四个部分:

  • 确定唯一的评价指标
  • 分析偏置与方差
  • 误差分析
  • 控制论与信息论的视角
  • 迁移学习和总结
唯一的评价指标(metric)

深度学习(deep learning, DL),也就是神经网络(neural network, NN)作为机器学习(machine learning, ML)中最火爆的分支,其典型作用是做分类(classification)。深度学习在量化投资(quantitative trading)中的主要应用——预测股票或者期货下一天的涨跌情况,其实就是一个分类问题:

  • 分为‘上涨’这一类,就是说预测结果是明天会涨
  • 分为‘下跌’这一类,就是说预测结果是明天会跌

要用深度学习来预测股票或者期货下一天的涨跌,也就是要训练一个分类器。要训练一个分类器 ,我们第一件要做的事情一定是,确定一个唯一的评价指标(metric),用这个评价指标来判断你的分类器效果是好还是坏。这个评价指标一般可以选:

  • 准确率(accuracy)
  • 精确率(precision)
  • 召回率(recall)
  • F1-得分(F1-score)

这里的重点是,确定‘唯一’的评价指标。只有这样子,我们才能明确、清楚的判断,二个模型中哪一个模型更好,我们最终要选用哪一个模型。比如用精确率评价模型好坏,得到的结果,和用召回率评价模型好坏,得到的结果往往会不一样。正确的做法是只选择精确率,或者只选择召回率作为评价指标。如果非要同时考虑精确率和召回率,那或许我们可以选择F1-得分作为评价指标。因为F1-得分综合了精确率和召回率的信息。

如果是要同时考虑精确率和召回率,可以选择F1-得分。但是对于其他有矛盾目标的项目,比如我们同时希望:

  • 最大化分类精确率
  • 最小化计算每一个样本分类结果所需时间

这时候最好的办法是做一个条件优化(constrained optimization)问题:在多个想要最优化的指标(在这个例子里是‘分类准确率’和‘计算一个样本分类结果所需时间’)中,只选择一个指标(比如你选择‘分类准确率’)作为最重要的优化指标,其他指标(在这个例子里是‘计算一个样本分类结果所需时间’)只要满足一个足够好的条件(比如,计算一个样本分类结果所需时间不超过50毫秒)就可以了。

举个例子,如果我们做的是螺纹钢(RB)期货的高频交易,那么交易所(上海期货交易所)发送相邻二笔行情数据的时间间隔的时间是500毫秒(就是二分之一秒)。我们需要模型:

  • 既有最大的预测准确率
  • 又有最小的计算时间

对于这二个矛盾的目标, 我们就可以做一个条件优化。对于这个预测螺纹钢期货在下一个tick涨跌(也就是在500毫秒后的涨跌)的分类器,我们首先把计算时间限制在50毫秒(相邻二笔行情数据的时间间隔是500毫秒,这里取500毫秒的1/10)之内,在这个前提下,致力于最大化预测准确率。


偏置(bias)与方差(variance

确定好唯一的评价指标之后,我们要做的第二件事就是,把手头的数据分成训练集(train set),验证集(cross-validation set, CV set)和测试集(test set)。然后尽快用训练集数据训练出一个简单的深度学习分类器,接着计算出这个分类器:

  • 在训练集中的分类误差——训练误差
  • 在验证集中的分类误差——验证误差

在最终用测试集来测试分类器的表现之前,我们的努力目标是最小化验证误差。验证误差可以分解成二部分:

验证误差 = 可避免偏置 + 方差

假设贝叶斯最优误差(bayesian optimal error,分类器理论上可以达到的最小误差)是0%。这样我们就可以估计出:

  • 可避免偏置(avoidable bias) = 训练误差
  • 方差(variance) = 验证误差 - 训练误差

比如我们做的分类器,训练误差 = 7.5%,验证误差 = 9%。那么我们的分类器的:

  • 可避免偏置 = 训练误差 = 7.5%
  • 方差 = 验证误差 - 训练误差 = 9% - 7.5% = 1.5%

可避免偏置明显大于方差(欠拟合,under-fit),因此想办法减少可避免偏置,效果会比想办法减少方差更好。因此我们下一步工作就是想办法减少可避免偏置。减少可避免偏置,有这几个常用办法:

  • 训练一个更加复杂的神经网络——用更多的隐含层,每个隐含层用更多的节点
  • 用一个更加复杂的优化算法,比如在优化算法中加入动量(momentum),或者用AdaGradRMSPropAdam这些优化算法
  • 就算不改变优化算法,那么做更长时间的优化,有时候也会有效
  • 选择更加合适的超参数(hyper-parameter),比如改变神经网络的隐含层数,改变隐含层中的节点数
  • 选择一个结构更加合适的神经网络。比如对螺纹钢期货的价格序列建模,本来用的是全连接(fully connected, FC)神经网络,那么改用更加适合处理序列数据的LSTM,效果可能会更好

反过来,如果可避免偏置明显小于方差(过拟合,over-fit),那么想办法减少方差,效果会比想办法减少可避免偏置更好。因此我们下一步工作就是想办法减少方差。减少方差,有这几个常用办法:

  • 用更多的数据来训练模型
  • 加入正则化(regularization)。深度学习模型最常用的正则化方法是L2-正则化(L2-regularization)dropout
  • 选择更加合适的超参数
  • 选择一个结构更加合适的神经网络
误差分析(error analysis)

如果我们的分类器的作用是预测螺纹钢期货价格明天是涨还是跌,并且你的分类器的验证误差是8%。你想优化你的分类器,减少验证误差。这时候你可以依次按照下面4个步骤,做一个误差分析:

  • 把螺纹钢期货的行情分为三种情景(scenario):牛市、熊市、震荡市
  • 在验证集中随机选择250个样本(一般一年有250个交易日),对于分类器分类错误的样本,计算牛市,熊市,震荡市这三种情况分别占比
  • 确定分类器在牛市、熊市、震荡市这三种情景中,哪种情景中最容易出错
  • 想办法让分类器在这种最容易出错的情景下,表现变好

比如我们发现,分类器在震荡市中最容易出错,那么我们可以加入更多的震荡市的数据,用来训练模型,或者直接在模型中加入一些符合震荡市的交易逻辑。

那我们怎么把螺纹钢期货行情数据划分成牛市、熊市、震荡市这三种情景?一个常用的办法是通过均线(moving average,移动平均线)。计算螺纹钢期货价格的8条均线(3天,5天,8天,13天,21天,34天,55天,89天均线:这是一个斐波那契数列,Fibonacci sequence)。然后根据螺纹钢期货当天(close)和这8条均线的相对位置,把螺纹钢期货的行情成3种情况:

  • 牛市:收盘价位于至少5根均线上方
  • 熊市:收盘价位于至少5根均线下方
  • 震荡市:其他情况

如果我们只交易螺纹钢这一个商品期货,那我们可以按照刚刚讲的方法做误差分析。但是如果我们同时交易多个品种,或者多个行业的商品期货,比如我们同时交易钢铁行业,化工行业,基本金属行业这3个行业的商品期货,那么我们在做误差分析的时候,不仅可以按照牛市、熊市、震荡市来划分情景,也可以按照行业划分情景。如果误差分析结果是我们的分类器在钢铁行业最容易出错,那就加入更多钢铁行业的数据,用来训练模型,或者在模型中加入一些更符合钢铁行业的逻辑。

控制论(cybernetics)和信息论(information theory)

到此为止我们介绍了用深度学习来构建量化投资策略,并且优化这个量化投资策略的基本做法。在每一个做法中,不论是确定唯一的评价指标,还是分析偏置与方差,或者是做误差分析,都体现着控制论和信息论的思想。事物在发展的初期,往往有很多可能性。我们在这些可能性中选择几个作为目标,用一定工具让事物朝着既定目标转化,就是控制过程。 也就是说,控制过程就是通过干预,使得可能性空间缩小的过程。我们来看一种简单的控制过程:带记忆的随机控制。看二个例子:

  • 有10把钥匙,只有1把才能解锁。一把一把试,但是试过的我们记住它,下面就不试这一把了。每试一把钥匙,可能性空间就减少一把钥匙。这是一个通过我们的干预(尝试用钥匙开门)下,可能性空间缩小的过程
  • 有三个分类器:逻辑斯蒂回归(logistic regression, LR)支持向量机(support vector machine,SVM)和神经网络。在我们的样本数量和特征(feature)的限制下,只有一个分类器对于我们的螺纹钢期货交易有效。一个一个模型的尝试,尝试一个模型,可能性空间就减少一个模型。这也是一个通过我们的干预,使得可能性空间缩小的过程

除了带记忆的随机控制,还有二种控制过程特别常见:

  • 负反馈(negative feedback)调节
  • 正反馈(positive feedback)

指导我们用深度学习构建量化投资策略这一过程的,是负反馈调节。负反馈调节系统有这3个特点:

  • 系统实时比较目标和结果
  • 一旦目标和结果不匹配(出现目标差),就自动出现某种减少目标差的反应
  • 减少目标差的调节一次一次发挥作用,使得对目标的逼近可以累积起来

控制过程是通过干预,使得可能性空间缩小的过程。而负反馈调节,就是通过干预,使得目标差缩小的过程。

我们在用深度学习构建量化投资策略的过程中,第一步就是确定唯一的评价指标,就是在设定系统目标。然后我们花少则半天,多则三天的时间,尽快做出第一代的分类器,用我们设定的评价指标来判断,这个第一代的分类器表现是不是足够好。这就是在比较目标和结果是不是匹配。大概率的情况是,第一代分类器的表现不够好,也就是说出现了目标差。这时候,我们要分析分类器的偏置和方差,我们要分析分类器在牛市、熊市、震荡市这三个情景下,哪个情景中最容易出错,并且以此改进,升级第一代分类器。

在改进,升级分类器的过程中,为什么要分析分类器的偏置和方差?为什么要分析分类器在牛市、熊市、震荡市这三个情景下,哪个情景中最容易出错?为了回答这个问题,我们要先看一些信息论的内容。信息论是一门用数量化的方式来度量信息,研究信息的学问。信息论跟上面提到的控制论,以及系统论(systemtheory)合称三论。在我的专栏‘联合大脑’中的另一篇文章‘信息论’视角下的‘外向’中,也有提到信息论,控制论,系统论。

信息论创始人香农,提出了信息的量化度量方式之后,紧接着提出了香农第一定律和香农第二定律。香农第一定律有一个推论,叫做霍夫曼编码(Huffman coding)。比如我们要对汉字进行编码,有些汉字用的多,有些汉字用的少。我们让常用汉字的编码短一点,生僻汉字的编码长一点,这样就可以是的汉字的总体编码长度最短。也就是说,我们把更好的资源(更短的编码)分配给更常用的汉字,从而使得汉字的总体编码长度最短。

和汉字编码一样,根据香农第一定律,或者说霍夫曼编码的方式,我们首先着手解决导致更大误差的情况。如果可避免偏置明显大于方差,我们就首先想办法减小可避免偏置。如果在分类器在震荡市中出错的频率最高,我们就首先想办法减少分类器在震荡市中的出错。哪一种情况导致了更大的误差,我们就优先处理哪一种情况。

精益创业,说的也是这种用控制论和信息论来指导的创业模式:

  • 确定盈利目标
  • 首先做出最小可行产品(minimum viable product,MVP)
  • 把MVP投入市场,获得市场反馈
  • 把反馈信息跟盈利目标比较,看二者是不是匹配,也就是看是不是存在目标差
  • 如果存在目标差,就按照霍夫曼编码原理,最高效率的升级MVP
迁移学习(transfer learning)和总结

对于做商品期货的朋友,还有一个有趣的建议。相比于A股,商品期货品种少,上市时间晚。我们想要训练一个足够复杂的深度学习模型,用来交易商品期货,经常会发现商品期货的数据量不够大。不用怕,我们有一个神器——迁移学习。A股的数据量足够大,我们先用A股数据,来训练一个深度学习模型,然后再做迁移学习,让模型适用于商品期货交易。

到此为止,我们介绍了在控制论和信息论的指导下,用深度学习构建量化投资策略的科学步骤。首先确定系统目标,也就是对于模型的唯一的评价指标。然后尽快做出第一代分类器,也就是MVP。接着分析偏置和方差,做误差分析,用霍夫曼编码的原则用最高的效率改进分类器。直到模型结果跟预先设定的系统目标相匹配。


转载:宽客在线
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:量化投资策略 螺纹钢期货 可能性空间 评价指标 深度学习

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 00:21