全部版块 我的主页
论坛 金融投资论坛 六区 金融实务版
3339 0
2016-03-04

QuantLab量化策略解析(二)

如何构建简单实用的量化择时策略?

报告日期 2016年03月04日

QuantTrader @ QuantLab


欢迎关注微信公众号【QuantTrader】

腾讯/新浪博客/微博【QuantLab量化实验室】


我们上一期的量化策略解析报告《QuantLab量化策略解析(一):为什么说择时很重要?》分析表明,不管是券商作为传统卖方研报推荐的精选投资组合,还是近年来互联网企业与基金公司联合推出的融入大数据分析技术的选股策略,在市场快速走熊的极端市况下均难以幸免。对单纯的股票多头策略而言,如果要获取相对稳定的长期投资收益,而且还想像电影《让子弹飞》当中张麻子所说的那样“站着就把钱给挣了”,就需要利用择时投资策略,在市场牛熊转换的过程中顺势而为,做好仓位调整。

我们的测试表明,以创业板指(2010.7.15-2016.2.22)为例,利用一个并不复杂的量化择时策略,就可以帮助我们逃脱股灾,获得远远超越简单买入持有策略的回报,实现5年5倍的投资收益!本报告将向有兴趣的投资者展示,如何利用EXCEL电子表格构建一个简单实用的量化择时策略。在报告的结尾,我们会告知如何获取这个原型模型的方法,你可以下载电子文档并进行进一步的更新测试。




所谓量化择时,简单来讲就是利用某种数量化的方法判断市场走势。如果判断是上涨,则买入持有;如果判断是下跌,则卖出清仓;如果判断是震荡,则进行高抛低吸。这个问题显然没那么简单。大盘明天是涨还是跌?下周是涨还是跌?下个月是涨还是跌?明年是涨还是跌?如果有谁能像章鱼帝那样准确预测,那一定富甲天下了!

像这样的难题,有什么比较好的解决方案呢?大数据择时?机器学习?人工智能?这些乍听之下就感觉高大上的量化择时方法对于许多在短短半年内历经三次股灾险死还生的投资者而言,恐怕是既心向往之而又感无能为力吧!其实,正如我们前面的简单策略所展示的那样,只要我们不过于贪婪,即使没有这些高大上的方法,通过构建一个简单实用的量化择时系统,也可以在较长时期内跑赢市场,获取相对稳定的长期投资收益。

比较常用的量化择时方法,除了隐马尔科夫(HMM)、支持向量机(SVM)等基于机器学习(Machine Learning)理论的较复杂方法之外,还包括趋势择时、市场情绪择时、有效资金模型、赫斯特指数等诸多方法。我们前面所展示的正是基于移动均线的趋势择时策略。

相比较于隐马尔科夫(HMM)、支持向量机(SVM)等机器学习(Machine Learning)算法,我们这个简单均线择时策略的效果如何呢?

下图是一位从事隐马尔科夫(HMM)模型研究的量化投资专业人士开发的量化择时模型针对中证500指数基金(2010.1.4-2015.10.12)的测试结果。作为对比,我们也给出了前面展示的基于移动均线的量化择时模型对中证500指数的相同时段进行测试的结果。



以下是长城证券研究所分析师开发的基于支持向量机(SVM)的量化择时模型针对上证指数(2002.1-2010.7)的测试结果,以及我们采用均线择时模型对上证指数相同时段所得出的测试结果(值得注意的是,长城证券的测试结果考虑了单边买卖0.5%的交易成本,我们的测试未考虑交易成本。有兴趣的读者作为一项练习,可以在我们原型模型基础上尝试加入交易成本进行测试和对比)。



考虑到这些专业机构所需要花费的研发和人员成本,如果你利用EXCEL自己DIY的基于移动均线的量化择时模型能够有大体跟随的测试效果,应该可以说是难能可贵了吧!


接下来我们分步展示,如何利用EXCEL自己DIY这样一个基于移动均线的量化择时模型,并用它来进行回测。以创业板指为例:

1.通过证券行情系统或财经网站获取行情数据,导出至Excel电子表格;

2.打开Excel文档,除A/B两列保留日期和收盘价数据外,删除其余数据列;

3.在C列利用average函数计算最近30天收盘价均值,如在C32单元格输入“=AVERAGE(B2:B31)”,其余依此类推;

4.在D列设置买卖规则,比如在D32单元格输入逻辑函数IF(B31>C31,1,0),D33输入IF(B32>C32,1,0),其余依此类推;

5.E列计算择时策略日收益率,比如在E32单元格输入“=D32*(B32/B31-1)”,其余依此类推;这实际意味着如下真实买卖规则:若在B31所在当天(2010/7/16)收盘前观察到当天收盘价大概率高于30日均价则全仓买入,若之前已经买入则持仓不动;若当天收盘价低于30日均价则全仓卖出;

6.F列计算买入持有策略日收益率,比如在E32单元格输入“=B32/B31-1”,其余依此类推;

7.G列计算择时策略净值,假设初始净值为1,在G31单元格输入1,G32单元格输入“=G31*(1+E32)”,其余依此类推;

8.H列计算买入持有策略净值,假设初始净值为1,在H31单元格输入1,H32单元格输入“=H32*(1+F33)”,其余依此类推;

9.I列计算择时策略最高历史净值,在I1单元格输入“=IF(G32<=I31,I31,G32)”,其余依此类推;

10.J列计算择时策略当日相对最高历史净值的回撤程度,在H31单元格输入“=(G31-I31)/I31”,其余依此类推;

11.我们可以在K1单元格计算择时策略的最大回撤“=MIN(J31:J1389)”。

对这个基于移动均线的量化择时模型针对不同周期均线的择时效果进行回测的一个思路是在C列修改均线的计算周期,例如,如果在C32单元格输入“=AVERAGE(B12:B31)”,其余依此类推,则变为20日均线。如果要测试两条均线交叉的买卖点,则可以在C列之再前插入一列,假设新的C列计算5天均线,D列计算10天均线,5天线上穿10天线买入,下穿10天线卖出,则只需把E列(原先的D列)比如在E32单元格输入“=IF(C31>D31,1,0)”,其余依此类推。

我们的经验是,如果想要让一个量化择时算法真正能够“为我所用”,就必须尽可能多地做回测,包括针对不同测试对象、使用不同参数进行回测。需要强调的是,本报告所展示的基于移动均线的量化择时模型,对于明显的上行或下行趋势效果较好,但对于震荡市下的高抛低吸策略,则需要采用其他针对震荡市的算法才行。趋势跟随策略在震荡市下的效果并不理想。

感兴趣的读者,可以关注QuantLab量化实验室的微信公众号【QuantTrader】并回复关键词“均线择时”获取此原型模型的EXCEL文档。我们也欢迎读者通过微信平台反馈相关意见和建议。


如何构建简单实用的量化择时策略?


QuantLab量化择时模型.zip
大小:(1002.27 KB)

只需: 10 个论坛币  马上下载

本附件包括:

  • QuantLab均线择时模型-SZZS.xlsx
  • QuantLab均线择时模型-ZZ500.xlsx
  • QuantLab均线择时模型-CYBZ.xlsx


本报告为QuantLab量化实验室原创,转载请务必注明出处,谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群