加载中…

加载中...

个人资料
faruto
faruto 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,143,192
  • 关注人气:2,115
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

《量化投资:以MATLAB为工具》连载(19)如何构建基于MATLAB的回测系统(下)

(2014-10-27 10:43:53)
标签:

股票

程序化

quant

量化投资

回测

分类: 量化投资:以MATLAB为工具

《量化投资:以MATLAB为工具》连载(19)如何构建基于MATLAB的回测系统()

《量化投资:以MATLAB为工具》简介

         《量化投资:以MATLAB为工具》是由电子工业出版社(PHEI)下属旗舰级子公司——北京博文视点资讯有限公司出版的《量化投资与对冲基金丛书》之一,丛书主编为丁鹏博士,《量化投资:以MATLAB为工具》由李洋(faruto)、郑志勇(ArisZheng)编著,主要介绍MATLAB在量化投资中的具体应用。该书预计201410月上市,欢迎大家多多支持。在书籍上市之前,会在中国量化投资学会的各种网络平台进行系列连载介绍,方便读者提前一窥书籍概要。

基于MATLAB的策略回测模板样例

本节给出一个复杂一些的基于MATLAB的策略回测模板样例,读者只要对该模板稍加改造,就可以用来回测其它策略。

 

模板结构

策略回测模板由三部分组成:数据准备、回测计算和策略评价。

   数据准备部分的主要功能是从数据库中提取数据并进行整理。数据存储在SQL SERVER数据库中,通过ODBC进行连接。本模板中使用的数据为期货数据,每个品种的每个周期对应一张表,如RB888_M15表示螺纹钢连续数据,周期为15分钟。每个表中有7个字段,分别为日期时间(Date)、开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)和持仓量(OpenInterest)。

   回测计算部分的主要功能是对策略进行仿真测试。它包括定义主要参数和变量、指标计算、开仓平仓和止损止盈等内容。首先,我们对策略回测需要用到的主要参数和变量进行定义,虽然这不是必须的,但这样做能使心中有数。其次,做一些预计算,如一些指标的计算。然后,利用预计算的数据进行仿真计算,包括开仓、平仓、止损和止盈等。

   策略评价部分是对回测计算部分的总结。该部分能自动将交易记录和资产损益情况输出到外部Excel中,并通过计算净利率等一系列指标进行交易汇总。另外,该部分还画出了一系列图表,更加直观地显示策略效果。

 

相关回测变量和指标的定义

在回测实现中,会涉及到一些相关的变量和指标,具体的定义由下表统一给出,后面的实现均按下表实现。

15- 1:回测变量和指标的定义

交易成本

建仓价格*交易单位*手数*成本比率+平仓价格*交易单位*手数*成本率

净利

多头:(平仓价格-建仓价格)*交易单位*手数-建仓价格*交易单位*

手数*成本比率-平仓价格*交易单位*手数*成本率

空头:(建仓价格-平仓价格)*交易单位*手数-建仓价格*交易单位*

手数*成本比率-平仓价格*交易单位*手数*成本率

累计净利

净利的累计求和

收益率

净利/(建仓价格*交易单位*手数*保证金率)

累计收益率

收益率的累计求和

多头保证金

当前Bar收盘价*交易单位*手数*保证金率

空头保证金

当前Bar收盘价*交易单位*手数*保证金率

静态权益

持有合约、不持有合约、开仓时:静态权益=上一根Bar的静态权益

平多头时:静态权益=上一根Bar静态权益+(平仓价格-建仓价格)*

交易单位*手数-买卖成本

平空头时:静态权益=上一根Bar静态权益+(建仓价格-平仓价格)*

交易单位*手数-买卖成本

动态权益

多头时:动态权益=静态权益+(收盘价-建仓价)*交易单位*手数

  (不用减交易成本,因为静态权益中已经考虑过了)

空头时:动态权益=静态权益+(建仓价-收盘价)*交易单位*手数

空仓时:动态权益=静态权益

可用资金

可用资金=动态权益-占用保证金

净利润

Σ净利

总盈利

Σ大于0的净利

总亏损

Σ小于0的净利

总盈利/总亏损

Σ大于0的净利/Σ小于0的净利

盈利比率

盈利手数/总交易手数

平均利润

净利润/交易手数

平均盈利

总盈利金额/盈利交易手数

平均亏损

总亏损金额/亏损交易手数

平均盈利/平均亏损

平均盈利/平均亏损

持仓时间比例

持仓Bar数量/Bar数量

持仓时间()

总交易时间*持仓时间比例

收益率(%)

净利润/初始资金

有效收益率(%)

净利润/最大使用资金

年化收益率(365天算,%)

1+有效收益率)^(365/持仓时间)*100%

年度收益率(240天算,%)

1+有效收益率)^(240/持仓时间)*100%

年度收益率(按日算,%)

mean(日收益率)*365*100%

年度收益率(按周算,%)

mean(周收益率)*52*100%

年度收益率(按月算,%)

mean(月收益率)*12*100%

年度夏普比率(按日算,%)

(mean(日收益率)*365-无风险收益率)/(std(日收益率)*sqrt(365))

年度夏普比率(按周算,%)

(mean(周收益率)*52-无风险收益率)/(std(周收益率)*sqrt(52))

年度夏普比率(按月算,%)

(mean(月收益率)*12-无风险收益率)/(std(月收益率)*sqrt(12))

最大回撤比例(%)

回撤比例绝对值最大值*100%

 

… …

 

更多内容参见《量化投资:以MATLAB为工具》。

         该书预计201410月上市。

书籍交流论坛:MATLAB技术论坛读书频道《量化投资:以MATLAB为工具》专版,地址:http://www.matlabsky.com/forum-112-1.html

 

作者简介

李洋(faruto),中国量化投资学会专家委员会成员,MATLAB技术论坛(www.matlabsky.com)联合创始人,北京师范大学应用数学硕士,先后就职于私募、期货公司、保险公司,从事量化投资相关工作。十年MATLAB编程经验,对机器学习、量化投资等相关领域有深入研究,已出版《MATLAB神经网络30个案例分析》和《MATLAB神经网络43个案例分析》等书籍。

邮箱:farutoliyang@foxmail.com

微博:http://weibo.com/faruto

郑志勇(Ariszheng),中国量化投资学会专家委员会成员,方正富邦基金产品总监,北京理工大学运筹学与控制论硕士,先后就职于中国银河证券、银华基金、方正富邦基金,从事金融产品研究与设计工作。十余年MATLAB编程经验,专注于产品设计、量化投资等相关领域的研究,尤其对于各种结构化产品、分级基金产品有着深入的研究,已出版《运筹学与最优化MATLAB编程》和《金融数量分析:基于MATLAB编程》等书籍。

邮箱:ariszheng@gmail.com

微博:http://weibo.com/ariszheng

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有