高频交易的思路模型简介

来源:互联网 发布:淘宝客云建站app制作 编辑:程序博客网 时间:2024/06/03 15:58

转载自:http://www.dataguru.cn/article-5430-1.html

高频交易凭借其巨大的获利空间,已经席卷了欧美金融市场。根据美国的Alpha杂志,2009年2月的Aite Group报告就已经指出:在美国所有交易所的交易量中,高频交易已经达到60%的份额。根据媒体报道,光大“乌龙指”事件也是其自营盘运行的高频交易程序产生错误,导致极端事件的发生。高频交易虽然已经频繁进入人们的视野,但是帮助投资者理解高频交易方法的资料却很少。下面,我将结合自己的经验和国内外文献,阐述高频交易的具体思路模型。

 

1.高频交易的介绍

 

1.1 高频交易的定义

 

    高频交易是一种快速买卖的操作策略,通常时间以毫秒或者秒为单位。美国证监会文件给出高频交易的定义是:职业交易员操作适当的资本在一天之内进行庞大数量的买卖操作行为。(professional traders acting in a proprietary capacity that engages in strategies that generate a large number of trades on a daily basis)。

 

    从定义入手,高频交易与低频交易的区别在于:是否通过大量快速的计算程序,对金融市场的变化进行最快速反应。根据频率周期,程序需要进行多次反复运算,执行快速交易的指令。相对于传统的资金经理的持仓周期,高频交易会每天进行大量买卖交易,几乎避免隔夜的持仓行为。虽然每次交易的收益有限,但是由于交易频繁,总体获利数目却仍然十分可观。

 

    高频交易的特点就是程序计算,反应快速,交易量巨大,持仓周期短于一天。国外著名对冲基金经理对于高频交易与低频交易的区别有过一个形象的比喻:如果金融市场是一个人的身体,高频交易就是人体的血液。高频交易通过不停的买卖循环供给市场氧气,修复伤口,保持恒温。而传统的低频交易,由于反应速度较慢,像是人体的肢体动作,对外界作出反应需要一过程。程序化交易的一种特例——高频交易,在全球金融市场中已经被运用到各种交易产品,特别是在股票,期货,期权等衍生品市场。而且已经逐渐取代人工做市(market maker),成为各大做市商的主要工具。

 

1.2 高频交易的优点

 

    相对于传统交易的资金管理,高频交易拥有多种优点。例如:高频交易与周期较长的传统交易策略关联度较低,起到分散风险的作用。运用程序化计算,高频交易需要更短的时间来进行金融产品的估值。同时,高频交易由于对模型的信赖,减少了人工成本,同时也降低了人工出错的概率。高频交易的运用,对于保持市场的有效性,增大交易所的交易量,稳定市场体系,都带来很大好处。但是,高频交易对市场造成的风险也成为西方学者争论的焦点。由于大量进行巨大资金的快速入场和离场,是否会带来市场的可操控性,甚至造成市场的集体崩盘都存在很大争议。对于2010年5月份美国股市闪电崩盘(flash crash),就有很多学者把原因归结于高频交易的使用。

 

    在纽约,康涅狄格,伦敦,新加坡,芝加哥都存在很多著名的高频交易公司。坐落于芝加哥的高频交易公司,运用它们与芝加哥商品交易所(CME)近距离的优势,近年来发展了很多实用的期货、期权和商品交易的快速交易策略。国外比较有名的高频交易公司有Millennium, DE Shaw, Worldquant, and Renaissance Technologies等。

 

1.3 高频交易的挑战

 

    高频交易的快速发展,带来了巨大收益的同时,也面临很多挑战。

    第一,如何处理庞大的数据。与传统的当日指数不同,高频交易运用的数据(tick data)需要进行分割和重新组合。对于一个成熟的高频算法模型,至少要求两年以上的历史数据来进行验证。如何进行这些数据的管理是第一个需要解决的问题。

    第二,如何得到有价值的交易信号。如果程序验证市场符合设置条件,就需要执行交易命令。对于交易条件的设置,需要对统计指标和预测价格的组合,每个模型一般都有其独特的指标设置。如果条件被错误确认,盈利可能瞬间变成损失。

    第三,如何快速执行买卖命令。通过计算程序,自动进行买卖确认和执行是实现快速下单的唯一实现办法。从这次光大“乌龙指”事件中,也可以知道,程序化进行买卖同时需要一个可靠的风险控制体系。交易员在高频交易的重要职责就是监督指令的正确性,此系统是否运行在正常的风险界限之内。如果不是,选择合适的时间去停止这次交易。

 

 

2 高频交易的分类

高频交易的基本逻辑就是

    当Zk符合An条件的时候,执行Sn命令。当Zk不符合An条件的时候,执行下一步运算。所有的高频交易的计算程序都需要执行三个决定:是否买入,是否卖出,既不买也不卖。而根据程序运行的时间不同,也就是频数不同,将高频交易分为四类,分别为:自动流动性提供者,市场微观交易,事件交易,偏差套利。

 

 

 

 

表1.高频交易策略的分类

 

名称

描述

频数

自动流动性提供者(Automated liquidity provision)

最优价格的定量算法和做市的仓位执行(Quantitative algorithms for optimal pricing and execution of market-making positions)

< 1分钟

市场微观交易(Market microstructure trading)

定义买卖单,当市场出现与预期相反状况情况(Identifying trading party order flow through reverse engineering of observed quotes)

<10分钟

事件交易( Event trading )

极值事件的短期交易(short-term trading on macro events)

<1小时

偏差套利 (Deviations arbitrage)

偏差统计的套利(Statistic arbitrage of deviations from equilibrium: triangle trades, basis trades, and the like)

< 1天

 

   关于频数的解释,可以通过下面的高频交易平台的显示进行解释:

 

表2.高频交易平台的显示页面演示

 

交易系统

日期(Date)

时间(Time)

是否买单(Buy a Unit of Security)

是否卖单 ( Sell a Unite of Security)

2009年3月1日

2009年3月1日

2009年3月1日

2009年3月1日

2009年3月1日

2009年3月1日

2009年3月1日

6:00am

7:00am

8:00am

9:00am

10:00am

11:00am

12:00am

1

0

0

1

0

0

0

0

0

1

0

0

0

0

(数据来自于High-frequency Trading A Practical Guide to Algorithmic Strategies and Trading Systems)

    由上表可以看出,频数为一个小时。

 

 

3. 高频交易的实施程序

    这一部分是高频交易的核心所在,也是高度保密的一部分。很少有从事高频交易的公司把自己的具体交易策略对外界公开。目前主流的高频交易实施方法有两种:一是根据多种统计指标的变化,作为判断的依据。即利用程序的快速计算,得到平均数、方差或者其他的独特的指标进行组合,判断是否符合买单,卖单的条件,然后快速执行命令。这一部分是最基础的高频交易。目前市场上比较流行的高频交易方法是,通过数学模型预测未来价格,当市场价格与预期价格出现偏差,立即做出判断,是否为大资金进场和离场,快速执行买入或者卖出指令。目前,由于第二种的收益率较高,大部分高频交易都采用第二种策略。

 

下面我将简单阐述一下第二种高频交易策略的步骤和思路

 

1. 根据市场情况,建立数理金融的模型,预测短期价格的波动。

   

    首先,需要把历史数据进行有效分割。

    因为每两个相邻的价格之间时间差是不一样的,需要根据kernels curve等技术,剔除极值,润滑曲线,把价格与时间的坐标图练成一条平滑的曲线。然后根据自己的频数时间,对相对应的价格进行相应提取。

    然后,根据回归分析,把后一个频数的价格与前一频数的价格建立公式,得到相应参数。现实模型里面的对于价格的预测模型比较复杂,但思路都是一样,就是根据前一频数的价格得到后一频数的价格。

    下面以比较简单的线性回归为例,进行说明。

" o:title="">

Pt 为时间t时刻的价格,Pt-1为时间t-1时刻的价格,A为影响价格的其他因素, parent.UploadError('lang[" erruploadinvalidext?]+?:gif|jpg|jpeg|bmp??);history.back()<="" style="word-wrap: break-word; margin: 0px; padding: 0px;">" o:title="">为残差, parent.UploadError('lang[" erruploadinvalidext?]+?:gif|jpg|jpeg|bmp??);history.back()<="" style="word-wrap: break-word; margin: 0px; padding: 0px;">" o:title="">和 parent.UploadError('lang[" erruploadinvalidext?]+?:gif|jpg|jpeg|bmp??);history.back()<="" style="word-wrap: break-word; margin: 0px; padding: 0px;">" o:title="">为回归得到的相应参数。

    

     对于 parent.UploadError('lang[" erruploadinvalidext?]+?:gif|jpg|jpeg|bmp??);history.back()<="" style="word-wrap: break-word; margin: 0px; padding: 0px;">" o:title="">的估算,一般采用蒙特卡洛方法生成的随机数进行模拟。

     最后,把参数运用于未来价格的模拟。当价格符合执行命令的条件的时候


0 0