高频交易都有哪些著名的算法?

论坛 期权论坛 期权     
期权匿名问答   2021-8-25 07:56   29305   20
来源于:巴菲特说「高频交易并没有提供流动性」是否属实?高频交易究竟能否提供流动性?
高频交易里面一个很著名的算法是冰山算法(tow the iceberg)

还有没有其他有名的算法呢?
标签 期权
分享到 :
0 人收藏

20 个回复

倒序浏览
对题目中提到的“冰山算法”,我刚好有一些了解,可以给大家讲讲。很多人对“量化交易”的理解实在太过片面,基本上把它等同于生钱工具,我不赞同这种观点。交易首先是交易本身,有它自身的经济学意义,忽略这一点而单纯把它看成使钱增值的数字游戏,很容易就会迷失本心。

我也不认为算法本身有什么稀奇,再好的算法也是死的,真正的核心价值一定是掌握和使用算法的人。实际上我讲的东西也都是公开的信息,但是即便了解了技术细节,能真正做好的人也寥寥无几。

希望这个回答可以让你对量化和高频交易有一个更清醒的认识。

~~~~~~~~~~~~~~~~~~

首先我相信不少人概念里的高频交易还是这个样子的:



但对高频交易来说,这种信息是非常粗糙的。所以这里先要对不熟悉背景的同学介绍一下什么叫做Order Book。现在主流的交易所一般都使用Order Book进行交易,交易所在内部的Order Book上记录所有买家和卖家的报价,比如像这样:



Bid表示买家,Offer表示卖家,这张报价单表示买卖双方发出的所有报价单(Limit Order)。这张表才是高频交易最关心的信息。任意时刻,买家的出价总是低于卖家(比如这里的98对101)。所以报价虽然一直在变化,但是只有报价是不会有任何成交的。

什么时候会产生交易呢?有两种情况,第一是任一方发出市价单(Market Order),比如一个买家发出一张单量为10的市价单,就可以买到卖方在101价格上挂的10份,这个交易成功之后,Order Book会变成这样:



第二是发出一个价格等于对方最优报价的限价单,也会产生和上述情况相同的结果。

需要强调的是,虽然真正的Order Book只存在于交易所内部,所有交易都在交易所内完成,但是交易所会把每笔报价和市价单都转发给所有人,所以所有的买家和卖家都可以自己维护一个同样的数据结构,相当于交易所Order Book的镜像。通过跟踪分析自己手里这份的镜像变化,来制定交易策略,是高频交易算法的核心思想。

~~~~~~~~~~~~~~~~~~

基础知识介绍完毕,下面为了方便大家理解,我采用一种更形象的方式来表示Order Book:



这张图对应文章开始时的那个Order Book,应该可以明白地看出,横轴表示价格,纵轴表示订单量,绿色表示买家,红四表示卖家。这样做的目的是为了引出本篇讨论的主题:冰山订单。

通过上述基本分析大家可以看出,交易所内的交易数据是完全公开的,市场上任意时刻,有谁想要买/卖多少,所有人一目了然,没有任何秘密。这样做本身是有经济学意义的,因为只有展示出买卖的需求,才会吸引潜在的商家来交易,所以在市场上一定程度的公开自己的需求是必要的。但这样同时带来一个严重的后果,一旦有某个人想要大量买/卖,他所发出的巨额限价单会直接展示给所有人。比如一个买家挂出巨额买单后,Order Book会像这样:



这对他非常不利,因为所有人都会利用这个信息来跟他做对。大家会判断,现在市场上存在大量的买压,于是会出现一大批为了赚钱而冲进来的人抢购,价格会快速上升,这样原来这个人可以在98这个价位买到的东西,很快就变得要在更高的价位上才能买到。这种情况,那些后来的人做的就是Front running,而原来的那个人则面对逆向选择风险。

为了解决这个问题,交易所提供了一种针对性的工具,就是所谓的冰山订单(Iceberg Order)。这种订单可以很大,但只有一小部分是公开出来的,大部分则隐藏起来,除了交易所和发单者本人谁也看不到,真的像一座“冰山”一样。比如像这样:



灰色的部分就是冰山订单隐藏的部分。这样,只有当有对应隐藏量的交易发生时,交易所才会通知其他人,就避免了别人利用显示订单的信息来做Front running。

凡事有一利必有一弊。冰山订单虽然保护了发单者的利益,但是对于其他市场参与者来说却又变成了一种不公平的规则。那些有真实的交易需求的参与者,会因为对局势的误判而损失惨重。所以接下来的问题就变成,如何发现市场上的冰山订单?

首先有一种最简单的方法。有的时候,冰山订单是挂在最优买价和卖价之间(spread),像这样:



对于这种情况,有一个非常简单的探测方法,即发一个最小额度的限价单在spread里,紧跟着取消这个订单。比如这个例子中,发出一个卖价为99的限价单然后取消。因为这个价格本身对不上显式的买价(98),如果没有冰山单的存在,一定不会成交。但有冰山单的情况下,一旦交易所收到这个卖单,会立刻成交冰山单中对应的量,而之后的取消指令就无效了。这样,以一种微小的成本,就可以发现市场中隐藏着的订单。事实上,的确有人会做这种事情,频繁的发单然后取消,在最优价差之间形成一种高频扰动,用来探测隐藏单。

为了应对这种扰动探测,大家一般都不会直接挂单在spread里。而是会像之前那样和普通的限价单挂在一起,这样发生交易之后,你就很难推测消耗掉的究竟是正常的限价单,还是冰山订单。那么应该怎么做呢?

首先有一个直接的思路。冰山订单的存在,一定程度上反映了挂单人对市场情况的解读,认为有必要使用冰山订单而做出的判断。需要强调的是,使用冰山订单并不是没有代价的,因为你隐藏了真实的需求,在屏蔽掉潜在的攻击者的同时,也屏蔽掉了真正的交易者!而且会使得成交时间显著增加--因为没人知道你想买/卖这么多,你只能慢慢等待对手盘的出现。所以当有人下决定发出冰山订单的时候,也会有对市场情况的考虑,只有合适的时机才会做这种选择。

什么是合适的时机?有一些数据应该是相关的,比如买卖价差spread,买单量对卖单量的比值等。对这些数据,你可以在历史数据上做回归分析,建立起他们和冰山订单之间的线性/非线性模型。通过历史数据训练出来的这个模型,就可以作为你在实时交易时使用的冰山订单探测器。这是 On the Dark Side of the Market: Identifying and Analyzing Hidden Order Placements 这篇论文使用的方法。

基本模型可以定义为:F(spread,bidSize/offerSize,……) = Probability(Iceberg)

如果你想玩高深的,还可以在此基础上做HMM,SVM,神经网络之类的高级模型,但基本思路是一致的:通过盘口分析计算存在冰山订单的概率。

~~~~~~~~~~~~~~~~~~

上面说的这个方法,看起来很高级,实际效果如何呢?我想大家也看出来了,这种建模不是很精确。作为事后分析手段用来说明什么情况下可能会出现冰山订单还不错,但是作为实时交易的探测器就不是很放心。因为使用的信息太模糊了,而且说到底建模的对象只是一种相关性,没有什么保证冰山订单的发送者一定是按照这个逻辑出牌的。

所以接下来介绍的,才是真正具有高频玩家神采的方法,来自 Prediction of Hidden Liquidity in the Limit Order Book of GLOBEX Futures 这篇论文。

~~~~~~~~~~~~~~~~~~

高频世界里,有一条永恒的建模准则值得铭记:先看数据再建模。如果你看了上面的介绍就开始天马行空的思考数学模型,那基本上是死路一条。我见过很多年轻人,特别有热情,一上来就开始做数学定义,然后推导偏微分方程,数学公式写满一摞纸,最后一接触数据才发现模型根本行不通,这是非常遗憾的。

而看了数据的人会怎么样呢?他很可能会发现,对于冰山订单的处理,交易所的规则是非常值得寻味的。有的交易所是这样做的:一个冰山订单包含两个参数,V表示订单总量,p表示公开显示的量。比如V=100,p=10的冰山单,实际上隐藏的量是90。如果有针对这个订单的交易发生,比如交易量10,交易所会顺序发出三条信息:
    成交10Order Book的Top bid size -10新Bid +10
这三条信息一定会连续出现,并且第三条和第一条的时差dt很小。这样做的原因是尽管冰山订单存在隐藏量,但是每次的交易只能对显示出的量(p)发生,p被消耗掉以后,才会从剩余的隐藏量中翻新出一分新的p量。这样,每个人从交易所收到的信息仍然可以在逻辑上正确的更新Order Book,就好像冰山订单并不存在一样。

因此,一旦在数据中观察到这个规律,我们就可以非常有把握的判定市场中存在冰山订单,并且连p的值都可以确定!接下来的关键问题是,如何确定V的值,即判断这个冰山订单的剩余存量有多少?

这个问题从本质上说没法精确求解,因为V和p都是由下单人自己决定的,可以是任意值。但可以从两点考虑:第一,两个值都是整数;第二,人类不是完美的随机数生成器,下决定会遵循一定规律。

从这两点出发,可以对V和p建立概率模型,即计算一个给定的(V,p)值组合出现的概率是多少?这里不去深入探讨数学分析,感兴趣的朋友可以自己去看原文。简单说,可以在历史数据上通过kernel estimation技术来估算他们的概率密度函数的形状。顺带一提,如果你亲手编写过这种估算程序,就会理解我为什么在“要想成为一名优秀的 Quant 需要什么样的编程水平?”这个答案中如此强调编程的重要性。在数据上估算出来的概率密度函数可能会是这样的:



这样,当你在实时数据中观测到一个p的值时,就可以得出对应的V值的条件概率密度函数,即上图的一个切面,比如(p = 8):



接下来显然就很容易计算V最可能是什么值了。这条函数曲线还有一个重要的作用是帮助你动态评估剩余存量,比如当你观察到已经有5份p被消耗掉,即可推出V>=40,由上图即可推出新的V值和剩余存量(V-5p)。

综上,算法的核心在于,通过在实时数据中监测短时间内连续出现的三条相关记录判断冰山订单的存在,而对冰山订单的量化则通过由历史数据训练出的概率模型来完成。

相信你也会看出,这种算法并不是什么作弊神器。它只是利用市场上的公开数据所做的一种推测。而且这个推测也仅仅是基于概率的,更多的应该是作为一种参考。它对做市商这种流动性提供者很有意义,可以使他们避免因为对局势的误判而遭受损失。但如果你想用它来作为一种攻击手段,觉得自己能发现隐藏大单而去Front run,那实在是很不明智的选择。

最后,这种算法也只是针对特定的交易所。其他的交易所也许不会采用同样的冰山订单处理方式。所以真正有价值的是这种从实际数据出发的建模思路,具体的算法并不值钱。

~~~~~~~~~~~~~~~~~~

这个小算法给你展示了高频交易领域的“冰山一角”。它看起来也许不算很复杂,但是我却很喜欢。因为它清晰地展示了什么叫做先有思路,再有量化。因为有“冰山订单”这样一个从经济学基本的供需关系出发的真实需求,通过分析实际数据找到一丝线索,最后通过数学模型刻画出定量的策略,这才是漂亮的策略研发。

如果违背这个原则,一上来就去搬各种高级的模型去套数据,指望模型自动给你生成交易信号,这在我看来无异于痴人说梦。遗憾的是,这个梦的确太过诱人,而这个世界也从来不缺少莽夫。

且行且珍惜。
相关背景:本科在教授实验室与一个期货交易公司合作做过高频方面的量化分析,证券公司做量化事件驱动研究实习,随后给某平台工作写点低频交易策略,也给某外企做过自然语言处理模型,目前在美就读量化金融和数据科学双硕,参与过一个基于强化学习的交易策略合作项目,在读高频交易的书,未来也以做金融/算法/模型为部分职业目标。
这个回答主要介绍一下高频交易的概念与哲学,和分享本科时 很好的一个有成果的高频数据处理idea,仓促写成,希望大家“鼓励”后期会不断完善和更新,希望各位前辈同行们喜欢!
******在文末有时间会update一些具体的高频算法框架******

高频交易的概念与哲学:
高频交易有如下表面的特点:
程序化自动交易,高换手率,短时间需要处理大量数据,风险可控,追求统计上胜率>50%即可。
这句话怎么理解?
1. 因为速度快,所以必须程序化自动化处理,高频必用程序化交易,而程序化交易未必是高频的。
2. 因为频率高,微观结构上数据量较大(包括在多个市场上成交/取消的单),算法必须跑得快,数据结构要精心设计。
3. 因为不需要隔夜持仓,资金量可以快速周转,所以风险可控。
4. 因为交易次数多,所以胜率是统计意义上的(只要有一点点预测力,在足够大数的独立交易中会获得很高的information ratio/profit),当然总收益要覆盖交易成本。

但是高频交易的哲学不完全是速度,而是信息利用的优势:相对于普通交易者,更快的速度和微观的结构会有更多的信息,微观的交易信息。



每小时中的按分钟属第k秒的所有分钟的交易量加总

上图的那个峰顶表示在交易的最后一个小时,低频交易者的模型倾向于在第一秒下单。这种微观信息seasonal habit一览无余。
低频交易者往往更关注于资产本身,而较高频时间区间里,交易信息本身更有作用,所以说完全有效市场也只是个理想情况,按照高赞的例子就是冰山算法可以探测出市场上有没有隐藏的待出的大单,其他的高频交易策略能探测出提前做出反应的 informed trader(内幕信息),或者发现套利机会,用自然语言处理快速对事件做反应。
对于部分随机模型而言,高频交易的时间度量往往也不是我们寻常意义上的“时间”,秒分这种,更多的是基于交易量,同样1万单,日间交易和夜间交易所需时间却很不同。
很经典的一个图,对标普五百期货:



收益率的正态分布在交易量时钟,而不是正常时间中得以复现

高频交易策略因市场而异,对股票,期货,固定收益都会有不同的策略,后面有时间会补充。
但是常见通用的(著名)策略有:
1. 简单做市策略:吃价差 bid ask spread. 同时挂双向的limit order,这是最平凡的高频策略,但也需要一定的设计流程,比如根据有没有成交,当前position,市场价格和Threshold来决定是cancel, reset还是counter等。
2. 各类欺诈predator策略:这种策略往往被视为扰乱市场会罚款,但是又很难举证,因为市场上撤单很常见.,举以下几个例子:
Quote Stuffing 高频的下单撤单人为挤压其他竞争算法的下单,从而造成人为的延迟,获得价格优势(预测有大单进来时能提前买入)
Quote Spoofing 下一个单方面的大单然后撤单扰乱价格后然后对反向用密集的小单获利, 这样可以引诱同方向的bid 提高价格 或ask 降低价格。
Liquidity Squeezer,在探测到大单时同向挤压流动性,逼高/低价格
3. ticker trading algorithm:可以识别大单,有很多mutual fund或者index tracker fund需要调仓大批量交易的时候,他们往往会切割大单并分散交易,比如高赞中详细解释的如何识别ice berg order。
4. Event arbitrage 或者 事件/新闻驱动,美国很多基金都很注重近来自然语言处理,为的就是让程序反应上能比人快,比人更高效的处理大量的文字信息。
例一:用最近邻,或者多元插值的方法,根据历史的训练数据(比如连续出现的n个order),寻求预测最接近的可能的event。
5. Statistical arbitrage 统计模型套利,这里面话很长,各种统计模型和经验都有应用后面有时间慢慢补充。
例一:识别rounding,很多手动下单的(GUI)的都有rounding功能,那么如果在某个特定时间出现大量round numbers交易量,那么意味着短期市场会有某种趋势,可以做个指标。
6. 当然,国内证券公司做市商还有一个很有趣的策略,他们只做市研究部门觉得好的股票,买入一部分等涨…. 也不失为高频低频结合哈哈哈。

python专用分割线#######################################################
下面就进入一个超级有意思和成效的高频交易数据研究,也算是我对自己两年前的项目的总结,随后会把github链接po上:
《用Benford’s Law和相对熵方法对期货高频交易特性的探究》
简单概括就是验证期货高频交易量数据是服从本福特定律的,并根据其服从程度(相对熵)构建了一个异常指标,可以用于探测市场扰乱程度。
有36个期货品种的1s,3s,5s,15s,30s的高频数据





数学表达上对于 本福特 定律的公式表示如下:



d代表首字母数值,从1到9

本福德定律的重要应用就是它可以探测人为伪造的欺诈行为, 因为它可以检测数据的生成行为是不是有某种刻意的不规则出现。尤其是交易场景下,交易量往往完美的符合本福特定律的假设。
能够用Benford 法则来进行分析的数据应该符合以下条件:
① 数值既不是完全随机的,也不能过度集中于某个区间
②  数值不能存在上下限
③ 数值在一个很宽的范围里连续变动,不存在间断点或间断区间;
④ 数字没有被特别赋值;
⑤ 数值的形成受多种因素的影响,是多种因素综合作用的.
而Theodore P. HillSource 基于从随机选取的随机分布证明了本福特定律的生成条件,使得本福德定律有了更松的假设条件,虽然不是所有的数字都一定符合本福德分布,比如那些服从均匀分布,正态分布的数字,如果数字的生成满足随机选择分布并随机的从每个分布中抽取样本,那么我们所生成的数的集合会收敛到本福特这个集合中所有数都会收敛到本福特分布即使单独的分布不遵守本福特分布。
而我们所知当数字的生成存在人为构造的情况时就不会符合本福特定律。因此,本福特定律可以作为大数据分析手段的一种思路,一旦我们推定数据的生成是自然随机的, 那么它就应当符合本福特定律,如果一个数据源符合本福特定律,则随机的均匀删除数据不会让本福特定律无效,因为数字根据其占比得到等比例的下降,但如果该数据源是虚假的或者有人为数字的掺杂和偶然的系统性删除泄露,就必然会打破本福特定律的分布,此时就脱离了自然随机条件。已知的经验表明人们很难复制他们的数据以达到本福特定律的情况,因为第一他们往往不知道本福特定律的存在,第二他们必须在保证数字本身在符合现实意义的条件下以本福特定律的分布出现。



本福特分布

相对熵可以用来衡量两个概率分布之间的距离,我们这里计算在某一时间区间内的交易量首位数字的经验分布和本福特分布的差异。
相对熵算法不作过多具体描述,可以参考 wiki 。
于是我们根据36个期货品种的数据计算相对熵指标:
如何衡量我们的分布是不是符合本福特定律?我们可以用纯均匀随机分布即每个数字开头概率均为1/9的相对熵相比,我们在这里将随机均匀分布作为基准。我们的熵值越小于0.2306接近0,表明我们的分布和本福特分布的距离越小,和均匀分布有本质的区别,越不符合均匀分布。


很明显可以看出,大部分时候所有的品种的相对熵值都远小于均匀分布benchmark 0.2306
##################################################################

Section 1: 适用于股票市场上的下单执行算法
对于broker来说一个交易执行算法的交易标的,交易方向(buy/sell),交易数量和开始时间往往是给定的,而其可以改变的是具体的交易速度和交易的具体平台,将大单切片并在交易时控制市场流动性,在不同的交易场所进行配置(public exchange & dark pool)。
对交易算法结果的衡量( post trade transaction cost analysis)是多维的,往往包括:完成交易的比例(fill rate),完成交易的类别(passive, aggressive or dark),滑点(与vwap或者arrival price等相比较),交易速率是否稳定(fixed participation rate)等等。这些目标是互相冲突的,但是cost-sensitive的往往更关注滑点slippage,滑点与当前spread,交易速率,交易时间和价格波动是呈正相关的(这部分可以建模)。
比较基础的下单算法包括:TWAP,VWAP,POV及其变种等,往往是给定一些固定的参数下单,知乎上也有详细介绍,这类算法的弱点是pattern固定,比较容易被识别出来。
如果考虑到 impact - risk 平衡的话,如下图一次性买2000股会给市场价格一个较大的冲击,但是分两次购买又会承受市场带来的不确定性。



价格受到购买的冲击

于是 implementation shortfall模型就可以根据市场价格或者其他参数动态的调整交易率,考量的参数包括对等待的风险厌恶的程度等。
更先进一些的交易框架包含信号函数和反应函数,这种适应性的框架往往基于前面的基础算法, 而不是单独出现的。
信号函数处理一定历史区间交易数据并生成决策信号给反应函数,反应函数读取了信号后给出反馈。
常见的信号有:1. 交易数据在短时间短的序列自相关性度量(大单切割算法生成的).2.Order imbalance ,买盘和卖盘数量的不均衡。3. 价格的趋势或者回归。4.Volume clustering 交易量的聚集。5. 和相关标的的协同变动产生相对价值的变化等等。
常见的反馈包括:1. 增加/减少或者取消后面的下单;2.更新下单limit价格; 3. 在不同的交易所重新分配;4. cross the spread (一般来说bid always < ask,如果想快速成交,就得可以按ask买或者按bid卖)等等。
下面对一些信号的构建做一点介绍:
衡量交易相关性:一个思路是观测当前价格p 与 mid price之间的关系,大于mid price 就是 1 小于是 -1,然后做游程检验,ACF自回归等等,也可以构建指标 比如 p-bid/(ask-bid)等等。
衡量order imbalance:一个思路是根据当前 bid ask 的 order volume算一个加权价格,比较这个价格离 bid 和 ask 的距离,这样就可以有效的衡量 买卖盘的不平衡程度。
貌似大家都有所保留,也可以理解,交易算法和策略是赚钱的独门秘器。我也来补充一点吧,但不知道是否能回答到点子上。我愿意尽量来回答很大原因是我不是从事这一行的,也不指望从中交易,而是从academic角度来讨论。但缺点是门外汉,没有实践经验,只能是自己一厢情愿的想想而已。不见的契合这个问题,大家就随便看看把

鄙人最近恰好写了一篇论文,当然论文并不是探讨交易算法和赚钱,只是一篇典型的学术论文。但借助这个问题想探讨一些能将学术研究恰当应用化的可能性。该论文是Time-reversal asymmetry in financial systems 如果您没有下载SD论文权限的话,可以从预印本文库arxiv上下载http://arxiv.org/abs/1308.0669,该版本与最终的发表版本完全一致,只是排版不一样。

由于精力有限,我不准备在这里详细介绍我的数学模型和详细,我假设读者先自己粗略读了论文后再来讨论。简言之,在我们论文中,通过引入残余波动率,刻画了金融市场在经历大波动事件前后的动力学弛豫行为,并计算其动力学指数,利用非平衡态统计物理的理论来分析这些指数间的关系。以往的理论认为金融市场在金融危机时便进入非稳态,但我们的研究表明只有是外部事件驱动的大波动才驱使系统进入非稳态,而内生型的大波动并不必然导致非稳态。

更重要的是,我们发现内生型和外部事件驱动的大波动在弛豫行为上存在显著不同,可见论文中的图。由于是学术论文,我们并未在论文中提及其可能的应用。但是我个人认为这些结果可能有助于我们建立一些基于events driven的交易策略和量化交易模型。譬如,利用不同事件驱动的波动率行为,我们可以预测接下来的波动率行为,并估测其风险水平,这对于我们的风险管理也是具有重要参考价值的。比如,我们明确提出大波动之后,市场的风险水平呈幂律下降。

----------------------------------------------------------------
实际上,证券市场大波动的动力学行为和地震有很大的相似之处,称之为Omori Law。在发生一次巨大地震后,往往会跟随大量的余震,震幅逐渐降低。证券市场发生一个大波动后,接下来波动率呈幂率下降,即具有长程关联,也就是有记忆性。大地震之后的余震我们可以部分地预测,因此,我们有理由相信证券市场也是如此,在经历一次巨幅波动后,我们可以预测接下来的小波动。当然更重要的问题是,能否预测大波动的发生,目前也有关于此的研究,下次再来介绍。

-----------------------------------------------------------------

这两天比较忙,先简单写到这里,如果大家都兴趣的话,等忙过这几天再来补充更详细的内容
高频交易的算法非常依赖于所处市场的具体交易细则和交易所的IT架构,所以想要一招吃遍天下肯定是不行的。但其实高频交易对应的数学比较简单,更多的是一个速度的比拼。

首先一个高频交易算法必须要对市场微结构有非常细致的认识。
交易所向所有的交易所成员发送的市场数据有很多类型,但大体上分成两类:
@董可人 介绍的冰山算法里所用的订单簿模型,属于价位订单簿(level-based order book),也就是说,你从市场订单里,可以看到每个价位总的订单量,但看不到具体有多少个订单。这样做的交易所有不少,其中最有名的是芝加哥商品交易所(CME)。

借用董哥一张图。



这样的市场数据里,你不知道每个价位上究竟有多少订单,只知道总体的订单量。

另外一种市场数据是显示订单的订单簿(order-based order book,实在不知道怎么翻译了)


这种市场数据里,每个交易成员都能看到每个价位上有多少订单,每个订单的大小是多少。
同时很重要的一点,通过配对交易所回执里的ID和市场数据里的ID,也能在市场数据里看到自己下的订单。最大的作用就是做成交预测:当你看到市场数据里自己的订单消失了,即使还没收到交易所的成交回执,你也知道这个订单成交了,并且可以第一时间干该干的事情。要知道,几十毫秒(甚至微秒)的差别就能决定一次交易的盈利。

大前提说完了。下面开始介绍具体的策略。

在08年之后,合法的高频交易其实大部分只是两类策略:
    做市:在单一品种上(比如个股)提供流动性,赚取买卖价差套利:在多个品种上寻找短期的定价偏离


------------------------------------------------------------------------------

没想到大家这么热情,两天时间就过百赞了。那我就继续更新了,哈哈。
评论里明显有同行,对交易所的数据协议研究很深,毕竟对于高频交易程序来说这是最重要的数据源。答主我也只是略懂一二,有不准确之处还请指教。

在这里我会给大家做一个基本的介绍,但想真正拿这些方法赚钱,那估计你会发现实操里的坑不要太多。这也是这一行竞争逐渐激烈,并且竞争演变成军备竞赛的原因。你在刘易斯的《闪电小子》这本书里看到的大部分已经不符合现实,但是其中『为了几微妙缩短延迟,铺设笔直的光纤』这种事情仍然在发生,而且现在连横跨大洋的微波网络都已经普及,FPGA也是业内公开的秘密,大家都在为了节约那几个微秒甚至纳秒不惜代价。

首先是做市。做市是个历史悠久的策略,其实在高频交易尚未出现,甚至在交易所还是这样的时候就已经出现了。


做市商的工作就是提供流动性:具体来说,做市商同时挂买单和卖单,赚取其中的差价。
为什么需要有做市商呢?因为有人想买,有人想卖,但是他们不一定同时出现,也不一定愿意等自然的对手方出现,所以他们愿意支付一定的钱和做市商做对手方,做市商就赚这么一点差价。

先来看最单纯的个股做市:
假设某股票现在的order book是这样的:



那么现在的价格是9.7/10.1。一个图森破的做市商(不考虑其他风险)会在尽可能靠里面的价位挂单:


于是最好的买价和最好的卖价都被这个做市商占领了。
这样如果有人想立刻买(下市价单,或者下限价单,限价在卖一),做市商的单子是第一个成交的,成交之后做市商就有了仓位。如果股价维持不变,迟早会有人想卖,于是做市商挂在买一的单子也会成交,平仓之后净赚1块钱,扣除手续费清算费各种费之后之后怎么也能剩个5毛吧。

没错,和那种一下子就豪掷千万的对冲基金不一样,做市商就是一小本生意,每次赚点小钱。
估计你也发现了,这里的大前提就是『如果股价在做市商持仓期间维持不变』,还有很多小前提(手续费够低,做市竞争不激烈,没庄家操纵股价)。

然而这很明显不是现实的情况。很多时候在你的第一个订单成交,有了仓位还没平仓的时候,市场就急转直下,朝着对你不利的方向走去,这时候大部分做市商会平仓止损,亏一点小钱。这样的做市策略最喜欢的平稳的市场,活跃但价格稳定(活跃怎么价格稳定呢?),最讨厌的就是一个大单一下子吃掉几个价位(甚至几十个价位),仓位全砸在手里了。一般市场消息发布的时候这种策略都会关掉或者调成保守,但有时候市场突发重大消息,或者外汇又出什么事情了,某个推特又大嘴了,导致价格异动,那十有八九是会亏的,而且赚一亏十。

做市商的盈利,大部分是来自于规模化,一个策略可以在几千个个股上跑,每支股票一天赚几百块,以及自动化的风控和止损策略,还有很重要的一点就是交易所提供的返佣和报价补贴(毕竟交易所也希望自己的品种流动性更好)。

衍生品的做市就是完全不同的逻辑了,因为仓位是可以被部分对冲或者完美对冲的,因此可以锁定利润,所以这就包括在我们接下来要介绍的『套利』策略。

套利,其实字典里已经给了完美的解释:
the simultaneous buying and selling of securities, currency, or commodities in different markets or in derivative forms in order to take advantage of differing prices for the same asset.
同时买卖高度相关的品种,并且从『理论上价格应该一样,但是现在市场上价格不一样』的品种里获利。一般来说,在两种品种之间套利,两种品种的价格遵循简单的线性关系,其理论价差可能来源于手续费/基差/利率等一些因素。当现实的价差偏离理论价差,你就可以买卖价差(同时买卖两种品种)建仓了。

这里也分两种情况:
    相关品种的套利 (Correlated Assets Arbitrage)可替代的品种的套利 (Fungible Assets Arbitrage)
相关品种套利:比如期货的不同交割月的合约之间的套利,上海金和伦敦金的套利,等等。但最重要的是,两种品种并不是同一个东西,并不能简单抵消彼此,所以其实本质上相当于量化里的统计套利,并不能保证盈利,可能会积累巨大的价差头寸。

可替代品种套利:比如个股和其存托凭证之间,股指期货大合约和小合约之间,ETF和其成分股/成分资产之间。这样的两个品种之间是可以相互转化的,比如存托凭证可以让发行的银行转化成普通股,不同交易所发行的股票可以转移股票位置(depot switch),ETF可以让发行机构申赎成其成分,或者按净值赎回现金,期货可以在『交割价交易』市场上以交割价买入卖出,等等。这样就可以在发现套利机会的时候就锁定利润,因为在两种品种上积累的头寸可以互相抵消。

越高频的策略,其本质上就越简单,就越需要低延迟的下单和市场数据,越需要巨量的IT投资,其盈利模式也更多的偏向规模化,这就是为什么高频交易公司总是赢家通吃,很多小公司最后做不下去就关了,或者是转向量化交易了。

期权做市则是另外一个市场了,因为期权的非线性特征和做市商主导的市场,对于速度的要求可能没有其他品种那么高,更多的需要数学知识和复杂策略等,同样的品种还有流动性很差的ETF(比如其成分不在公开市场上交易),和『在交易时间时,其成分不在交易时间』的衍生品,比如港股在美国的ETF。还有一些场外衍生品或者语音报价的OTC产品,其盈利模式又不一样了。

答主也并非这个领域的专家,请大家多多指教。
市场就是江湖,买卖双方永远在博弈, 这是交易过程中永恒的主题。买方也就是所谓的buy-side, 而做市商是sell-side, 因此我们不仿把高频(HFT)策略分为买方策略和做市商策略。从名子也能看出来这两方互为对手。

先说买方吧, 这个买方当然就是指prop trading, HF之流。买方常见的高频策略有以下几种:

Market Order
以最高速下市价单(market order)是买方最基本的策略

Looking for Price Discrepancies
这个就是高频统计套利(high frequency statistical arbitrage)

Indulging in Momentum Ignition
人为制造价格上的spike诱使其它算法交易策略下单

Poke for Bargains
发不同的Immediate Or Cancel Order来试探市场, 反制做市商的Hide Your Best Prices策略

Join the Makers
买卖两边下限价单(limit order)

Reserve Orders/Iceberg Orders/Time Slicing
隐藏真实交易量

有矛就有盾,我们再来看看做市商怎么接招:

Wait for the Other Side
被动等待单子成交是做市商最基本的策略

Lean Your Market
主动变更报价以消化库存(inventory)

Scratch for the Rebate
提供流动性(liquidity),拿回扣

Hide Your Best Prices
隐藏最佳报价

Take Out Slow Movers
仗着速度快吃掉其它做市商的错价

Penny Jump
微量加价

Push the Elephant
跟踪巨量订单,一路拉升价格从巨量订单上赚钱

Tow the Iceberg
探测市场交易意图, 这个直接反制买方的Iceberg Orders.

Jump the Delta
期权做市商用动态Delta Hedging对冲风险

最后提一句, 不论你身处买卖双方的哪一边,你都该牢记,HFT是一种生意,而做生意的目的就是谋利,如果你真想make the world a better place,还是去Silicon Valley吧! :)
首先小Q认为,高频交易是可以提供流动性的,很多高频交易策略的目的就包括为市场提供流动性,提供市场流动性会获得相应风险溢价,这符合金融学的出发点。
很多人直觉中认为高频交易算法应该特别复杂高深,其实未必,很多高频算法并不复杂。大部分的人对高频交易的tag有:处理分笔数据、高资金周转率、日内开平仓、算法交易等。美国技术公司FINalterative曾经调查过“持仓多久称得上是高频交易”这个问题,调查结果如下:


从调查结果来看,大部分人认为高频交易持仓时间较短,有接近40%的人认为持仓时间在1-4h就是高频交易,因此像国内商品期货和股指期货的一些T+0策略和日内策略也可以算高频交易, R-Breaker可以算这类策略的代表。日内的统计套利策略也算高频策略,比如当日内价格走势偏离到一定阈值,此时获取价差收敛的策略也属于高频交易,但该算法其实并不复杂,顶多是统计学协整理论的运用。。
市场流动性对高频交易算法影响很大,因此高频交易算法在各个市场(金融工具)是不一样的。下图反映了根据每种金融工具流动性的不同而得的不同金融工具的最优交易频率。



可见外汇期货期权这类衍生品交易频率较高,高频交易算法应用较多。之所以大盘股的交易频率在小时-天级别,应该是因为大盘股流动性好、成交量大,比如某些蓝筹股在香港和A股均有上市,那么境内外统计套利策略就存在空间。
影响高频交易算法的影响因素还有市场的深度和宽度,小Q通过图形进行描述:


限价单的总规模代表着市场的流动性。在某个特定价格上限价单的数量称为市场深度(market depth),限价单中卖一价和买一价的价差称为市场宽度(market breadth)。包括分笔数据在内的订单簿数据能够反映市场微观结构,基于市场微观结构分析的高频交易算法有以下几类:
(一)存货交易策略
存货交易被称为流动性供应或者做市,是通过有效管理存货从而达到盈利的活动。流动性供应一度只能由指定的经纪自营商来操作(指美国),这些人被称为做市商,做市商中必须保证持有足够的流动性以满足任何前来交易的买方或者买方。存货交易策略通常由限价单完成,策略依赖于大量微小盈利,一天交易2000次并不稀奇,策略持仓时间较短,指令的高速传递以及低延迟执行是成功实施流动性供应策略的先决条件。该类模型通过估计买卖现金流的到达率来计算最佳买入报价(bid price)和卖出报价(ask price)。具体模型可以参考基于经典的赌徒破产问题(Gambler's Ruin Problem)。
(二)信息模型
信息模型描述了一类依据信息流和信息传播过程中可能产生的信息不对称现象而进行的交易。信息模型利用观测到的或者推测出的指令单来作出知情交易决策。
遗传算法(genetic algorithm)是采用贝叶斯学习的计算机算法。《经济学人》中曾发表了一篇题为“赞扬贝叶斯”的文章,该文就通过详细的例子解释了基于信息模型,做市商如何通过贝叶斯规则判断当前市场形势,设立买卖价格水平。
(三)事件套利
投资者可以从消息对市场的影响中获利,这类利用消息公布前后的市场运动进行交易的高频策略称为事件套利(event arbitrage)。事件套利的持仓时间可以是几秒,也可以是几个小时,套利通常能以较低的风险产生稳定的盈利。事件套利策略中的事件可以是任何经济活动的新闻公布、市场干扰、或其他影响市场价格的事件。方向预测和点位预测是估计价格对事件反应的两种方法,方向预测推断的是某种证券的价格是要上证还是下跌,而点位预测则推断新的价格会达到什么水平。
(四)高频统计套利
统计套利的核心直接依赖于数据挖掘。统计套利分析者对海量的历史数据进行筛选,以期发现某种普遍的统计关系。当检测到显著的统计关系之后,我们就可以建立一个基于如下假设的统计套利交易模型:如果某一时刻这种统计关系被违背,那么它将会均值回复(mean-revert)到它的历史正常水平,此时我们就应该在均值回复方向建立头寸。
在统计套利执行过程中,经济逻辑是非常重要的,基于经济逻辑的高频统计套利会有更为持久的获利能力,因为它背后有着坚实的经济学原理支撑。这类策略也被称为基本面套利策略(fundamental arbitrage)。
以上即为小Q对高频交易算法的一些认识和看法,欢迎讨论和回复,想要更多地了解我,请移步:BigQuant - 人工智能量化投资平台
来说一个思路吧,Order Imbalance Strategy
1.Limit Order Book和市场微观结构
限价订单簿(LOB)允许任何交易者成为金融市场的做市商。 限价订单簿(LOB)是一个复杂的系统,对它的理解可以深入了解交易者的动机,使用丰富细粒度的数据可以用来制定交易策略。
限价订单簿(LOB)本质上是一个撮合引擎,关于LOB的图可以看可人的介绍
2. Order Imbalance
定义一个信号:Volume Order Imbalance (VOI)


V B t and V A t:the bid and ask volumes at time t
P B t and P A t:the best bid and ask prices at time t
我们来看看神奇的预测效果,对未来10秒价格预测的效果:R2可以到0.65



3. 策略效果


具体就不写太多了,码字好累,打个小广告


可以关注一下这个新崛起的品牌Vitu.AI
别的不说,直接给出两个曾经十分暴利的数字货币高频策略代码。这两个策略在FMZ发明者量化交易平台非常有名,也是复制分享最多的策略,资深一点的程序化交易者都知道。原理都十分简单,逻辑清晰。虽然由于手续费已经无法继续使用,但思路十分值得学习,也只有数字货币的初期市场才会有如此的传奇故事。
第一个高频做市策略:
策略分享地址:https://www.fmz.com/strategy/1088
这个策略是作者做虚拟货币以来的主要策略,后面经过不断完善和修改,复杂了很多,但主要思想并没有改变,分享的这个版本是无明显bug的 最初版本,最为简单清晰,没有仓位管理,每次交易都是满仓,没有卡死后重启等等,但也足够说明问题。
策略从2014年8月运行,直到今年年初交易所收手续费。期间运行的还算很好,亏损的时间很少。资金从最初的200元跑到了80比特币。具体的过程可以看小草的新浪博客里虚拟货币自动化交易之路系列文章。
第二个高频策略——韭菜收割机
这是一个在OKCoin比特币交易平台上的高频交易机器人程序,从2016年6月策略基本定型,到2017年1月中旬,这个策略成功的把最初投入的6000块钱刷到了250000。由于近日央行对比特币实行高压政策,各大平台都停止了配资,并且开始征收交易费,该策略实际上已经失效了。
策略分享地址:https://www.fmz.com/strategy/34388
什么鬼啊, 讲那么多术语干嘛。来,我作为一个非高频人士,讲一些半吊子的东西
高频交易就干一个事情: 在没有informed trader的情况下两边挂单,提供流动性赚取盘口价差。 在有informed trader的情况下,跟着informed trader做。有的策略taking做的多些,需要在信号上下功夫。 而有些策略偏重做市,也就是making做的多些,则需要控制好market risk, inventory risk.
回到巴老爷子的问题来: 高频交易实际上对小散户是提供了流动性; 对于机构投资者增加了滑点。 换句话说,如果你是个亏货,那么高频交易其实帮你省了点执行成本(代价是做你的对手盘吃了点你的pnl); 如果你是小散赚货,那么有时候你和它都抢跑大资金,你没它快所以你成本高了点;如果你是用算法交易慢慢建立头寸的大机构,那对不起,你是它(高频交易)的韭菜。
而那个啥iceberg, 不好意思,和twap,vwap一样,都是大机构建立头寸时候用的执行算法,是纯粹高频交易的收割对象....
iceberg is not used in HFT
HFT's goal is to make profit thru trading. Not building up portfolio
iceberg is used to build up portfolio, this is the kind of idea used in (banks') execution service. In other word, that is an execution algorithm.

Basically, there are three kinds of strategies in HFT. One is simply front runner. Another one is Market Micro structure. The last one is more interesting, called maker-taker.
Front runner is using the flow information you have and taking advantage of your own super fast infrastructure.
Market Micro structure is focusing of estimating the order position in a queue. Also some people called this scalping.
The Maker-taker model will provide rebate for market maker ( BATS has taker-maker model), and those market makers are simply focusing on that rebate. It is also called passive algo.
2020年以后,试观市场上的各个交易品种,除了国内的股票,基本上都已经引入了或精或简的做市商制度。这使得很多原本在秒针以下很好挣钱的品种,由混沌的概率游戏具象化成了你来我往的对弈。虽然目前一些实力较弱的做市商是帮助胜利者提升利润率的,但是市场整体难度随着时间是在往上走的。原来一些经典算法的意义,逐渐就演变成了我赌你不知道我用了或者到时候再说,我知道你知道但是我还是要用之类的博弈。随着秒针狂跳的PNL逼迫着每个参与者(实际上一个品种里同时数得上号的可能也就没几家)不间断的调整策略、优化延时、寻找edge。越是门槛低的地方,竞争越是激烈,市场变化的也就越快。这种不间断的竞争与博弈也就构成了HFT冰面下的汪洋大海。
高频交易简单来说一是策略,二是系统。策略是驾驶员,系统就是赛车,两者在比赛中的关键程度见仁见智,略有不同的是好车花钱比较容易砸出来。但是当一个团队在市场上逐渐有了一席之地以后,HFT会逐步向一门生意靠拢。有了驾驶员有了赛车,跑的赛道仍然有广阔的空间可以做文章。路平不平,收费站贵不贵,弯道多不多,都是办公室之外的问题,在做到一定量级之前的小team都还顾不上这些。这些因素加起来形成的壁垒和稳定环境,基本上也是MM这门生意能做到上市的重要原因。
......
我的专栏近期会发布一套视频,会专门做一集高频交易的内容。
谢邀
不过考虑几天决定放弃作答这个问题,泛泛而谈的东西大家都可以从百度、google、wiki上搜到,但答的太深入是在砸自己饭碗。

如果有兴趣可以看一些关于市场微观结构的论文,里面会对高频的一些算法有所涉及。
超级自负的一个老师,很多话说的在理。玩高频交易存活并赚钱的,是不会让别人知道任何技术信息的。大家娱乐一下挺好,真正通过高频交易赚钱才是有意思的,极少数人的游戏。
不是装逼
这个问题是好问题,但是我估计绝对不会有特别详细的答案
答多了涉及核心的东西就是泄密了
我给几个关键词吧 都是可以做高频交易的“理念”
conversion arbitrage
market maker
event driven
可惜 Virtu Financial的IPO推迟了 要不它上市了以后可以看看它怎么做的
我有一个非常简单粗暴的算法。
就是寻找1分钟级别MACD的转折点。快金叉或者死叉的那一瞬间,多空双向开单,加上100倍杠杆。
如果金叉确认,就会立刻爆量,让空单爆仓,多单赚出来的就是我的利润。反之就是多单爆仓,空单就是利润。
这个算法核心在于如何判断止盈点和止损点,当然这是我的核心秘密,不过思路就是这么简单。
高频交易其实不神秘,如果把时间放慢100倍,你做的会比任何算法都好。机器只能做你做得到的事情,如果一件事情人都做不到机器更不可能做好。
高频交易至少具备两个特点:1、程序化的自动化成交;2、快速、大量的交易。通常高频交易指的是机器在一秒钟内执行成百上千次交易,丝毫不知疲倦。
   高频交易的盈利逻辑在于,积累大量的小盈利,最终达到大盈利。而要达到这样的效果就需要频繁的交易。而通过交易员去实现,显然不够科学,因此才交给计算机去执行。相比人类交易员,计算机不知疲倦,不受主观情绪影响,而且永不出错。
高频交易的四种算法
1、软件算法
  (1)“冰山(iceberging)”:其特点在于将大笔订单拆分,把那些单笔数额大的单子划分成随机大小的小订单,起到向市场上的其他投资者隐藏动机和作为的目的。http://bbs.ihoms.com冰山算法受到市场认可,应用也比较频繁,因为它能够减小股价的大范围波动。
  (2)“捕食算法(predatoryalgos)”:捕食算法是与冰山相对应的算法。她被用来专门对抗冰山算法,可密切监视市场上这种化整为零的隐匿方式,并且加以利用。
  (3)“统计套利(statisticalarbitrageur)”:是通过对历史数据做分析,统计最高价位,寻找各种数据点和价格的相关性。利用收集到的数据及其相关性分析建立预测模型,并且和市场上的最新报道和股价联系起来,在最快的速度下给出买或卖的结论。
   它不仅需要实时关注市场的动向,寻找新的相关性并做出决策方面的第一手变化,而且还需要与竞争对手的同类系统竞争,在速度上甚至在毫秒的级别上克敌制胜,1秒或1美分的落后都会被对手占得先机。另外,在某一套相关性系统失灵之后,后备部队就需要重写算法做快速转移。
  (4)“资金暗池(darkpools)”:这类系统始终处于买卖大单的准备状态,而且不会向其他市场参与者公布报价。要知道暗池买卖的价位,可PING之,在得到暗池的回应价格后,可选择接受该价格并完成交易,也可迟些再PING并找寻新的价格点。
JD-Quant的回答中已经对冰山算法、捕食算法、统计套利和资金暗池四种算法进行了简单的阐述。
这里主要分享一些高频交易入门的知识。
高频交易入门(一):从行情和交易角度透视量化交易,从价格生成机理,行情报价细节,交易指令细节三个维度对交易规则详细解读。
高频交易:理论、策略、资讯和中国实践整理了市场和价格的基础理论、高频交易策略开发、中国市场高频交易背景知识、高频交易资讯的链接。
这里不少回答不大入行,矿风太浓。讲点实际有用的高频交易方法。不酷炫,但真赚钱。
第一个方法稳赚不赔。大家要问:怎么可能?完全违反 EMH 啊,而且还讲出来?其实没必要遮遮掩掩地卖关子,因为 the devil is in the details。
肯定赚钱的方法,就是套利(arbitrage)。譬如这几年,中国的股指期货,是相当好的套利市场(虽然做的人越来越多,但空间依然有),尤其是前段时间,做这个的高频 fund 都有天上撒钱的感觉,捡钱捡到手软(补充:后面评论有人没明白,所以这里写清楚点:这个方法是平时赚小钱,暴涨暴跌的时候赚大钱,尤其是暴跌的时候赚得最多... 可谓唯恐天下不乱)。
方法做的人都知道。最简单的,就是不同交割期的期货之间的 convergence(跨期套利),期货和现货之间的 convergence(期现套利)。做大了就再去研究跨品种、跨市场套利。最近的股指期货太疯狂,上窜下跳,完全是在送钱。所以国家都看不下去了。
而关键,在于执行的细节,如进去和出去的时机和方法,在于执行的速度,在于 infrastructure,你的机器放在哪里(colocate),你的路由和网卡,以至 OS 的网络栈(甚至直接上 FPGA)的速度。这个就是技术活了。
这个对于中国市场有用,对于成熟市场的成熟 asset 来说基本上没有这样的套利空间(除去那些非常时刻,像前不久某天纳指开盘的时候)。不过,世界上有的是不成熟的市场,和不成熟的 asset 。
那么这就来到了第二个方法,存在一定风险,但更通用,而且确实有 alpha。这是许许多多 fund 在做的事情。就是假如 A 和 B 相关,现在 A 动了,你就去动 B(有时可以再 hedge 一下)。特别简单,特别直接,还确实符合市场规律,确实可以赚钱。而关键就在于细节了,比如是真动假动?动到什么时候?执行速度毫无疑问也很重要。
不举现代的例子了。举个古老的例子。从前很流行 risk on risk off,比如 ES 一动就去动 AUDUSD 啊 COMMODITY 什么的。是不是有点傻,但大家都这么做,所以也就变成了规律。这也确实有道理,可以用理论来建模和解释。
还有几个方法,但玩好以上这两个方法,已经够你做到 1b us$ AUM。没必要到 flash boy 的层次。太快其实意味不大。快进快出的,小 fund 玩玩可以,做不大。作为辅助就好。
最后,回应高票答案,如果要 make the world a better place,不要去 Silicon Valley 搞什么 O2O SNS。还是要搞实体的,最苦X的,最坑爹的制造业,才是立国之本,所以我去跳坑了,哈哈。要做就做最好的,欢迎看看我们的产品:首页-Blink禀临[禀临科技]-淘宝网 。
===========
上面的答案写于2015.9,现在是2018.8,美股连创新高,没有人知道泡沫什么时候会破,高频交易就更显得重要了。现在还多了一个新的有趣市场:虚拟货币,7天24小时。
欢迎看我在知乎的更多回答,只输出干货。最近还刚出版了一本人工智能深度学习的书,感兴趣的同学欢迎关注:
PENG Bo:我在知乎的回答&文章整理:AI/编程/金融/八卦篇PENG Bo:我在知乎的回答&文章整理:数学/物理篇PENG Bo:我在知乎的回答&文章整理:文/艺/音/生活篇
高频交易,看上去很美。老汉我说点别的,有一个类似的,我就差一个编程的,中文版
“我就差一个编程的”
E 版: http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2010-12.html#e2010-12-01T15_45_40.htm
作为我们大学计算机系的系主任,我经常收到一些声称得到了能造就下一个奇迹的好主意的人的来信和电话。这些电话有的十分的有趣!打电话的人有时是一位急切的创业者,醉心于他的想法,认为那是一个能取代Google,超越Facebook,或者是能改变当前的商业面貌,变革整个互联网的好想法。有时打电话的人不是我们学校的,有时是我们大学工商科目、大多是主修商业的学生;年轻人的电话都透露出了富有感染力的创业热情。他们希望能改变这个世界,他们需要我去帮助他们!
他们就差一个编程的。

他们需要有人能接受他们的想法,把这个想法转变成PHP,SQL,HTML,CSS,Java和Javascript代码。这些创业者知道他们现在缺少什么。我是否应该找一两个计算机专业的学生加入他们的项目,帮他们实现呢?
大多数他们这样的项目永远找不到计算机专业的学生来实现。有很多的原因。学生们都在忙于课程和生活。大多数计算机专业的学生都有了他们喜欢的工作。他们的工作是付现金的(如果不是拿不了的情况下),这比一个不确定的将来才会有的财富的许诺来说对学生们更有吸引力。这些想法和点子对其他人来说并不像对想出他们的这些创业者那样令人兴奋,不像这些创业者由于担心会产生创世纪的成就而坐卧不安。
很多这样有想法的人由于找不到计算机专业的学生或其他编程人员而一而再、再而三的联系我,希望能从我这得到好消息。年轻的创业者们会越来越泄气。他们希望其他人也能像他们一样为这样的想法而激动。(乐观的年轻人呀!)我一直希望他们能找到什么人帮助他们把想法变成现实。这个过程会是令人兴奋的。他们也能从中学到很多东西。当然,他们似乎也从来没有想到自己是可以去学编程的。
前段时间,我在微博上聊了几句关于接到这些电话的事情。Andrei Savu用简单的语句对于遇到的这些现象进行了总结:
@wallingf 这就是说,他们把软件开发者当作一种工具。产品 = 行动 != 点子
我在最近写的一篇博客里详细的谈论了这个问题,一个产品的价值来源于拥有一个想法和执行这个想法的组合。你单具备了前者或只有执行后者的能力都不太有价值。你必须把它们组合到一起。
很多“手握绝世好想法的人”都倾向于认为大多数或全部的价值都来源于创造出了这个想法。程序员只是一个工具,就像个鸡毛掸子,拿起来就可以掸灰。编程是个小事情,不是吗?
另一方面,一些程序员乐意认为大多数或所有的价值都来源于实施了这个想法。可是你不能去实施你还没有的想法呀。这就好像我和我的同事们围坐在一盘左宗棠鸡前惋惜我们失去的财富。可实际上没有人失去。财富从未与我们为邻。事实上我们缺少一个致命的条件。没有时间机器或其它机器能使时光倒流。
我仍然希望这些身负好点子的人中,一些人自己该会编程,或想去学编程,这样他们就可以自己来实现自己的想法。这样,他们也可以有机会知道只有超人有力量什么不做也能把理想变为现实。在过去,学习计算机编程是使用计算机的人的必然后果。可遗憾的是,现在全变了。如今使用计算机的必然后果看起来是可以让人接触到一些自己也许认识,也许不认识的人或者只是看看Youtube视频。
哦,想想吧,如果你发现了一个能够赛过Google和Facebook的好想法,那将会是什么样子。时不时的,我非常想告诉那些给我打电话的创业者,他们的想法基本上不会有改变这个世界的希望。但是我没有,至少有两个理由。第一,他们并没有想征求我的意见。第二,总有一段时间后会有另外一个微软或Google出现来改变这个世界。谁又能想到这会是无数想法中的哪一个?如果我和我的同事能够重新回到2000年,去告诉我们的年轻人有关Facebook的事,这些年轻人会有足够的远见来坐下来开发出这个网站吗?我猜不会。
我如何能知道哪一个会是能够改变这个世界的好想法呢?开发出来,努力工作,用你的手指把想法变成人们需要和想要的东西。把程序开发出来的能力是这些有想法的人缺少的一个必要因素。他们去寻找有这种能力的人,这很对。我很想知道,如果每个人都能够把自己的想法变成现实,这个世界将会变成什么样子。

有人说老汉文不对题,确实,那么我说点自己的内容:

交易本身有其自身的规律,也就是计算机算法工程师们特别看不起的行业经验。而实际上,即使你能够从行业经验翻转过来,通过高频数据的算法实现,或者算法交易的编程,实际中还是需要用到交易策略,也就是说,无论原来的交易员多么稀缺算法工程师帮他实现算法,实际交易的策略必须要有,而交易策略只能从交易实践过程中学习到,机器学习的那些算法回测,很难学习出交易策略。

所以,我在这里只是说了战略上如何看待算法和编程,如果是交易员,可能对算法实现不太重视,而算法工程师通常能感受到这种忽视,而反其道行之,过于强调算法的重要性,编程的科学性。

交易的盈利来自于交易本身,算法,就算是处理了高频数据 [很吓人哦] 的算法,或者大数据 [吹烂了的词]的处理平台,那也只是为交易决策供参考,并不会直接带来赢利。算法提供的结果无非就是:标的物、盈利比例和这个盈利将要发生的概率,而交易策略是展现不出来的。
=========== 后面在分割线之下有从事算法交易的程序员实例举证 ============

同时,交易算法仅用高频交易的数据过于微观,会有一叶障目,不见泰山的感觉。同样,仅想通过算法就能解决交易全部的思路,也有类似感觉。纸上谈兵的程序员们会认为算法能解决一切,问题就是能否写段代码运行在某些电脑上,然后就躺着赚钱呢? 有这个可能,作为市场参与人员,代表市场欢迎你们,尤其是欢迎左手算法右手实战的人。
特别讨厌那些只说不练的分析师,同样也讨厌只推公式、口爽算法不进市场操作的程序员。

最后,作为不靠谱的代码工程师,还是哆嗦点算法的事吧,要不就真成了假把式了。
通常高频交易、交易和套利等等,涉及这些问题应归属于时间序列范畴的事,而金融的时间序列不同于普通的时间序列,普通序列如语音的时间序列,金融时间序列它有独特的特征,主要是多元 multivariate、非线性 nonlinear , 非平稳 nonstationary,不确性 uncertain,就是混沌系统(chaos模式),方向上不要偏太远了。也有人将交易问题归属于复杂系统,但对于复杂系统的研究是最近几年才刚刚兴起,很多解决方法思想上都还不成熟,有广阔的道路可以走,尤其是将交易敷设进复杂系统的语境下进行问题求解,估计能出几篇像样的论文。人类作为碳水化合物的生物体,对于图 graph (or complex network )的理解还不深。作为弱爆且各种不着调的人就不具体展开来了。

关于高频交易的数据描述,低频日线交易OHLC【开盘、最高、最低、收盘、均价、金额】,可以视为一个标量,古典的时间序列研究的是,Scalar (ohlc) 的排列序。在高频数据中有所不同,单独采样期内就可以视做向量,因为不仅可以看到分时的时间片内价格变动,还有成交方向,即撮合状态下是按买价成交还是卖价成交(如果采样间断时段内成交额超过买卖挂单则可视做冰山单),还有即时下买单堆入还是卖单堆入(类似冰山单未成交部分)【我发现这两者的影响并非总是很显著,可能的主要原因是市场上初级的参与者众多(比如肉眼看屏交易人)且只关心了价格变动】,这些特征都是低频数据所没有的,也是古典金融学比如 black-scholes 时代因技术的因素所未能观察到的交易实际存在。这些高频交易数据堆起来,数据量也是非常大的,每天的量基本就能比较一个海量数据仓库的稍小的规模;在高频数据概念内延中还有时延和时间隔的两个特征,如果不是做股指期货或统计套利,过于关注这两个参数会将开发的注意力转移,【很多科普类文章一直强调小时延,比如夸张到宣称要尽量剪短光纤之类】。列位客官可以用自我的账户上进行实验,可以在中大盘交易冷门股票的第5档位置挂单实验证券公司从电脑下单到交易软件弹出值的时间是多少,那些动则强调纳秒的文献科普资料就可以呵呵了。
好吧,我这里说的不是高频交易,是高频交易数据下的微观市场结构。
程序员在开发相应算法之前,需要自我评估与上举例类似的数据环境情况,便于认知自我的能力外延界,已期达到最快速实施。仅凭阅读文献进行设想或者单靠思维实验的漫游,较难认知全局的状况。要谨慎从事。
回复中有人表示不忿,要我我也不忿啊。为什么你能做我不能做啊?你吓唬我啊~!
因为:敝国股市开市二十多年了,数数看有几个操盘手做超过两个大波周期的? 基金操盘手为什么还要开老鼠仓啊? 从公募跳出来做私募怎么就会死了? 流亡海外的、跳楼自杀的、欠债潜逃的、离婚妻离子散的还少么?

最近股市大涨,每个人都以为自己会超过索罗斯巴菲特,年入超过100%,甚至月入超过100% 也轻松啊。市场不光比谁挣的多,还比谁活的时间长,今年挣很多,明年亏死了就没法继续玩了。等着看好了,不到明年就到后年,再回来看看,还有多少人持续活着。

============ 2017.11.15 新增内容  可耻的分割线 ===================
【在此举个例子,非褒非贬】微博上清华某博士14万粉丝,炒美股有一年了,看样子是采集财报数据进行预判,然后下注,最近一年美股涨幅喜人,某博士也春风得意,但其实他没有什么交易策略,也不管交易的风险,这种操作就像是赌博,和下注一样,赌对了就赚钱,错了就亏钱,搞IT写代码的人通常都会走入这个误区,这种交易跟赌博没区别(呼应分割线之上的内容)。最后他公布的交易单是搜狗上市,下注了侧股sohu押上涨,并且还下注了同方向的期权,出现亏损了亏损额必然是扩大的。
==2018.03.22==【注:2017 doc. 赚了200万软妹币】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:392162
帖子:78433
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP