EA 非常道

2017.12.15,道汇(DaoFx)受邀参加了在深圳举办的国际金融 B2B 博览会暨金融科技峰会。这是道汇成立以来第二次亮相 IFINEXPO,并有幸再次登上 EA 专场的舞台,本着学习交流的态度与大家分享经验。应广大交易者的要求,我们将当天的演讲稿逐页批注公开出来,希望能对更多人有所帮助。

universal-eternal-tao-of-ea-001

道汇此次临时受邀演讲,时间仓促,来不及准备一个贯穿性的主题,只好围绕着 EA 来一场闲谈,题为《EA 非常道》。

universal-eternal-tao-of-ea-002

universal-eternal-tao-of-ea-003

当前零售外汇交易的主流开发环境有 MetaTrader 4/5、cTrader、JForex 等,道汇将参照这些环境的特点,通过 FIX API 构建自己的交易系统、优化系统、阶梯型分账系统、多账户管理系统等。

universal-eternal-tao-of-ea-004

「道汇」二字取自我们的口号:道以明哲,汇成于众。

我们将形而上的哲学思想,通过现代的科学方法,设计成严谨的策略系统,并量化为可执行的代码,使程序成为「道」的载体,并传达、汇集于大众,共同分享「道」所创造的价值。

universal-eternal-tao-of-ea-006

这是道汇的终极目标。我们现阶段已经在瑞士的上市公司瑞讯银行注册了资产管理人资质,这个资质分五个等级,我们拿到的是最高等级:Prime Plus。

universal-eternal-tao-of-ea-007

EA 的使用群体基于一个世界观:不论基本面如何错综复杂、变幻无常,价格都是所有基本面博弈后的最终产物。根据佛学的说法,任何一种事物都有三个参数——体、相、用。例如玻璃杯:玻璃为「本体」,杯型为「相状」,装水为「作用」。

对于市场来说:价格是体,基本面和技术面是相,交易行为是用。

如果把价格这个本体比喻成手,基本面和技术面的相状就相当于手心和手背,作用于交易就相当于打架,拳头打用的是手背,掌击用的是手心,路子不同。

由于程序化是 EA 的基础标签,而代码也不知道何为基本面,因此只通过技术面对价格这个最终结果进行分析。这样也能更好的执行量化投资的实质:

universal-eternal-tao-of-ea-008

此定义来自于一家管理着 1600 亿美金、排名全球前三的量化对冲基金。

universal-eternal-tao-of-ea-009

我们从一个很少有人提到的角度去讨论这件事。

universal-eternal-tao-of-ea-010

先来看一种 EA:网格类。市面上的 EA 绝大多数都是这种,所有的马丁格尔变种都是网格法的一个子集。

universal-eternal-tao-of-ea-011

网格法万变不离其宗由三个元素构成:「网格间距」、「拉网数量」、「埋单仓位」,由三元素的组合加之无级调整每一元素的参数,构成了一切网格法。

以实现这样一种模型:先把浮盈部分平仓盈利,另外一部分浮亏,然后靠「三元素」的搭配技巧来解套浮亏部分(或局部小止损),最后实现全局的盈利。

因此其盈利模式也无外乎全胜率或高盈亏比两种。

universal-eternal-tao-of-ea-012

一个我们之前做过的终极网格法。四周的图是当年的笔记,连浮动点差的影响都计算进去了,精确到极致。中间的图代表不论价格如何波动都出不了解套网。

universal-eternal-tao-of-ea-013

进而把理论上所有的波动可能性(是否到达某个价位、先到达还是后到达)细分了 22 种状态,且全部都能回归到初始状态,涵盖了一切情况。

最后通过求解一元四次方程来确定实现全局盈利的价位。上图就是一元四次方程的求根公式。

即便做到这个份儿上,依然不能盈利。原因是:

universal-eternal-tao-of-ea-014

网格法的模型可约略抽象成赌大小点,一赔一,下注 100 元,输了,再赌 200 元,赢了就赢回 100 元,输了就共赔 300 元,再赌 400 元,赢了还是只赢 100 元,再输就共赔 700 元,再赌 800 元… 理论上不可能永远输下去,只要赢一局就能扳回来。但问题是数局之后所需要下的赌注已经是天文数字,现实中已经没有钱再往里输血了。

因此这属于用一直增加且无上限的 Downside Risk 去换取永远固定的小利润的策略,理论上如果没有 Risk Limit,无限次的操作下去终会盈利,但由于 Risk Limit 永远存在,就注定了网格法是种赔钱的策略。

所以网格法的全胜率和高盈亏比前面还要加一个定语:「丧失风险管理的」。

经过了这个历程的洗礼,道汇把网格法总结成一句话:

universal-eternal-tao-of-ea-015

那大家会问:不逾越怎么赚钱呢,有办法逾越吗?

有位前辈提出过一个概念:「对市场做功」。具体是这么说的:

universal-eternal-tao-of-ea-016

好比上学时大家的课本都一样,这代表资料是对称的。但有人考的好,有人考得差,那是因为大家对课本的做功程度不同——对课本深度做功的学生掌握的信息会更多,这就是在资料对称的情况下获得信息的不对称性。

从这个角度再次审视网格法,就会发现它从来没有对市场做功,没有对市场的任何洞见,只靠资金管理技巧在资料层面转圈,没有把资料转化成信息。还拿考试打比方,网格法这个学生从没去学过课本上的任何知识,只是在考试时先选 A,对了就 OK,选错了下次再选 B,再错下次再选 C,可惜考场没有那么多机会让它来试。

说到底,任何能盈利方法的本质,都是在获胜优势大的时候下大注,获胜优势小的时候下小注或不下注,也就是趋利避害。对网格法而言,由于只有资料、没有信息,相当于对任何行情都无差别对待,那就意味着接受了交易市场天然的获胜优势——任何交易市场的天然获胜优势都小于 50%,因此从本质上注定了网格法不能盈利的命运。

接下来分享一个自认为对市场做了功的 EA 设计过程,其实就是我们道汇的系统。当然,优秀的 EA 五花八门,并不限于某种必须的模式。现在仅拿我们的系统示例来说明,需要用功到什么程度,才能构建出合格的 EA。

整体的策略架构由五个层次组成,分别是:

universal-eternal-tao-of-ea-017

任何成功的策略系统,背后一定会基于某种最核心的哲学思想。正是这看不见摸不着的东西才是 EA 真正的灵魂。

经过长期观察,我们总结了典型的亏损系统和盈利系统相呼应的特征:

universal-eternal-tao-of-ea-018

universal-eternal-tao-of-ea-019

基于亏损和盈利的辩证关系,具象化为交易理念:

universal-eternal-tao-of-ea-020

做交易就像顺着水流开船,把注意力放在怎么开的更快的人,一般都触礁沉船了,反倒是把注意力放在怎么避开礁石的人,最后能顺着水到达彼岸。业内有句名言:交易市场不缺明星,只缺寿星。

至于博弈,打个比方,下五子棋时绝大多数人的思维都是「我要先走成五个子」。但我们通常反着来:从不布局自己的棋,唯一的招数就是一门心思堵对方的棋。但完全不考虑自己的棋,不代表客观上就没有棋,往往是堵着堵着别人,自己的棋反而恰好连成一线。

原因很简单,想赢有两条路:1、直接奔着赢去,但如果别人奔的更快,别人就赢了;2、排除一切输的因素,只要不输,耗到最后总能赢。所以在智商资源相等的情况下,第 2 条路的获胜优势远高于第 1 条。

根据理念,再设计出具体的策略系统,也就是把理念细化成开仓平仓的行为组合。

universal-eternal-tao-of-ea-021

以上的三步(哲学、理念、系统),都是在对市场努力做功,换句话说,对市场做功就是:在整体获胜优势小于 50% 的市场里,寻求局部高获胜优势机会的行为

universal-eternal-tao-of-ea-022

这是我们策略系统的流程图。系统要能拆分成独立的模块,一定要避免模块之间纠缠不清,这样才方便前期挑错和后期维护。

最后,把之前的一切落实到实现方式上,也就是代码。

universal-eternal-tao-of-ea-023

这些是常见的开发环境。MetaTrader 4/5 虽然是外汇零售市场霸主,但它有自身的局限,放到一会儿单独说。以下是我们分别用 cAlgo 和 JForex 编写的等差数列示例:

universal-eternal-tao-of-ea-024

universal-eternal-tao-of-ea-025

其实我们真正想强调的是 FIX API。因为各种环境本质上都是开发出来二次封装的,都会有局限性。只有绕开软件层面,从最底层的 FIX 解决问题,才是我们想实现的最终形态。

universal-eternal-tao-of-ea-026

金融信息交换(FIX)协议规范最初是由 Robert Lamoureux 和 Chris Morstatt 在 1992 年创建的,用以实现 Fidelity Investments 和 Salomon Brothers 之间股权交易数据的电子通信。后来演变成整个行业的一套规范。

universal-eternal-tao-of-ea-027

universal-eternal-tao-of-ea-028

从右到左分别为流动性供应商、经纪商服务端、FIX 客户端,而刚才提到的各种软件所处的环节应该在更左边的图外,这就意味着交易者如果脱离第三方交易软件这个环节,直接通过 FIX API 交易,就可以无障碍的实现任何想实现的东西。

为什么我们要向脱离交易软件这个方向努力?就以最流行的 MT 4/5 为例,来说明软件层面的局限性。

universal-eternal-tao-of-ea-029b

1. 基于 tick/bar 驱动的落后架构

MetaTrader 的任何行为必须是基于 tick/bar 驱动的。拿 tick 举例,行情每波动一下,就是一个 tick,如果没产生新的 tick,程序既没有知觉也不能做任何动作,有了新的 tick 才会醒过来,且对之前未产生新 tick 时发生的事情一无所知。比如在没有 tick 波动时,有客户取款,账户资金减少,但程序是无法识别的,等有了新的 tick 时 EA 才恢复知觉,发现钱少了,但它不知道钱减少的原因,会直接默认成亏损,走亏损的处理方案,于是后续的处理状态全都乱了。

2. 在复杂策略的编写和调用方面受到了约束

同样受限于根本架构问题,MetaTrader 各种信息的自定义程度不够自由。例如开仓指令函数 OrderSend() 中除了必要信息外,可额外让用户自定义的只有 Comment 和 MagicNum 两个参数,两者的类型分别是 String 和 Int,用以识别此单的特殊性。但当开仓需要注入的自定义信息量过多时,就会使程序获取起来很不方便,只能使用较为 hack 的方式实现。

3. 简陋的穷举、排列组合优化功能

MetaTrader 的优化模块主要靠穷举和排列组合,并没有做到真正意义上的优化,很多优化结果需要用户通过眼睛来筛选,虽然也有遗传算法,但是封死在内部不可设置。还有个二维分布图,最多只能支持显示两个参数的情况,这很无语,但凡一个正经的 EA 怎么也得有几十个参数吧,每次只看两个参数,如何识别所有参数之间的关联性,进而去取舍、做到真正的优化?

4. 因自身的存在而拖慢响应速度

如果服务器在欧洲,用户在中国交易,MT4 执行速度的物理极限一来一回是 350 毫秒左右,如果 VPS 部署在欧洲本土,经我们测试能缩短到 23 毫秒,但通过 FIX API 能实现微秒级交易,做高频策略都行。可见 MetaTrader 自身这个环节大大限制了交易的执行速度。

5. 对应的流动性层级低

2017 年 3 月我们参加了复旦大学关于外汇市场和软件后台方面的课程。当时老师给了一张图——机构间外汇市场流动性层级:顶层就是各国央行,然后是花旗、高盛这样的大银行、投行,再有彭博、汤森路透等电子交易平台,一层层往下…… 那 MetaTrader 对应的流动性层级在哪个位置呢?事实上它并没有出现在这张图上,也就是连这张图的末尾都排不到。这意味着 MetaTrader 的流动性负载能力非常有限。打个比方,如果我们去小卖部买十万包方便面,商家得花很长时间去凑货,不延迟才怪呢,或者明知凑不齐干脆就直接拒单了。其实扛不住就拒单是人之常情,据流动性供应商 Invast Global 透露,花旗银行拒单率高达 47%,可见单子太大到哪都不招待见。但不论如何,行业上游的交易商要么提供纯手动的交易环境,要么开放 FIX API,用户想要什么功能自己动手丰衣足食,而不会有 MetaTrader 这种中间角色。

universal-eternal-tao-of-ea-030

但是,绕开了 MetaTrader 的弊端,同时也就失去了一个可以倚靠的成品环境。FIX 本质上只负责通信,不管其他,像优化环节、多账户管理等各功能模块需要自行实现,开发成本高,工程大,耗时长。以致于我们当前也尚未完全脱离 MetaTrader,但长远来看终有一天会跟这个老朋友说再见。

下面请大家看一个资金曲线图。

universal-eternal-tao-of-ea-031

很振奋人心是吧!

但是希望大家千万别当真,这只是一个视觉玩笑。

universal-eternal-tao-of-ea-032

这种完美曲线一看就是优化回测出来的。所以接下来我们谈一谈 EA 的优化问题。刚才已经提到 MetaTrader 的优化工具很简陋,因此这里只谈优化理念。

首先,策略在未来的真实交易中还能不能延续「视觉玩笑」那个样子,得扪心自问,不要拿漂亮的回测结果来自我麻痹。

universal-eternal-tao-of-ea-033

如何建立这种强相关性?这恐怕是一个很大的课题,这里只能挑几个代表性的方面简单谈谈。

1. 采取分段优化

从当前的时间起,把所有的样本去做全局优化,然后回测出一套万能参数来适配所有历史行情——这种行为是没有意义的。

首先,交易品种的走势规律并不会有从一而终的一致性,随着世界格局和经济形势的变化,任何品种的技术面走势每隔几年都会发生秉性的转变。一套兼容长期历史的优化结果无非只是向数据样本的妥协,对未来的交易缺乏指导意义。

另外,全局优化也无法证明历史与未来的相关性,因为「未来还没有到来」。

如果采取分段优化,则可以有效避免这两个方面的盲点。

例如优化 2011、2012 年的样本,而把 2013 年的行情当作未知,那么根据 2011、2012 的优化结果去跑 2013 的数据,这样就避免了马后炮,虽然不是真实交易,但原理上与真实交易无异,因为这种情况属于「未来已经到来」。然后再把优化样本改为 2012、2013,用优化结果去跑 2014,以此类推。

这样把全局的样本拆分成几段,可以使策略在品种秉性的转变期得到一定缓冲,兼顾前后,适应性更灵活。进而多次改变分段的临界时间和每段的样本数量,如果一套策略能经得起任何分段优化的考验,则可以大大增强应用于未来的有效性,有底气对未来表现做出靠谱的预期。

2. 剔除盈利孤岛

如果大批量的优化结果参数集中分布在某一小段区间,则此区间内的参数靠谱程度较大。反之,某单项优化结果虽然很好,但参数在结果列表里显得很突兀,没有其他的相似结果佐证,对这种情况应持谨慎态度。

3. 识别偶然事件

任何策略都有自身固定的特性,当优化结果虽好,却违反了策略的固定特性时,这些结果也就失去了指导意义。

例如做趋势策略,「趋势不常有」是市场的客观现状,每个月平均能有 3 次 20000 个 point 的趋势已经很难得,这样算下来即便每次趋势都抓到,一年里也就 36 次交易,算上试错的亏损单,每年 90 单的开仓频率差不多就是极限值,单子再多的话,纯属凭白亏损的废单。假如某项优化结果非常诱人,却在一年里开了数百单,那意味着这套参数十分敏感,总在开单,而优化结果还这么好,只能说明这套参数恰巧无限的契合了这段历史数据,实则不具备参考性。

其实在优化时难免出现荒诞的参数也能偶然跑出惊人的盈利结果,那我们就要识别出这些害群之马。

universal-eternal-tao-of-ea-040b

现在我们回顾一下策略系统的五层架构:五层里面的核心就是第一层——哲学,或者说「道」。下面四层都是对第一层的不断具象化,使抽象的「道」在现实中有落脚之处。

但我们会面临个问题:第五层的代码能 100% 忠实的反映出第一层的哲学思想吗?

其实并不能,因为这里存在一个功效损耗的问题。

假设哲学层面的功效是 100 分,同一个源头的思想会衍生出不同的理念发展方向,某一理念不一定能完美的承载哲学思想的纯正内涵,所以到了理念层面就开始产生功效的折损,这时大概就只剩了 80 分。同理,把理念转译成系统层面时,鉴于学问和技巧的水平,功效又要继续打折扣,没准就剩个 60 分…… 即便到了最后一步的代码层面,受制于 MetaTrader 的局限性,又会拖一下分数的后腿。

结果可能就出现这么一个局面:源头思想很好,但做成 EA 成品后已经面目全非了,思想的精华所剩无几。

所以每一环节事实上都会产生功效的逐层损耗现象。

我们努力的方向就是使代码构筑的 EA 尽可能保存思想的原装性。

因此对 EA 的开发绝非一劳永逸,即便是已经成熟运行的 EA,后续研究工作也可能是永久性的,从而不断降低策略架构每一层的损耗。

universal-eternal-tao-of-ea-041

综上,想构建出优秀的EA,必要条件至少应该有两点:

1. EA除了是先进的交易工具之外,更重要的是一定要赋予它思想性,也就是之前说的对市场做功。犹如武器会更新换代,但兵法的思想永不落伍。

2. 保持研究,其实这个过程也是不断提升我们自身认知和技术水平的过程。EA的持续进化也代表着我们能把「道」发挥至什么程度。

universal-eternal-tao-of-ea-034

其实佛学里的一对概念可以清晰的区分哪些是人工智能的范畴——「能和所」。

universal-eternal-tao-of-ea-035

比如说,「眼睛看见东西」这个命题,眼睛就是「能看见东西」的主体,代表「能」,东西就是「所被看见的」对象,代表「所」。

如果明了了这个逻辑,就好判断谁是人工智能了——凡是属于「能」的范畴,就算;凡是属于「所」的范畴,就不算。

那么 EA 算人工智能吗?当然是不算的。就像计算器代替算盘、车间流水线代替人工,EA 只是把手动交易换了个方式而已,本质上说,EA 是人「所」编写的,它只能执行提前输入的指令,不能自发的制定策略,什么时候 EA 能自己能创造 EA 了,那就步入了人工智能的行列。

universal-eternal-tao-of-ea-036

况且在 MetaTrader 的架构里是不可能实现人工智能的。打个比方,假设人造出来速度最快的东西是国家官方研制的超音速飞机(姑且不算卫星),如果民间某老百姓宣称实现了更快的速度,我们秉承开放的态度尚可以相信,毕竟民间出高手,万一造出了更先进的飞行器呢。但如果他说是靠脚蹬自行车超过了飞机的速度,这就没法相信了,这不是能力的问题,而是违反常识。

那么人工智能在交易界发展到什么程度了呢?事实上由于难度太大,至今还没有应用层面的成果,至多还处于初期研究阶段。

注:「选择策略」和「策略内容」是两码事。用人工智能选择出已存在的优秀策略,这是能做到的;用人工智能创造出优秀策略本身,当前还做不到。此处讨论「交易界」范畴的人工智能,即指的是「策略内容」层面。

我们先来找个参照物对比——横扫围棋界的 AlphaGo。它的原理基于「深度卷积神经网络、蒙特卡洛搜索树、评价函数」,可谓艰深复杂,但也只能解决横竖 19 个格子的棋盘那么大点儿的事——给定一个 19x19 * n 维度的向量状态,然后在里面寻找最好的应对策略。

围棋属于「封闭型规则游戏」,但凡这类游戏都存在最优解,所以围棋界公认围棋策略并非永无止境,有一个理论上的最优策略极限,这种状态被称为「围棋之神」,一些顶尖棋手表示「围棋之神」的程度对战当前人类最高水平可能还有让 4 子的空间。

而交易属于「开放型规则游戏」,不存在最优解。何时开仓,据何开仓,开多少仓,持仓过程如何管理,何时平仓,据何平仓,全平还是平一部分…… 涉及到的维度远超围棋规则。例如围棋规定机械的每人轮流下一手,而交易就像用兵打仗,不能说我站好了你捅我一刀,然后你别动,我捅你一刀,最后比谁后死,打仗的任何步调、行为全都自由。

正因如此,凯利公式无法很好的应用在交易中。

曾有段时间,我痴迷于凯利公式所谓的「能让长期收益最大化,且亏损时永远不会赔光」的功能,但研究后发现效果并不好,可一直说不清楚原因。终于有一天我从凯利公式的基本定义里找到了答案:凯利公式生效的大前提,必须是在特定的赌局中。

什么叫「特定的赌局」?其实就是「封闭型规则游戏」。就像一副扑克牌 54 张,每出去一张牌就少一张,获胜优势会发生明确的可计算的变化,甚至可以提前制作出一张对照表,每一项都能提前有据可查(例如当年的 21 点必胜策略)。

但是交易市场并不符合「特定的赌局」的特征,今天涨一百点,明天跌五百点,振幅不定,每局都不平均,甚至根本没有局数的概念可言,任意参与,任意退出,样本没有特定的可比性,统计失去了意义。

因此凯利公式对于「开放型规则游戏」有相当大的盲点。明白了这个,大家以后在设计 EA 资金管理环节的时候就可以别在凯利公式上面浪费工夫了。

当前的人工智能水平,对于做交易这种维度太多、无最优解的「开放型规则游戏」还是相当无能为力的。至少凡是宣称已经成熟应用人工智能的,都不是真正的人工智能,只是个噱头。

比如美国有家开发自动化交易系统的公司,首席科学家叫 Babak Hodjat,此人没什么名气,但他有个产品举世皆知,就是苹果手机里的 Siri,他把 Siri 专利卖给苹果公司后,自己搞自动化交易去了。Babak Hodjat 说他公司的系统运行完全不需要人的帮助,还可以让虚拟交易员互搏来选出最好的交易员。

那这不就是加强版的 MT4 嘛!如果论无需人工干预的全自动运行,EA 的本职功能即如此,虚拟交易员互搏类似于遗传算法,MT4 优化模块里也有,虽然相当简陋,但至少原理也是把优秀的基因进行组合,不断优胜劣汰。所以就 Babak Hodjat 所表述的特征来看,他只是有了一个更先进的流水线车间,跟人工智能扯不上关系。

包括我们从新闻上看到的那些因「人工智能的崛起」而大批解雇职员的金融公司,依然只是代替了不必要的人工而已。莫忘了「能」和「所」的定义,凡是「所」这半边的,就算再先进再复杂,本质上也只是去执行提前输入的指令。

那交易界有没有真的在搞人工智能的?有。例如著名的文艺复兴基金表示使用了类似 AlphaGo 的技术进行建模,纽约一家名为 Rebellion Research 的研究机构使用了贝叶斯网络进行机器学习,其他的一些基金公司也有使用进化计算(Evolutionary Computation)和图像识别的,但没有任何一家达到应用层面,全部处于研究阶段。这就是人工智能在交易界最前沿的现状。

而关键问题是,这真的很重要吗?我们做事业,非要跟人工智能挂上钩才阳春白雪,不搞 AI 就下里巴人了?其实我们只要搞好自己的 EA,能有效的盈利就够了。

IFINEXPO-shenzhen-2017-daqian

最后一些感慨:外汇交易这个行业乱象丛生,尤其细分到 EA 界,更是套路满天。有人说,世界这么乱,装纯给谁看,交易市场这种直接跟钱打交道的事情,谈什么情怀呢?

我们认为可以不谈,但所有人都应该明白一件事:只有大家多一些自觉自强,把整个行业做上档次,大环境更健康,每一个个体才能更顺利的发展。如果因为一些害群之马使得整个行业被清算,做正经事的都会被殃及,那就太悲哀了。

道汇可能没有能力去实现匡时济世的理想金融,但至少可以用我们这一点点力量树立一些行业的正面形象。

扩展阅读:趋势 EA 的 CTA 基金之路》(2017.9.23 道汇首次亮相 IFINEXPO)

© 本文版权归道汇所有,任何形式转载请邮件联系我们 i@daofx.com