3.1 常用的回测平台
有许多商业平台可以用来进行回测,其中有些平台的收费很高。由于本书主要面向的是刚起步的交易员,所以主要介绍一些自己比较熟悉且经济实惠、运用广泛的平台。
3.1.1 Excel
无论对零售交易员还是机构交易员, Excel 都是最基本、最常用的工具。如果你会编写VB 宏语言, Excel 的功能就更加强大。Excel 的美就在于它能够实现“所见即所得”。由于数据和程序都在同一个界面上使用,所以没有任何隐蔽的内容。另外,在回测中常见的“前视偏差”(稍后会详细介绍)几乎很少在Excel 中出现(除非使用了宏,这时就无法实现“所见即所得”了),因为我们可以很容易地在电子表格中将不同数据列的日期对齐。Excel 的另一个优势是,能在同一张电子表格中同时进行回测和实时交易,从而避免重复编写程序。Excel 的主要缺点是,它只能对相对简单的模型进行回测。但是,正如上一章所说,简单的模型往往是最好的!
3. 1. 2 MATLAB
MATLAB (www.mathworks.com )是在大型机构工作的量化研究员和交易员最常用的回测平台之一。它是测试大型股票投资组合策略的理想工具(想象一下在Excel 中对一个包含1 500 只股票的策略进行回测一一虽说不是不可能,但一定非常痛苦) o MATLAB 集成了许多高级的统计模块和数学模块,如果交易员的交易算法涉及一些复杂而又常用的数学概念,就不用费时费力量新编写程序了。(统计套利交易的因子模型中常用的主成分分析就是一个很好的例子,如果用其他编程语言来实现是非常麻烦的。见例7. 4。)此外,我们还可以免费从网上下载大量MATLAB 的第三方插件,其中很多插件对量化交易十分有用(例7.2 中用到的协整软件包就是一个例子)。最后, MATLAB 可以很方便地在网上检索金融信息,并将其转换成有用的格式(称为网络抓取)。例3. 1 展示了这一过程。
尽管MATLAB 看起来似乎很复杂,实际上还是很容易学的(至少对于基本功能是这样),并且用它很快可以编写一个完整的回测程序。MATLAB 的主要缺点在于它可能相对较贵:一个拷贝大概需要1 000 美元。不过市场上还有许多MATLAB 的替代品,编写和使用的代码都与MATLAB 十分相似,如:
? Matrix (www.omatrix.com)
? Octave ( www. gnu. orw software' octave)
? Scilab ( www. scilab. 。rg)
这些替代软件的价格只有几百美元,甚至是免费的。当然,收费越高的替代软件,对MATLAB 编写的程序的兼容性也越好。(如果是完全自己编写程序,不用第三方提供的代码,也就不存在兼容性的问题了。但这样的话,就丧失了使用这门程序语言的一个主要优势。) MATLAB 另一个缺点是,虽然适合进行回测,但却很不适合作为执行平台。所以,在完成策略回测后,还需要用其他程序语言构建一个独立的执行系统。虽然MATLAB 有这些缺点,但这并不妨碍它在量化交易领域的广泛应用。在本书中,我会给出所有回测的例子所用到的MATLAB 代码,并在附录中对MATLAB 语言做简要介绍。
例3. 1 用MATLAB 从网页中抓取金融数据
MATLAB 不仅能用于数学计算,同时也能用于文本解析。下面是用MATLAB 从雅虎财经检索股暴历史价格信息的例子
clear; %删除之前定义的变量
symbol =’ IBM';%股票代码
%检索网页
historicalPriceFile= ???
urlread(['http://finance.yahoo.com/q/hp? s=’, symbol]);
%将日期存入单元格数组
dateField=???
regexp ( historicalPriceFile, ? .
'<td class=”yfnc_tabledatal ” nowrap align=” right" > ???
( [\d\w 一J +) <ltd> ’,’tokens');
%将数值存入单元格数组
numField = regexp (historicalPriceFile, ?..
'<td class=” yfnc tabledatal ” align=” right" > ???
( [ \ d \ ? '] +) <ltd> I ,’tokens');
%转换为字符串单元格数组
dates= [dateField {:} ]';
numField = [numField { : )]’
%转换为双精度浮点单元格数组
op= str2double (numField (1: 6: end》;%开盘价
hi=str2double (numField (2: 6: end》;%最高价
lo= str2double (numField (3: 6: end)); %最低价
cl= str2double ( numField ( 4: 6: end》;%收盘价
vol=str2double (numField (5: 6: end》;%成交量
adj Cl= str2double (numField ( 6: 6: end》;%调整收盘价
这个程序文件可以从epchan. com/book/example3_1. m 下载,用户名和密码都是“ sharperatio气这个网页抓取程序有一个局限z 每次只能抓取一个网页上的信息。由于雅虎财经上的历史数据显示在好多页上,所以使用MATLAB 检索IBM 全部历史价格数据并不十分有用。当然,这个程序只是MATLAB 文本解析功能的简单展示。
3. 1. 3 TradeStation
TradeStation ( www.tradestation.com )是许多零售交易员很熟悉的经纪商,提供直接与经纪商的服务器相连的、既可回测又可执行交易的一站式平台。这个平台的主要优势有:
·平台自身就有进行回测所需的几乎全部历史数据,如果使用Excel或MATLAB ,要从其他地方单独下载这些数据。
·在对程序进行回测后,就能立即使用同一程序下单,并将指令传送给经纪商。
这个平台的不足之处在于,一旦用这个软件为策略编写了程序,就自动默认TradeStation 为经纪商。另外, TradeStation 的专有语言并不能被MATLAB 这样的软件所兼容,也不包含那些交易员经常使用的统计或数学模块。不过,如果你喜欢一个能够集所有功能于一身的系统,TradeSta ti on 也许是一个不错的选择。
因为我在实际工作中没有用过TradeStation ,所以就不给出用TradeSta ti on 进行回测的例子了。
3.1. 4 高端回测平台
如果你有足够的财力,可以购买某些机构所使用的高端回测平台,下面是部分清单:
? FactSet’s Alpha Testing ( www. factset. corn/ products/ directions/qirn/ alphatesting)
? Clarifi’s ModelStation ( www. clarifi. com/ ModelStation-Overview.php)
? Quantitative Analytics ’ MarketQA ( www. qaisoftware. com)? Barra’s Aegis System ( www. mscibarra. com/ products/ analytics/ aegis)
? Logical Information Machines ( www.lim.com)
? Alphacet’s Discovery ( www.alphacet.com)
这些平台,我只用过Logical Information Machines 和AlphacetDiscovery。以我10 年前的经验, Logical Information Machines 测试期货交易策略最合适不过,但测试股票交易策略就要差一些。Alphacet Discovery 是一个集合了数据检索、回测、基于机器学习算法的优化以及自动执行功能的新产品。它的功能非常强大,可以在期货、股票、外汇等市场上进行回测和交易。例7. 1 就是一个使用Discovery 平台回测的例子。