算法交易简介

算法交易(Algorithm Trading)起源于美国,它是采用量化分析手段,由计算机根据算法模型决定交易委托的下单时机、委托价格以及委托笔数等,通过自动发出指令实现证券买卖和资产组合管理。

算法交易的主要目的是通过设计合理的交易策略,最大限度降低投资者交易成本,包括冲击成本和机会成本,减弱市场影响,提高投资收益。

算法交易市场规模(十亿美元) 数据来源:Markets and Markets Analysis

算法交易中比较基础的策略有TWAP、VWAP和IS等交易策略。我们以市场上最常用的算法交易策略VWAP为例,其基本思想是通过拆分订单来匹配市场真实的成交量分布,减少市场冲击成本,获得与市场一致的 VWAP 价格(Volume Weighted Average Price,交易量加权平均价格)。这个策略也是许多其他算法交易策略的基础。

对于算法策略的改进研究主要有两方面:

第一方面集中在对交易量分布的预测。

市面上比较常见的方法有:通过基于时间序列因素分解的乘法误差模型对市场交易量的预测。此外还有利用主成分分析方法对市场成交量进行动态分解建模,从而预测日内交易量。近些年来也有很多人使用高频数据从交易量预测层面对策略进行了模拟和优化,从而预测日内交易量分布。

第二方面是对交易策略进行改进。

主流的做法是利用价格信息分析日内各个决策点前价格变化,来对传统的比如VWAP策略的决策进行调整,从而提高了执行的效果及稳定性,从而节省了交易成本。另外一种做法是基于统计仿真的价格交易量模型,并通过动态策略来捕捉价格的波动性。对于国内A股,可以利用高频数据处理方法构建一种适合市场交易规则自相关的分时算法,其有效性也是得到验证的。还有就是通过放松理想化市场的假设条件,构建流动性调整的最优交易策略模型,在任意初始持仓以及不同行情时的算法表现,也是得到证明的。

基于以上两点,通过对于交易量的研究,产生了对学术上有效市场假说(EMH)的一个矛盾。大家通过研究和实践,至少是在中国证券市场否定了这一假设。因此通过预测交易量的分布来提升算法交易绩效上,成为大家研究的重点和目标。

机器学习和算法交易的结合

机器学习作为人工智能领域的热门方向之一,其在语音识别、文本挖掘、自动驾驶等方面取得了巨大的商业成就。从1930 年代至今,机器学习已经发展成为一门独立成熟的学科,有超过数百种算法被提出。与此同时,机器学习在金融投资领域尤其是基于金融时间序列的算法交易应用方面,和智能投顾、反欺诈、风险管理、投资预测等领域一样,也是近年学界和业界一直在积极探索的问题。

人工智能算法发展里程碑

在传统的时间序列预测方面,对于线性时间序列,一般使用自回归移动平均模型(Auto-Regressive and Moving-Average,ARMA)、自回归模型(Auto-Regressive,AR)等方法,经过实盘的测试,这些比较常用的方法是有效的,但是比较有限。

对于非线性的时间序列,业内使用了移动平均模型(Mowing-Average,MA),然而面对一些复杂的金融时间序列和一些更高阶的金融时间序列结构,为了分析金融时间序列的不确定性和稳定性,业内也会将AR和MA模型进行了一定的结合,提高其线性和非线性的预测效果。

实际上,我们面对的量价数据基本都是非平稳的,对于这些非平稳的序列一般都是要先转化为平稳的才能使用模型进行预测。因此,差分自回归移动平均模型(Autoregressive Integrated Moving Average Model,ARIMA) 被用来对非平稳信号进行预测,但是由于 ARIMA 模型的使用需要满足很多苛刻的假设条件,而这些假设条件在实际金融时间序列中很难成立,加上ARIMA 模型的参数确定也非常困难,同时金融时间序列收益率波动具有的集群性问题,综合这些因素,进阶地采用自回归条件异方差(Autoregressive Conditional Heteroscedastic,ARCH)模型,其主要是利用时间序列的自回归性,通过分析其自回归过程来刻画随机扰动的条件异方差的特征。不止于此,在ARCH模型的基础上继续改进,提出了一种广义自回归条件异方差(Generalized Autoregressive Conditional Heteroscedasic,GARCH)模型,它解决了模型对参数要求过多的条件。基于这个GARCH模型在波动分析中的应用,取得了很好的预测成果。

面对受到各种复杂因素的影响的时序数据,普遍的是呈现非线性变化规律的,机器学习相对于上述的传统模型方法,是另外一种解决方案。大量的机器学习方法被应用在了对于非线性时间序列的预测上。机器学习中主流的神经网络,决策树,贝叶斯、随机森林等研究方向,在这方面几乎都有大量涉及。

在不同的数学假设基础上,对于不同特性的数据,不同的评测标准,业界和学界也在机器学习各条方向做出了大量的尝试,总结出了很多成果。例如:在基于分笔(tick)数据的分析上,采用防止陷入局部最优的一种改进的自适应遗传算法优化的 BP 神经网络方法进行预测,这种改进后的模型回测结果表明其可以获得较高的预测精度。

再比如:支持向量机(SVM)被广泛使用适用于时间序列预测,其具有良好的非线性映射能力,它是实现结构风险最小化原则的一种算法。但在实际应用中存在如何选择一些参数,使支持向量机可以性能可以达到最优。业内采用蚁群优化算法来获得最优参数。

目前业内比较领先的做法,是组合模型的预测方法。即结合传统模型方法和机器学习方法的优点,互相结合使用,提高预测的精度。比如:利用近邻传播(AP)算法和支持向量机(SVM)算法相互结合,将具有相同变化规律的数据分析他们之间的相关性,获取和更多的信息,然后再输入到 SVM 中,这样能产生更好的预测结果。

还有值得一提的就是利用萤火虫算法加强支持向量机模型,对其参数进行寻优,得到 FASVR,然后利用 FWKNN 对参数进行修正,使其更能接近预测的精确度,然后用传统的异同移动平均线MACD对T0的数据进行预测,跟前面算法进行组合构建 FASVR-FWKNN-MACD涨跌的趋势预测,用于产生对于未来价格是否有利的判断,从而实现交易算法的优化。

关于机器学习的可解释性

人工智能算法的本质仍是样本拟合,人工智能并不具备真正的“智能”。和传统的方式相比,无非是机器学习模型的非线性拟合能力更强。我们需要打开机器学习模型的黑箱,不弄清机器学习模型的“思考”过程,直接使用机器学习的判断结果,可能带来较大的风险。目前这也是业内大多数金融工程团队普遍不足的地方。

近年来学术界也提出诸多机器学习模型解释方法,核心思想各有不同,除了传统的特征重要性外,ICE、PDP、SDT、LIME、SHAP 都是揭开机器学习模型黑箱的有力工具。

这里对各种解释工具做简单说明:ICE 和 PDP 考察某项特征的不同取值对模型输出值的影响。SDT 用单棵决策树解释其它更复杂的机器学习模型。LIME 的核心思想是对于每条样本,寻找一个更容易解释的代理模型解释原模型。SHAP 的概念源于博弈论,核心思想是计算特征对模型输出的边际贡献。

模型解释方法总结 资料来源:Goldstein,Lundberg等

机器学习算法的高复杂性和低解释性,决定了它在多数时候难以被人脑理解。而资管行业的特殊性在于,资产管理人和交易员有义务理解投资策略或者交易策略的风险所在,此时模型的可解释性就显得尤为关键。行业的伦理需要可解释的机器学习“白箱”模型。有了这些工具和方法,我们能很好的管理和优化那些说不清道不明的所谓“人工智能”算法的运作。

对于算法优化的总结

市场上总能充斥着大量的宣传,比如,“我们的交易算法能打赢均价5bps!”——类似这种神话。

要知道,面对流动性,无论卖家还是买家往往涉及风险和回报之间的权衡。比如其中一个简单的使用限价购买的指令,本身目的是期望更低的价格成交,其风险在于卖家对于价格的不接受,相应的股票就不能被成交。如果买家对于买入股票的意愿不是很强烈,那么这种执行失败的后果可能是微不足道的。但如果对买入股票的意愿很强烈,后果就非常严重。简而言之,限价订单通常要等待愿意接受他的价格的订单的到来,这种延迟可能导致风险。其中成本、执行失败的风险、交易者的意愿都是其中考量的因素。

现代科学体系已经摆脱了决定论或决定主义(Determinism)这种基于以牛顿为代表的古典物理体系下的哲学观念。在决定论科学观下,如同数学家拉帕拉斯说的那样:“你只要给我全世界粒子的初试位置和速度,我就可以预测整个世界的未来。”这是古典机械物理的决定论的典型观点,而现在科学家已经不这么认为。

威廉·布莱克的名画《牛顿》,画中牛顿被贬低为一位“神学几何学者”

随着量子力学的发展,我们认识到对于未来的预测一定是或然的、统计的,这根源于微小世界本身的性质。前提与结论间不具有因果关系。对于此,产生了目前比较流行的混沌学(Chaos)。其实这种思维在古典辩证哲学中就已经存在,只是没有在这方面有很好的继承和发展。拉丁格言“ignoramus et ignorabimus”(we do not know and will not know),中文译为“我们现在不知道,将来也不知道。”说明的正是这个道理。一味鼓吹自己科学方法一定能够预测未来,那么它要么就是犯了科学主义错误,将科学作为另外一种迷信的替代;要么它就是一个骗子!对于在我们社会普遍缺少科学思维的现状下,大家一定要有对此有清晰理性的认知。

金融市场是一个复杂系统,机器学习只是一种方法,目的是对算法交易策略的改进优化,它一定是在满足科学研究的四个步骤下进行的,那就是:一,观察现象,总结规律;二,提出假说,通过数据训练提炼理论;三,进行预测;四,搜集结果数据,同理论的预测相对照。这里面的关键点在于,我们通过这些步骤,不会得到正确答案。我们得到的结果一定是可证伪的。我们只有通过不断的迭代和推翻,使得我们的成果尽量逼近于真实的市场演绎。

这是一个系统工程,在技术上需要数据资源、技术平台以及对于金融机构系统方案整合能力;在金融业务方面,除了对市场交易、微结构的深刻理解,还需要强大的金融工程投研能力;此外,还需要学术界、顶尖高校的支持合作。在这个基础上,我们才能快速方法的迭代和更新,我们面对不确定,才能不断地实现认知的升级。

机器学习在算法交易中的应用现状相关推荐

  1. 如何在算法交易中使用AI?摩根大通发布新版指南

    https://blog.csdn.net/cf2SudS8x8F0v/article/details/84901318 来源 :efinancialcareers.com 作者 :Sarah But ...

  2. 收好了!来自摩根大通的算法交易机器学习指南

    来源 :efinancialcareers.com 作者 :Sarah Butcher 摘要:如果你对银行与金融领域的 AI 应用有兴趣的话,你肯定了解 JPM(摩根大通)最近十年对大数据和人工智能的 ...

  3. python机器交易_全解用 Python 建立能源市场算法交易的机器学习框架

    原标题:全解用 Python 建立能源市场算法交易的机器学习框架 编译:数据派 - 笪洁琼 ,冯羽 , 英文:SIMON KUTTRUF 前言 人工智能的新突破每天都成为头条新闻.在金融领域,机器学习 ...

  4. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)

    参考文献: https://en.wikipedia.org/wiki/Time-weighted_average_price https://en.wikipedia.org/wiki/Volume ...

  5. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)

    量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...

  6. 算法交易的成长与未来

    作者:Viraj Bhagat 编译:BigQuant 回顾原始时代,当火是人类最伟大的成就时,当时的他们谁能想到我们人类今天所取得的成就? 我经常对从公元前300年的基本欧几里德算法到现代算法的奇妙 ...

  7. 对冲、量化、算法交易,你真的懂吗?

    说到对冲基金,很多人就会联想到"量化对冲"."程序化交易"等相关词汇. 那么这些概念之间到底有怎样的关联呢? 是不是对冲基金一定要采取对冲或量化投资呢? PAR ...

  8. 算法交易系列研究之一

    一.算法交易的概念   (一)什么是算法交易 算法交易(Algorithmic Trading)是一种程序化交易方式,它将交易者和市场有机地联系起来.算法交易通常可以减少这两者之间的摩擦,或者说在一定 ...

  9. 《利用机器学习开发算法交易系统》

    从作者写这本书的质量来说,还是可以的,因为原版是2016年出版的. 基本把跟算法交易相关的机器学习内容概括性的提到了,遗憾的是并没有给出代码,也没给个github资料. 书名有点骗人,我买之前以为是能 ...

最新文章

  1. Ajax同步和异步的区别
  2. P1569 [USACO11FEB]属牛的抗议Generic Cow Prote…
  3. java可存储100个整数的数组_定义一个一维整数数组,其中储存1000个1至100以内的整数,并统计出整数出现的次数(Java写出来)...
  4. Nginx的启动、停止和重启
  5. 防止SQL SERVER的事件探查器跟踪软件
  6. Cisco-CCNP之OSPF链路状态路由协议(二)
  7. 《成为顶级JAVA架构师的必备书籍》
  8. ios 控件切圆_iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客...
  9. java编写flash相册的制作软件,Flash电子相册制作工具(Amazing Flash Gallery Maker)
  10. H3CSE认证网络工程师视频课程-广域网-宋文峰-专题视频课程
  11. Oracle基础--PL/SQL编程基本语法
  12. 洞见科技创始人姚明:隐私计算让数据穿上“防护服”的同时,还能充分释放数据价值...
  13. Linux ipv6设置
  14. 如何查看windows的CUDA版本
  15. 插帧补帧DAIN算法,让电影、视频、动漫变丝滑顺畅
  16. Flink写入hdfs报错:Flink job failed with “Checkpoint Coordinator is suspending
  17. antv/G6使用详细介绍,一篇文章说清antv G6如何使用
  18. C++ abort() has been called错误
  19. 前端最有成就感一—-封装
  20. 理解伯德图-2/4什么是伯德图

热门文章

  1. python复制excel模板并保留表格样式
  2. 深度学习入门 | Self-attentionRNNLSTM
  3. 极简的书签管理器Shaarli
  4. 近期修改cython文件问题汇总
  5. base64、blob格式相互转换及应用
  6. Mysql(Innodb)如何避免幻读
  7. 意云丰盘点:那些令网赚者疯狂的时代
  8. jenkins post steps设置记录
  9. Dockerfile 构建python环境
  10. CC1120 Sub-1G 无线射频收发器 驱动开发