一位从事量化交易的实战者,手把手带你入门量化交易!

大数据文摘出品

来源:quantstart

编译:LYLM、笪洁琼

本文作者是一位从事量化交易的实战者,他将他的实战心得写成一个量化交易系列,本篇则是系列的第一篇,从文中你会对整个量化交易的框架、流程、以及策略思路的来源地都有相应地说明。接下来就和文摘菌一起来看看量化交易应该如何入门吧!

在此文中我将为你们介绍一些端对端量化交易系统的基本概念,希望借此帮助到两类读者:一类是希望在基金公司中找到量化交易相关工作的人,另一类是那些希望能自行利用算法进行交易的“散户”。

量化交易是量化金融中非常复杂的一个领域。要通过面试或者制定自己专属的交易策略,需要花费大量时间来学习相关知识。不仅如此,你还需要粗略会些编程技能,至少要会MATLAB,R语言或者Python其中一种语言。然而,随着策略交易频率的增加,技术方面相关性更强了,因此熟悉C语言或C++就更为重要。

量化交易系统由四个主要部分组成:

  • 策略识别-寻找策略,利用优势以及决定交易频率

  • 策略回测-获取数据,分析策略性能以及消除偏差

  • 执行系统-与经纪(开户)公司对接,自动化交易以及最小化交易成本。

  • 风险管理-最优资本配置,“押注规模”/凯利公式以及交易心理。

我们先来看看如何确定交易策略。

 

策略识别


所有的量化交易过程都是在研究初期就开始了的。这个研究过程包括寻找策略,看看这个策略是否与你正在运行的其他策略组合相融,获取测试策略所需的所有数据,并试图优化策略以获得更高的回报和/或更低的风险。如果你是以“散户”的身份运行交易策略,还需要考虑自己的资金要求,以及每项交易成本是如何影响策略的。

与人们普遍认为的相反,通过各种公开渠道寻找可盈利的策略是非常简单的。学术界会定期发表理论交易结果(尽管大部分是交易成本总额),量化金融的博客通常会详述其使用的策略,行业期刊也会概述基金采用的部分策略。

你可能会问,为什么个人和企业都这么热衷于讨论自己的盈利策略呢,尤其是知道其他人都想来“分一杯羹”的情况下,可能这个策略长期来看就未必还能盈利了。原因在于,他们其实不会讨论他们使用的确切的参数设置和微调方法。这些优化手段是将相对平庸的策略转为获取高额收益的关键。实际上,创建自己独特策略的最佳方法之一,就是找到相似的方法,然后自己进行调优。

以下是可供各位寻找策略的网址列表:

  • 社会科学研究网
    www.ssrn.com

  • arXiv量化金融
    arxiv.org/archive/q-fin

  • 寻找阿尔法
    www.seekingalpha.com

  • 精英交易员
    www.elitetrader.com

  • Nuclear Phynance
    www.nuclearphynance.com

  • Quantivity
    quantivity.wordpress.com

很多你接触到的策略通常都是划分到均值回归和趋势追踪/动量这两类里的。均值回归策略是一种希望利用“价格序列”(如两个相关资产之间的价差)上的长期均值的存在以及围绕该均值的短期波动终会回归的策略。动量策略试图利用投资者心理和大型基金结构,搭上市场趋势的顺风车,这种顺风车可以在一个方向聚集动量,并跟随趋势,直到趋势逆转。

定量交易的另一个非常重要的方面是交易策略的频率。低频交易(LFT)通常指持有资产超过一个交易日的策略。

相对应的是高频交易(HFT),通常指持有资产不超过一个交易日的策略。超高频交易(UHFT)指的是以秒和毫秒为单位进行资产交易的策略。作为散户,高频交易和超高频交易当然也有可能,但只在对交易的“技术栈”和订单动态有详细了解的情况下才可实现。因此在这篇介绍性文章中不会过多涉及。

一旦确定了某个或某套策略组合,就需要根据历史数据对其盈利能力进行测试,这就属于回测的范畴了。

策略回测

回测的目的是提供证据,以证明通过上述过程确定的策略在应用于历史数据和样本外数据时是能获得收益的。这就为该策略在“现实世界”中的表现设定了预期。然而,由于种种原因,回测并不能完全保证策略的成功。这或许是量化交易中最为微妙的领域了,因为这其中有许多的偏差,需要经过深思熟虑尽量消除偏差。我们会讨论一些常见的偏差类型,比如前瞻性偏差,幸存者偏差和优化偏差(也称“数据透视”偏差)。回测中的其他重要领域还包括历史数据的可用性和清洗程度,考虑实际的交易成本和选择一个稳定的回测平台。我们将在后面的执行系统部分讨论交易成本。

一旦确定了一项策略,就应该获取历史数据用于测试,或更进一次用于改进策略。在所有种类的投资中都拥有大量的数据供应商。它们的售价会因数据质量、深度和实效性而有所区别。开始量化交易,最传统的开始手段(至少是散户开始的手段)是使用雅虎今日的免费数据集。在此我不会过多讲述这些供应商,而是集中于讨论处理历史数据集时可能会遇到的一般问题。

对历史数据的主要关注点在于准确性/清洗程度,幸存者偏差和企业行动(如股息和股票分割)的调整:

  • 准确度和数据的整体质量挂钩,即它是否包含错误数据。有时,错误很容易被识别,比如使用窄带滤波器(spike filter),在时间序列数据中挑出错误的“高峰”并予以纠正。而有的时候又会很难发现。这时我们通常需要有两个或以上的供应商,来检验双方的数据。

  • 幸存者偏差通常是免费或廉价数据集的一种“特征”。数据集具有幸存者偏差意味着它不包含不再进行交易的资产。就股票而言,指的就是那些退市或破产的股票。这一偏差意味着,在这样的数据集中,任何股票策略都会比在“现实世界”中表现更佳,因为历史的“赢家”已经被预先挑选出来了。

  • 企业行动包括企业进行的“后手”活动,这些活动通常会导致原始价格的阶跃函数变化,不应被包含在价格回报的计算中。股息和股票分割的调整是这类变化的罪魁祸首。在每一个这类动作中都需要进行一次反向调整。我们必须非常小心,不要将股票分割和真正的回报调整混为一谈。很多交易员都被这类企业行动坑了一把。

为了执行回测程序,我们得使用软件平台。你可以使用专用的回测软件,如Tradestation,或是数字平台,如Excel或MATLAB,或者使用编程语言如Python或C++进行自定义实现。我不会Tradestation类似的软件或是Excel和MATLAB这类工具做过多研究,因为我相信可以搭建一个完整的自用技术栈,原因如下:这样做的一个好处是,哪怕是使用最先进的统计策略,都可以紧密地集成化回测软件和执行系统。特别是对于高频交易策略而言,使用自定义实现是至关紧要的。

回测系统时,必须能量化其性能表现。量化策略的“工业标准”指标是最大回撤率和夏普率。最大回撤率是指账户权益曲线在特定时间段内(通常是每年)的最大峰谷跌幅,通常以百分比的形式出现。由于许多统计因素的影响,低频交易策略的最大回撤率通常会比高频交易策略高。历史回测会找出过去的最大回撤率,对未来的最大回撤率会有很大指导作用。第二个衡量指标是夏普率,定义是超额回报的平均值除以这些超额回报的标准差。

在这里,超额回报指的是战略回报高于预设基准,比如标准普尔500指数或是三个月的短期国库券。请注意,年化回报通常不是衡量的指标,因为与夏普率不同,它没有考虑策略的波动性。

一旦策略通过回测并被认为是基本没有偏差,还有了好的夏普率和最低限度的回撤率,是时候建立一个执行系统了。

 

执行系统

执行系统是指将一系列由策略生成的交易发送给经纪去执行的系统。尽管实际上交易生成可以是半自动或全自动的,执行机制会是全手动、手动的(如“点击一次”)或全自动的。对于低频交易策略,手动和半手动技术是非常常见的。对于高频交易策略,必须搭建一个全自动的执行机制,(由于策略和技术的相互依赖),该机制通常与交易生成器紧密耦合。

搭建执行系统时最优先考虑的是与经纪业务的对接,最小化交易成本(包括佣金、时延和差价)以及实时系统和回测系统性能之间的差异。

与经纪业务的对接实现方式有很多,可以和直接打给你的交易员,或是编写一个全自动化的高性能程序编程接口(API)。理想情况下是希望尽可能地自动化执行交易操作。能让你有时间关注于进一步的研究,并且允许你同时运行多个策略,甚至更高频的策略(实际上如果没有自动执行,高频交易基本上是不可能实现的)。上述常用的回测软件,如MATLAB、Excel和Tradestation,使用较低频率和较简单的策略时表现尚可。然而,如果要执行高频交易策略的话,必须要用C++等高性能语言编写搭建一个自用执行系统。说个题外话,在我以前工作的基金机构中,我们有个10分钟的“交易循环”,每10分钟下载一次新的市场数据,然后在同一时间段内基于该信息进行交易,使用的是优化后的Python脚本。若是分钟级或秒级的数据,我相信C语言或C++会更理想。

在更大的基金机构中,优化执行往往不是量化交易员的职责。然而在小公司或是高频交易型公司,交易员就是执行者,因此需要更广泛的技能组合。请记住,如果你想在基金机构工作,你的编程技术和你的统计学和计量经济学知识同样重要,甚至更重要。

另外一个在执行层面需关注的重要问题是如何最小化交易成本。交易成本通常由三个部分组成,佣金(或纳税),由经纪机构、交易所和证监会(或其他类似的政府监管机构)规定收取的费用;时延,即打算提交订单的时间和实际提交订单的时间差;差价,即交易证券买卖价格的差别。请注意,差价不是恒定的,而是取决于当前市场上的流动性(如买卖订单是否可用)。

交易成本会区分开拥有良好夏普率的可盈利策略和拥有较差夏普率的不可盈利策略。使用回测较难准确预测出交易成本。根据策略的频率,需获得历史的交易数据,其中包括买卖价格的勾选数据。基于这些原因,大型基金机构的整个量化团队都会致力于优化执行情况。

考虑这样的场景:某基金机构需要抛售大量交易(这样做的原因有很多)。抛售如此大的份额到市场上,会迅速地压低价格,从而得不到最佳执行。因此将订单慢慢流入市场的算法是存在的,尽管这样做会导致基金机构时延的风险。除此之外,还有一些针对这些必然性并利用其效率低下的其他策略。这就属于基金结构套利的范畴。

行系统最后一个主要问题是关于策略性能和回测性能的差异的。产生差异的原因有很多。我们在考虑回测时,已经深入讨论过前瞻性偏差和优化偏差的问题了。然而,有些策略在部署之前并不能很好地测试出这些偏差。这主要发生在高频交易中。在执行系统和交易策略本身都可能存在漏洞,这些漏洞并不会在回测时出现,但却会出现在实时交易中。在策略实施后,市场可能会出现制度变化。新的监管环境、不断变化的投资者情绪和宏观经济现象都可能导致市场行为的变化,从而改变你策略的盈利能力。

 

风险管理

量化交易的最后一块拼图是风险管理流程。“风险”包括了之前讨论的各种偏差。还包括了技术风险,比如交易所的突然故障。还包括了经纪风险,比如经纪公司破产(这并非不可能,鉴于最近对曼氏金融这类情况的恐慌情绪)。简而言之,风险涵盖所有可能干涉交易实施的因素,来源可能有很多。很多作者用了整本书去讲述量化策略的风险管理,所以在这我不会展开讲述所有可能的风险来源。

风险管理还包括了所谓的最优资本配置,这是投资组合理论的分支。通过这种方式,资本被分配到一系列不同的策略以及策略中的交易上。这是个复杂的领域,依赖于一些高深的数学。与最优资本配置和策略杠杆相关的行业标准称为凯利公式。因为这是一篇介绍性文章,我不会深入讲述其计算方法。凯利公式对回报的统计性质作出了一些假设,在金融市场上未必成立,因此交易员在对其实施上通常持保守态度。

风险管理的另一关键组成部分是管理个人心理状况。在交易过程中可能会出现有许多的认知偏差。虽然在算法交易中,大家公认这不算是大问题,前提是让策略独自完成决策。一个常见的认知偏差是损失厌恶,即在处于损失状态,由于损失的痛苦,人们通常不愿进行斩仓处理。同样,还会发生由于害怕损失已经获得的足够多的利润,从而提前取出利润。另外一个常见的认知偏差是近期偏差。当交易员着眼于近期事件而非长远时,这种认知偏差就会出现。当然还有另外一对经典的情绪偏差——恐惧和贪婪。这通常会导致杠杆过低或过高,从而导致崩盘(例如账户权益趋于零或更糟)或减少收益。

 

总结

可以看出,量化交易是一个极其复杂但很有趣的量化金融领域。在这篇文章中,我只涉及到其皮毛,但篇幅已经很长了。有很多我只提了一两句的内容,都有很多对应的书籍和论文针对该内容详细展开。因此在申请量化交易岗位前,必须进行大量的基础性研究工作。至少你要在统计学和计量经济学方面有广泛的背景,并利用如MATLAB、Python或R等编程语言进行实现的大量实操经验。在更高频的更复杂的策略中,所需技术可能还包括Linux内核修改,C语言/C++,其它语言和优化网络延迟等。

如果你有兴趣尝试搭建自己的算法交易策略,我的首要提议是善于编程。我个人偏好是尽可能多地去搭建自己的数据采集器,策略回测和执行系统。如果你的资金要冒险投资,那么对系统进行过全面测试并了解其缺陷和特定问题后,你晚上睡觉才能安眠吧?将此外包给供应商,虽然短期内可以节省时间,但长期来看代价是昂贵的。

相关报道:

https://www.quantstart.com/articles/Beginners-Guide-to-Quantitative-Trading/

点「在看」的人都变好看了哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46471.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己做量化交易软件(38)小白量化实战11--双向高频马丁交易策略

自己做量化交易软件(38)小白量化实战11–双向高频马丁交易策略 上一篇文章我们介绍了做多的马丁策略,见文章<自己做量化交易软件(37)小白量化实战10–操作方法与MetaTrader5高频策略的进化>. 这一篇介绍双向高频马丁交易策略,也就是说能够多空两个方向的开单策略. 小白量…

自己做量化交易软件(22)小白量化之MetaTrader5自动交易1

自己做量化交易软件(22)小白量化之MetaTrader5自动交易1 小白量化框架源代码是《零基础搭建量化投资系统――以Python为工具》的随书演示代码. 作者其中之一杨老师利用小白量化系统参加外汇期货实战比赛,取得了8天获利860%的战绩. 我看了这个战绩,我从心里羡慕、嫉妒、外加眼…

微信客服后台SDK

微信客服后台SDK功能介绍 微信客服回调自动获取客户在微信发送给客服的消息并入库发送客服消息自动发动客服欢迎语获取客户基础信息并入库获取客服帐号列表添加客服帐号修改客服帐号删除客服帐号获取客服帐号链接上传临时素材&#xff08;需等待ivx后台文件接口支持file对象&a…

微信开发之客服消息的使用

之前的消息发送与接收都是用户给微信发一条&#xff0c;之后微信回复给用户&#xff0c;也就是API上面所说的被动回复消息&#xff0c;那么微信是否支持主动给关注用户发消息吗&#xff0c;答案是肯定的&#xff0c;但是却有一些限制。看下微信开发文档上怎么说就明白了&#x…

最新30万字312道Java经典面试题52道场景题总结(附答案PDF)

最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升自己最快的手段就是背面试题&#xff1b;花了3个月的时间将市面上所有的面试题整理总结成了一份30万字的300道Java高频面…

CAD必练图形

这次我们用CAD梦想画图软件绘制一个CAD新手必练图形&#xff0c;它用到的有CAD矩形、直线、圆弧、等分等命令结合起来完成绘制的&#xff0c;可以跟着一起操作一下。 目标图形 操作步骤 1.使用CAD矩形命令&#xff08;快捷键&#xff1a;REC&#xff09;绘制一个长80宽30的矩形…

将CAD图纸中的线型和文字样式合并的方法技巧(一)

在使用浩辰CAD软件绘制CAD图纸的过程中&#xff0c;很多CAD制图初学入门者不太了解如何把CAD图纸中的线型和文字样式合并&#xff0c;虽然图层中提供了图层合并功能&#xff0c;但是线型和文字样式却并没有&#xff0c;其实如果想实现这个功能&#xff0c;可以通过CAD的标准检查…

图片转cad用什么软件?转换有技巧

在工程和建筑行业中&#xff0c;CAD已经成为了必不可少的工具&#xff0c;它可以提高设计效率并减少错误。但是&#xff0c;有时候我们需要将手绘图或者图片转换为CAD文件&#xff0c;因为这些图像可能是原始设计的基础&#xff0c;或者是为了方便修改和编辑而需要转换的。在这…

cad怎样编辑标注文字?分享一个方法

我们经常需要在CAD上进行编辑标注文字&#xff0c;CAD编辑软件可以帮助咱们准确地编辑CAD文件&#xff0c;让我们标注CAD文件中的图形元素。包括多种类型的图形元素&#xff0c;如线条、圆弧、文字等&#xff0c;并且可以自定义标注的文字内容、字体、大小等。此外&#xff0c;…

用手机怎么修改CAD图纸中的文字?

手机中收到其他人发送过来的一张CAD图纸&#xff0c;想要对图纸中的部分文字进行修改&#xff0c;手机CAD看图软件可以调整图纸中的文字吗&#xff1f;具体该如何进行操作呢&#xff1f;接下来的CAD教程就让小编来给大家分享一下手机CAD看图软件——浩辰CAD看图王中修改图纸上文…

如何使用CAD看图软件来修改CAD图纸中的文字?

手机中收到其他人发送过来的一张CAD图纸&#xff0c;想要对图纸中的部分文字进行修改&#xff0c;手机CAD看图软件可以调整图纸中的文字吗&#xff1f;具体该如何进行操作呢&#xff1f;接下来的CAD教程就让小编来给大家分享一下手机CAD看图软件——浩辰CAD看图王中修改图纸上文…

使用Teigha(OpenDesign)操作CAD的dwg文件

说起来&#xff0c;其实我自己也感觉这个要求挺奇怪的&#xff0c;Java操作CAD&#xff0c;好吧&#xff0c;目前比较完善的类库有一个是jdwglib&#xff0c;但是我没找到&#xff0c;而且公司刚好有OpenDesign的账号&#xff0c;因此&#xff0c;需要使用Teigha来进行操作&…

免费的绘图和图表工具Tldraw

什么是 Tldraw &#xff1f; Tldraw 是一款免费的绘图和图表工具&#xff0c;具有手绘风格和智能箭头、捕捉和便签等便捷功能。并可以导出 svg 等图片格式&#xff0c;可以作为组件嵌入到其他应用中。比如号称下一代笔记的 AFFiNE 就用了 Tldraw 来完成白板协同功能。 官方有演…

产品经理面试指南,常见面试题及回答思路

产品经理面试指南&#xff0c;常见面试题及回答思路 一、项目 自我介绍&#xff0c;这个不用说是所有面试都要的 2-3分钟之内介绍完&#xff0c;不要过于冗余或者简短&#xff0c;不要把重点放在个人生活&#xff0c;要突出和工作有关的项目、做事能力、性格等等&#xff0c;当…

产品经理面试,说一下你是怎么做产品规划的?

阅读本文大概需要1分12秒 “你做为产品经理或产品线负责人&#xff0c; 是如何规划未来 3-6 个月的产品发展计划&#xff1f;” 有的说是产品总监规划&#xff0c;自己不参与&#xff1b;&#xff08;那麻烦问问你总监要不要过来&#xff09; 有的说看业务部或公司战略规划&…

如何回答「为什么想做产品经理」【面试核心问题3】

当问出“为什么想做产品经理/为什么转行做产品经理”时&#xff0c;面试官的动机&#xff0c;是想知道&#xff1a;我为什么要录用你做产品经理 今日问题&#xff1a;为什么想做产品经理 面试时很多问题是相通的&#xff1a; 为什么想做产品经理为什么你适合做产品经理你做产品…

常见B端产品经理面试问题及答案(一)

↑↑↑我会一直给你分享B端产品经理面试问题及答案&#xff0c;请点击上方关注&#xff01; 你好&#xff0c;我是B端产品经理面试官Aadi&#xff0c;任职某大厂&#xff0c;11年面试官&#xff0c;10年产品经理&#xff0c; 我是站在面试官角度&#xff0c;只告诉你拿来即用的…

产品经理笔试面试准备

产品经理聊面试&#xff1a;http://m.ximalaya.com/album/18917184 1、解释以下名词&#xff1a; 蝴蝶效应&#xff1a;初始条件十分微小的变化&#xff0c;结果不断放大&#xff0c;对未来状态可能造成巨大的差异。破窗效应&#xff1a;如果一个窗子破了&#xff0c;但不及时…

Alpha-GO打败⼈类的秘籍- 强化学习(Reinforcement Learning)

为了深⼊理解强化学习&#xff08;Reinforcement Learning&#xff0c;简称RL&#xff09;这⼀核⼼概念&#xff0c;我们从⼀个⽇常游戏的例⼦出发。在“贪吃蛇”这个经典游戏中&#xff0c;玩家需要掌控⼀条蛇&#xff0c;引导它吞吃屏幕上出现的各种果实。每次成功捕获果实&a…

关于云计算,我们问了ChatGPT 10个问题

ChatGPT懂云计算吗&#xff1f; 前些天&#xff0c;我们问了ChatGPT&#xff08;非Plus收费版&#xff09;一些问题。 1. 什么是云计算&#xff1f; 2. 云计算行业的护城河是什么&#xff1f; 3. 什么是云原生&#xff1f; 4. 微软Azure与亚马逊AWS的主要区别是什么&#xff1f…