售卖弹性大的商品高频商品可以带来哪些好处

您当前的位置: & 欢迎光临
该公司暂无招商,下面为您随机推荐招商信息
以上信息由企业自行提供,该企业负责信息内容的真实性、准确性和合法性。商通网对此不承担任何保证责任,请慎重选择交易对象以防被骗。哪些时候需要用到高频/超高频呢?高频/超高频有什么好处呢?详见下:&-&Minecraft(我的世界)中文论坛 -
只需一步,立刻登录
后使用快捷导航没有帐号?
查看: 204|回复: 12
哪些时候需要用到高频/超高频呢?高频/超高频有什么好处呢?详见下:
什么时候需要用到高频/超高频呢?高频、超高频、普通的脉冲,是怎样区分的呢?各有什么用处呢?分别怎么使用呢?使用之后会有什么现象产生呢?
&&————请不要吐槽我的这么多为什么。。好学而已
比如你要时时检测一个玩家有没有在某区域,就需要用高频/超高频
只有这样才能在最小的延迟内检测到玩家并输出信号
高频、超高频、普通的脉冲并没有具体的区分
一般对于命令方块用高频、超高频
频闪的红石灯用脉冲
怎么使用?看情况而定啊,有时候命令方块也会用脉冲
什么现象???命令方块执行成功的延迟的大小不一样,额……
http://minecraft-/脉冲电路
http://minecraft-/教程/高频电路 ...
帖子永久链接:&<button type="submit" class="pn" onclick="setCopy('http://www.mcbbs.net/thread--1.html', '帖子地址已经复制到剪贴板您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')">点击复制
比如你要时时检测一个玩家有没有在某区域,就需要用高频/超高频
只有这样才能在最小的延迟内检测到玩家并输出信号
高频、超高频、普通的脉冲并没有具体的区分
一般对于命令方块用高频、超高频
频闪的红石灯用脉冲
怎么使用?看情况而定啊,有时候命令方块也会用脉冲
什么现象???命令方块执行成功的延迟的大小不一样,额……
比如这个地方,普通的掉落沙会消失,这个是高频掉落沙,就不会消失,是为什么呢?(我的帖子好像老是被你抢回啊)
[attachimg]998197[/attachimg]&
比如你要时时检测一个玩家有没有在某区域,就需要用高频/超高频
只有这样才能在最小的延迟内检测到玩家并输 ...
比如这个地方,普通的掉落沙会消失,这个是高频掉落沙,就不会消失,是为什么呢?(我的帖子好像老是被你抢回啊)
捕获.PNG (200.28 KB, 下载次数: 0)
19:23 上传
你说的应该是summon高频
summon FallingSand ~ ~0.5 ~ {Block:minecraft:redstone_block}
原理的这样的,在有红石块的位置召唤一个红石块的落沙,并且Time:0或者未设定
就会替换红石块,而在这一&
好了看到图片了,原因是这个指令是被高频激活的
然后召唤的普通的落沙不是会闪一下才消失吗
那么如果很快的一直召唤,就看起来好像一直存在一样&
比如这个地方,普通的掉落沙会消失,这个是高频掉落沙,就不会消失,是为什么呢?(我的帖子好像老是被你 ...
好了看到图片了,原因是这个指令是被高频激活的
然后召唤的普通的落沙不是会闪一下才消失吗
那么如果很快的一直召唤,就看起来好像一直存在一样
哦哦,果然只是视觉效果啊,&
其实是我另一个帖子。。http://www.mcbbs.net/forum.php?mod=viewthread&tid=561615 (出处: http://www.m ...
好了看地板
比如这个地方,普通的掉落沙会消失,这个是高频掉落沙,就不会消失,是为什么呢?(我的帖子好像老是被你 ...
你说的应该是summon高频
summon FallingSand ~ ~0.5 ~ {Block:minecraft:redstone_block}
原理的这样的,在有红石块的位置召唤一个红石块的落沙,并且Time:0或者未设定
就会替换红石块,而在这一个瞬间就再次激活了命令方块,于是又召唤了落沙
又替换了红石块……
其实是我另一个帖子。。http://www.mcbbs.net/forum.php?mod=viewthread&tid=561615 (出处: http://www.mcbbs.net/)]分类:指令/建筑 http://www.mcbbs.net/forum.php?mod=viewthread&tid=561615 (出处: http://www.&
你说的应该是summon高频
其实是我另一个帖子。。[url=分类:指令/建筑
(出处: )]分类:指令/建筑
(出处: )[/url]
好了看地板&
超高频除非cb不会用的(他会让红石原件坏掉),cb在特殊时用高频,在普通红石用高频或普通脉冲
好了看到图片了,原因是这个指令是被高频激活的
然后召唤的普通的落沙不是会闪一下才消失吗
那么如果很快 ...
哦哦,果然只是视觉效果啊,
这叫时钟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
时钟!时钟!时钟啊!
不叫脉冲!!!!!!!!!!!!!!!!!
你见过哪个玩红石的管这个叫脉冲
都是说时钟的频率
也没什么严格的定义 比如高频就是说频率高 叫高频还是超高频通常取决于作者的心情
至于什么时候用什么 当然是看要求了
额额,我是理科生,不要激动啊。。
持续的频率不变的脉冲不就是时钟么。。&
不用那么激动,毕竟这东西叫习惯了.
这叫时钟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...
额额,我是理科生,不要激动啊。。
持续的频率不变的脉冲不就是时钟么。。
对 但是不能叫脉冲
直接说脉冲默认指单个的&
额额,我是理科生,不要激动啊。。
持续的频率不变的脉冲不就是时钟么。。 ...
对 但是不能叫脉冲
直接说脉冲默认指单个的
哦哦,了解啦,O(∩_∩)O谢谢~&
对 但是不能叫脉冲
直接说脉冲默认指单个的
哦哦,了解啦,O(∩_∩)O谢谢~
""以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。
版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。对题目中提到的“冰山算法”,我刚好有一些了解,可以给大家讲讲。很多人对“量化交易”的理解实在太过片面,基本上把它等同于生钱工具,我不赞同这种观点。交易首先是交易本身,有它自身的经济学意义,忽略这一点而单纯把它看成使钱增值的数字游戏,很容易就会迷失本心。&br&&br&我也不认为算法本身有什么稀奇,再好的算法也是死的,真正的核心价值一定是掌握和使用算法的人。实际上我讲的东西也都是公开的信息,但是即便了解了技术细节,能真正做好的人也寥寥无几。&br&&br&希望这个回答可以让你对量化和高频交易有一个更清醒的认识。&br&&br&~~~~~~~~~~~~~~~~~~&br&&br&首先我相信不少人概念里的高频交易还是这个样子的:&br&&img src=&/0320bbc08c1d67dc51c721e4fa400232_b.jpg& data-rawwidth=&400& data-rawheight=&284& class=&content_image& width=&400&&&br&但对高频交易来说,这种信息是非常粗糙的。所以这里先要对不熟悉背景的同学介绍一下什么叫做Order Book。现在主流的交易所一般都使用Order Book进行交易,交易所在内部的Order Book上记录所有买家和卖家的报价,比如像这样:&br&&img src=&/e508ba3ad4d62e90f054d9_b.jpg& data-rawwidth=&387& data-rawheight=&204& class=&content_image& width=&387&&&br&&br&Bid表示买家,Offer表示卖家,这张报价单表示买卖双方发出的所有报价单(Limit Order)。这张表才是高频交易最关心的信息。任意时刻,买家的出价总是低于卖家(比如这里的98对101)。所以报价虽然一直在变化,但是只有报价是不会有任何成交的。&br&&br&什么时候会产生交易呢?有两种情况,第一是任一方发出市价单(Market Order),比如一个买家发出一张单量为10的市价单,就可以买到卖方在101价格上挂的10份,这个交易成功之后,Order Book会变成这样:&br&&img src=&/fbcbb09cf0668_b.jpg& data-rawwidth=&387& data-rawheight=&204& class=&content_image& width=&387&&&br&第二是发出一个价格等于对方最优报价的限价单,也会产生和上述情况相同的结果。&br&&br&需要强调的是,虽然真正的Order Book只存在于交易所内部,所有交易都在交易所内完成,但是交易所会把每笔报价和市价单都转发给所有人,所以所有的买家和卖家都可以自己维护一个同样的数据结构,相当于交易所Order Book的镜像。通过跟踪分析自己手里这份的镜像变化,来制定交易策略,是高频交易算法的核心思想。&br&&br&~~~~~~~~~~~~~~~~~~&br&&br&基础知识介绍完毕,下面为了方便大家理解,我采用一种更形象的方式来表示Order Book:&br&&img src=&/31dc04dbf4f52ca7af44b03c_b.jpg& data-rawwidth=&468& data-rawheight=&135& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/31dc04dbf4f52ca7af44b03c_r.jpg&&&br&这张图对应文章开始时的那个Order Book,应该可以明白地看出,横轴表示价格,纵轴表示订单量,绿色表示买家,红四表示卖家。这样做的目的是为了引出本篇讨论的主题:冰山订单。&br&&br&通过上述基本分析大家可以看出,交易所内的交易数据是完全公开的,市场上任意时刻,有谁想要买/卖多少,所有人一目了然,没有任何秘密。这样做本身是有经济学意义的,因为只有展示出买卖的需求,才会吸引潜在的商家来交易,所以&b&在市场上一定程度的公开自己的需求是必要的&/b&。但这样同时带来一个严重的后果,一旦有某个人想要大量买/卖,他所发出的巨额限价单会直接展示给所有人。比如一个买家挂出巨额买单后,Order Book会像这样:&br&&img src=&/ab980cdba9d438bfbfa57fc311f3efb2_b.jpg& data-rawwidth=&468& data-rawheight=&135& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/ab980cdba9d438bfbfa57fc311f3efb2_r.jpg&&&br&这对他非常不利,因为所有人都会利用这个信息来跟他做对。大家会判断,现在市场上存在大量的买压,于是会出现一大批为了赚钱而冲进来的人抢购,价格会快速上升,这样原来这个人可以在98这个价位买到的东西,很快就变得要在更高的价位上才能买到。这种情况,那些后来的人做的就是&a href=&///?target=http%3A//en.wikipedia.org/wiki/Front_running& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Front running&i class=&icon-external&&&/i&&/a&,而原来的那个人则面对&a href=&///?target=http%3A//en.wikipedia.org/wiki/Adverse_selection& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&逆向选择风险&i class=&icon-external&&&/i&&/a&。&br&&br&为了解决这个问题,交易所提供了一种针对性的工具,就是所谓的冰山订单(Iceberg Order)。这种订单可以很大,但只有一小部分是公开出来的,大部分则隐藏起来,除了交易所和发单者本人谁也看不到,真的像一座“冰山”一样。比如像这样:&br&&img src=&/898a440c4fccaa_b.jpg& data-rawwidth=&468& data-rawheight=&291& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/898a440c4fccaa_r.jpg&&&br&灰色的部分就是冰山订单隐藏的部分。这样,只有当有对应隐藏量的交易发生时,交易所才会通知其他人,就避免了别人利用显示订单的信息来做&a href=&///?target=http%3A//en.wikipedia.org/wiki/Front_running& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Front running&i class=&icon-external&&&/i&&/a&。&br&&br&凡事有一利必有一弊。冰山订单虽然保护了发单者的利益,但是对于其他市场参与者来说却又变成了一种不公平的规则。那些有真实的交易需求的参与者,会因为对局势的误判而损失惨重。所以接下来的问题就变成,如何发现市场上的冰山订单?&br&&br&首先有一种最简单的方法。有的时候,冰山订单是挂在最优买价和卖价之间(spread),像这样:&br&&img src=&/b8e9efaf2e1fac55516f_b.jpg& data-rawwidth=&468& data-rawheight=&291& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/b8e9efaf2e1fac55516f_r.jpg&&&br&对于这种情况,有一个非常简单的探测方法,即发一个最小额度的限价单在spread里,紧跟着取消这个订单。比如这个例子中,发出一个卖价为99的限价单然后取消。因为这个价格本身对不上显式的买价(98),如果没有冰山单的存在,一定不会成交。但有冰山单的情况下,一旦交易所收到这个卖单,会立刻成交冰山单中对应的量,而之后的取消指令就无效了。这样,以一种微小的成本,就可以发现市场中隐藏着的订单。事实上,的确有人会做这种事情,频繁的发单然后取消,在最优价差之间形成一种高频扰动,用来探测隐藏单。&br&&br&为了应对这种扰动探测,大家一般都不会直接挂单在spread里。而是会像之前那样和普通的限价单挂在一起,这样发生交易之后,你就很难推测消耗掉的究竟是正常的限价单,还是冰山订单。那么应该怎么做呢?&br&&br&首先有一个直接的思路。冰山订单的存在,一定程度上反映了挂单人对市场情况的解读,认为有必要使用冰山订单而做出的判断。需要强调的是,使用冰山订单并不是没有代价的,因为你隐藏了真实的需求,在屏蔽掉潜在的攻击者的同时,也屏蔽掉了真正的交易者!而且会使得成交时间显著增加--因为没人知道你想买/卖这么多,你只能慢慢等待对手盘的出现。所以当有人下决定发出冰山订单的时候,也会有对市场情况的考虑,只有合适的时机才会做这种选择。&br&&br&什么是合适的时机?有一些数据应该是相关的,比如买卖价差spread,买单量对卖单量的比值等。对这些数据,你可以在历史数据上做回归分析,建立起他们和冰山订单之间的线性/非线性模型。通过历史数据训练出来的这个模型,就可以作为你在实时交易时使用的冰山订单探测器。这是 &a href=&///?target=http%3A//www.tinbergen.nl/%7Esofie2012/papers/HautschHuang2012.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&On the Dark Side of the Market: Identifying and Analyzing Hidden Order Placements&i class=&icon-external&&&/i&&/a& 这篇论文使用的方法。&br&&br&基本模型可以定义为:F(spread,bidSize/offerSize,……) = Probability(Iceberg)&br&&br&如果你想玩高深的,还可以在此基础上做HMM,SVM,神经网络之类的高级模型,但基本思路是一致的:通过盘口分析计算存在冰山订单的概率。&br&&br&~~~~~~~~~~~~~~~~~~&br&&br&上面说的这个方法,看起来很高级,实际效果如何呢?我想大家也看出来了,这种建模不是很精确。作为事后分析手段用来说明什么情况下可能会出现冰山订单还不错,但是作为实时交易的探测器就不是很放心。因为使用的信息太模糊了,而且说到底建模的对象只是一种相关性,没有什么保证冰山订单的发送者一定是按照这个逻辑出牌的。&br&&br&所以接下来介绍的,才是真正具有高频玩家神采的方法,来自 &a href=&///?target=http%3A///doi/abs/10.3905/jot..068%23sthash.rg6lIM8a.dpbs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Prediction of Hidden Liquidity in the Limit Order Book of GLOBEX Futures&i class=&icon-external&&&/i&&/a& 这篇论文。&br&&br&~~~~~~~~~~~~~~~~~~&br&&br&高频世界里,有一条永恒的建模准则值得铭记:先看数据再建模。如果你看了上面的介绍就开始天马行空的思考数学模型,那基本上是死路一条。我见过很多年轻人,特别有热情,一上来就开始做数学定义,然后推导偏微分方程,数学公式写满一摞纸,最后一接触数据才发现模型根本行不通,这是非常遗憾的。&br&&br&而看了数据的人会怎么样呢?他很可能会发现,对于冰山订单的处理,交易所的规则是非常值得寻味的。有的交易所是这样做的:一个冰山订单包含两个参数,V表示订单总量,p表示公开显示的量。比如V=100,p=10的冰山单,实际上隐藏的量是90。如果有针对这个订单的交易发生,比如交易量10,交易所会顺序发出三条信息:&br&&ol&&li&成交10&/li&&li&Order Book的Top bid size -10&/li&&li&新Bid +10&/li&&/ol&这三条信息一定会连续出现,并且第三条和第一条的时差dt很小。这样做的原因是尽管冰山订单存在隐藏量,但是每次的交易只能对显示出的量(p)发生,p被消耗掉以后,才会从剩余的隐藏量中翻新出一分新的p量。这样,每个人从交易所收到的信息仍然可以在逻辑上正确的更新Order Book,就好像冰山订单并不存在一样。&br&&br&因此,一旦在数据中观察到这个规律,我们就可以非常有把握的判定市场中存在冰山订单,并且连p的值都可以确定!接下来的关键问题是,如何确定V的值,即判断这个冰山订单的剩余存量有多少?&br&&br&这个问题从本质上说没法精确求解,因为V和p都是由下单人自己决定的,可以是任意值。但可以从两点考虑:第一,两个值都是整数;第二,人类不是完美的随机数生成器,下决定会遵循一定规律。&br&&br&从这两点出发,可以对V和p建立概率模型,即计算一个给定的(V,p)值组合出现的概率是多少?这里不去深入探讨数学分析,感兴趣的朋友可以自己去看原文。简单说,可以在历史数据上通过kernel estimation技术来估算他们的概率密度函数的形状。顺带一提,如果你亲手编写过这种估算程序,就会理解我为什么在“&a href=&/question//answer/& class=&internal&&要想成为一名优秀的 Quant 需要什么样的编程水平?&/a&”这个答案中如此强调编程的重要性。在数据上估算出来的概率密度函数可能会是这样的:&br&&img src=&/fb5ec7fd15b695_b.jpg& data-rawwidth=&825& data-rawheight=&559& class=&origin_image zh-lightbox-thumb& width=&825& data-original=&/fb5ec7fd15b695_r.jpg&&&br&这样,当你在实时数据中观测到一个p的值时,就可以得出对应的V值的条件概率密度函数,即上图的一个切面,比如(p = 8):&br&&img src=&/13e890f9cc1d8ecbd6a78ed8f38044e8_b.jpg& data-rawwidth=&468& data-rawheight=&293& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/13e890f9cc1d8ecbd6a78ed8f38044e8_r.jpg&&&br&接下来显然就很容易计算V最可能是什么值了。这条函数曲线还有一个重要的作用是帮助你动态评估剩余存量,比如当你观察到已经有5份p被消耗掉,即可推出V&=40,由上图即可推出新的V值和剩余存量(V-5p)。&br&&br&综上,算法的核心在于,通过在实时数据中监测短时间内连续出现的三条相关记录判断冰山订单的存在,而对冰山订单的量化则通过由历史数据训练出的概率模型来完成。&br&&br&相信你也会看出,这种算法并不是什么作弊神器。它只是利用市场上的公开数据所做的一种推测。而且这个推测也仅仅是基于概率的,更多的应该是作为一种参考。它对做市商这种流动性提供者很有意义,可以使他们避免因为对局势的误判而遭受损失。但如果你想用它来作为一种攻击手段,觉得自己能发现隐藏大单而去Front run,那实在是很不明智的选择。&br&&br&最后,这种算法也只是针对特定的交易所。其他的交易所也许不会采用同样的冰山订单处理方式。所以真正有价值的是这种从实际数据出发的建模思路,具体的算法并不值钱。&br&&br&~~~~~~~~~~~~~~~~~~&br&&br&这个小算法给你展示了高频交易领域的“冰山一角”。它看起来也许不算很复杂,但是我却很喜欢。因为它清晰地展示了什么叫做先有思路,再有量化。因为有“冰山订单”这样一个从经济学基本的供需关系出发的真实需求,通过分析实际数据找到一丝线索,最后通过数学模型刻画出定量的策略,这才是漂亮的策略研发。&br&&br&如果违背这个原则,一上来就去搬各种高级的模型去套数据,指望模型自动给你生成交易信号,这在我看来无异于痴人说梦。遗憾的是,这个梦的确太过诱人,而这个世界也从来不缺少莽夫。&br&&br&且行且珍惜。
对题目中提到的“冰山算法”,我刚好有一些了解,可以给大家讲讲。很多人对“量化交易”的理解实在太过片面,基本上把它等同于生钱工具,我不赞同这种观点。交易首先是交易本身,有它自身的经济学意义,忽略这一点而单纯把它看成使钱增值的数字游戏,很容易…
“高频交易”是一个挺差劲的名字。按照字面意思,任何能够以较高频率进行交易的系统都可以叫“高频交易系统”。比如说你用VBA写个小程序,连上券商给你的接口,也完全可以按毫秒级进行交易,你也可以说自己开发了一个“高频交易系统”。&br&&br&不过,按照现在市面上的主流认知,我想大多数人概念里的高频交易系统是这样的:&br&&ul&&li&交易指令完全由电脑发送,对市场数据的响应延时在微秒级(VBA退散)。&/li&&li&系统由专用的软硬件组成,研发时需要大量计算机专家级的工作(散户随便编个小程序退散)。&/li&&li&系统的硬件需要放在离交易所主机很近的位置上,所谓 co-location。并且得到专门的准入许可证,交易指令直接发送至交易所(而不是通过券商中转)。&/li&&/ul&符合这三点的,就可以叫做高频交易系统。有人说你这三条没有一条在说频率,只能叫低延迟系统不叫高频交易。的确,我再一次深切赞同“高频交易”是一个很差劲的名字。但现在市面上的主流媒体,包括大部分新闻和畅销书在谈到这个话题时,说的就是这种系统,所以我在这里就不纠结字面意思了。&br&&br&如果对我上面给出的描述仍有疑问,那么事实上还有一个非常官方的定义,来自美国证券交易委员会(SEC)。SEC 也很难给出明确的定义,最终的描述是基于5个特性:&br&&ul&&li&使用超高速的复杂计算机系统下单&/li&&li&使用 co-location 和直连交易所的数据通道&/li&&li&平均每次持仓时间极短&/li&&li&大量发送和取消委托订单&/li&&li&收盘时基本保持平仓(不持仓过夜)&/li&&/ul&见:&a href=&///?target=http%3A//www.sec.gov/rules/concept/58.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&sec.gov/rules/concept/2&/span&&span class=&invisible&&010/34-61358.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&相比起这种形象:&br&&img src=&/e5a8174dbc22abda33c46eba6b53bd8f_b.jpg& data-rawwidth=&620& data-rawheight=&327& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/e5a8174dbc22abda33c46eba6b53bd8f_r.jpg&&&br&更真实的一面的其实是这样的:&br&&img src=&/6cc419d76c652bdfec0ff6_b.jpg& data-rawwidth=&320& data-rawheight=&201& class=&content_image& width=&320&&&br&&br&除此之外,存在很多妖魔化高频交易的言论,比如:&br&&ul&&li&超强的盈利能力,仿佛高频交易的机器就跟印钞机似的。&br&&/li&&li&纯粹靠交易赚钱,有着神秘的数学模型和尖端科技,精准的预测市场走势,带着无可比拟的优势在市场上呼风唤雨。&/li&&li&利用速度优势割其他机构类交易者的肉,大家认为这是作弊。&/li&&/ul&&br&回想一下,有没有人对你高谈阔论高频交易提到这里任何一点?你听完以后有何感想,好生羡慕,心潮澎湃,还是满腔愤恨上天不公?别着急,继续往下看,相信你看完这个回答以后,能够建立起一个正确的概念,下次遇到这种人,直接请他闭嘴。特别是那些对高频交易有兴趣,还没入门的朋友,希望你们有一个正确的认识。否则,当你历尽千辛万苦,怀着满腔热情加入一家HFT,以为从此以后你的工作就是对海量数据做高深莫测的数学模型,架起机器冲进市场草割那些无知的低频交易者,白花花的银(da)子(tui)像雪片一样冲进你的口袋,你很可能要失望。&br&&br&摒除这些错误的观念,这个行业的真正的精髓才能向你展开:偏执的科技至上理念,极其复杂的技术难题,疯狂追求机器极致的性能,以及,高强度的同业竞争。这才是我认为本行业最吸引人的特点,它本身就足够让人着迷了。至于赚钱,建议你把它当作承担压力,努力工作之后的回报,而不是被葵花宝典砸到无意间学得惊世神功,从此纵横股市点石成金,这种神话至少在这个行业是不存在的。&br&&br&下面来说一说这几条有什么问题。&br&&br&&br&&i&高频交易的盈利能力很高吗?&/i&&br&&br&传说是这样的:&br&&img src=&/01ba0826a1afa3a3dd793d9f8ab14b6b_b.jpg& data-rawwidth=&320& data-rawheight=&240& class=&content_image& width=&320&&&br&但现实很残酷。和任何其他行业一样,赚大钱的的确有,赔钱的也大把存在。我想这个行业特别吸引眼球的原因主要是因为它融合了金融和计算机这两个热门词汇,而且确实是一个高科技行业(相信没几个行业会关心光速在不同介质中的区别),很容易给外人一种神秘感。但如果只盯着金字塔顶端的几家公司而下结论,就好像看了乔丹集锦以后就认为所有打篮球的人都能扣篮一样,是不现实的。&br&&br&特别需要说明的是,因为高频交易系统对低延迟的敏感性,研发时需要投入大量的人力物力,要高薪聘专业的计算机专家,花钱买昂贵的硬件,租用专门的微波通信线路。但这一切也不能保证你得到一个预想中的“低延迟”系统。整个系统的设计和开发是一个非常复杂的工程。而且交易系统对于准确性和稳定性要求极高,不够精密的话上线后会出现各种问题,根本无法使用。&br&&br&如此大规模的投入,很多时候换来的是一个残次品系统。&br&&img src=&/fcbac356c502c8_b.jpg& data-rawwidth=&300& data-rawheight=&200& class=&content_image& width=&300&&&br&非常非常多的公司因为搞不定技术问题而赔钱关门。&br&&img src=&/f070d4c93327f6cede3d8c6cfd5dd717_b.jpg& data-rawwidth=&400& data-rawheight=&300& class=&content_image& width=&400&&&br&&br&这里有一个深远的问题是,高频交易是一个金融和计算机结合的产业,但同时精通这两者的人才是非常稀少的。金融人士主导的项目会缺乏对技术的判断能力,IT人士主导又会对需求把握不清。在对性能不敏感的行业这可能不是太大问题,可以按照传统的甲方乙方方式解决,有问题慢慢扯皮。但在这个高竞争行业,没有太多时间可以用来浪费在扯皮上。投产的系统可能慢上几微秒就是废物,而那时往往会发现基本的设计就有问题,根本无力回天。这种超高难度的研发压力,其实才是高回报的来源。&br&&br&&br&&i&高频交易的策略?&/i&&br&&br&有两种策略,做市(market making)和套利(arbitrage),从性价比来说,做市是更好的选择。&br&&br&&b&做市&/b&是指,在市场上充当流动性提供者,通俗的说就是有任何人想买一个东西(比如股票,期货等),你要保证能卖给他,有任何人想卖一个东西,你要保证从他那买。保证的意思就是如果市场上没有别人出头,做市商就必须出来。隐含的意思就是,做市商是所有人的对手盘。&br&&br&在过去,做市商可能是这样的:&br&&img src=&/616a43bb6acaca90458e1_b.jpg& data-rawwidth=&468& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/616a43bb6acaca90458e1_r.jpg&&&br&也可能是这样的:&br&&img src=&/71c40d09bc6a329e8de7c83bfbba6bf4_b.jpg& data-rawwidth=&274& data-rawheight=&184& class=&content_image& width=&274&&&br&而在高频交易时代,他们变成了这样:&br&&img src=&/9b8ec152d9ecbdd705cd8c_b.jpg& data-rawwidth=&500& data-rawheight=&198& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/9b8ec152d9ecbdd705cd8c_r.jpg&&&br&这里需要仔细想一下,一般情况下,如果你想买一支股票,往往是因为你看好它会升值,而你的对手盘跟你交易,是因为他认为会贬值,你们有一个价值判断上的分歧。那么做市商为什么能豪气干云的出头做所有人的对手盘,是因为他喜欢跟别人唱反调吗?&br&&br&当然不是。做市商的策略本质上,是认为市场价格在短期内具有波动性,涨上去的价格会落下来,反之亦然。所以他可以选择&b&承担一定的风险&/b&,暂时从你手里把东西买过来,过一段时间价格变得有利时再卖掉。注意这里的风险是真实存在的,没有什么保证价格一定会向着做市商有利的方向变化。时间跨度越大,这种风险也越大。做市商承担了这种风险,并且买过来的东西需要持有一定时间作为库存,来赚取因为波动性而产生的一点点价差(通常是一分两分)。也有更稳妥一些的做法,是通过其他高相关性的产品做对冲,比如买进一只股票的同时卖出它的期货,这个模型更复杂一些,对算法和性能的要求也更高。这种生意的本质决定了必须要能大量买卖,才能积少成多形成效益。&br&&br&有风险就意味着有可能赔钱。所以这就产生了两种不同的做市商。第一种是胆大的土豪,说老子有钱,买人,买设备,全都上最好的,我不信赚不到钱。这种人我们叫它noncontractual market maker,他来做市全凭自己兴趣。&br&&img src=&/309f91d28514fbfd37e1c3eb9c641afc_b.jpg& data-rawwidth=&615& data-rawheight=&345& class=&origin_image zh-lightbox-thumb& width=&615& data-original=&/309f91d28514fbfd37e1c3eb9c641afc_r.jpg&&&br&第二种是胆小的,觉得自己没把握一直赚钱,他可能就不敢做了。这时有一个人就不高兴了,他的名字叫交易所。交易所的存在,就是提供交易平台,然后通过对每笔交易收手续费来赚钱。如果没有人交易,显然他赚不到钱。为什么没人交易呢?因为有需求的人可能找不到对手盘,大家对价格的趋势判断是一致的,都在观望。这个情况对交易所很不利,所以他希望引入做市商。做市商一来,就能把门面撑起来(对,在中国,我们有时管这叫托。不同的是做市商的确承担了风险也参与了真金白银的交易,给交易者们营造了一个更友好的交易环境,所以是受到大家认可的)。大家一看场子里有很多人在交易,就愿意也掺一脚了。交易的人多了,交易所就很开心。所以他会付钱给做市商,可能还减免手续费什么的给点小福利。这样一来,这种做市商即使生意做的不好赔点钱,算上交易所的报酬,还是能盈利。这样的人,我们叫做contractual market maker,就是说他会和交易所签订一个合同,承诺提供多少流动性,交易所也相应的给一些报酬和福利。&br&&img src=&/ecde78f59d4fb1a8e9a77048fafd9d99_b.jpg& data-rawwidth=&400& data-rawheight=&266& class=&content_image& width=&400&&&br&注意这种业务里做市商不是很需要预测市场走势的能力,只要能做到不赔钱就可以赚进交易所的酬劳。这个时候关键点来了,就是如何做到&b&不赔钱&/b&?一个是按照上面说过的,做好对冲,另一个就是发现形势不利的时候要能及时撤单,这个是最考验低延迟的地方,速度慢就会发生来不及撤单而遭受损失的情况。&br&&br&所以,根据做市这种行为的特点,和市场上的需求,决定了HFT是最适合做这件事的。这也是为什么我们经常说HFT给市场提供流动性。&br&&br&&b&套利&/b&是指,找到两种强相关性的证券。一个极端的例子是,&a href=&///?target=http%3A///wiki/ETF& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ETF&i class=&icon-external&&&/i&&/a&和组成ETF的那些股票。如果你知道ETF的计算方式,就可以用同样的方式通过那些股票的价格来计算一个ETF的期望价格。有的时候,因为种种原因,你发现这个价格和你在市场上看到的ETF价格不一样,你就知道显然是市场发生了一些混乱,早晚这个价格会变回来。这时你就可以买入(卖出)ETF,卖出(买入)那些股票,坐等价格回归,可以稳赚不赔。&br&&br&这个策略听起来很美,实际上竞争非常激烈。因为任何人都可以做这件事,参与的人多了,市场就会少犯错误,同时每个人的利润空间也变小了。当你的套利收入不足以支撑HFT的研发维护成本的时候,离关门也就不远了。&br&&br&所以总结起来,做市是比较主流的HFT业务。而正是因为做市商这种和所有人做对收盘的业务模式,使得大部分交易都是通过做市商的参与来完成的,也就不难理解为什么70%的交易都是由HFT(做市商)来完成的了。&br&&br&&br&&i&高频交易是通过作弊抢其他人的钱吗?&/i&&br&&br&首先以上两种业务可以很清楚的看出,没有任何作弊空间。简单的说,HFT的竞争对手一定是另一个HFT。&br&&br&那么HFT有那么多速度优势,跟交易所搅基(co-location),系统延迟搞到微秒级,他一定比其他人更先看到市场数据,为什么不能利用这个作弊?&br&&img src=&/fbffa32d99df_b.jpg& data-rawwidth=&636& data-rawheight=&436& class=&origin_image zh-lightbox-thumb& width=&636& data-original=&/fbffa32d99df_r.jpg&&难道不能这样吗?&br&&br&回答这个问题,一定要明确的是:&b&所有交易都是在交易所内部完成的。&/b&没有人能在别人的交易指令传入交易所之前就探测到(你说网络抓包?好吧你赢了,祝你好运。)。从理论上就根本没有任何作弊的可能(别拿交易所当傻瓜)。HFT的速度优势是指,当交易所完成一笔交易,在通知所有交易者的时候,HFT因为在通信线路的上游,所以会比别人先看到这条&b&交易确认信息&/b&。这个时候他可能会根据自己对这条信息的理解以及业务需求,增加或者撤掉自己的一些单子,但这些都是完全正常的交易操作,不存在任何恶意,并且由于这条信息是发送给&b&所有人&/b&的,任何人都会对此做出解读和反应,&b&但只有那些在同一个时间粒度上工作的交易者之间才可能存在竞争&/b&,下面再解释这个问题。而对于最初这条交易的发起者来说,因为交易已经完成,所以不存在任何被攻击的可能。&br&&img src=&/3a0da29a08a037dc994dd7b1f83e610c_b.jpg& data-rawwidth=&454& data-rawheight=&303& class=&origin_image zh-lightbox-thumb& width=&454& data-original=&/3a0da29a08a037dc994dd7b1f83e610c_r.jpg&&&br&上面说到,HFT的优势,在于他可以第一时间对交易所放出的交易确认信息做出反应。但是这个信息如果没有对手盘就毫无价值。而一个接受信息慢,且反应时间在毫秒级以上的机构用户,怎么可能参与进来做HFT的对手盘呢?这句话可能还是不太容易理解,我举一个夸张的例子:如果你的操作频率以十年为最小单位,买进一支股票以后十年不做任何操作,很显然没有任何人在这10年内可以找你做对手盘,这种情况下所有其他交易者对你来说都是HFT,你却不会担心他们对你有什么影响。例子虽然夸张,但HFT和机构用户之间的差距其实就是这么大,他们生活在不同的世界里。他们的业务本来就不冲突,且根本就不是一个层面上的东西。比较HFT和机构用户,就好像比较百米速跑和马拉松运动员的速度一样,毫无意义。&br&&img src=&/07bb8178ddf9e73393feae_b.jpg& data-rawwidth=&468& data-rawheight=&440& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&/07bb8178ddf9e73393feae_r.jpg&&&br&对于机构用户来说,需要理解电子交易市场的规则。有人用那种,看到屏幕上有一个价格,点了鼠标,结果发现成交价不一样,来说明是背后有人捣鬼,这属于脑袋进水的逻辑。特别需要注意的是市价单(market order)本来就是不保证成交价的,指令发给交易所,交易所根据当时的情况,算出是什么价就给你什么价,这没什么好委屈的。如果想要确保价格,请使用限价单(limit order),保证成交价格,但是不保证时间。这两种单是所有人都可以使用的,没有任何不公平可言。&br&&br&人类,应该做电脑的主人,而不要这样:&br&&img src=&/3d5e5ef0c3_b.jpg& data-rawwidth=&620& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&620& data-original=&/3d5e5ef0c3_r.jpg&&&br&最后说说HFT可能存在的问题。Flash crash是真实发生过的,也是最大的隐患。当一个市场上70%的交易都是HFT完成的时候,我们必须要能对HFT的系统有信心。这就需要HFT的开发流程标准化,接受开发过程的评审,有严格的测试体系。几个技术宅关在小黑屋里鼓捣出来的东西没人敢拍胸脯保证不会死机。而这一点目前看的确是比较差的,需要尽快规范起来。这才是公众需要关注的重点。&br&&br&==========&br&参考:&br&美国证券交易委员会(SEC)的报告 Concept Release on Equity Market Structure:&br&&a href=&///?target=http%3A//www.sec.gov/rules/concept/58.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&sec.gov/rules/concept/2&/span&&span class=&invisible&&010/34-61358.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
“高频交易”是一个挺差劲的名字。按照字面意思,任何能够以较高频率进行交易的系统都可以叫“高频交易系统”。比如说你用VBA写个小程序,连上券商给你的接口,也完全可以按毫秒级进行交易,你也可以说自己开发了一个“高频交易系统”。 不过,按照现在市面…
首先我想说,这至少是一篇不合格的新闻报道,概念混淆之多简直不忍直视。&br&&blockquote&伊世顿账户组通过高频程序化交易软件自动批量下单、快速下单,申报价格明显偏离市场最新价格,实现包括自买自卖(成交量达8110手、113亿元人民币)在内的大量交易,利用保证金杠杆比例等交易规则,以较小的资金投入反复开仓、平仓,使盈利在短期内快速放大,非法获利高达20多亿元人民币。&/blockquote&&br&“通过高频程序化交易软件自动批量下单、快速下单”,单从字面上看,不知道这个行为本身哪一点犯法,然后在一段“定罪”的文字里,用这句话开篇,真是诛的一手好心。&br&&br&&申报价格明显偏离市场最新价格&,这段话初读十分匪夷所思,所谓申报价格,大概是指报限价单,是一种不保证成交的委托单,人家觉得市场价格不合理,报单偏离市场价格又有什么问题呢?往下看,才明白:&br&&br&&blockquote&该公司账户组……成交价格与市场行情的偏离度显著高于其他程序化交易者&br&&/blockquote&&br&如果说的并不是“申报价格”,而是“成交价格”,那显然是很有问题的。但是逻辑上,下一个疑点就是:为什么能在偏离市场行情的价格上成交?要知道“市场行情”本身指的就是成交价格,你总不能说市场行情偏离了市场行情吧?&br&&br&看到这真的很为文章作者理解能力和文笔捉急。那我们就脑补一下,这个“违法行为”到底在哪里可能出问题。&br&&br&首先我们要知道一个背景知识,即中国期货市场上的“市场行情”,一般而言指的是交易所每500毫秒一次发送的市场快照及上次成交情况。这个“行情”数据本身就是一个阉割过的产物,有大量的委托单(Order Book)变化情况,以及成交信息是被过滤掉的,除交易所自身外,大家都收不到这些信息。文中所指的“市场行情”,实际上应该就是指这每500毫秒一次的“上次成交”价格。但是因为500毫秒内实际上发生的成交往往多于一次,那么那些被交易所人为过滤掉,没有发出来的成交,它们的价格确实很有可能偏离被作为“市场行情”的“500毫秒中最后一次成交的价格”。&br&&br&好了,有了这个背景知识,我们来看问题可能出在哪里。“成交价格与市场行情的偏离度显著高于其他程序化交易者”,这段话显然是在说,这家公司的成交价格的确和一般的程序化交易者有所不同,为什么会出现这种情况,以及为什么它们要这么做呢?沿着原文往下看:&br&&br&&blockquote&今年6月初至7月初,证券期货市场大幅波动,伊世顿公司在交易沪深300、中证500、上证50等股指期货合约过程中,卖出开仓、买入开仓量在全市场中位居前列,该公司账户组平均下单速度达每0.03秒一笔,一秒内最多下单31笔,且成交价格与市场行情的偏离度显著高于其他程序化交易者。以6月26日的中证500主力合约为例,该公司账户组的卖开量占市场总卖出量30%以上的次数达400余次;以秒为单位计算,伊世顿账户组的卖开成交量在全市场中位列第一的次数为1200余次;其卖开成交价格与市场行情的偏离度为当日程序化交易者前5名平均值的2倍多。&br&&/blockquote&&br&从这段可以看出,这家公司的交易量非同一般,这一点的确非常可疑。再结合之前所说的“实现包括自买自卖(成交量达8110手、113亿元人民币)在内的大量交易”,我大概可以猜测,这个“成交价格与市场行情的偏离度显著高于其他程序化交易者”,实际上很可能是通过大量的自成交实现的。&br&&br&我们知道,大家手里都只有500毫秒更新一次的市场数据,那么事实上500毫秒内的市场是什么情况,完全是一个黑盒,但这段时间内,市场上又的的确确在发生着一些事情。你在500毫秒内开出一张买单,理论上没有人会在下一次数据更新前看到这张单,所以当然不会存在“因为看到了一张买单而主动愿意成交”的对手盘,在这种情况下,这张单会不会被成交,完全是一个随机事件。这实际上就是目前国内大部分交易者所面临的困境:市场行情数据太不给力了!&br&&br&但是,如果考虑到自成交的应用,这种情况事实上又是可以操作的。市场上的确不存在“因为看到了一张买单而主动愿意成交”的对手盘,但是还确实就有一个人可以做“因为知道一张买单的存在而主动愿意成交”的对手盘,那个人就是你自己!&br&&br&&b&这样想,整个逻辑就比较清晰了。该策略通过高频挂单,“该公司账户组平均下单速度达每0.03秒一笔,一秒内最多下单31笔”,再加上自成交,那么实际上就是通过大量自买自卖行为,人为的在500毫秒内制造出比官方“市场行情”更多的成交数据。&/b&&br&&br&更多成交数据的价值在哪里?就在于有了具体的成交,你就可以知道市场的深度(Order Book Depth),比别人多知道这一点信息,自然就有办法设计更好的交易策略。&br&&br&----------&br&&br&最后来回答这个问题,这种交易行为“犯法”吗?我并不是法律从业者,不能判定“犯法”与否,但是可以肯定的是,自成交肯定是违反交易所规定的恶劣行为。通过自成交来制作盈利的交易策略,至少我们可以说是一种作弊行为。&br&&br&再加上其他人所说的,通过绕过期货公司柜台系统取得直连交易所的通道,开多个交易账户规避自成交审查等,都是明白无误的违规行为。&br&&br&----------&br&&br&最后一点思考,在国内市场上,仅仅通过这一点技术作弊手段,竟然可以在短时间内创造如此的暴利,这到底说明了什么,值得大家深思。&br&&br&如果没有更有力的证据证明伊士顿的“操纵市场”行为,那么这个暴利策略只能解读为国内的市场博弈程度确实太弱了,弱到两个老外进来做纯技术的高频交易都能翻天覆地。如果这就是事实,那我们是不是更应该重视自身技术水平的提高?量化、高频交易不同于主观类型的交易,一切都可以用数据和计算说话,如果我们的市场上有更优质的数据,更详细的交易记录披露,又何至于留下如此巨大的投机空间?&br&&br&高精度交易数据,高速下单系统,这些在成熟市场上都是早就普及的技术,并不是什么神奇魔法(数据:&a href=&/question//answer/& class=&internal&&如果有所有投资者的所有股票委托、交易、持股数据,都有哪些有意思的测算内容? - 袁浩瀚的回答&/a&,速度:&a href=&/question//answer/& class=&internal&&高频交易软硬件是怎么架构的?&/a&)。无论从任何角度看,技术发展一定会带领市场发展到这个程度,就像以前人们出门只能靠腿,现在却有了飞机高铁一样。真正导致不公平的,恰恰是在技术成熟时通过政策限制不向普通人开放这些优质服务,那才会导致因为种种机缘获得这些服务的人取得压倒性的优势。&br&&br&希望有一天我们的国内量化选手能不再只是在这收到种种限制的市场中挣扎求生,而是可以练出神功,成为国际市场上真正的高手。那时也不用再炒作这种“外资神秘黑科技在中国市场呼风唤雨”的新闻。我们也能在镜子里看到没有受过欺负的脸,不好么?
首先我想说,这至少是一篇不合格的新闻报道,概念混淆之多简直不忍直视。 伊世顿账户组通过高频程序化交易软件自动批量下单、快速下单,申报价格明显偏离市场最新价格,实现包括自买自卖(成交量达8110手、113亿元人民币)在内的大量交易,利用保证金杠杆比…
谢邀。高频交易我非此中高手,故问题不敢贸然回答,积蓄多时,终敢开口,所以此处作长文聊聊高频交易,请慢读。&br&&br&有人的地方就有江湖,有江湖的地方就有流派。在投资界,若巴菲特、彼特林奇一宗是九阳真经,武林正道,以绵绵不绝的内力和朴实无华的招式号令天下,那浑水、香橼之流做空公司,则是武林异类,苦修吸星大法,劫人钱财于做空之际,人见人惧,却无法忽视之。在这些名门恶衙之外,还有一群高频密宗,着实高筑墙(或许永远金融圈最强的设备)、广积粮(闷声发大财)、缓称王(低调无名),世人罕知其存在却不知自己单单交易或许都曾经过其系统流过。&br&&br&空谈其设备如何之强、钱财如何鼎盛、人物多么桀骜都无法触及高频交易的本质——为何要做高频交易,不谈本质光谈现象,很容易沦为Wolf of Wall Street这种娱乐圈为土豪立传的软文。&br&&br&高频交易分支庞杂,我仅能在此梳理一条线,但是其本质无法离开市场微结构(Market Micro-Structure)这一核心问题。一个高频交易者对于市场微结构的痴迷,就好比辩护律师对于法律条文中细节的痴迷,或者政治结构套利者对于社会制度缺陷的痴迷——一个漏洞可以造就一轮财富或权力。&br&&br&从中国开始接触证券市场的朋友很难对市场微结构有天生的敏感,比如我,因为中国市场是天生自上而下的市场,证监会如同上帝,上帝说要有个市场,于是便有了市场,证监会说要有涨跌停板,于是有了涨跌停板,证监会说要有t+1,于是有了t+1的现行制度。但是美国的市场恰恰相反,是自下而上的市场,先有离散的经纪人,大家各自帮助客户做交易,混乱到了一定程度,大佬牵头,聚在梧桐树下,约法数条,才有了今天华尔街和纽交所的雏形——这世间本无交易所,交易的人多了,才有了交易所。因此这种自下而上的系统天生是开放式和激进了,是各方利益均衡的产物,难以避免的会出现各种漏洞——最简单的形式莫过于另一派人各种不服,另开山头设立交易所交易相同的证券,于是两个交易所之间的价差就出现了。而中国,在现行体制下,很难出现另一个交易所交易同样的证券——这两种体系的差异源自于其基因,不需要区分高下,各有好处,而我个人认为中国现行体系是封闭金融体系保守风格的最佳选择。&br&&br&高频交易的雏形是discretionary arbitrage,即显式套利,或者咱们更加接地气的说——搬砖。最简单的例子就是之前比特币人民币交易所的价格比美元交易所高50%以上,众土豪纷纷出动,在美国低价全仓买入,传送回国,然后再高价卖出。这种策略一点也不低端,在美国70-90年代,由于交易所林立,如芝加哥股票交易所、太平洋股票期权交易所、费城交易所、纽约交易所等等,同一个主体为了融资方便,可能多处发行,价差经常出现。90年代以前由于互联网技术不普及,很多个人交易员可以简单的在多个交易所之间搬砖,人工“高频”交易。上一代的geek们也是极富创造力,开发出了机器手等“自动化”下单系统(不是程序,是真的机械手),实现那个时代的高频交易。&br&&br&但是如果你关注市场微结构,你会发现有些价差是时间难以消除的——比如同一个股票在一个交易所永远高于另一个交易所,最简单的例子就是A、H股的价差。这些价差背后都有深层次的原因——比如A股买入后是无法在HK市场卖出的。或者比如当时在美国,A市场可能交易费用高、交易量低,那么其价格可能高于B市场,以补充做市商的做市的难度(也可能相反)。这种情况下简单的搬砖就不行了,你需要人为的修正价差——或者去动态套利——做统计套利,这里面学问很深,后面再触及。&br&&br&回到美国市场,在87年和99年发生了几件大事。首先是87年10月股市崩盘了一天,这一天创造了指数的历史跌幅,也让交易所开始大量引入电子化。第二是99年开始全国推行Consolidated Order Book,把所有交易所的限价单并到一个表里面。这两件事情极大地重塑了搬砖行业,也使得高频交易从可选成为了必须。电子化的引入造成了一些精通计算机的经纪人开始尝试用机器做自动化交易,自然推高了行业的交易速度;而Consolidated Order Book使得你很难再靠肉身显式的去跨交易所套利了——因为一看去全国的交易所都并成一个交易所了。&br&&br&我相信做中国股指期货套利的从业者也经历了类似的过程,早期的当期期货和股指的差距经常到40元左右,而现在日内高点可能在20元左右——而且昙花一现,也就是说你要抢到那个价差20元的单,你需要有速度的优势了。因此我听说大量的高频交易开始被应用在股指期货上了。&br&&br&也正是在年这段时间,大量的高频交易传奇公司开始出现,最有名的莫过于Getco、Knight、Jane Street之流了。这里插一个很有意思的问题——同时下单和电子游戏程序员。Getco最初成立时,极力招募的不是华尔街的金融奇才,而是在芝加哥各地的顶级电子游戏程序员。因为最初的高频交易最关键的就是异步下单的问题——看似简单,其实学问很深:现在假设在交易所A和B有价差,你需要同时下一个卖单和买单去赚取这个差价,你怎么下单?&br&&br&最简单办法就是串行下单,我先去交易所A成交,然后根据成交数量去交易所B下同样数量的单,如果B机会已经消失,则追单保证仓位平掉。这样明显不利于捕捉稍纵即逝的机会。那如果同时并行下单呢?同时下单最大的问题就是,老天才知道最后两边各会成交多少,比如A、B各下一个单位的单,A成交了0.8,B成交了0.7,这个0.1的差额怎么办?在这个方面,电子游戏程序员比华尔街的金融家清楚多了——在网络游戏中,如果你和别人PK,都只剩1点血了,都发出了攻击的指令,谁该死?在这方面,每天与网络通信和并行数据交换打交道的电子游戏程序员有着天生的优势。&br&&br&这个年代,不需要策略也可以赚取可观的利润,我们姑且称此中方法为Pure Arbitrage (纯套利),但是门槛低的游戏,玩家就多,最后利润比街头开小卖部还低。于是乎就开始有了统计套利的介入,我相信这也是题主提问的原动机。统计套利的高频交易和纯套利最大的差异是统计套利允许在信号确认的情况下,保持一段时间和一定水平的活跃仓位;而最大的相似之处是利用低频交易者对细微价格的不敏感和报价速度的低下。&br&&br&还是用一个例子来说明吧,比如你在高频交易做微软公司的股票的统计套利,你的模型告诉你指数、苹果的股票还有谷歌的股票这三个因子对于微软股票的短期价格波动具有极强的判定力(统计显著),那么你在这三个因子判定上涨时,你发现因子预测价格高于当前盘口(当前盘口更新不及时),你买入微软的股票却不立刻做空三个因子的资产组合,而是等待一段时间再做出对冲、平仓的行为。这是个很简单的例子,但需要的模型就不再是简单的两个交易所的价格了——你需要一个经常拟合的线性模型和即刻的置信度估计。类似的是期货中间的当期合约与远期合约的套利。这种时候,就有些稍复杂的模型介入了。在模型的选择上,我觉得最终的规律都是选择当前环境下可行的最简单的,从统计上来说,因子越多模型的稳定性越差,而投资本身也是以大道至简为通行规律。&br&&br&说到这里,你可以发现高频交易的本质是利用技术的优势去捕捉暂时的市场错误——或者用自恋的话说,我在帮助市场先生改正错误。如果不以此为本心而为了高频而高频,那其实是本末倒置的——我个人觉得很多长线投资的思路强行移植到高频交易中,是很可能制造悲剧的。&br&&br&后期在美国高频交易的发展中,另外两类产品成为主流——期权自动化做市(Option Automatic Market Making)和可转债套利(Convertible Bond Arbitrage),其实原理无二,你把握好了本质,做法都很类似,只是原来你只需要对冲一次项(first order)的价格波动,而现在你可能需要对冲的是波动性风险(Volatility risk)或者信贷违约风险了(Credit Risk)。Jane Street现在大量就在进行期权自动化做市的交易,而Citadel则是在Ken Griffin的带领下从哈佛的宿舍里面靠着可转债套利发家直至今天的巨头。这里不一一展开了,有心者一定会自己去探个究竟。&br&&br&到今天,其实美国各大市场中高频交易都到了很尖端的水平——colocate服务器,模型越来越复杂而且程序越来越先进。而很多公司都在做着类似的交易,因此我个人感觉,其商业模式已经类似于比特币的挖矿了——大家都在拼命争取获得下一个block(交易)的奖励,而最终获得者好似于中签一般。这个领域无论是DE Shaw这类巨头还是曼哈顿下城新兴的众多prop trading firm都感觉赚钱不易了。不过在国内,随着市场深度(产品类型、数量、流动性)增加,反而出现了很多套利机会,而今年关于期权正式面市的消息也是给了高频交易者很多期待。这是非常好的事情,如同电影Margin Call里面说到的——赚钱无非三种方式:be the first,be smarter或cheat。在中国,cheat与双轨制的故事,我相信大家都很熟悉,而be the first成就了中国第一代因为主动或被动下海的创业家们,现在慢慢高频交易者这块smart的群体可以在中国金融市场施展,其实是绝对的福音。&br&&br&匆拓千字,若有谬误,请海涵。
谢邀。高频交易我非此中高手,故问题不敢贸然回答,积蓄多时,终敢开口,所以此处作长文聊聊高频交易,请慢读。 有人的地方就有江湖,有江湖的地方就有流派。在投资界,若巴菲特、彼特林奇一宗是九阳真经,武林正道,以绵绵不绝的内力和朴实无华的招式号令…
&p&我们的程序的响应时间是10us(从收到行情到发出报单的响应时间),但是ping期货公司的交易前置机需要大约30us【这个数值会变化,见注释4】,所以网络延时占据了大量时间。&/p&&br&&p&我所有的性能测试都是在一台DELL r630机器上运行的,这台机器有2个NUMA结点,CPU型号是E5 .4GHz 6核)。所有的测试都是用rdtsc指令来测量时间,Intel官网上有一篇pdf文档[Gabriele Paoloni, 2010],讲述了如何精准地测量时间(要用cpuid来同步)。我自己做的性能测试的结果会写成“100(sd20)ns”的形式,代表平均值是100ns,标准差是20ns。我在算均值和标准差的时候会去掉最大的0.1%的数据再算,因为那些数据似乎并不是程序延时,而是cpu被调度执行别的任务了【原因见注释3】。有些性能测试在网上有现成的测试结果,我就没自己测,直接拿来用了,但是以后我会重新在我的机器上测一遍。&/p&&br&&p&一些我们比较注意的点:&/p&&p&&b&1.限制动态分配内存&/b&&/p&&p&&b&相关的知识背景:&/b&glibc默认的malloc背后有复杂的算法,当堆空间不足时会调用sbrk(),当分配内存很大时会调用mmap(),这些都是系统调用,似乎会比较慢,而且新分配的内存被first touch时也要过很久才能准备好。&/p&&p&&b&可取的做法:&/b&尽量使用vector或者array(初始化时分配足够的空间,之后每次使用都从里面取出来用)。尽量使用内存池。如果需要二叉树或者哈希表,尽量使用侵入式容器(boost::intrusive)。&/p&&p&&b&性能测试:&/b&我测试的分配尺寸有64和8128两种。首先,我测试了glibc malloc的性能,分配64字节耗时98(sd247)ns,分配8128字节需要耗时1485(sd471)ns。其次,我写了一个多进程安全的内存池,分配64字节需要29(sd15)ns,分配8128字节需要22(sd12)ns。【内存池的细节见注释6】。最后,我单独测试了sbrk()和first touch的性能,但是数据不记得了。&/p&&br&&p&&b&2.使用轮询,尽量避免阻塞&/b&&/p&&p&&b&相关的知识背景:&/b&上下文切换是非常耗时的,其中固定的消耗包括(cpu流水线被冲掉、各种寄存器需要被保存和恢复、内核中的调度算法要被执行),此外,缓存很有可能出现大量miss,这属于不固定的时间消耗。&/p&&p&&b&可取的做法:&/b&使用带有内核bypass功能的网卡。每个进程或者线程都独占一个cpu核【isolcpus和irqbalance的细节见注释3】,并且不停地轮询,用以保证快速响应。尽量避免任何可能导致阻塞的事件(如mutex),某些注定很慢的活动(比如把log写到磁盘上)应该被独立出来放到别的cpu上,不能影响主线程。&/p&&p&&b&性能测试:&/b&网上有一篇博客[tsunanet, 2010]测试了mode switch、thread switch、process switch的耗时,但是这篇文章太早了,以后我要用我的新cpu重新测一下。这篇博客里面,系统调用只需要&100ns,线程/进程切换需要&1us(不包括缓存miss的时间)。&/p&&br&&p&&b&3.使用共享内存作为唯一的IPC机制&/b&&/p&&p&&b&相关的知识背景:&/b&共享内存只有在初始化的时候有一些系统调用,之后就可以像访问正常内存一样使用了。其他IPC机制(管道、消息队列、套接字)则是每次传输数据时都有系统调用,并且每次传输的数据都经历多次拷贝。因此共享内存是最快的IPC机制。&/p&&p&&b&可取的做法:&/b&使用共享内存作为唯一的IPC机制。当然,可能需要手动实现一些东西来保证共享的数据在多进程下是安全,我们是自己实现了无锁内存池、无锁队列和顺序锁【关于seqlock的疑点见注释1】。&/p&&p&&b&性能测试:&/b&我使用了boost中的Interprocess库和Lockfree库,在共享内存上建立了一个spsc队列,然后用这个队列来传送数据,代码参考了stackoverflow上的一个答案[sehe, 2014]。我传送的数据是一个8字节整数,延时是153(sd61)ns。至于其他IPC机制,我在[cambridge, 2016]看到了一些性能测试结果,通常是要几微秒到几十微秒不等。&/p&&br&&p&&b&4.传递消息时使用无锁队列&/b&&/p&&p&&b&相关的知识背景:&/b&我只关注基于数组的无锁队列,其中:spsc队列是wait-free的,不论是入队出队都可以在确定的步数之内完成,而且实现时只需要基本的原子操作【为什么这很重要见注释7】;mpmc队列的实现方式则多种多样,但都会稍微慢一点,因为它们需要用一些比较重的原子操作(CAS或者FAA),而且有时它们需要等待一段不确定的时间直到另一个线程完成相应操作;另外,还有一种multi-observer的『广播队列』,多个读者可以收到同一条消息广播,这种队列也有sp和mp类型的,可以检查或者不检查overwrite;最后,还有一种队列允许存储不定长的消息。&/p&&p&&b&可取的做法:&/b&总的来说,应该避免使用mp类型的队列,举例:如果要用mpsc队列,可以使用多个spsc来达成目的,并不需要mp队列;同理,如果是消息广播,也可以使用多个sp队列来取代一个mp队列;如果广播时observer只想订阅一部分消息,那么可以用多个spsc+有计数功能的内存池【具体做法见注释2】;如果要求多个观察者看到多个生产者的消息,并且顺序一致,那只能用mp队列了。总结一下,mp类型的队列应该尽量避免,因为当多个生产者同时抢占队列的时候,延时会线性增长。&/p&&p&&b&性能测试:&/b&我写了一个mp类型的广播队列,传输的数据是8字节int,当只有一个生产者时,传输的延时是105(sd26)ns。增加观察者会使延时略微变大,增加生产者会使延时急剧变大(我用rdtsc指令控制不同生产者同时发送消息)。对于这个队列来说,它的延时只略高于跨核可视延时【测试结果见注释8】,所以应该算是不错了。&/p&&br&&p&&b&5.考虑缓存对速度的影响&/b&&/p&&p&&b&相关的背景知识:&/b&现在的机器内存是十分充足的,但是缓存还是很小,因此所有节省内存的技巧都还有用武之地。&/p&&p&&b&可取的做法:&/b&尽量让可能被同时使用的数据挨在一起;减少指针链接(比如用array取代vector,因为链接指向的地方可能不在缓存里);尽量节省内存(比如用unique_ptr&Data[]&取代vector&Data&,比如成员变量按照从大到小排序,比如能用int8的地方就不用int16);指定cpu affinity时考虑LLC缓存(同核的两个超线程是共享L1,同cpu的两个核是共享L3,不同NUMA核是通过QPI总线);会被多个核同时读写的数据按照缓存行对齐(避免false sharing)。&/p&&br&&p&【注释1】:有一篇惠普的论文[Hans-J.Boehm, 2012]大致叙述了顺序锁的实现方法,但是那里面有两点让我感到困惑。一是需要用到thread_fence,这在某些cpu上可能会影响性能(x86似乎没影响);二是被保护的内容也必须是原子变量(可以是多个原子变量,所以被保护的内容可以很长)。但这是我见过的唯一一个符合C++标准的SeqLock的实现。&/p&&p&【注释2】:如果有M个生产者要发消息给N个观察者,可以建M*N个spsc队列和M个内存池,观察者只能读内存池里的数据,只有对应的那一个生产者可以修改内存池。我感觉这样应该会更快,但我没测过。&/p&&p&【注释3】:isolcpus可以隔离出一些cpu,避免其他线程被调度到这些cpu上执行。此外,设置irq affinity可以让一些cpu尽量避免响应中断,但在/proc/interrupts里面仍然有一些项目是避免不了的,而cpu处理中断时,用户程序会有一段时间(有时高达几十微秒)无法响应,我们没法解决这个问题。&/p&&p&【注释4】:在不同的时间点,ping的结果会有很大差异。交易时间段内ping出来的结果是30us,其它时间段ping出来的结果可能是几百微秒。我不知道这是什么原因,可能是期货公司为了省电关掉了某些东西?&/p&&p&【注释6】:我们要在共享内存上使用内存池,所以不得不自己写一个。我写的内存池只能分配固定尺寸的内存块,但是用户可以建立好几个内存池,用来分配不同的尺寸。实现的过程中有两个要点。一是用无锁链表来保存空闲的内存块;二是每个线程内部有一个缓冲区,所以真正取内存块的时候是没有CAS操作的。&/p&&p&【注释7】:在Intel x86的cpu上,如果C++中的内存顺序只用了acquire和release,那么编译出来的汇编代码里面不会有任何内存栅栏指令;如果同时也没有RMW(读-改-写)指令的话,无锁的代码编译出来就会像是普通的代码一样了。事实上,spsc队列的延时几乎等于跨核可视延时。&/p&&p&【注释8】:跨核可视延时:对于一个共享变量来说,如果有一个核上面的进程或者线程修改了这个变量,另一个核需要过一段时间才能看到这个修改,这段时间被称作跨核可视延时。我不确定在这段时间内,第二个核是会看到旧的数据还是这条指令会执行很久。在我的机器上,对于同一个cpu上的不同核心,这个值是96(sd14)ns。另外,对于同一个核心上的不同超线程,这个值应该会更小;对于同一台机器上的不同cpu,这个值应该会更大。&/p&&br&&p&[cambridge, 2016]:&a href=&///?target=http%3A//www.cl.cam.ac.uk/research/srg/netos/projects/ipc-bench/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Computer Laboratory&i class=&icon-external&&&/i&&/a&&/p&&p&[Gabriele Paoloni, 2010]:&a href=&///?target=http%3A///content/www/us/en/embedded/training/ia-32-ia-64-benchmark-code-execution-paper.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Code Execution Times: IA-32/IA-64 Instruction Set Architecture&i class=&icon-external&&&/i&&/a&&/p&&p&[Hans-J.Boehm, 2012]:&a href=&///?target=http%3A//www./techreports/2012/HPL-2012-68.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/techreports/&/span&&span class=&invisible&&2012/HPL-2012-68.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&[sehe, 2014]:&a href=&///?target=http%3A///a/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Shared-memory IPC synchronization (lock-free)&i class=&icon-external&&&/i&&/a&&/p&&p&[tsunanet, 2010]:&a href=&///?target=http%3A//blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.tsunanet.net/2010/&/span&&span class=&invisible&&11/how-long-does-it-take-to-make-context.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&
我们的程序的响应时间是10us(从收到行情到发出报单的响应时间),但是ping期货公司的交易前置机需要大约30us【这个数值会变化,见注释4】,所以网络延时占据了大量时间。 我所有的性能测试都是在一台DELL r630机器上运行的,这台机器有2个NUMA结点,CPU型…
已被警告不要再评论会里的事,但本题目前的 &a href=&/question//answer/& class=&internal&&最高票答案&/a& 真心把我逗乐了:&blockquote&你知不知道被查的那几个账号的一日之内下单超过10个亿,其中99.8%的单子在几毫秒内被撤回了,再做空股指期货,这就是恶意操纵股价。&/blockquote&&br&中国的行情发布方式有别于海外真正的 by tick,采用的是比较粗颗粒的行情切片,具体而言:中金所产品(股指期货)500毫秒推送一次,上交所3秒推送一次,深交所从8秒、5秒、现在也升级到3秒推送一次。且不论答主的&99.8%&是如何测算出来的,如果按此说法在几毫秒内频繁撤单,那么这一次“恶意操纵”也太失败了:写了这么多程序去制造假象,但散户们都不是没被骗到,而是根本就没有看到!&br&这对于传说中的“庄家”是一种赤裸裸的羞辱。试想你在完成内射之后听到女朋友问:刚才进去了?&br&&br&很明显这位答主对于程序化交易并不专业,但却敢于张口就是“恶意操纵股价”,这是中国证券市场面临的 &b&比程序化交易更可怕的敌人!&/b&此类言论在群体中得到广泛赞同和传播,往往不是因为其正确性,而是因为其满足了群体的心理需求。所以我只能同意该答主的第一句话:“知乎的证券板块令人捉急啊。”&br&&br&关于上证所提到的反复报撤单的问题,被查处的盈融达是一个很典型的代表。&br&为了提高撮合效率,减少市场冲击成本,程序化交易通常会采用 limit order 而非 market order,这就导致有可能无法即时成交,需要追单(撤单重报)。即使是 market order 也存在成交失败的情况,所以程序必须检查交易所的订单回执,决定是否重新报单。这在期现套利中尤其重要,因为单边成交失败会导致多空头寸不匹配,暴露更多的市场风险。但目前国内的量化对冲基金/私募基金水平普遍低下,比如说盈融达,他们并没有考虑到跌停板上的流动性问题,所以程序判断为自己撮合失败,不停撤单重下,从而在跌停板上陷入死循环。这里我要强调两点:1)跌停板上的成交原则是时间优先,所以撤单重报对于当事人而言没有半点好处;2)这样的频繁撤单虽然愚蠢,被同行们无情耻笑,但对于市场并无实质性影响,不可能造成恐慌。&br&&br&关于股指期货的高频交易,中金所的两条新规(增加单笔申报费,限制单日报撤单次数)更加显得简单粗暴。举个例子,如果我准备下单1亿,我会通过交易算法进行拆单,比如拆成一百份,一点一点地进入市场,以免造成较大的冲击,对我对市场都不好。但现在的新规从理论上讲,让我更有动机以更大的块头砸进去,因为这样申报费更低,也不会因为报单次数过多而被请去喝茶。&br&另外一方面,此举对于试图打击的 momentum 类策略影响不大,但对于高频跨期套利(降低波动性)和做市策略(提供流动性)却是毁灭性的。简单地说,跨期套利就是在近月走高、远月走低的时候,同时做空近月、做多远月,从而保证各合约走势和价差在合理区间之内。试问这样的策略如何恶意操纵市场呢?所以我之前回答了:&a href=&/question//answer/& class=&internal&&股指期货八月新规会对市场(尤其是微观结构)造成什么影响? &/a&这对于市场微观结构而言,反而不利于提高流动性、降低波动性的初衷。&br&&br&总而言之,高频交易应该是以技术和算法为驱动力,可以让市场更加高效完善的合法合规的交易模式。&b&高频交易中真正的蠹虫,是那些勾结了期货公司和交易所内鬼,在行情或交易前置上做过手脚的老千!&/b&&br&&br&最后回到老问题:监管层为什么宁可这样错杀三千?&br&&br&1)侠之大者,为国背锅。新兴的程序化交易和高频交易就相当于证监会的临时工,必须为此次股灾承担责任。不可否认,程序化交易(尤其是趋势追踪类策略)存在集中止损的问题,但主观交易同样存在类似的问题,并且目前的监管举措也不是针对这个问题。从 T+0 改到 T+1 是在以破坏生产力为代价解决燃眉之急;如果只从安全的角度考虑,T+10 更安全。&br&&br&值得一提的是,这并不代表监管层都是傻逼。你必须承认他们在政治上甚至专业上是比绝大多数人要出色的。至少这些举措虽然从专业的角度看并不对症,但从效果上来说,杀死高频交易的隔天就大涨了对不对?因为出离愤怒的股民们才是真正的傻逼啊!我根本不需要救市,我只需要找到愤怒点,让傻逼们认为我在救市,足矣。为了保护你们的利益,我已经连续杀死了恶意做空,恶意做多,恶意撤单的反革命分子。你们觉得我好不好啊?&br&&br&2)没有永远的朋友,只有永远的利益。有人说得很好:当你看到路上其他人捡到钱,但却无法利益均沾,你的第一反应必然是:路是用来走的,捡钱的通通抓起来!&br&曾经有交易所的前任技术负责人(业内人士应该知道我说的是谁)涉嫌在高频交易中后门作弊长期牟利,并且被自己的工程师多次实名举报,你看监管层最后是怎么处理的?&br&&br&站在利益的角度,很容易理解为什么总有力量在百般阻挠金融改革,为什么IPO从审批制、核准制改革为注册制会引起这么激烈的火并,为什么监管层在打击创新型交易模式的时候不遗余力。然而从华尔街的进程我们不难看到:程序化交易是历史的必然,就好像“互联网+”是很多实业发展的必然一样。未来的绝大多数交易指令都将由机器发出,中国式交易员(其实是下单员)只可能出现在历史博物馆中。&br&&br&以上
已被警告不要再评论会里的事,但本题目前的
真心把我逗乐了:你知不知道被查的那几个账号的一日之内下单超过10个亿,其中99.8%的单子在几毫秒内被撤回了,再做空股指期货,这就是恶意操纵股价。 中国的行情发布方式有别于海外真正的 by tick,采…
谢邀。只搞过 sell side,没搞过 buy side,只能算“实时交易”,算不上“高频交易”。工作以来一直在跟延迟做斗争,勉强可以说上几句。&br&&br&要控制和降低延迟,首先要能准确测量延迟,因此需要比较准的钟,每个机房配几个带GPS和/或原子钟primary standard的NTP服务器是少不了的。而且就算用了NTP,同一机房两台机器的时间也会有毫秒级的差异,计算延迟的时候,两台机器的时间戳不能直接相减,因为不在同一时钟域。解决办法是设法补偿这个时差。另外,不仅要测量平均延迟,更重要的是要测量并控制长尾延迟,即99百分位数或99.9百分位数的延迟,就算是sell side,系统偶尔慢一下被speculator利用了也是要亏钱的。&br&&br&普通的C++服务程序,内部延迟(从进程收到消息到进程发出消息)做到几百微秒(即亚毫秒级)是不需要特殊的努力的。没什么忌讳,该怎么写就怎么写,不犯低级错误就行。我很纳闷国内流传的写 C++ 服务程序时的那些“讲究”是怎么来的(而且还不是 latency critical 的服务程序)。如果瓶颈在CPU,那么最有效的优化方式是“强度消减”,即不在于怎么做得快,而在于怎么做得少。哪些可以不用做,哪些可以不提前做,哪些做一次就可以缓存起来用一阵子,这些都是值得考虑的。&br&&br&网络延迟分传输延迟和惯性延迟,通常局域网内以后者为主,广域网以前者为主。前者是传送1字节消息的基本延迟,大致跟距离成正比,千兆局域网单程是近百微秒,伦敦到纽约是几十毫秒。这个延迟受物理定律限制,优化办法是买更好的网络设备和租更短的线路(或者想办法把光速调大,据说 Jeff Dean 干过)。惯性延迟跟消息大小成正比,跟网络带宽成反比,千兆网TCP有效带宽按115MB/s估算,那么发送1150字节的消息从第1个字节离开本机网卡到第1150个字节离开本机网卡至少需要 10us,这是无法降低的,因此必要的话可以减小消息长度。举例来说,要发10k的消息,先花20us CPU时间,压缩到3k,接收端再花10us解压缩,一共“60us+传输延迟”,这比直接发送10k消息花“100us+传输延迟”要快一点点。(广域网是否也适用这个办法取决于带宽和延迟的大小,不难估算的。)&br&&br&延迟和吞吐量是矛盾的,通常吞吐量上去了延迟也会跟着飚上去,因此控制负载是控制延迟的重要手段。延迟跟吞吐量的关系通常是个U型曲线,吞吐量接近0的时候延迟反而比较高,因为系统比较“冷”;吞吐量上去一些,平均延迟会降到正常水平,这时系统是“温”的;吞吐量再上去一些,延迟缓慢上升,系统是“热”的;吞吐量过了某个临界点,延迟开始飙升,系统是“烫”的,还可能“冒烟”。因此要做的是把吞吐量控制在“温”和“热”的范围,不要“烫”,也不要太冷。系统启动之后要“预热”。&br&&br&延迟和资源使用率是矛盾的,做高吞吐的服务程序,恨不得把CPU和IO都跑满,资源都用完。而低延迟的服务程序的资源占用率通常低得可怜,让人认为闲着没干什么事,可以再“加码”,要抵住这种压力。就算系统到了前面说的“发烫”的程度,其资源使用率也远没有到 100%。实际上平时资源使用率低是为了准备应付突发请求,请求或消息一来就可以立刻得到处理,尽量少排队,“排队”就意味着等待,等待就意味着长延迟。消除等待是最直接有效的降低延迟的办法,靠的就是富裕的容量。有时候队列的长度也可以作为系统的性能指标,而不仅仅是CPU使用率和网络带宽使用率。另外,队列也可能是隐式的,比如操作系统和网络设备的网络输入输出 buffer 也算是队列。&br&&br&延迟和可靠传输也是矛盾的,TCP做到可靠传输的办法是超时重传,一旦发生重传,几百毫秒的延迟就搭进去了,因此保持网络随时畅通,避免拥塞也是控制延迟的必要手段。要注意不要让batch job抢serving job的带宽,比方说把服务器上的日志文件拷到备份存储,这件事不要在繁忙交易时段做。QoS也是办法;或者布两套网,每台机器两个网口,两个IP。&br&&br&最后,设法保证关键服务进程的资源充裕,避免侵占(主要是CPU和网络带宽)。比如把服务器的日志文件拷到别的机器会占用网络带宽,一个办法是慢速拷贝,写个程序,故意降低拷贝速度,每50毫秒拷贝50kB,这样用时间换带宽。还可以先压缩再拷贝,比如gzip压缩100MB的服务器日志文件需要1秒,在生产服务器上会短期占满1个core的CPU资源,可能造成延迟波动。可以考虑写个慢速压缩的程序,每100毫秒压缩100kB,花一分半钟压缩完100MB数据,分散了CPU资源使用,减少对延迟的影响。千万不要为了加快压缩速度,采用多线程并发的办法,这就喧宾夺主了。
谢邀。只搞过 sell side,没搞过 buy side,只能算“实时交易”,算不上“高频交易”。工作以来一直在跟延迟做斗争,勉强可以说上几句。 要控制和降低延迟,首先要能准确测量延迟,因此需要比较准的钟,每个机房配几个带GPS和/或原子钟primary standard的NT…
说来惭愧,&b&我在1982年就开始从事高频交易了,2次被抓。&/b&&br&&br&第1次被抓,是因为进行了棉花的高频交易。&br&1982年上海市场的棉花价格,和郑州市场长期存在价差。交易所出来的价格延迟,是500h,而且有段时间还丢包。&br&直到一天,我破解了行情前置和交易前置,背起2匹棉布,踏上直达列车,站到郑州,把交易延迟缩短为30h。&br&&b&直接在前置机交易,探测行情,也不用行情源了,那绝对飞速了。多账户30h的频率探测order book,我真特妈是个天才!&/b&&br&可惜刚下火车,就被纠察搜查,2匹棉布被充公,本人以投机倒把罪,扭送回沪,单位通报,点名批评。&br&&br&第2次被抓,是因为嘉盛 福汇的高频交易。&br&写了个程序,每200ms改变挂单位置。&br&24小时后,账户被封。&br&询问被封原因,答曰:服务器超载。&br&&br&从此我领悟了高频交易的精髓——&b&别猛干系统漏洞,别&/b&&b&特妈&/b&&b&把系统玩坏了!&/b&&br&——&b&别猛干系统漏洞,别&/b&&b&特妈&/b&&b&把系统玩坏了!&/b&&br&——&b&别猛干系统漏洞,别&/b&&b&特妈&/b&&b&把系统玩坏了!&/b&&br&&br&你把系统玩坏,等于把大家吃饭的锅都掀翻了——&b&不弄(neng)死你才怪!&/b&&br&(往远了说,徐翔也没犯法,也是把系统玩坏了。)&br&&br&&a href=&/question//answer/& class=&internal&&量化交易大众产品的创业之路如何走? - jingyi liu 的回答&/a&
说来惭愧,我在1982年就开始从事高频交易了,2次被抓。 第1次被抓,是因为进行了棉花的高频交易。 1982年上海市场的棉花价格,和郑州市场长期存在价差。交易所出来的价格延迟,是500h,而且有段时间还丢包。 直到一天,我破解了行情前置和交易前置,背起2匹…
为什么?因为外汇交易公平。&br&&br&下面的话带有不好的情绪,还请按需阅读。话说我一直都有情绪问题,现在好很多。世界对我很公平,我得到了应得的一切。&br&&br&往者不可谏,来者犹可追,共勉。&br&&br&回到正题,大部分人赔钱是因为他们压根没认真地想要赢钱。&br&&br&这里的目标是财务自由,这里的传说是一年十五倍,这里的道路是稳定盈利,这里的自我定位是极少数。&br&&br&这里是日神和酒神的集结地,一面放纵,一面秉持。一会儿寻求伟大与不朽,一会儿感慨自己渺小,疯狂是种瘟疫,会传染,能杀人。&br&&br&题目中可不可以不要用“散户”这个词?我的大脑是图像思维,看到这个词,立刻就看到一个满脸委屈,袖中藏刀的小受。个人投资者就个人投资者嘛,干嘛要说散户呢?请小心使用语言,语言下暗流涌动,你不做它的主人,就只能成为它的奴隶。散户这个名词多喊几遍,你可能就真的散了,肉体还在,但魂飞魄散。&br&&br&名词藏着一个被忽略的危险:它们会让你自以为是,认为自己知道面对的是什么,每当碰见无法理解的事物,在它们带给我们不安和失眠之前,我们使用“名词”这种魔法迅速将那些蠢蠢欲动的灵异之物封印,装在玻璃瓶子中,束之高阁,再也不用为它们分心。语言是那个封口的圆,我们用它圈住世界,保护自我。可那个被封住的世界是也只是我们自己的世界,所以最终被圈住的还是我们。&br&&br&所以,不要再称自己散户了,可以吗?&br&&br&进入正题,我发现一个很好玩的事实,很多人来金融市场交易,他们并非追求盈利。我知道有很多人说过类似的话,这话听起来酷酷的,甚至我看到他们说这句话的时候,大概都可以猜到,他们是从哪里哪本书哪个人的话中捕获的,这也是书的用处,这也是我最欣赏知乎的一点,这里大家爱书。可是我是真的刚刚才自己发现这个事实,并非捡拾别人丢下的话语。&br&&br&当我刚注册知乎账户,回答一个问题后,我发现有不少人给我私信,他们想和我讨论交易的问题。我就说,你为什么不给自己的交易记录在不同的时间周期上截图呢!必须包括H4和D1两个周期,然后我们才有谈论的基础,才不会隔空喊话,给世界增添些无意义的熵,而且说了不要粗心暴露了自己的隐私。&br&&br&我还在个人简介中说了这些话。并且我流下了自己的邮箱,很多人私信,不少人回复,123个人看了我的主页。&br&&br&没人给我回复,没人。&br&&br&我猜可能是有原因的。他们可能在想,国内外那么多大师的理论,哪个我没研究过,你个小丫头,也配看我的交易记录图?记录太丑,怕丢脸?尝试太多,没有任何结果,不愿意为这种小概率回报付出时间和精力?等等。&br&&br&总之,真行。我确定你不是在深渊里,即使在,你也没有想过要爬出来,说不定下面很舒适呢,我去过那里,呆久了还真不想出来。&br&&br&人真的很复杂,我们的欲望之线拉扯着我们,很多时候,我都会悲观地觉得自己只是个木偶,我做什么都是由我的大脑和心里的各种神魔鬼怪战斗的结果,就好像我的心里有很多很多王国,互相征伐,春秋时代的图景。在每次我做出选择的时候,都是其中一个王国的胜利时刻,它控制了我,告诉我该干什么。看吧,听起来幼稚,仔细想下,真是这样。当你问任何一个正在交易的人:你在干什么?交易啊。你为什么交易?盈利啊。&br&&br&你那么想,你背后的春秋诸侯们可不那么想。他们有自己的需求,有些需要从你的优越感中汲取力量,有些需要从你的深渊中感受存在,有些需要从你操作一瞬间的快感中疯狂,春秋无义战。&br&&br&当你赤裸着凝视镜中的自己,摸着镜中自己的眼睛和头发,你看到的是憔悴的自己,可是内心总有一个诸侯国从你的阴影中繁荣昌盛,呼风唤雨,好不快活。你的死亡就是它的极乐。&br&&br&所以,请你通过一切可能的方式,最好是不让你舒服的方式,弄明白,我来市场到底是为什么?我来做什么?我是怎么做的?我到底是谁?我真诚的希望哪种精神来指引我的行动?如何帮助它打败其他的诸侯乱贼?&br&别认贼作父。&br&&br&所以,我说外汇交易是极其公平的,你追求什么,最终得到的就是什么。&br&&br&下面说一些可能有点帮助的细节,全部以EUR/USD货币对作描绘对象。&br&&br&# 自由。外汇交易太自由了,想买随时买,想卖随时卖,好的平台还很可靠。没有任何限制。而且对个人投资者来说,无论你多少钱放进去后,一分钟就可以成交,滑点(手续费,点差)很少。太自由的环境,反而需要你有一个清晰的动机,也就是你的根,别跟我说,赚钱是你的动机,这种动机只是表面,只是让你感觉不错而已。赚钱作为你的动机,你让自己大脑中的那些诸侯们怎么协调统一?何时买?何时卖?短期还是长期?没到信号明显该不该跑?它们肯定自立山头,今天听你的,明天听我的。&br&&br&在绝对自由的环境里,外界的牢笼没了,真的实现了现实社会中永远无法实现的人生来自由,下一句是,却又无往不在枷锁之中。所以,还请在自己的身边画一个圈,老老实实呆在圈中,如果这个圈是你用血画下的,是刻在你心上的烙印,那你不需要“自律者自由”这样的口号来激励自己的。这个圈就是由自己在不断的实践中打磨出来的,不断地问自己,现在该做什么?为什么?&br&&br&# 杠杆。我这里说的是实际使用杠杆,就是交易平台给你定的杠杆,比如100,乘以你每次交易使用的比例,比如1/25。我从来不会让杠杆超过5,有人用20,有人用40,有些人甚至还不满意,用100。对于这些人,我想说,你们真行。&br&&br&即使你可以用高杠杆在开始赚到不少钱,但是一旦你有了积累,你绝对不敢把大部分的钱放进去,你只敢放入很少的一部分钱去弄。哎,何苦呢?&br&&br&还请你,想想它们的区别。我是想在投资这条路上走很远很远的,任何在长期无效的行为,我都没兴趣,你一个月10倍,一年100倍,我真的真的真的一点点都不羡慕。&br&&br&# 追求。我在国外好些年,遇见来自不同国家的很多人。关于人,我只有一个最感兴趣,追求。每个地方的人差别那么大,但是深入到追求和动机上,却又如此相似。追求是人手边的天生牙和铁碎牙,能杀人亦能救人。同样的条件,同样的环境,同样的起点,在各自不同的追求下

我要回帖

更多关于 售卖弹性大的商品 的文章

 

随机推荐