干货 -高频交易在怎么挣钱?(转载)

Author: 小小梦, Created: 2016-09-12 14:13:46, Updated: 2016-09-12 14:18:09

高频交易在怎么挣钱?

写在前面: 2016年7月30日,交易门的主角,高频交易员李奥应香港受交通大学香港校友总会之邀,做了一场题为《量化金融与高频交易》的主题分享会。征得李奥同意,交易门独家首发这次分享会的内容。本讲稿经过李奥修订,谢谢李奥。

  • 我讲的内容会偏IT一点,因为一直都是在做IT。因为我没有正规学过数学和统计,所以可能看起来不那么正规,有一些小道消息和自己做交易以后的经验。 我会讲四个类型的交易策略,再大概讲讲数学和IT方面的东西。 Quantitative Trading,顾名思义可以分为两个部分,一个是Quantitative,一个是Trading。 Quantitative跟传统的手工交易相比,很多东西通过模型去量化,而不是靠直觉。Trading就是跟风险控制紧密关联,不是手工交易,通过程序化来完成。 Quantitative Trading分很多类,讲一周一个月都可以。Fundamental部分有一些Long/ Short Equity,有一些 Alpha Strategy。还有一类Pricing Quant,比如做Option Pricing,怎样去定价。还有一个类型是纯的Market Data的Quant。也就是说他只看Price和Volume,在Price和Volume上面做的技术分析,纯的Market Data。

图1 img

  • 高频交易基本上就用纯的Market Data,因为它本身对数据要求高一点。Market Data是时刻在变的,但Fundamental啊,News啊,一般来说不会时时刻刻在变。 什么是高频交易?首先是自动化。高频交易没有可能用手去做,不在一个时间的水平上,要有很多计算能力,需要强大的计算机,然后是大量的下单,不会像人手一样,可能每秒,每毫秒,都在交易。 当然这个单也包括很多撤单,大量的报撤单。有的策略撤单很多,可能报了100多万单,只成交一万多单。另外就是非常高的速度。还有定义说,需要复杂的算法——我打个问号,因为有的算法其实是比较简单的,并不复杂,可能就是小学数学的水准。 在继续谈论之前,我先介绍几个时间的概念。我们平时计时,小的单位可能都是以秒,甚至以分钟记。在秒之下,还有毫秒:千分之一秒。人眨一下眼睛大概就是300毫秒的样子。上海到深圳的数据传输,一个ping大概是30毫秒左右。再往下有微秒,千分之一毫秒,百万分之一秒。在高频交易里面,做一个交易决定大概是10-20微秒,当然可以通过一些硬件的方式做到2个微秒左右。微秒下面还有一个纳秒,千分之一微秒。这就太极速了。

图2 img

  • 比较下: 眨下眼睛,350毫秒;高频交易做1000个Trade Decision,只用15个毫秒。 我们常说眨眼之间,眨眼之间高频交易可以做超过一万次交易决定。所以高频交易的时间轴是不一样的,对高频交易来说,一秒钟已经太久。

  • 下面讲讲高频交易的几个主要策略类型。

图3 img

  • 做市策略

    做市商策略主要目的在市场上提供流动性,去Bid/Ask挂单,让Bid/Ask收窄,赚取中间的差价。听起来很简单,但是有很多模型啊,Risk Control啊,IT上面的军备竞赛啊。 就是说,这里面的几个大佬都做得比较好。 里面有很多东西可以谈,比如怎么去控制你的持仓,你的风险。还要做很多 Prediction。怎样去Ppredict Volatility和Price。这里面IT问题非常重要,因为竞争非常激烈。怎么提供更快的报价,怎样更快的撤单,都是非常重要的问题。 IT的成本很高,因为大家都在竞争,大家都想更快,从Co- Location,到FPGA,现在微波都上了。竞争很激烈。正是因为门槛很高,所以剩下的几家都做得不错。 对于普通投资者来说,做市的存在,让他买卖的差价更小,是有好处的。 图4 img 这是去年8月12日我的一个策略在上证50股指期货的表现。那天整个市场的交易量22.5万手,我的策略占到4.1%(9180手),P&L 也还行,Drawdown也比较小。Capital需求也很低,一整天只需要50万本金,赚了21万多,收益43.5%。 去年7月份,因为股灾,中金所开始在股指期货上对部分投资者进行限制。可以看到,7月份这几天Bid/Ask Spread有拉大的迹象,到9月7日,中金所开始对投机户进行限制,持仓保证金提高至40%,平仓手续费提高至万分之二十三,单个品种单日开仓交易量不超过10手。市场的成交量降低到不足以前的1%。因为做市策略不好做了,10手做市策略根本没法玩儿,有的被关掉了。大家可以看到Bid/Ask Spread的陡然变化。 图5 img 图6 img 所以做市策略可以增加市场流动性,让Bid/Ask Spread收窄,买卖量大时不致于有很多滑点。 做市策略需要大概估计一下,什么是更加合理的价格。股指期货做市,有人会用一篮子股票去预测股指的合理价格。

  • 统计套利 这里面每个都是很大的Topic。我只是大概讨论下。 统计套利涉及到概率、数据挖掘、建模,交易执行,怎样做Data Cleaning。 数据挖掘非常重要,这个处理不好有时候是非常头疼的事情。有一句很经典的话叫做:Garbage in,Garbage out。很多Quant很多时间都花在数据处理上。有时候会发现非常激动人心的结果,回头发现数据搞错了。 一个最简单的套利模型就是历史价格的波动率,在两边加上一些执行区间。比如奶粉,花100块钱从香港买,到内地120块钱卖掉。中间你花了10块钱路费,最后挣了10块钱。这就是你的套利空间。 又比如黄金,国内外市场都有标准合约,理论上价值是一样的,拿出来都是两块金条。但是价格会有波动,我们去算这个价差,如果发现它偏离历史统计区间,譬如Brexit的时候,会发现中国的黄金便宜了,美国的黄金贵了。那我们可以去买入价格偏低的,卖出价格偏高的进行套利。当然,实际操作中,会有流动性等因素造成的影响,这需要一些经验。

  • 预测 通过过去的市场数据和当前市场环境的比较,预测未来的价格走势:Price=a+b+c。这个“未来”可以是下一秒,下一分钟,下一个交易日,下一周,下个月。如果你的模型预测很准的话那就超NB了,不管是下一秒、下一分钟还是下一周。只要你的模型很有效,就很NB。这不是一个很容易的工作,需要基础,经验。这个我也还在学习,没有太多经验。 图7 img 这个基本的过程是先把数据搞好,再搞清楚,到底是哪些因素在影响市场。 你可以很快开始,拿个均线搞一下,可能很快出结果,但你模型的稳定性到底能稳定多久,这都需要去不停的Tuning,不停循环。你去Training、Evaluate这个Model,然后去Optimize你的Factor。 当然现在有很多Factor,有些人的做法就是,扔进去500个Factor。他的模型可以告诉他哪些Factor有用,哪些Factor没有用,也可以把很高Correlation的Factor自己去除掉。但这个东西,我还在学,我没有太多经验。我只是知道有这些做法。 一个Super Simple的——并不是说简单就不管用,最简单的一个预测模型,就是价格会回到均线。均线是什么周期的,自己去琢磨。这个中间的复杂性,大部分来自Data。Model的话,R里面有很多Package,可以帮你做到还不错的自动化。很多Indicator可以自动,图也很有帮助。 Data和Factor都需要不停琢磨。再去套这些Model。

    • Micro Structure 这个就偏高频了,一般的Quant可能不会用到。比如股票交易里面经常听说支撑位、压力位,就是简单的Micro Structure。可能看到这个是支持位,有很多单,很多Bid在那里。 看一下去年美国的证监会做了一个调查。 Spoofer,在市场里Bluffing的一些Player。本来市场很正常,买单都是10,20,突然有个Player进来说我要买1000。大家都以为有个很大的买单,都去抢着买。股票的走势从微观角度来讲都是供需关系。买的人多了就会涨上去。有人放个100万的单,开始往上涨。然后他就开始卖。这个就是Spoofing。美国证监会严格定义为操控市场的行为,是违法的。 贴两个很有意思的链接: How to Catch a Spoofer http://www.bloomberg.com/graphics/2015-spoofing/ Iceberg Orders http://www.marketdelta.com/blog/2011/10/footprint-chart/iceberg-orders/ 数学,从我的经验来讲,小学数学和PhD数学都会用到。不要小看小学数学,也会栽很多坑的。高级一点的,像Pricing是很专业的。怎样去Price一个Interest Rate的Option。 还有Predictive Modelling,这个很广,可以讲很久,很多公司都在用。很多Quant都会做的事情。 高频的短板就是,容量很小。就好比你给他50万,他赚20万。你给他500万,他可能还是赚20万。

  • IT。大家都知道“光大乌龙指”事件。另外,骑士资本曾经半小时亏了4.4亿美金。程序员升级系统,可能8台生产机,有一台没有升级,导致有一个错误的指令执行了,就不停地交易。关键是还交易了30分钟。我不知道它怎么做到30分钟没有发现的。

这两个案例就是说,IT很重要,可以让你亏很多钱(“光大乌龙指”是赚钱了,但被罚了很多钱)。 图8 img IT System主要分为上面四个部分。 Price Data相对简单一点,更多的像Fundamental Data、Unstructured Data就比较复杂一点,需要很多的程序员码代码,怎样去收集、格式化、统一化、Access。作为一个Quant,我就想拿某天的数据去画个图出来。我们现在基本上就是这个状况,很容易就可以拿一堆数据做一堆事情,另一端的Quant就写很少的代码。因为我们把很多的数据结构、数据接口都统一化。不管是用C++、C#,还是从Scala,拿这个数据都是同样的格式,这样就会很方便。 当然你不能错,你的容错和你检查错误的能力也要非常高。之前我们就出现过这样的情况,回测非常好,天天都赚钱,结果发现数据错了。非常愚蠢的错误。经常发生,相信以后也会发生。不过以后再看到很NB的回测结果,我们会更加怀疑。 这个Execution就是各种API,各种market access,各种风控。在高频领域,速度是非常重要的。因为很多数据都是公开的,很多人都看得到。当很多人都看到一个机会的时候,只有最快的人可以拿到它。每个市场都有不同的API,也有统一的协议,比如Fix协议,但不一定是每个交易所都支持,但是Fix协议本身也比较慢。高频的话一般都是C++、FPGA的下单模块,我们一般都是C++、FPGA。我们现在有小部分策略是放在FPGA上面的,不通过OS。 Back Testing,有时候Quant想出来的东西,可能你的回测系统还不支持,你需要去改回测的框架。 Visualization很重要的。你不能说,给我生成一堆数,看不来的嘛。看到图更加一目了然。我们花了很多力气在Scala里面画图,在R里面画图。因为一堆图和一堆数据解释是不一样的。 回测的速度也很重要。比如回测一个策略,一年的数据,你需要一个星期。谁去等一个星期看你的结果啊!一分钟可能还能接受一点。策略里面的参数存在一个迭代的过程,比如参数,我想从1试到100看看怎么样。你每个测试用5分钟,优化的时候我可能有10万个参数需要测试,那就不能等了。 这里面我们也做了很多优化,比如怎样去拿数据,怎样去缓存,在中间提高它的性能。以前,我在上一家公司还做了一些云计算的尝试,把一些回测的Engine全部Distribute到很多服务器上。这样的话,一个Request过去,有很多机器同时在跑。你可以把它做到互相不影响。每个参数都是独立的。都可以并行地去计算。 还有一个就是Monitoring。这里面很多自动化在里面。又有很多策略。需要人工盯着不太现实。 怎样去Monitor风险,怎么样去Alert,这也是一个很重要的环节。像我们现在的策略都是自动化运行,所有策略的监控,每个策略的风险水平不能超过多少,超过会报警。特别是我们还交易夜盘,让程序员经常熬夜的话,也不太现实。所以如果有Critical Error,就会直接打电话到手机上。现在我们就会轻松很多。 当你交易的品种很多的时候,基本上没有可能都是人在那里盯着,所以要做很多监控。


  • 推荐阅读:

Flash Boys
Quantitative Trading: How to Build Your Own Algorithmic Trading Business
The Quants: How a New Breed of Math Whizzes Conquered Wall Street and Nearly Destroyed It
The Problem of HFT - Collected Writings on High Frequency Trading & Stock Market Structure Reform
Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading
Algorithmic Trading: Winning Strategies and Their Rationale
Quantitative Trading with R: Understanding Mathematical and Computational Tools from a Quant's Perspective

http://numericalmethod.com/courses/introduction-to-algorithmic-tradingstrategies-2011-2013/ https://www.quantstart.com/articles/beginners-guide-to-quantitative-trading https://www.zhihu.com/publications/nacl/19550372

链接


More