本文是科普文,对之前个人所写的量化投资相关的文章进行了一些整理,方便初次接触量化的朋友进行学习。
如果你已经看过我之前关于量化的文章,并且已经走在了量化的路上,为了节省您的时间,那么本文可以不用继续往下看了。
量化投资,可以按照字面分成两部分,分别是“量化”和“投资”。“投资”是指我们把钱投出去,而“量化”指的是投资之前需要做的准备工作。
为什么量化?
量化是什么?
怎么学量化?
要注意什么?
下面,我将会从这几个方面对量化进行展开,当你弄清楚这些问题之后,就可以快速上手量化投资了。
1 为什么要学习量化?
最近两年,网络上的量化平台如雨后春笋一般涌现出来。
就算你没有接触过量化投资,也或多或少从别人那听说过。
就算你没有听说过,也至少知道alphaGo战胜了李世石、战胜了柯洁的新闻。
机器人可以战胜人类,这不再是一件新鲜事。
在可以预见的未来,投资也会如此。
1.1 量化可以给我们带来更高的收益
对于常常和数字打交道的投资领域,量化能够发挥出什么样的光彩呢?
詹姆斯·西蒙斯[1]是量化投资的先行者,也是最早的一批人之一,更是其中最厉害的一个。
他在1988年3月成立的大奖章基金。在1989-2009年期间,大奖章基金给客户的平均年回报率高达35%。
如果不考虑高达44%的提成,大奖章基金的年收益率实际上要超过60%。
詹姆斯·西蒙斯给投资界树立了一个标杆,告诉了人们通过量化的方式,可以获得远远超出平均水平的收益。
了解过詹姆斯·西蒙斯的人可能知道,他在进行量化投资之前,是一个数学家。
而我们大部分人都是普通人,他的那套“弹指神通”我们可以学得会吗?
我不是专业学习数学的,也是普罗大众的一员。
同样作为量化的初学者,我的一些经验或许能够给你提供一些参考。
之前,我写了一篇文章《曾经,我找到了投资的圣杯》[2],介绍小市值策略在过去能够达到的程度:
投资将近10年,收益6841.38倍,有没有被这样的收益率惊到?
惊叹过后,我马上就用于实盘,下图是joinquant模拟盘至今的结果:
实盘是从2016年6月6日开始的,一年多一点的时间里,获得了年化14.02%的收益。
去年6月份也正好是重组新政开始的时候,在这样严峻的环境下,能够获得这样的收益也还算不错了。
当然,我实际上并没有紧跟这个模拟盘,因为中间对小市值未来存疑,我在2017年4月24日开始更换策略,就是我之前发布过的动态因子策略:
所以实盘的结果是,从2016年6月6日至2017年7月13日,实现了24.49%的收益,折算成复合年化收益是21.95%。
熊途漫漫,能够获得这样的收益我已经比较满足了。
对于一些牛人来说,量化的模拟盘可能是这样的:
也可能是这样的:
1.2 可以免受情绪的干扰
如果你交易过股票,肯定会有这样的感受,在决策的时候,常常容易纠结。
买了是否还会跌呢?
卖了是否还会涨呢?
每当我们下定了决心,价格的变化,又将我们打回原形。
既浪费了时间,又消耗了精力,还对我们长期地投资结果没有什么影响。
明明是一种捡芝麻丢西瓜的行为,很多人也清楚这个道理,但是常常就是忍不住。
我们的投资决策,常常会受到情绪的干扰,这源于人性,很难解决。
通过量化,其实可以很好地绕开这个干扰。
在制定好量化策略之后,策略会根据市场的情况,对标的进行轮动。
如果不进行同样的计算,我们在当天往往不知道交易的股票是什么,甚至不清楚是否需要交易。
以我个人为例,我设置的策略交易时间为14:50。
在这之后,我了解到需要轮换的股票,并进行交易。先是卖出,然后买入,最多的时候,需要进行20笔。
因为后面三分钟是深交所集合竞价时间,实际上交易的时间只有不到10分钟。
在这么段的时间里,我常常弄得手忙脚乱,有时候甚至没有完全轮换完毕。
你说,这样的情况下,还有心思去纠结吗?
1.3 可以节省出很多时间
功课应该在投资之前就做好。
但是这样的功课,往往需要花费大量的时间和精力。
刚刚学习完价值投资,我就有这样的感觉。
每投资一家企业,我们都需要看它的年报,了解它的财务状况。
我们还需要了解公司的商业逻辑,分析其竞争环境。
每投资一家公司,就需要付出一份时间和精力的。
在刚开始还不熟悉的时候,常常需要花费十天半月的时间,才能研究好一个公司,并且这个公司还不一定适合投资。
成本是放弃了的最大代价,我们在投资上多投入一份精力,就会在工作上少花费一份精力。
也不怪有人会说,年轻人最重要的是投资自己。
因为本金比较少,通过这样的方式投资,往往得不偿失。
量化投资,其实很好地解决了这样的问题。
在制定了一个策略之后,我们只需要花费很少的时间进行维护,付出的成本比价值投资要低得多。
如果你是一个上班族,想要获得不错的收益,又不想在投资上花费太多的精力,量化就是一个非常好的选择。
如果你是一个价值投资者,同样也应该学习量化。
因为通过量化,你可以节省很多采集数据的时间[3],让自己专注于定性方面的研究和分析。
1.4 可以快速地检验自己的想法
对于投资,不知道你有没有一些自己的看法?
我刚刚接触投资的时候,想法不多,只求通过抄作业得到一个标准的答案。
但是随着研究和理解的深入,我发现作业抄得再好,你也很难超越写作业的人。
同时你能够抄到的作业,别人自然也能够抄到,这就会有那么一些风险。
然后我就不满足于抄作业,也有了一些自己的想法。
第一次出现了问题,是对港股牛熊证的投机。
之前看到别人分享的方法论,胜率挺高的,并且实现起来也不困难。
然而我在实盘的时候,却发现不是这个样子,除了一开始稍有盈利,后面一直在亏损。
还好当时总投入的金额并不多,并且在亏损之后也没有继续出现想要回本的赌徒心态。
不过这样的损失,其实是可以避免的。
在那之后,我通过量化的方式,使用历史的数据进行了简单的回测,结果是:短期能够获益,长期是要亏损的。
问题的主要原因是出在手续费和滑点上面。
很多投资策略,都可以先通过量化的方式进行回测验证。
策略回测效果很好实盘效果不一定会很好,但策略的回测效果都不好,我们很难相信实盘会拥有良好的效果。
例如我觉得技术指标效果不是很好[4],然后我就统计了果仁网所有现成的技术指标数据:
在经过回测之后你会发现,单独使用的技术指标,大部分都跑不赢指数,胜率也不高。
当然,也许经过一定的组合可能获得更好的效果,不过那是另外一回事了,需要进一步的验证。
又例如,之前听说在节假日前,市场一般都会上涨[5],我就忍不住去验证了一下:
发现还真有这回事。
通过历史的数据,你可以看到这些节假日前一天的上涨的概率都大于50%。
再例如,我们说中国大部分都是散户[6],怎么样验证这个说法呢?
我们可以对比新增投资者(开户)数量和指数点位的变化趋势:
我们可以对比交易投资者的数量和指数点位的变化趋势:
2 量化是什么?
简单来看,量化其实是对数据的统计。
量化的工具我们在工作和生活中,或多或少应该都有用到过——Excel。
据说雪球大V持有封基,用了十年的Excel,量化十年赚了十倍。
在雪球有一个策略很出名,叫做蛋卷斗牛二八轮动。
第一次看到的是这个模型的2.0版本[7]:
每周五(或者本周的最后一个交易日)临近收盘时,将沪深300指数和中证500指数切换到周线状态,分别查看两者过去四周的累计涨幅。如果过去四周涨幅大的那个指数在四周中能够获得正回报,那么就在收盘前买入对应的ETF持有一周,直至下一次的切换;但是如果过去四周涨幅大的那个指数在四周中依然是亏损的,那么就选择空仓,直至下一次切换。
其实这个策略实现起来非常简单,下面我就告诉你一个5分钟内就可以实现的方法:
第一步:打开通达信软件,输入代码000300(沪深300),切换到周线,然后导出数据到Excel;
第二步:类似地将000905(中证500)的数据导出
第三步:数据拷贝到同一个表格中
第四步:计算四周涨幅(D6=B6/B2-1)
第五步:计算单周涨幅(F6=B6/B5-1)
第六步:根据四周涨幅,选择单周涨幅(H7=IF(D6>E6,F7,G7))
第七步:添加涨幅小于零的止损(I7=IF(MAX(D6:E6)>0,H7,0))
第八步:根据涨跌幅计算投资净值(J7=J6*(1+F7))
第九步:拉表格,插入折线图
橙色的曲线就是该策略的实现效果。
之前我还在这个基础之上,进行了些扩展,做了一个多指数轮动的策略,这是回测结果:
所以我们没有必要将量化看成很高深的东西。
3 怎么学习量化?
使用excel量化,需要导出数据,也需要编写一些简单的公式。
很多人对量化敬而远之,其实是因为对编程的学习存在迟疑。学习需要花费巨额的时间,却并且不一定能产生相应的价值,这是很多人望而却步的原因。
但是现在有很多量化平台,例如果仁网、优矿、京东量化平台、聚宽,都会提供一些现成的指标,我们连这一步都可以省掉。
甚至很多策略在这些量化平台上,都已经实现了,我们直接拿来使用就可以了。
所以,我觉得“使用”是第一步,也是最重要一步。
我们之所以学了时间英语,却不能和外国人正常交流,原因是什么你想过吗?
但如果你立刻就开始使用的话,就不会存在这样的问题。
我们可以直接找到一个应用的切入点,例如拷贝别人的代码,然后改成自己想要的样子。
学习量化,我就是这样开始的。
拿之前发布的动态因子策略[8]举例,这个策略真正编程的时间只有半天。
为什么可以这么快?因为里面大量地复用了别人的代码。
首先是回测部分,如果你看前面几行,还能发现别人的版本标识:
其次是研究部分,代码也是来源于别人的文章《【研究】量化选股-因子检验和多因子模型的构建》[9]。
老实说,在一开始的时候,文章的很多内容,我都看不懂。
但没有关系啊,我逐行去执行代码,把每一个疑问都研究清楚。
最终,我在别人代码的基础上,进行了一些微调,得到了自己想要的结果。
所以实际上,我只是代码的搬运工。
一开始我对DataFrame一窍不通,因为数据统计的需要,就学会了数据的批量操作,周二到周六分享的基金回测数据,就是使用得到的结果。
一开始我对matplotlib一窍不通,因为曲线展现的需要,就学会了如何绘图,周二到周六分享的上证指数温度计图片,就是使用得到的结果。
通过这样的方式学习量化,学习编程,你不会觉得枯燥,因为你没走一步,都在应用。
根据自己的需要,不断地去使用就好。也不用强求自己一开始就能做得很好,日拱一卒就够。
使用的需要,会给我们指引前进方向的。
4 量化的注意事项
量化的时候,有些东西[10]你是需要特别注意的:
未来数据
边界条件
有效样本
未来数据是指那些对于过去的过去而言,已经发生的数据。例如前天的回测不应该用到昨天的数据。
边界条件一般是指那些我们不能达成或者很难达成交易的情况。例如停牌,例如涨跌停。
有效样本[11]来源于样本规模和样本代表性。
样本的规模和策略中规则触发的频次有关。触发次数只有关键的几次,很可能这些规则就是过度拟合[12]数据的结果,得到的样本自然就是无效的。
样本的代表性指的是数据量,数据量太小,不足以涵盖市场类型和交易时间,这样形成的策略,同样也是不可信的。
附
文章中涉及到的一些内容:
[1]:与横扫华尔街数学家的珍贵对话
[2]:曾经,我找到了投资的圣杯
[3]:有了这几个工具,我研究公司花费的时间下降了80%
[4]:看K线,赚大钱。
[5]:又是一年五一节了
[6]:跌跌不休,什么时候是个头?
[7]:二八轮动模型升级至2.0版,更简单更赚钱
[8]:动态因子策略,圣杯?
[9]:【研究】量化选股-因子检验和多因子模型的构建
[10]:是什么,让你对自己的策略确信无疑?
[11]:投资10年300倍,你相信吗?
[12]:量化的实盘效果为什么总是不如回测?