您当前所在位置: 主页 > 量化交易 > 投资策略解密 >

>量化交易

DE CHUAN FUND

投资策略解密

量化交易的黑客帝国

发布日期:2016年10月25

  量化交易的起源

  量化交易起源于上世纪七十年代的股票市场,是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式。量化交易从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,用数量模型验证及固化这些规律和策略,然后严格执行已固化的策略来指导投资,以求获得可以持续的、稳定且高于平均收益的超额回报。

  量化交易VS人工操盘

  有数据显示,国外成熟市场期货程序化交易已占据总交易量的70%-80%,而国内则刚刚起步。手工交易中交易者的情绪波动等弊端越来越成为盈利的障碍,而程序化交易天然而成的精准性、100%执行率则为它的盈利带来了优势。

  在一个好的策略面前,由于人为的心理影响所造成的亏损比比皆是。

  量化交易恰恰可以尽可能地规避投资者在投资活动时所受到的心理影响。斯坦利·克罗曾经说过,即使是最不成功的投资者,也会偶然发现市场上一些能获得超额利润的机会。投资者之所以会失败,一方面是无法坚持当初的决定,另一方面是无法控制随后出现的重大亏损。当众多的投资者在技术方面不相上下时,决定其最后成败的往往是心理素质。

  一个成功的投资者,首先需要具备的素质就是能否很好地约束住自己。不过,在加入了杠杆的期货市场,很多投资者往往不能恰如其分地控制好自己的心理活动。在一个好的策略面前,由于人为的心理影响所造成的亏损比比皆是。量化交易恰恰可以尽可能地规避投资者在投资活动时所受到的心理影响。以数量模型验证及固化这些规律和策略,严格执行已固化的策略来指导投资,从而使投资决策更科学、更理性,这就是量化交易的优势所在,也是量化交易在期货市场的意义所在。

  量化交易是什么?

  量化交易,简单来说,就是利用数学、统计学、信息技术的量化投资方法来管理投资组合。数量化投资的组合构建注重的是对宏观数据、市场行为、企业财务数据、交易数据进行分析,利用数据挖掘技术、统计技术、计算方法等处理数据,以得到最优的投资组合和投资机会。

  量化交易可以进一步细分为自动化交易(Automatic Trading)、量化投资(Quantitative Investment)、程序化交易(Program Trading)、算法交易(Algorithm Trading)以及高频交易(High Frequency Trading)。这五种量化交易方式的侧重点各有不同,是量化交易技术发展到不同阶段的产物,也是不同量化交易用户群的不同交易方式。

  目前的量化交易平台可以从开发语言、技术架构、系统架构、策略方向、交易方式等几个方面,分为中低端和高端量化交易平台。

  量化交易的优势

  严格的纪律性

  量化交易有着严格的纪律性,这样做可以克服人性的弱点,如贪婪、恐惧、侥幸心理,也可以克服认知偏差。一个好的投资方法应该是一个“透明的盒子”。我们的每一个决策都是有理有据的,特别是有数据支持的。如果有人质问我,某年某月某一天,你为什么购买某支股票的化,我会打开量化交易系统,系统会显示出当时被选择的这只股票与其他的股票相比在成长面上、估值上、资金上、买卖时机上的综合评价情况,而且这个评价是非常全面的,比普通投资者拍脑袋或者简单看某一个指标买卖更具有说服力。

  完备的系统性

  完备的系统性具体表现为“三多”。首先表现在多层次,包括在大类资产配置、行业选择、精选个股三个层次上我们都有模型;其次是多角度,量化交易的核心投资思想包括宏观周期、市场结构、估值、成长、盈利质量、分析师盈利预测、市场情绪等多个角度;再者就是多数据,就是海量数据的处理。人脑处理信息的能力是有限的,当一个资本市场只有100只股票,这对定性投资基金经理是有优势的,他可以深刻分析这100家公司。但在一个很大的资本市场,比如有成千上万只股票的时候,强大的定量化交易的信息处理能力能反映它的优势,能捕捉更多的投资机会,拓展更大的投资机会。

  妥善运用套利的思想

  量化交易正是在找估值洼地,通过全面、系统性的扫描捕捉错误定价、错误估值带来的机会。定性投资大部分时间在琢磨哪一个企业是伟大的企业,那个股票是可以翻倍的股票;与定性投资不同,量化交易大部分精力花在分析哪里是估值洼地,哪一个品种被低估了,买入低估的,卖出高估的。

  靠概率取胜

  这表现为两个方面,一是定量投资不断的从历史中挖掘有望在未来重复的历史规律并且加以利用。二是在股票实际操作过程中,运用概率分析,提高买卖成功的概率和仓位控制。

  Part2:主观交易者如何入门量化交易?

  一个量化交易系统包括四个主要部分:

  策略识别:搜索策略、挖掘优势、确定交易频率。

  回溯测试:获取数据、分析策略性能、剔除偏差。

  交割系统:连接经纪商、使交易自动化、使交易成本最小化。

  风险管理:最优资本配置、最优赌注或凯利准则、交易心理学。

  策略识别

  所有量化交易流程都肇始于一个初期研究。这个研究流程包括搜索一个胜率差策略、检验它是否适合你可能正在运作的策略组合、获取任何测试策略时所需数据、努力优化策略使其收益更高且(或)风险更低。如果你是一个“散户”交易员,一定要清楚自己的资金是否充足,以及交易成本对策略的影响。

  通过各种公开数据搜索可盈利的策略实际上十分简单,并没有大家想的那么难。研究学者会定期发表理论交易结果(虽然大多为交易成本总额)。一些数量金融学主题博文也会详细讨论策略。交易期刊还会简报一下基金管理公司使用的一些策略。

  你可能会问,个人与公司怎么可能愿谈他们的可盈利策略,特别是当他们知道,如果其他人“复制相同的策略”,长期而言它终将失效。原因就在于,他们通常不会透露具体的参数以及他们所使用的调参方法,而这些优化技能才是把一个表现平庸的策略调成一个回报丰厚的策略所需的关键技术。实际上,若要创建你自己的、独一无二的策略,一个最好的法子就是寻找相似的方法,尔后执行你自己的优化程序。

  你所看到的很多策略都可归入均值回归交易策略、趋势跟随或动量交易策略两类。均值回归策略试图利用这么一个事实:“价格序列”(如两个关联资产的价差)存在一个长期均值,价格对均值的短期偏离终将回归。动量交易策略则试图“搭上市场趋势的顺风车”,利用投资心理和大基金结构信息在一个方向积聚动量,跟随趋势直至回归。

  定量交易还有一个重要方面,即交易策略的频率。低频交易(LowFrequencyTrading,LFT)通常指持有资产超过一个交易日的策略。相应地,高频交易(HighFrequencyTrading,HFT)通常指持有资产一个交易日的策略。超高频交易(Ultra-HighFrequencyTrading,UHFT)指持有资产的时常达秒级与毫秒级的策略。虽然散户可以进行HFT与UHFT交易,但也只是在你掌握了交易“技术栈”与订单簿动力学的详细知识后才有可能。本篇入门文章,我们不会对这些问题做任何深入探讨。

  策略或策略集合一旦确定,现在就需要在历史数据上测试其盈利能力,这就进入了回溯测试的工作范围。

  回溯测试

  回溯测试的目标是提供证据,佐以证明通过以上流程所确定的策略,无论是应用于历史(训练)数据还是测试数据均可盈利。它可以反映该策略未来在“真实世界”中的预期表现。由于种种原因,回溯测试不能保证一定成功。这或许就是量化交易最为微妙之处,由于它包含了大量的偏差,我们必须尽尽力仔细审查并剔除它们。我们将讨论几种常见类型的偏差,包括先窥偏差、幸存者偏差与优化偏差(亦称“数据窥视偏差”)。回溯测试中其他几个重要方面,包括历史数据的可用性与清洁度、真实交易成本及可靠回测平台上的决定。我们会在后续“交割系统”一节深入讨论交易成本。

  策略一旦确定,我们就需要获取历史数据,并藉此展开测试,如有可能还可改进策略。现在卖数据的很多,所有资产类型的数据都有。通常,数据的质量、深度、时间间隔不同,其价格也不同。刚入门的量化交易员(至少零售等级)最初使用雅虎金融板块(YahooFinance)的免费数据就行。对于数据供应商,这里不再赘言。我想重点谈一谈处理历史数据时,时常遇到的问题。

  对于历史数据,人们主要关心的问题,包括数据精度或清洁度、幸存者偏差、应对如分发红利、拆分股票等公司行为的调整。

  精度与数据整体质量有关,无论数据是否包含错误。有时错误容易识别,比如使用一个窄带滤波器,就可以找出时间序列数据中的“窄带”并更正它们。其他时候,错误又很难甄别,经常需要根据多个数据供应商提供的数据进行对比检查。幸存者偏差通常是免费数据集或廉价数据集的一个”特征“。对于一个带有幸存者偏差的数据集,它不包含已经不再交易的资产数据。不再交易的证券,则表示已经退市或破产公司的股票。如果数据集中含有此类偏差,策略在此数据集上的测试表现可能比在”真实世界“里表现的更好,毕竟历史”赢家“已经被预先筛选出来,作为训练数据使用。公司行为即公司开展的常引发原始价格阶梯形变化的”逻辑“活动,它不应该计入价格收益。公司分发红利和拆分股票行为是引发调整的两个常见行为,二者无论发生哪一种,都需要进行一个”回调“的流程。我们一定要留心,不要把股票拆分和真实收益调整混为一谈。许多交易员在处理公司行为时都碰过壁!

  为了开展回溯测试,我们必须使用一个软件平台。你可以选择一个专门的回测软件,一个数值平台如Excel或MATLAB,或者一个用Python或C++完全自主实现的平台。对于交易平台、Excel或MATLAB,我不作过多介绍。我比较推崇的是创建一个内部技术栈。这么做的一个好处是可以实现回溯测试软件与执行系统的无缝集成,甚至还可以添加一些高级的统计策略。对于HFT策略,更应该使用自主实现的系统。

  在做系统回测时,一定要量化表示系统性能。定量策略的“业界标准”度量为最大资金回挫与夏普比率。最大资金回挫表示一段时间(通常一年)内账户资金曲线从波峰至波谷的最大跌幅,常使用百分比表示。由于大量的统计因素,LFT策略比HFT策略的资金回挫更高。历史回测会显示过去的最大资金回挫,它能够较为贴切地反映策略的未来资金回挫情况。第二个度量指标是夏普比率,它被启发式地定义为“超额收益均值与超额收益标准差的比值”。这里,超额收益表示策略收益超出某个预定基准,如标普500或三月期短期国债(收益)的额度。注意人们通常不使用年化收益指标,因为它忽略了策略波动性的影响,而夏普比率却考虑到了这一点。

  如果经过回测,策略的夏普比率很高且其最大资金回挫已经最小化,则可以认为它趋于无偏,下一步就是要搭建一个交割系统。

  交割系统

  交割系统是一个方法集合,由它来控制交易策略生成的交易列表的发送和经纪商的交割行为。事实上,交易可以半自动、甚至全自动生成,而执行机制可以手动、半自动(即“点击一次交割一项”)或者全自动。尽管如此,对于LFT策略,手动和半自动技术却比较常见;对于HFT策略,则必须创建一个全自动交割机制,由于策略和技术彼此依赖,还要经常与交易指令生成器紧密相接。

  在搭建交割系统时,我们需要考虑几个关键因素:连接经纪商的接口、交易成本(包括佣金、滑动价差与价差)最小化、实时系统与回测时系统性能的差异。

  联系经纪人的方法有很多,你可以直接电话联系他,也可以通过一个全自动高性能的应用程序接口(API)实现。理想情况,就是希望交割交易的自动化程度尽可能高。这样一来,你不仅可以脱开身集中精力进行深入研究,还能运行多个策略、甚至HFT策略(实际上,如果没有自动化交割,HFT根本不可能)。前面说过的几种常用回溯测试软件如MATLAB、Excel,对于LFT策略或简单策略都是不错的选择。但是,如果要做真正的HFT,你就必须要构造一个用高性能语言(如C++)编写的内部交割系统。说个我的亲身经历,以前受聘于一家基金管理公司,我们有一个十分钟的“交易周期”,每隔十分钟下载一次新的市场数据,然后根据这十分钟的信息进行交割。这里用的是一个优化的Python脚本。对于任何处理分钟级或秒级频率数据的工作,我相信C/C++更理想。

  在一家大型的基金管理公司,交割系统的优化通常不在量化交易员的工作范围。但是,在小点的公司或高频交易公司,交易员就是交割人,所以技术面越广越好。你要想进一家基金管理公司,一定要记住这一点。你的编程能力不说比你的统计学和计量经济学禀赋更重要,至少也同样重要!

  另外一个属于交割系统的重要问题是交易成本最小化。一般地,交易成本由三部分构成:佣金(或税收)、损耗与价差。佣金是向经纪商、交易所和证券交易委员会(或类似政府监管机构)支付的费用;滑动价差是你的预期交割价位与真实交割价位的差值;价差则是待交易证券的卖出价与买入价之差。注意价差不是常数,它依赖于市场当前流动性(即买单和卖单数量)。

  交易成本是决定一个策略是高夏普比率且盈利丰厚,还是低夏普比率且极不盈利的关键。根据回溯测试正确预测未来的交易成本很具有挑战性,你需要根据策略频率,及时获取带有卖出价与买入价信息的历史交易数据。为此,大型基金管理公司量化交易的整个团队都专注于交割优化。当基金管理公司需要抛售大量交易时(原因五花八门),如果向市场“倾泻”大批股票,会迅速压低价格,可能都来不及以最优价格交割。因此,纵使遭受损耗风险,基金管理公式也会选择使用算法交易,通过“打点滴”的方式向市场出单。此外,其他策略如若“捕到”这些必要性条件,也能利用市场失效(获利)。这是基金结构性套利的内容。

  交割系统最后一个主要问题关系到策略的实时性能与回测性能的差异。这种差异由多种因素造成,比如我们在“回溯测试”一节已经深入讨论过的前窥偏差与最优化偏差。然而,对于有些策略,在部署之前不易测得这些偏差。这种情况对于HFT最为常见。交割系统和交易策略本身均可能存在程序错误,回溯测试时没有显现却在实时交易时出来捣乱。市场可能受到继交易策略部署后的一场政变的影响,而新的监管环境、投资者情绪与宏观经济形势的变化也均可能导致现实市场表现与回溯测试表现的差异,从而造成策略盈利性上的分歧。

  风险管理

  量化交易迷宫的最后一块是风险管理程序。风险包含我们之前谈论的所有偏差。它包括技术风险,比如所有在交易所的服务器突然发生硬盘故障。它还包括经纪风险,如经纪商破产(此说并非危言耸听,最近引发恐慌的明富环球就是一个例子。总而言之,它覆盖了几乎所有可能干扰到交易实现的因素,而其来源各不相同。目前已经有成套的书籍介绍量化交易策略的风险管理,本人也就不再对所有可能的风险来源做详细说明。

  风险管理还包括投资组合理论的一个分支,即所谓的“最优资本配置”,涉及到如何将资本分配给一组策略、如何将资本分配给策略内不同交易的方法。这是一个复杂的领域,依赖于一些高级数学知识。最优资本配置与投资策略杠杆通过一个名为凯利准则的业界标准建立联系。本文是一篇入门文章,我在此不详谈其计算。凯利准则对策略收益的统计性质做过一些假设,但是它们在金融市场中并不一定成立,交易员因此在实现时通常会有所保留。

  风险管理的另外一个关键成分涉及到交易员自身心理因素的处理。尽管大家都承认,算法交易若无人为干涉,不太容易出现问题。交易员在交易时,稍不留神仍然可能会掺入许多认知偏差。一个常见的偏差是厌恶规避,当人发现损失已成定局,其所带来的痛苦,可能会麻痹人的行为,不能做到及时抛盘止损。类似地,由于太过忧心已经到手的收益可能赔掉,人们可能也会过早抛盘收利。另外一个常见的偏差是所谓的近期偏好偏差:交易员太看重近期事件而非长远地看问题。此外,当然不能落下“恐惧与贪婪”这对经典的情绪偏差。这两种偏差常导致杠杆不足或杠杆过度,造成爆仓(账户资产净值近乎为零或更糟)或盈利缩水的局面。

  总结

  由此观之,量化交易是数量金融学中一个虽趣味十足但极其复杂的领域。我对这个话题的讨论浅尝辄止,文章就已经这么长了!我在文中三言两句带过的问题,已经有大量的相关书籍和论文出版。因此,在你申请量化基金交易职位前,务必要进行大量的基础调研,至少应当具有统计学和计量经济学的广泛背景,以及使用MATLAB、Python或者R程序语言实现的丰富经验。如果应对的是更加复杂的高频端策略,你的技能组合可能还要包含Linux内核修改、C/C++、汇编编程和网络延迟优化。

  如果你有兴致创建自己的算法交易策略,我的头条建议就是练好编程。我偏向于尽可能多地自己实现数据采集器、策略回溯测试系统和交割系统。如果你自己有投钱做交易,而你又了解系统是否已经通过充分测试,还知晓其存在的缺陷和特殊问题,你怎么可能夜里睡不踏实?如果把它外包出去,短期内也许节省了时间,但长期来看可能成本巨大。