VeighNa量化社区
你的开源社区量化交易平台
KeKe's Avatar
Member
离线
187 帖子
声望: 51

第二幅图:vnpy库-目录文件

 

总图

enter image description here

 

子图

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

上面框架图基于 v1.7.1 版本

第一幅图:CTA策略模块

总图

enter image description here

子图

enter image description here

enter image description here


enter image description here


enter image description here


enter image description here

作者:码农的量化之路 ;文章来源:维恩的派论坛
 
最近参加了一个知乎收费讲座,将CTA策略的创新,尤其提到了策略开发的技术路线,包括机器学习在策略开放中使用的一些情况,收获很大,总结出来方便自己未来查阅,也为大家提供一些思路。另外,本文只是我的总结, 建议感兴趣的还是听知乎博主的课。

备注:CTA时量化策略的一个大类,主要是通过预测趋势来赚钱,跟其相对应的大类还有统计套利策略和高频策略。
知乎博主介绍:博主付超,是国内一家私募公司CTA策略部门的负责人,从事CTA策略开发6年。由于策略的私密性,无法讲解细节,只能提供方向。

 
 

传统CTA的特点


  1. β偏好性,主要利用趋势的肥尾特点,通过追随趋势获取利润。喜欢波动较大或者急涨急跌行情
  2. 多策略多周期
  3. 国内传统的CTA策略夏普一般在2以内,国外因为市场更成熟,一般在1.5以内
  4. 以长周期为主(作者认为长周期一般指的是平均持仓周期是几天以上的),原因时长周期趋势肥尾的特点才比较明显。通过平时亏小钱,赚大钱

我自己的思考:
包括我在内,业余的量化交易员常用的以技术指标为主的策略开发,应该就属于这种。但是如果将技术指标最为X,未来收益作为Y,放到机器学习的模型中进行训练,得到的一个新的指标或者说因子,则属于后面说的新型CTA策略。

 
 

新型CTA的特点


新型的CTA是传统CTA策略的包含关系,是对传统CTA策略的一个创新,比如利用高频策略的盘口预测和统计套利的多空对冲策略等。

  1. 除了传统CTA策略的β策略外,还包含了α策略。(β策略的本质时利用投资者回避风险的特点,亏欠的人更容易回避风险或者犯错。而α策略本质上是一种预测,主要是概率统计来发现交易机会。无论时β策略还是α策略,在市场波动率较大的情况下,一般绩效也越高,因为波动大,大家犯错的可能业变大。)
  2. 夏普一般在2以上,博主公司的策略基本都在3以上
  3. 短中长期的策略都可以做,尤其时短周期策略,因为预测周期越短,相对数据量就越大,统计学习的算法预测精度就越高(α策略)

我自己的思考:
新型CTA策略最大的特点是加入了机器学习进行预测,比如利用机器学习得到的有效信号或者说因子。即使使用现成的技术指标,也应该纳入到统计学习或者机器学习的框架来寻找映射函数

 
 

CTA的未来和创新


  1. 横向的资源整合。把不同的策略大类的特点结合起来,使用高频的逻辑处理CTA和统计套利的下单(作者指的是可以利用机器学习进行下单预测,减少滑点)。CTA可以参考统计套利的套利,做一些多空对冲。
  2. 纵向的资源整合。对一个资产管理公司来说,已经包括策略研发,还有募资和IT的支持。IT支持作者举了一个例子,就是资金量较大后,需要利用高频下单的逻辑减少滑点,需要有IT的支持
  3. 流水线作业。例如策略研发,可以封装成单独做信号(因子)、单独做策略组合的、单独做下单的几个部门,每个部门都可以做到各自的极致。4.数据为王。数据指的是2个方面,第一个是数据量越大越好,数据量越大,统计就越健壮。第二是预测周期越短越好,同样数据量的情况下,预测周期越短,样本数量就越大。
  4. 机器学习。机器学习在CTA中的应用是由浅入深的过程。一谈到机器学习,大家都马上会想到深度学习,但是作者建议大家先从简单到复杂,不要一上来就深度学习。

我自己的思考:
作者说的未来和创新,结合上下文,其实时他自己已经在做的。对我来说最有价值的是,明确了后续的技术发展方向。还是要走统计学习的方向。当然,机器学习只是工具,还是需要人能够发现潜在的规律,然后利用机器学习,得到一个可能的盈利因子。

 
 

机器学习在量化交易领域的4个特点


  1. 从线性模型到非线性模型(前一项相对于后一项更复杂,但是可能会有更好的预测效果,下同)线性模型相对比较简单,就是对一些因子进行多元线性回归等。)
  2. 从无监督学习到有监督学习(有监督模型相对于无监督模型而言,需要挑选样本进行训练,而挑选样本需要本身对市场比较了解,有很大的经验性。作者认为初学者最好从无监督学习开始。)
  3. 从分类的学习到回归的学习(分类实际上是最极端的回归,将回归分成2类或者3类,比如-1(预测正确)/1(预测错误)。为什么说先做分类再做回归,主要也是从易到难的一个过程。为什么要用回归,主要是回归做出来的策略效果更好)
  4. 从决策树模型到神经网络模型(偏深度学习)(作者没有细说。只是说神经网络模型的坑特别多)

我自己的思考:
到最后,量化交易实际就是拼技术和智力,有同样交易经验的,是否精通统计学习或机器学习,对策略的研发能力会由天壤之别。

------------------------------------------------------------------------------分割线--------------------------------------------------------------------
问答精选
 
问题1:量化策略开发的常识是啥
 
回答:交易任何时候都是一种预测,你在T时刻可以利用T时刻之前的所有数据来预测T+N期的收益率,而T+N期的收益可以看成Y,T时刻之前的所有量价数据都可以看成X,X可以采用各种量价的组合,世面上能够找到的技术指标,就是最简单的因子,可以作为X,然后通过统计学习/机器学习的思路找到一种X到Y的比较好的映射关系

海龟本地化实现困境


海龟策略如此出名,但当前国内还没有发现能够完全复制海龟策略的(至少从网络上公开的资料来看)。普遍存在的问题如下:

  • 海龟策略运行的是日线级别数据,但还是要求K线内成交,即前一日确定第二天的入场、出场、止损位置,当价格到达指定位置时,立即发出交易委托;而不是基于股票多因子框架下以收盘价成交。
  • 原版策略的是期货指数的投资组合数据;但是国内回测要么在股票上跑,要么是基金上跑,并且都只是针对单标的回测。
  • 在期货上运行策略意味着既能做多也能做空;但是对于股票品种,做空的难度很大,即融券难。其难度表现在资金门槛高,能融的券商少,融券需要付出高昂的利息等等。
  • 原版策略入场信号和止盈是短周期版本和长周期版本结合的;国内状况是由于考虑到短周期版本实现困难(难点在于实现过滤条件:若上一次突破是盈利性突破,则当前入场信号无效),故清一色是长周期版本

由于出现上面的问题,在回测效果图就能看出明显的区别。原版策略尽管有比较大的回撤,但是整体上资金曲线是向上的,但是国内复制的海龟策略回测结果显得有点差强人意,要么是回撤大,夏普低;要么是曲线显得非常奇怪。回测效果如图所示。

 
enter image description here
enter image description here
enter image description here
enter image description here
enter image description here

 
从本质上看,海龟策略是一个高风险高收益的,基于投资组合的中低频趋势跟踪策略。故不是非常复杂,但是本地化复制完成度这么低,究其原因是诚意不足罢了:

  • 散户资金量不足,编程水平不高,没有能力实现;
  • 私募机构则不愿意承担这么大的回撤风险,怕吓跑客户,故不愿意研究;
  • 自营机构或许已经通过海龟策略赚大钱,但不愿意公布。

首先呢,还是那副图,现在介绍剩下的3个关键要素

enter image description here

5.逐步建仓

在突破点建立1个单位的头寸,然后按0.5*ATR的价格间隔一步步扩大头寸。(1/2的间隔以上一份订单的实际成交价格为基础的)
这个过程将继续下去,直到头寸规模达到上限,即单个合约最大4个单位头寸。

该书举了纽约商品交易所(COMEX)黄金期货指数的例子作为说明
enter image description here

6.止损

止损曾经在入场信号中简单提及,即价格反方向偏离2*ATR幅度进行移动止损。但是结合刚刚介绍到的逐步加仓,若在后续中按照0.5N的价格间隔补充头寸单位,则之前头寸单位的止损点将相应调整0.5*ATR。

该书通过原油的例子来说明:
enter image description here

7.止盈

对应入场信号中的短周期版本和长周期版本,止盈策略也分为两个版本

  • 短周期版本:采用10日唐奇安通道突破退出法则,即多头价格跌破10日最低点离场,空头价格超过10日最高点离场。
  • 长周期版本:采用20日唐奇安通道突破退出法则,即多头价格跌破20日最低点离场,空头价格超过10日最高点离场。

策略回测效果

《海龟交易法则》并没有展示完整版海龟策略的历史回测效果图,仅仅提供了简化版(作者称之为"唐奇安趋势系统”)。费思通过交易模拟软件Trading Blox Builder对其进行回测,回测区间设置1996年1月到2006年6月,下面展示了回测结果相关指标如图和资金曲线。

从简化版可以推测海龟策略整体上是盈利的,尽管中途有比较大的资金回撤。其夏普比率接近1,百分比最大回撤和年化收益都比较高;胜率低,靠少数大行情的盈利可以弥补大部分假突破所造成的的亏损,表现出典型趋势跟踪策略的特点。

enter image description here
enter image description here

海龟策略7大要素

原版海龟策略出现在《海龟交易法则》最后章节的附录中,有兴趣的朋友可以详细看看,在这里我们概况一下海龟策略的7大要素,如图所示。
enter image description here

(由于内容有点多,故拆分成上下两部分,这里只介绍到第四大要素,即入场信号)

1.品种选择

书中明确表示海龟策略选择标准是流动性高的期货品种,另外两个隐含的条件是具有历史大波动并且无人为干预的品种(例子:肉类交易厅场内交易员腐败问题)。

在国内,其对应的就是四大期货交易所成交量巨大的品种,并且可以剔除股指期货(因为政府干预)。

2.头寸规模

2.1 头寸规模含义

头寸规模是海龟交易系统最重要的部分之一,其优势是根据一个市场的绝对波动幅度来调整头寸的规模,等于将头寸的绝对波动幅度标准化。

这意味着,一个特定头寸在某一天的向上或向下变动幅度与其他市场的头寸基本相同,无论这个特定市场的波动性是大还是小。

举个例子,若一个市场的合约价值波动性较强,那么这个市场中的合约持仓就少一些,反之,若一个市场的波动性较弱,这个市场中的头寸就可以大一些。

总之,市场的波动性与头寸的规模是相互抵消的。波动性标准化处理意味着不同交易在盈亏概率上是相同的:它们都有同样的机会赚一美元或赔一美元。这便提高了多重市场分散性的效果。

2.2 头寸规模计算

enter image description here
公式中有2点需要特别说明一下,一个是"N",另一个是"每一点数所代表的美元”。

  • N:其定义是真实波动幅度(TR)的20日指数移动平均值,即20日的ATR(至于ATR指标的介绍和计算过程在附录A-1中展开,这里不做过多说明)。另外需要注意的是,ATR是基于期货指数得到的,这意味着在策略实现中,不管是历史回测还是以后实盘测试,都要用到期货指数。解决方法有两个:要么自己自己写脚本合成实时的指数行情数据,要么使用第三方收费的指数行情数据。(考虑开发脚本的难度和运维数据的成本,显然购买第三方数据性价比高的)
  • 每一点数所代表的美元:每一手合约规模数量,以美元为计价。

2.3 举例说明

原版头寸规模单位计算例子:纽约商品期货交易所(NYMEX)民用燃料油(HO03H)在2002年12月4日,其日K线的最高价、最低价、收盘价分别是0.7420、0.7140、0.7162,ATR值是0.0141,民用燃料油的合约规模是42000加仑(1000桶),若账号资金是一百万,则得出的头寸规模是16.88,四舍五入得头寸规模为17手合约,如图
enter image description here

这里可以看出美国期货合约,其合约规模非常大,但是价格低(即ATR值小),这与国内期货合约是相反的。这是因为国内期货表现出其合约规模小但是价格比较高的特点。

下面以螺纹钢合约为例:2018年12月12日,螺纹钢指数日K线的最高价、最低价、收盘价分别是3416、3356、3356,20日的ATR值是103.55,合约规模是10吨,故其头寸规模 = (1%乘以1,000,000) /(103.55乘以10)=9.66,四舍五入得10手合约。

从上面两个例子可以推断出,若账号资金不足,头寸规模调整失去精确性,大大降低风险分散化的效果。

3.单位头寸限制

原版海龟策略通过4个层面来限制其成交量。书中说道,这些法则可以控制交易者总体风险水平。无论是在没完没了的亏损时期还是翻天覆地的价格动荡中,这些限制都能把损失最小化。

这四个层面的限制分别如下:

  • 单个市场:头寸上限是4个
  • 高度关联的多个市场:单个方向头寸单位不超过6个
  • 松散关联的多个市场:某一个方向上的头寸单位不超过10个
  • 单个方向:最多12个

这方面的总结可能是经验之谈,实现起来比较困难,因为高度关联市场和松散关联市场判断起来都非常主观,并无统一标准。故只能简单的实现单个市场和单个方向的头寸限制。

4.入场信号

原版海龟策略提供2个版本的入场信号,用的都是唐奇安通道突破策略(唐奇安通道突破在附录A-2中展开,这里不做过多说明。),其区别在于时间周期不同,下面分别介绍这两个版本:

4.1短周期版本

  • 若期货指数价格突破20日最高价/最低价,买入/卖出1个头寸单位。
  • 过滤条件是上一次突破是盈利性突破,则当前入市信号无效(其保障性突破点为在55日通道入市)。
  • 若突破日后价格在反方向移动幅度达 2*ATR,止损离场。
  • 关于过滤条件,该书作者认为若上一次突破点盈利,那么新突破点可能离当前价远,因为有可能是个55日突破点,若上一次突破点亏损,那么新突破点将更加接近当前价格。

4.2 长周期版本

  • 若价格突破55日最高价/最低价,买入/卖出1个头寸单位。
  • 对于长周期版本来说,所有突破都被视为有效信号,无论上一次突破是亏损性还是盈利性的。

海龟们可以自由决定如何在这两个版本之间分配资金,有的海龟只用短周期版本,有的则只用长周期版本,也有的各投50%。

--------------------------------------------------------------------分割线---------------------------------------------------------------------------------

附录A-1 ATR指标

1.1 ATR指标原理

平均真实波动范围(Average true range),简称ATR指标,是由韦尔德(J.Welles Wilder)发明的,ATR指标主要是用来衡量市场波动的强烈度,即为了显示市场变化率的指标。注意,这一指标主要用来衡量价格的波动,并不能直接反映价格走向及其趋势稳定性。

这一指标对于长期持续边幅移动的时段是非常典型的,这一情况通常发生在市场的顶部,或者是在价格巩固期间。根据这个指标来进行预测的原则可以表达为:该指标价值越高,趋势改变的可能性就越高;该指标的价值越低,趋势的移动性就越弱。

当ATR线上升时,意味着资产的波动性在增加。当ATR线下降时,意味着资产的波动性在减少。ATR 不会显示资产移动的方向。

1.2 ATR指标计算

首先应计算出TR(即当天的真实波幅),如图1-1所示,#2,#3为市场出现跳空高开和跳空低开的情况。TR在当日最高价与最低价,当日最高价与昨日最收盘价,当日最低价与昨日收盘价这3种情况中取最大值。

enter image description here
图1-1 计算ATR所考虑的3种情况

由于一天的TR缺乏效率以及代表性,韦尔德用ATR来更好的衡量市场的波动性;一般而言,海龟测试的数据周期是20以及55,这意味著如果投资者在日线图看ATR,20 = 20日。TR的计算公式如图1-2所示。
enter image description here
图1-2 TR计算公式

最后,20日的ATR = (前19日的TR + 当日的TR)/ 20


附录A-2 唐奇安通道

唐奇安通道也被称为价格通道,扬名于70年代,美国有个公司对当时最流行的机械交易系统进行了模拟测试和比较研究,其研究结果表明,在所有测试对象中唐奇安通道规则最为成功。1983年,他被推举为首届“最佳获利奖”得主,并将此奖项改为唐奇安奖。

唐奇安通道通道突破规则非常简单:当价格突破前X天最高价时,做多;价格突破前X天最最低价时,做空。X值默认为20,市场上流行对20这个值解释的佚闻是:唐奇安在开发唐奇安通道的期间,碰巧阅读到整形外科医生马尔兹博士在1960年所作的“心理控制论”(这本书在1989年被重新发现)。马尔兹博士称在整形外科手术过程中,患者最少需要21日来看到自己的新的容颜。而很多观察到的现象都显示了其最起码需要21日来使得新事物代替旧事物。这一事实震惊了唐奇安,21个自然日就等于15个交易日!当绝大多数交易者都在认为趋势可能已经变化时(他们认为看到了市场的新颜),主要趋势却已做好了继续运行的准备。

(本系列主要在于探讨海龟策略在国内市场的可行性,目标群体是有一定基础的量化新手。)
 

海龟策略的故事


海龟策略是一个基于日线级别期货数据的中低频趋势跟踪策略。其高盈利性名扬海外,同时也创造出非常多赚钱的案例。

其实海龟策略背后还隐藏一个有趣的故事,而且与赌局有关,你信么?
enter image description here

1983年两位交易大师理查德.丹尼斯与威廉.埃克哈特之间的一次赌约,赌约的内容是伟大的期货交易者能否通过后天的培养产生。由于这一训练方法就好似新加坡人养海龟一样,于是丹尼斯和埃克哈特给这些学徒取名“海龟”,他们的试验也因此而得名。

当时报名的有1000多人,最终有13个人参加了为期两周的培训,然后在实战中不断强化其策略执行力。"海龟计划"终结于1987年,之后海龟们都走上了各自的交易或者非交易之路。

那些仍然做交易的海龟们,其交易方式几乎都是清一色的系统化的,长线的趋势追随策略。最著名的例子是《海龟交易发展》作者柯蒂斯.费思,年仅19岁就加入了海龟计划,在四年内狂赚3150万美元。

由此可见海龟策略还是挺有意思的!
 
 

海龟策略值得学习的地方


海龟策略严格说是一个进阶版的,适用于投资组合的CTA策略,其包含:入场信号,逐步加仓,单位头寸管理,上一笔盈利过滤,止盈止损等方面等内容,都挺有参考学习的价值。毕竟海龟策略与传统 CTA 策略还是有一些区别:

a.传统 CTA 策略:

  • 基于单标的合约跑的(虽然会有相同策略在多个品种上跑的情况,但每个策略实例的参数会有些不同),
  • 买卖手数都是固定的
  • 每个策略都有其对应的起始资金,其投资组合的盈亏曲线也仅仅是每个品种盈亏线的简单累加。
  • 从投资组合的角度看,是一个从局部到整体的过程。

 
b.海龟策略:

  • 基于多标的合约上跑的
  • 根据总体资金规模以及品种的绝对波动幅度,分配到每个品种的手数是不同的
  • 独特的逐步加仓和单位头寸限制
  • 从投资组合的角度看,是一个从整体到局部的过程。

由于海龟策略独特的投资视角,它必然会有一些出彩的地方等待挖掘。我们应该做的就是:

  1. 先复制好完整的海龟策略
  2. 验证其在中国市场的有效性
  3. 逐步解刨策略关键要素
  4. 单独对关键要素进行删除、替换、优化参数等操作
  5. 提取其精华部分放在传统CTA策略上验证

 
 

海龟策略的局限性


海龟交易策略有许多值得学习的地方,但也有其时代的局限性,需要理性看待。

因此不要过分神化策略创始人理查德.丹尼斯,尽管他曾经风光一时,身家从400美元做到2亿美元。但是经历了1987年惨败后,旗下基金亏损50%,他个人资产亏损超过80%。

最后,他的基金在1988年4月被迫解散,他自己的资产,也从全盛时期的2亿美元大幅缩水,剩余1000多万美元。最后毅然宣布脱离投机市场,从此金盆洗手,专心从政。(但是他的徒弟们却通过同样的海龟策略大赚特赚)

So,why???

究其原因,与人工下单的执行力有关。

海龟们有丹尼斯作精神导师,当他们发生亏损的时候,丹尼斯会出来给他们撑腰,有一段时间,市场有一段很长时间的震荡行情,海龟们的账户上都发生了严重的亏损,这时丹尼斯出场了,请他们到拉斯维加斯赌场狂欢,然后给他们增加资金,告诉他们“亏钱没关系,亏钱是赢钱的成本”、“往往一段时间拉锯式的整理行情之后会有疯狂的大行情”。

事实正如他所预料的,撑过了困难时期,海龟们的收益直线上升,平均收益率达100%以上。

但是呢。。。

作为师父的丹尼斯却没有自己的"精神导师",因此可能溃败于对自己所定规则的反叛。这大概也是为何费思在《海龟交易法则》中一而再再而三地强调交易者贯彻交易系统的执行能力。

随着时代的发展,当初困扰海龟们最大的难题在今天就可以轻松的解决,答案是程序化交易:

  1. 只要搭建上程序化交易系统,
  2. 连接好交易用的API接口,
  3. 一旦接收到新行情,模型就会马上进行计算,
  4. 产生交易信号后也能通过算法下单。

(另一个表明“海归们”过时的例子:他们并不用停止单而是限价单(不管是入场还是止损离场),害怕让经纪人设置止损指令而泄露策略的头寸,故打电话对不同经纪人报不同的价格。但是在今天,这方面的缺陷也能被程序化交易克服了。)
 
 

总结


纵观历史,丹尼斯以及他的海龟们并不拔尖。因为在同时期,即80-90年代,顶尖人物是这样的:

  • 爱德华·索普旗下普林斯顿-新港公司通过可转债套利已经赚得盆满钵满;
  • 盈透证券创始人托马斯·彼得菲已经可以通过程序化交易(期权做市商)来收割其他庄家;
  • 詹姆斯·西蒙斯成立文艺复兴科技公司,在偏高频领域开始了不败传说。

海龟策略在美国这么出名必有其精彩的地方,我们要做的就是取其精华,去其糟粕

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】