此外,还有一个让人烧脑的问题是,「合理的中间价」到底是什么。
订单到达强度随着深度的变化
霍克斯过程
其他做市商的视角则由订单簿代表。订单簿揭示了其他做市商的一些私密信息。订单簿顶部附近,如果卖单多于买单,则表明其他做市商更愿意出售而不是购买资产。这有两种可能,一是这些做市商的库存中已经有巨大的正向不平衡,二是他们认为价格在短期内更有可能下降而不是上涨。
不管哪种情况,作为做市商的你,都可以根据订单簿的扭曲来调整报价。而且,当做市商互相竞争时,如果最小报价单位[最小报价单位:即两个连续价格之间的最小差距]很小,你就会经常看到所谓的「抢价差交易」(pennyjumping)[抢价差交易:一种被严格禁止的交易。指在做市商交易制度下,证券公司、做市商在手中持有客户交易委托的情况下抢先为自己的账户进行交易]行为。
在确定胜者之后,亚军通常会撤回到比下一个最佳买价或卖价差一个报价单位的位置。如果你没获得成交优先权,你还可以获得第二成交优先权,并且只需支付刚刚够的费用。这将导致一个回归,即冠军退回到亚军前面的最近报价单位,爬楼梯游戏重新开始。你可以在真实的加密市场数据中看到这种爬楼梯游戏。
买单侧的爬楼梯游戏
最后,长时段的方向性的信号可以覆盖在做市算法上,这样的话,做市算法的目标就不再是保持订单库存的持平或恒定,而是考虑一些长期目标以及相应的偏差来促其实现。
速度
速度很重要,原因有两点。首先,你可以在订单取消之前击中订单簿中的订单。其次,你可以在订单被击中之前取消订单簿中的订单。换句话说,你想要点射陈旧订单,也希望自己的订单别被他人点射。套利算法(主动)和执行算法(主动)更看重前者,而做市算法(被动)更看重后者。
世界上最大的各家证券交易所之间最佳交易节点位置
在速度游戏中,获胜者拿走绝大多数所得。在最简单的例子中,如果存在套利机会,谁先获得套利机会,谁就抢得利润。第二名会得到面包屑,第三名则一无所有。收益很可能是幂律分布的。
速度游戏也是一场打到底线的竞争(racetothebottom)。一旦所有人都从光纤升级到微波或是激光网络,每个人都会回到同一起跑线,任何此前的优势都会被磨平。
最小报价单位、填单优先权和队列位置
这自然引出了下一个问题:你的队列位置值多少钱?
成交概率,作为队列位置的一个函数
订单簿增量
在订单簿的某一价格水平,量的消减只有两种方式:要么是交叉盘交易(tradecrossed),要么是未决限价单被取消。如果是交叉盘交易,那么比此价格更好的所有其他价格水平,也会是交叉盘交易,量也会降低。我们可以在行情表上把开启和取消的订单一笔一笔的排列出来,并将每一个缩减记为一笔交易或一次取消。直观地讲,一笔交易意味着双方同意以某一特定价格进行买卖,而一次取消则意味着,某一方决定不再以某特定价格买卖某资产。因此,从表面上看,我们可以说,如果某一笔最佳买价的订单被取消,而不是被成交,那就是一个强烈的信号,表明市场将在短期内向下。
另一方面,在订单簿的某一价格水平,只有一种方式可以增加量:即一笔未决限价单被提交了。
订单簿中的量增和量减都揭示了市场参与者的私密信息,从而提供了短期的价格信号。
更好的价格指数和最优交易所费用
目前,大多数价格指数都是从多个交易所获取交易数据并将它们汇总在一起以获得成交量加权的平均价格。Tradeblock指数尤其特别,它会对不活跃和价格与同侪有偏差的交易所的权重加以处罚。而我们还能做什么呢?
在GDAX上,做市手续费为0bps,而市价接受方手续费为30个基点(即万分之30),如果一笔公布交易[发布价格:指当交易出现在自动收报机上或以其他方式公开记录时的价格]的价格为$4000/BTC、且是卖价侧被命中,则意味着卖家以$4000/BTC的价格卖出,而买家则以$4012/BTC价格买入。这笔交易的「合理价格」应该接近$4006/BTC,而不是实际的发布价格。
如果换到Bittrex交易所,由于有25基点的费用同时适用于做市商和接受方,因此合理价格就是发布价格。换句话说,一笔$4000/BTC的发布成交,实际上是买家以$4010/BTC的价格购买,而卖家以$3990/BTC的价格卖出,两者平均就得到此单的价格。
当然,这里还存在另一种复杂性,来自基于交易量的费用阶梯,这可能会增加或减少做市商-接受方费用的不对称性,因为费用是阶梯型跳跃的,所以我们无法确定,买家买入以及卖家售出的准确价格。这也暗示了两个有趣的推论。
首先,价格发现是有限的,并且有点精神分裂[精神分裂:此处类比「公平价格」在这两极之间迅速震荡的状态],尤其是碰到那些在做市商-接受方费用方面极不对称的交易所。
假设GDAX的大多数账户都处于0/30bps的做市商-接受方费用等级,并且我们留意到GDAX在其BTCUSD的订单簿上常有1分钱的价差,那么,每一笔在买价侧发布的交易,其合理价格大概会低于此价格15bps,而每一笔在卖价侧发布的交易,其合理价格大概会高于此价格15bps。因此,在平静时期,「合理价格」就会在这两点之间快速震荡,两者之间不会有颗粒度更细的价格发现。
GDAX订单簿
其次,与生产者和消费者之间的税收关联一样,做市商和接受方在费用分担方面也存在类似的关联。
如果你向做市商收取相对较多的费用,他们会拉大订单簿的间隙,并将一些费用转嫁给接受方。如果你向接受方收取相对较多的费用,那么做市商就会将订单簿的间隙压紧,并吸收掉接受方的一些费用。
极端案例是,如果你过度取悦做市商,那么订单簿的价差就会缩小到最小报价单位(就像我们经常在GDAX上看到的那样),订单簿也就无法进一步缩紧了。再往前一步,任何额外的费用都会以收入损失的形式落到交易所身上。通过这个极端案例,我们可以看到,费用落在哪一方的头上并不重要,重要的是做市商和接受方费用的总和。
最终,就和税收政策中的拉弗曲线一样,交易所也面临收费政策的收入优化问题。我们可以看到,极端情况与税收政策的情形相同。如果交易所不收取任何费用,他们就不会有收入。如果交易所收取100%的费用,就不会有交易,所以他们也没有收入。如果增加另一些理论,很明显,交易所的收入与总费用水平的坐标图是一个具有唯一最大值的凸函数。
拉弗曲线
专有数据
每个OTC(场外交易)机构都有其交易对手地址的半唯一标记的图形数据,以及这些地址和已知的交易所地址之间的货币流。这些被标记的数据为许多机器学习算法提供了一个良好的起点。
比特币交易图
每个矿工都有关于挖币(工作量证明类型的加密币)的边际成本的专有数据。如果他们能感知在挖矿效率方面自己在全球矿工界的位置,他们就能获得一份独特的洞察力,明了短期供应过度或短缺的态势。
黑箱
每个人都知道黑箱不好。人们很难,虽然不是不可能,辨别发生了什么,当出现某些故障时,极难诊断原因所在。
然而,许多最好的对冲基金和自营交易公司最终还是会制造出黑箱。有几个很好的理由可以解释这一点。
首先,公司中人来人往,那些文档记录不佳的遗留代码,新手接手后很难理解。其次,市场竞争意味着,任何某一个人就能完全理解的战略最终都会输给那些由专家和行家在其狭小领域中合作制定的战略。最后一点,合并的策略通常比单独运行的策略更好。例如,假设你有一个长期动量策略(S1)以及一个短期均值回归策略(S2)。当然,S1可以从S2的短期执行优势中受益,S2显然也可以受益于S1的长期趋势预测。所以很自然地,我们会把它们组合成一种合并策略,该策略比任何一个组成部分都更有效。最终,这个策略变成了黑箱,不是因为我们想要黑箱,而是不用考虑黑箱不受欢迎这种事。
马列维奇的《黑方块》
解开混淆因素
假设我们有一个模型,它用地面是否潮湿的二元指标来预测优步的出行率,而且这一模型运行效果非常好。显然,地面潮湿和优步打车无直接联系,但间接地,下雨会使地面潮湿,下雨也会让人们想要更多地使用优步。即便我们的伪模型表现良好,它也容易受到尾部风险的影响。如果有条水管在城市的某地爆裂导致地面潮湿,或是发生自然洪水,我们都会做出错误预测,认为优步在此地的乘车率会提高。
一般来说,当A意味着B(A=>B)而且A意味着C(A=>C)时,B=>C这个模型可能有效,但只是偶然情况。因此必须认识到,预测关系应符合直觉和常识。盲目挖掘数据并发现强预测信号,这是不够的。我们应该在信号汇成一个黑箱之前把其中的混淆因素剥离,因为一旦形成黑箱,这些因素将越来越难以解开。
举另外一个例子,假设A=>B且B=>C。那么,A=>C这个模型将起作用,但级别低于B=>C这个模型。首先,A=>C可能会让你利益受损,因为A可能不是导致(在格兰杰因果关系上)B的唯一因素;也许A'也会导致B。其次,如果A=>B的关系不成立了,那么A=>C模型也会崩溃,但B=>C模型仍然有效。
特征选择
认识论
在设计量化模型时,实证主义和演绎推理都很有价值。
实证主义的另一个缺陷是,对于任何给定的历史模式,存在无限多的模型,每个模型将符合这一历史模式,但每个模型可以对未来做出一个完全不同的预测(比如黑天鹅问题的一个版本)。休谟、维特根斯坦、克里普克、奎因、波普尔和塔勒布都有许多关于逻辑实证主义和归纳问题的批判和辩护,以及对这些观点的进一步阐述。
纯演绎推理的一个问题是,作为人类的我们容易出错。推理链条上的任何一个逻辑错误都会立即使结果无效。此外,结论的可靠性不仅要求沿途的每个逻辑步骤都是有效的,而且也要求我们假设的前提本身也是真的并符合现实。由于模型必须易于使用,因此它们通常是对世界的简化,并且其做出的预设不能和现实相违背。
我们来看一个例子。假设你希望针对一项资产的价格轨迹运行一次蒙特卡罗模拟。如果你获得了该资产回报的历史数据并从中直接取样来模拟路径,那么你会遇到以下问题:蒙特卡罗模拟
最后,我通常使用两种启发式方法:1)当有疑问时,默认使用常识。2)如果其他方面都相同,简单和节制优于复杂和臃肿。
真实世界的摩擦
拥有一个理论上有利可图的算法是一回事,但处理现实的摩擦是另一回事。
假设你向交易所发送一个请求来发布订单,通常你会收到一个回复,确认订单已发布,或是发生错误,订单未被发布。假如有一天,你的发布请求没有收到任何回复。你会认为这个薛定谔订单是发布了还是失败了?你容易犯两种错误:类型1(假正[假正:指测试结果呈正的反应,但是事实上却是负]),类型2(假负[假负:指测试结果呈负的反应,但是事实上却是正]),都是把订单做了错误分类。一种错误类型会比另一种错误的损失更低吗?
假设你在两个不同的交易所之间运行套利策略。如果在两个交易所之间做一对交易时,其中一家的API出问题了,你会怎么做?其中一家的交易可能已通过,而另一家的交易可能已失败。现在你有了不想要的持仓敞口。处理这个问题的最佳方法是什么?
当交易所被DDoS攻击或匹配引擎在负载下受压时,你如何处理发布延迟和取消延迟?
当交易所对其API进行未证实、未公布的更改时,你该怎么办?
假设交易所确实对其客户的余额进行更新,而其执行交易的匹配引擎也在并行工作,这样的话,在同一毫秒或微秒为交易成功而查询出的余额,可能和向客户报告的余额相冲突态,看起来就像一笔交易执行了,但余额还没有发生改变。你该如何设计自己的系统,来与这个持续变化的世界状态同步,而不顾交易所报告的状态和你自己的发生冲突呢?
假设交易所的费用太高,你无法以模型推论的最优价格下达限价订单。或者更糟,你的某些竞争对手与交易所在费用方面进行了私下交易[私下交易(sweetheartdeal):指双方以非正式或非法方式私下达成的安排或协议。]。这会如何改变你的行为?
如果你的银行周末不上班而加密交易是24/7运行,你如何处理法币的再平衡[再平衡:指重新调整资产组合权重的过程。]?
在你的会计系统中,你如何处理分叉、空投、粉尘攻击以及其他你无法控制和避免的情况?
以下是我们通常遵循的一些启发式方法:最后的想法
保持领先优势的唯一方法是聘请最优秀的人才,他们可以适应生态并不断超越自我。
市场是一个巨大的扑克牌桌,数百万玩家坐下来,每个人都相信他/她可以超越他/她的邻居。坐在这张桌子旁的人,其实已经是一种自我选择。获胜意味着你要比牌桌上一半多一点的资本玩得好,这反过来意味着,你需要比90%的玩家更优秀,因为资本以幂律的方式汇总到赢家手里。
在文化上,交易游戏与风险投资不同。在硅谷,成为彼得·泰尔所谓的明确的乐观主义者是值得的。你需要相信新技术将改变世界,你能够并且将会制定实现这一目标的方法。
在遍布自营交易公司的芝加哥,文化差异很大。在芝加哥,成为一个有极高对抗性思维的人是值得的。每个人都像你一样如此渴望成为赢家,而且每次你进行交易时,你的脑海中都会出现那个唠叨的想法:也许对面的人知道你不知道的事情。
在面对市场中的任何真正竞争之前,硅谷的创业公司必须首先与世界的冷漠作斗争。而交易类公司则不同,尽管没有需要打交道的顾客,他们从一开始就无法避免竞争。最强的交易公司,把自己包裹在秘密之中。
加密货币交易是这两个世界的交汇点,在这个新生的领域目前还没有明确的赢家。
撰文:KevinZhou,加密货币算法做市商,曾担任Kraken交易业务负责人