Haozun 发布于2016-05-16
回复 24
浏览 8480
65
本文已经思路提供者云蒙授权。
作为一个想在金融市场发展的有(du)志(bo)青年,练级打怪的初期想法不多怎么办啊?尤其是空有一身编程的武艺,想找个策略切磋一下都无从下手。这当如何是好?!解决办法之一就是:可以借鉴大V!
什么意思呢?大威嘛,威起来的前提条件就是发了好多干货,分享了好多投资理念,思路,文章!
这些文章呢,有的适合你,有的不适合你;有的很犀利,有的有糟点;有的简明清晰,咔嚓咔嚓两下就写成代码。有的云里雾里,好像不容易把规则抽象出来。不过站稳不慌,有条件可以回测,没条件找小编,小编还是可以开开脑洞,创造条件强行回测的呦。
而且你会发现在这个过程中,你对金融市场越来越熟悉,能力槽也开始飙升,蓝槽max!是不是很high。
今天我们就来举一个例子,把雪球上云蒙mm的思路写成代码。不懂编程的朋友也甭怕,我们已经把代码改好了,如果你愿意,只需要稍微调整就可以实现不同参数的回测。
如果你实在看代码头大,我们还把云蒙银行打分所涉及的银行数据都洗了一遍,并且弄成excel表格提供给大家。这个还是有点点价值的哦。
纳尼?把第二章剧透了。怒丢一张流程图掩盖下:
![1.png][1]
**云蒙嘛,就是云蒙嘛:**
云蒙者,雪球大V也。神采飞扬,以善于投资银行股著称,搬砖运动的倡导者和发扬者。
我们先来看一下云蒙在她的原文咋说的,核心观点见下文,原文请参见链接https://xueqiu.com/3037882447/68184966
![2.png][2]
总结一下,思路就是通过对盈利性指标(加权平均净资产收益率)、资本约束及稳健指标(核心资产充足率)、以及资本回拨系数来对一个公司进行评判,得出一个财务打分。
这个财务打分相当于公司的价值。然后将PB看做股票的价格,那么买的时候就是捡便宜的买啦(价值/价格最高者),所谓得分最高的,也就是比价最高的。所谓搬砖捏,也就是在比价发生变化的时候,重新调整持仓。
为了更好的理解云蒙的流程,我们做了一张图(目前逾期贷款的数据暂时不全,所以只用了不良和拨备):
![3.png][3]
看起来也不复杂对不对,公式都摆明了,也就是计算出3个指标相乘。而这3个指标,总共需要6个财务字段。
But!如果我们仅仅回测A股:那么近似来看,总共需要回测16只银行股。假设我们从10年开始回测,那么粗略估计,需要的数据量为6*4*16接近600个季报数据。这个工作量其实不小,扣一家银行一个季报的数据算3分钟好了,也就是1800分钟,30个小时的工作量,耽误点时间一周就过去了。
而这些工作量,已经帮你省了。(网盘链接:http://pan.baidu.com/s/1eRZL7WY 密码:g9y9)。有两个excel表格,一个文件(bankshares.csv)包含详细的原始数据,以及一步一步的打分过程。另外一个文件(云蒙财务指标梳理.xlsx),按照一定格式记录的回测结果,我们在平台上回测的时候需要把这个文件导入(具体怎么导入请参见后文)
前者的大概长这个样子:
![4.png][4]
后者大概长这个样子:
![5.png][5]
别看错了哦。
**但有了打分就可以直接回测了嘛?naïve啊!**
回测规则不难:
每天开盘前检查一下,看看财报打分有没有变动,并且参考昨收价的PB进行打分,把打分排序。
始终保持选择评级最高的num=4只股票加入投资组合(num可自己设置)。要注意,我们只有分数变动k>=5%时才会进行调仓(k可自己设置)。假设原先的前4名是A,B,C,D。现在的前四名是A,B,C,E。为了不频繁调仓,减少摩擦成本,只有当E的打分比D高5%以上时,我们才会进行调仓。
对于这num=4只股票,我们会为它们分配一个权重,初始权重按照评分从高到低为4:3:2:1。即假设一共有100万的资产,则如果当前的四只股票比例为4:3:2:1,则第一只股票买100*4/(1+2+3+4)万元。如果num=5,那么持仓股票的比例为5:4:3:2:1。但注意,同样的,内部调仓也需要满足k>=5%的条件。
看起来不难,但是稍微操作一下,你考虑周全了吗?这里有两个大坑等着你踩:
**第一个坑指的是回测方面的坑:**
1. 财务指标公布的时间可不是严格按照季末那个时间点更新的哦,而是陆续的披露出来。你的回测也得考虑这个情况,否则提前几天知道了数据会有未来函数。
2. 手续费考虑了吗?分红考虑了吗?停牌考虑了吗?涨停买不上,跌停卖不出去考虑了吗?滑点设置不设置?那些股票在回测期间都上市了吗?
3. 以上我们的回测引擎和代码全考虑了。
**第二个坑指的是搬砖规则的坑:**
搬砖的原则听起来不难,打分从大到小排序,排排坐,赤裸裸,哦不!吃果果!按照比例分配就好啦。唯一要注意的是为了减少摩擦成本,只有打分变动5%以上时,才进行调仓。
嘿嘿,不妨稍微考虑几种情况,感受一下这个规则。
下面的图中,竖条的长短表示上一期的持仓数量(4:3:2:1),你看到不是按照从左到右依次递减,说明打分变动,要调仓啦
第一种,最简单的,ABCD变成了ABDC,如果D的打分比C高5%,搬砖!搬一块砖即可。
![6.png][6]
第二种,ABCD变成了ADCB,这时就麻烦啦,你得智能的找出原来是B和D之间分差起了作用,所以如果D比B的分数高5%,直接从D搬到B两块砖
![7.png][7]
再增加点难度,ABCD变成了DACB,这时候你得综合考虑,新的打分出来以后,第4位的砖是不是要挪到第一位上?那么第二位的砖要不要挪到第一位上?
![8.png][8]
还没完,以上的都算形状规整的,但是下面这种捏?
![9.png][9]
什么?你说这种情况怎么可能产生?当然可能产生了,你要注意到不到5%的时候是不搬砖的嘛,那么七挪八挪,啥形状都有可能。
再何况,如果是5只股票的持仓呢?如果还要考虑其他没有入池的十几只股票呢?(这些可以看成是权重为0的仓位)
综上。穷举法就是死路一条。在每日更新打分的情况下,人工几乎做不到。
然而我们甚至研究了一个小算法,专门针对这个搬砖,得到了一个通解。直接拿来用就行。有兴趣的朋友可以自己研究,也欢迎大家交流。
**那么怎么用呢?**
没有编程基础的朋友也可以试一试哦,更改参数
**回测前需要上传文件:**
文件名bankshares.csv,记录了09年之后的财报打分情况,先将这个
先进入研究模块:
![11.png][10]
点击upload,选择相应文件。
![12.png][11]
上传文件后,点一键克隆,然后你就可以看到这个页面。点击回测即可:
![10.png][12]
上传文件后,点一键克隆,然后你就可以看到这个页面。点击回测即可:
![13.png][13]
贴个回测结果小结一下:
![14.png][14]
我们选取了打分最高的5只银行股持仓,并且每次分数差必须超过5%。蓝线是我们的持仓收益率,红线是沪深300。从10年回测至16年一季度。
可以看到:
1. 在2012年那波银行股引领的反弹之前,这个策略与沪深300的表现不相上下。
2. 12年银行股开始翻身,搬砖策略稳定的跑赢大盘。
3. 回撤大,是因为一直满仓,相当于从10年之后的阴跌全部吃进去。
4. 总之搬砖是有alpha的,每年大概5%左右(凭感觉,没有细究)。从12年之后,银行股表现的也与沪深300有一战之力。
如果大家有兴趣,留言中回复,我们可以进行大规模的回测,遍历一下参数。
另外以后有机会与云蒙深度合作,还有新的文章推出,请多关注哦。
。。。
。。。
**你以为这就完了?并没有。**
不论主观交易者,还是量化交易者,假设你现在做出了这个策略,你会怎么想?
如果你就满足了,是没法进步的。
我们这个策略只是alpha0,很多细节有待提高,我们还可以在以下几个方面改进:
银行股自07年集体高潮以后一路向南,12年末雄起了一把,以为独领风骚引领大牛市,结果被13年钱荒教育了一把,告诉你谁才是老大。一帮资金溃不成军,去调戏中小创,你看自此小盘股一路女上位。
但是!重要的话说三遍,我大A股的尿性就是同涨同跌啊,搬砖能搬出什么花来?如果加上我大zi本主义桥头堡,三年中两年不鸟A股的HK市场,那搬起来虎虎生风,说不定战局就逆转了啊。如果善用加杠杆,与创创也有一战之力了啊。
所以,第一,也是最重要的,把港股加入我们搬砖体系。我相信会大幅提高我们的搬砖alpha。
第二,作为一个投机取巧的人,不一定满仓啊!择时也是我们要研究的一个方向。
第三,如果你不是坚定的银粉,其实可以找点类似的高息,业绩稳定的股票,也参与到搬砖里来啊,构成我们“大搬砖”的体系。
Ok,抛砖引玉,我写完了,好累。期待下一版吧。
[1]: https://image.joinquant.com/46be391e5909990be36e640e552fc419
[2]: https://image.joinquant.com/fd755453f7847b25b3382106eeb27b52
[3]: https://image.joinquant.com/c001a80b9b85dda58ba9fbfca220c1df
[4]: https://image.joinquant.com/f38a33ab5d8c7ab0167f2e82b2624d79
[5]: https://image.joinquant.com/62b1f1205ee79c95f84b10dc4fe0b418
[6]: https://image.joinquant.com/7c9fae84149ac43df45f7e9af4bea6e4
[7]: https://image.joinquant.com/7bff0bdf3f8314ed776d2bf0dbc574be
[8]: https://image.joinquant.com/016abae195754365d1e056dea6fb2965
[9]: https://image.joinquant.com/68477e70f3e790cff2c8315760a92f7f
[10]: https://image.joinquant.com/ee4b3a217c3a66f0f8a6345c0df75ae8
[11]: https://image.joinquant.com/676fdb95c3c6a3ee97962bf0be473f03
[12]: https://image.joinquant.com/0f0eab1d67996fe28ef284dcb7196dfe
[13]: https://image.joinquant.com/3b92447d36a7d2b093de262d4c27d052
[14]: https://image.joinquant.com/5d5c1b32093ab424217777b83607b4d8
评论
作为云蒙姐的脑残粉一定要赞一下!
2016-05-16
感谢分享,不够貌似如持有招浦兴不动,5年应该是超越这个策略
2016-05-16
这里的搬砖方法其实可以使用earth moving distance一次性搞定
2016-05-16
6年收益率百分之六十,年化收益率不足百分之十,又不是巴菲特搞大资金的,这个收益率总觉得还有改进空间啊
2016-05-16
@韭菜Hulk 哈哈,学习一下这个earth moving distance
2016-05-16
@Trafalgar2018 云蒙姐常年2倍左右的杠杆 而且她的利润除了股票本身还有外汇利差 这些小细节回测暂时不能涵盖 这个回测主要是demo下思路 我相信后面会有一大波的改进版本的 哈哈
2016-05-16
对于楼主的文风也是醉了,看个文章把人乐了个好几遍,完全就是个逗比呀,不过好喜欢的呀。。。哈哈哈。。。其他的就不评价了,表示感谢,并学习下。。。
2016-05-17
@卷毛兔 这种文风比较接地气,我也挺喜欢的。。主要是这样子可以比较亲民。。不然一脸严肃学术论文谁爱看。。量化比较偏实用。。用得开心,能赚钱就好。。
2016-05-17
@韭菜Hulk 哈哈谢谢!一定会看一下这个方法!~~
2016-05-17
@Trafalgar2018 恩恩,这个原始思路还要加上港股,同时参数也可以优化,相信还有改进空间~
2016-05-17
@卷毛兔 哈哈,文风要感谢占卜师!
2016-05-17
请问一下,“停牌考虑了吗?涨停买不上,跌停卖不出去考虑了吗?滑点设置不设置?那些股票在回测期间都上市了吗?”,这些是在代码的哪里实现的?
2016-05-17
@是谁在看 这些目前代码里是没有的,你可以看一下代码。而且要考虑的问题远比你说的要多的多。比如说“算出来应该买1000手,但实际只成交900手,剩下100手怎么算?如果当前某只不能买入,是等到能买再买,还是取评分次之的取而代之?”等等等等。这是一个很复杂的策略,并不像你想的那么简单的~~而且像滑点等,都是平台自动设置了的~
2016-05-17
@是谁在看 这些有的是平台自动实现了。。
2016-05-17
为什么要把这样的帖子置顶?就是因为它叫云梦?
2016-05-18
思路清楚,文档详尽,值得一读。具体落实到可操作的算法,还需要再改进几个版本。
2016-05-19