如何构建基于MATLAB的回测系统_matlab 策略回测
在量化投资中,定量投资模型的设计好坏无疑是成功的关键,单纯从数学角度来看,一个交易系统(交易模型)仅仅是一个从行情序列到资金曲线的映射:
f(ts,para) = E
其中f是一个交易系统,ts是某一个投资标的(股票、期货、期权、外汇等等)的行情时间序列,para是交易系统的参数组,E是资金曲线。如果f可以解析的表达出来,那么就可以使用泛函分析等数学工具,直接在理论层面来研究f的一些性质,包括其连续性、稳健性、对参数的敏感性等等一些性质,但事实上,往往实际投资中的交易系统大多数都没有显性解析表达式,只能通过数值回测给出该交易系统的表现,通过对资金曲线E的一些再处理,可以得到一些评价指标,比如年化收益率、夏普比率、最大回撤等等指标,通过这些指标,可以从一定角度来窥探这个交易系统的性能。
使用MATLAB可以更加精细化、自由化的测试交易模型,关于MATLAB进行回测的优劣与其他平台语言的对比这里不打算做过多说明,需要说明的是无论MATLAB还是其他平台语言,都仅仅是一个工具,工具的目的是帮助我们快速的实现模型进行测试,来检查某一模型的历史表现的好坏,但工具本身并不能帮我们赚钱,投资、量化投资的核心还是策略模型背后的交易逻辑。
量化投资进行回测的目的是:尽可能真实地还原实际交易过程,进而检测策略的表现!
明确了回测的目的,这样做回测才有意义。回测平台的实现过程中可能会碰到一些细节问题:
(1)回测标的的选取
回测标的的选取和确定是回测的第一步。
股票数据一般会选取前复权数据进行回测,关于除权、前复权、后复权所代表的意思以及相应算法的实现这里不做展开。
对于期货数据而言,与股票数据不同,由于期货不同月份的合约会到期交割,所以相应的品种的数据并不连续,这就涉及到一个问题,在进行回测时选取什么回测标的?可以有很多种方法将相关品种的期货合约连接起来形成连续数据,但哪种才是比较合理的呢?
回到实际交易本身,对于单边趋势类策略大多数投资者都会在相关品种的主力合约上进行交易,对于其他类型策略(震荡类、对冲类)可能会有其他选择,这里单就单边趋势类策略而言。这里就有个问题,“主力合约”怎么定义?只要给出“主力合约”的定义,那么回测标的的选取就有了答案,那就用“主力连续合约”进行回测即可,这样就能真实的反应实际交易过程,主力连续合约的构造按照主力合约的定义给出即可,比如可以按照成交量*持仓量最大来定义主力合约:
假设有A、B、C、D四个同一品种不同月份的期货合约,现把这几个不同月份的合约进行连接,设T为时间轴,在Ti天计算成交量*持仓量,该值为最大的合约为主力合约,但该换月过程不向后换月,只向前换月,即若某一合约K(属于A、B、C、D中一个)在Tk天之前做过主力合约,在Tk天主力进行了换月,在Tk天之后的某一天又为K合约的成交量*持仓量为最大值,此时忽略K。
上面仅仅是给出主力连续合约构造的方式之一,仅供参考。可能会有一些量化交易员使用某一品种的所有合约的加权平均的指数作为回测标的,或者采用在指数上触发信号,在主力合约上交易进行回测,这也是回测标的的选取方法之一。
(2)冲击成本的估计
冲击成本是回测中的未知量,其大小理论上与市场的深度和广度相关,最好的估计方式是需要积累大量的实际交易的实盘交易记录,进而可以估计出某一品种的实际冲击成本的大小。一般而言,流动性好的品种,使用1-2跳(跳:交易品种基本变动单位)作为冲击成本的估计,流动性不好的需要更大的冲击成本。
需要说明的是,冲击成本也并不一定对交易系统是不利的,这点要放开思路,见仁见智的看待,依据不同的交易思路和策略设计,可能会出现负冲击成本的情况。
(3)手续费的设置
手续费一般是固定的成本,为了严格一些可以将手续费设的大一些,比如设成交易所手续费的1.5-3倍,当然也没有必要将手续费设置的过大,因为所有的策略模型在手续费趋向于无穷大的时候都会崩溃掉,如果手续费设置的过大,会湮没策略本身的某些细节,更多关于策略对于手续费的敏感性,可以单独做敏感性压力测试。
(4)交易系统的评价
关于交易系统(策略)的好坏评价,全面地评价一个交易系统是一个很复杂的问题,这并不是用几个简单的指标就能很好描述的,有时候也可以考虑构建一个综合指标来考察交易系统的性能。
当然检验一个交易系统的最佳方式,就是“实战”,只有实盘才能更加本真的反应某一个策略在市场上的表现。
一个通用的基于MATALB的量化回测平台,应该具有如下一些特性:
(1)可以实现日内、隔夜策略的回测;
(2)可以实现低频、高频策略的回测;
(3)可以实现简单、复杂策略的回测;
(4)具有丰富的图形展示,可以自动保存相关图形文件;
(5)可以自动生成Excel文件,保存交易记录、统计指标、资金流、累计平仓盈亏等数据指标。
(6)可以实现多目标函数与自定义目标函数参数寻优以及2D、3D参数分布图形展示。
整体的量化回测平台大致框架如下图所示:
相关模块的细节实现未来会做展开讨论。更多内容您也可以参看《量化投资:以MATLAB为工具》。
转载请注明:数据分析 » 如何构建基于MATLAB的回测系统_matlab 策略回测