量化交易新手指南_入门到进阶
量化交易是量化金融中一个非常复杂的领域。为了通过面试或者构建自己的交易策略,你可能需要花费大量的时间来获得必要的知识。不仅如此,量化交易也需要你掌握大量的编程专业知识,至少应掌握一门程序语言,如MATLAB,R或Python。然而,随着交易策略频率的不断增长,编程技术的重要性也日益提升,因此熟悉C/C++也同样至关重要。当然也可以不需要了解代码的平台,relquant雷尔量化投资 就是一个典型的代表,一键解决所有问题,操作起来更简洁方便。
量化交易系统由四个主要部分组成:
·策略识别:寻找策略,挖掘竞争优势并确定交易的频率;
·策略回测:获取数据,分析策略的性能和消除各种偏差;
·执行系统:将交易系统经纪商连接起来,自动交易以及最小化交易成本;
·风险管理:最优资本配置,最优下注规模、凯利标准和交易心理学。
策略识别
所有的量化交易过程都始于最初的研究阶段。这一研究阶段包括寻找策略,观察该策略是否与你可能正在运行的其他策略组合相契合,获得测试策略所需的全部数据,并尝试优化策略以获得更高的回报以及降低风险。如果你是一个零售交易员,你还需要考虑自己的资本约束,以及任何可能影响你的策略的交易成本因素。
与流行的看法相反,实际上你可以相当直接地通过各种公共资料来源找到有利可图的策略。学术界通常会定期发布一些理论性策略的交易成果(尽管大多数未考虑交易成本)。量化金融博客会详细地讨论策略的细节,而与交易相关的杂志则会涉及量化使用的一些策略。
你可能会感到疑惑,为什么个人和公司会热衷于讨论他们的盈利策略,特别是当他们知道别人都使用该策略,可能会使得策略在长期里失去效力。他们这么做的原因在于,通常他们并不会讨论策略的确切参数和识别参数的方法,而这些优化才是使得相对平庸的策略转变为盈利丰厚的策略的关键。事实上,创建自己独特策略的最好方法之一便是找到类似的方法,然后执行自己的优化过程。
一旦确定了一个策略或一组策略,就需要用历史数据对其进行盈利测试,这就是回测需要处理的问题。
策略回测
回测的主要目标是为了提供证据,证明上述过程中识别的策略在应用于历史和样本外数据时确是有利可图的,这为量化交易员设定了策略在现实世界中可能如何表现的期望。然而,由于各种原因,回测并不一定能保证成功。这也许是量化交易中最微妙的领域,因为回测中涉及大量的偏差,必须仔细分析并尽可能地消除。我们将讨论常见的偏差,包括前视偏差,生存偏差和过度优化偏差(也称为“数据窥探”偏差)。回测中其他的重要问题还包括历史数据的可获得性和干净程度,分析现实中策略的交易成本以及确立可靠的回测平台。我们将在下面的执行系统部分进一步讨论交易成本。
一旦确定了交易策略,就需要获得历史数据以进行回测与改进交易策略。每一种资产类别都有相应的数据提供商,数据的成本通常随着数据的质量,深度和及时性提高而提高。传统上,量化交易的初学者(至少在零售层面)的起点是雅虎财经的免费数据集。我不会在这里太多地讨论数据提供商,而只是集中讨论处理历史数据集时会遇到的一般性问题。
在使用历史数据时,主要的关注点包括数据的准确性与清洁程度,数据中可能出现的幸存者偏差以及根据公司市场行为对数据进行调整:
数据的精度与其总体质量有关,即数据中是否包含错误。有时可以很容易地发现错误,例如使用窄带滤波器(spike filter)可以挑选出时间序列数据中不正确的尖峰并进行校正。其他时候则很难发现错误,有时需要有两个或多个数据提供商,通过对它们的数据进行比对以检查数据的正确性;
一旦已经进行了回测,发现历史数据中没有偏差,而且交易策略有一个较好的夏普比率和最小化的回撤,就应该建立交易执行系统了。
执行系统
执行系统是一种将交易策略生成的交易命令发送给经纪商执行的手段。尽管交易命令的生成可以是半自动甚至全自动的,但是执行系统可以是手动的,半手动的(即一次点击)或全自动的。对于LFT策略,手动和半手动技术较为常见。对于HFT策略,则有必要创建一个全自动的执行系统,这个系统通常与交易生成器紧密相联(因为高频交易的策略和执行系统是相互依赖的)。
创建执行系统时,需要考虑的关键因素是经纪商的接口,最小化交易成本(包括佣金,滑点和价差)以及实时交易系统的表现与回测表现的差异。
可以通过多种方式连接到经纪商,从最简单地直接给你的经纪商打电话,到一个全自动的高性能应用程序编程接口(API)。理想情况下,你会希望尽可能自动地执行你的交易。这使你可以专注于进一步的研究,以及允许你运行多个策略甚至更高频率的策略(事实上,HFT基本上不可能不自动执行)。之前简略提到的常用回测软件,如MATLAB,Excel和Tradestation可以适用于简单的低频策略。然而,为执行真正的高频交易,确有必要构建用高性能语言(如C++)编写的执行系统。在我以前工作的基金,我们有一个10分钟的交易循环,每10分钟下载一次新的市场数据,然后在同一时间框架内执行基于该信息的交易。我们使用的是优化过的Python脚本,然而对于分种级或秒级的交易策略,我相信C/C++会更加理想。
执行系统中的另一个主要问题是交易成本的最小化。交易成本通常有三个组成部分:佣金(或税收),即由经纪人,交易所和证监会(或类似的政府监管机构)收取的费用。滑点,这是你打算执行的订单与实际执行的订单之间的价格差异,这是所交易的买价与卖价之间的差额。注意,价差并不是常数,并且取决于市场当前流动性。
执行系统的最后一个主要问题是策略实际表现与回测表现的差异,这可能是由多种原因造成的。当分析回测时,我们已经深入讨论了前视偏差和过度优化偏差。然而,对于有些策略,在部署之前进行测试并不容易,这在高频交易策略中经常发生。执行系统和交易策略可能存在错误,但这些错误不会在回测中表现出来,但却会在实时交易中表现出来。此外,在部署策略之后,市场可能已经受到体制变化的影响,新的监管环境,变化了的投资者情绪和宏观经济现象都可能导致市场行为发生变化,从而影响了你的策略的盈利能力。
风险管理
量化交易难题的最后一个部分是风险管理。风险包括我们之前已经讨论的所有偏差。它也包括技术风险,例如与交易所联合部署的服务器突然出现硬盘故障,还包括经纪风险,例如经纪商破产。简而言之,这些风险涵盖了几乎所有可能干扰你执行交易的事件。这些风险有各种来源,详细地讨论量化策略的风险管理需要一整本书,所以我不打算在这里阐明所有可能的风险来源。
风险管理的另一个关键组成部分是应对自己的心理活动。交易中会出现很多认识偏差,尽管如果让交易策略独自执行不受人工干预,这些偏差对算法交易来说都不是问题。一个常见的偏差是损失厌恶,即交易员由于不愿意实现损失而迟迟不平掉已经亏损严重的头寸。与之类似,盈利则实现的太早,因为交易员非常害怕失去已经获得的利润。另一个常见的偏差被称为近因性偏差,这表现在交易员过分强调最近发生而不是更长期的事件。最后,经典的情感偏差——恐惧和贪婪也是存在的,这些偏差往往导致杠杆不足或杠杆过度,并可能导致爆仓或减少盈利。