导语:
彼得林奇的 PEG 那真是大名鼎鼎,(如果对 PEG 不了解的同学可以移步这里把它当故事看一看,难度 -level 0 ,不看也成,下文会有介绍)但是当我们把经典PEG做成策略,写成代码后发现,欸,怎么就不好使了呢?所以小编决定学习我党共产主义中国化的先进经验,粗浅的琢磨了一个PEG投资策略的沪深化,望各位大神指摘。
PEG:
PEG 的全名我觉得应该叫 PE 除以 G 。PE, 市盈率,可以简单理解为公司的市值除以公司盈利能力得出的倍数。举个栗子,老张在村儿里卖猪肉,深得隔壁王寡妇欢心。邻村老李头觊觎王寡妇多年,百思不得骑姐,并觉王寡妇和老张的破鞋一定是因为猪肉的关系。于是乎大手一挥,买了老张的肉铺,霸了老王的寡妇。过程中,老李出资50万给张屠户,收购了他的肉铺,并发现肉铺每年还帮老李赚了10万块。结果最后一箭双雕,即收拾了邻村王寡妇,又开开心心赚到了钱。
故事结束,敲黑板敲黑板,看官朋友们,如果我们把肉铺想成是一家只发行了一股的公司,那么这里老李花的五十万除以每年盈利的十万,五倍,基本就是 PE ratio 市盈率的概念啦,即某种股票每股市价与每股盈利的比率。
下面我们再说说这个 G,这个 G 可跟老李头与王寡妇婚后的性福生活就没有关系啦。主要是,老李接摊肉铺生意后,在王寡妇的帮助下生意越做越好,收益连年递增,头年挣10万,来年挣15万。
这时,肉铺生意的增长率 G(Growth Rate) 就是拿今年增长的部分:15-10 = 5,除以去年的利润:5 / 10= 0.5,即 G =50%。因此老李肉铺的 PEG 即可得出为 PE = 5, G = 50,PEG = PE ? G = 0.1
好啦,PEG和王寡妇的故事就给大家讲到这里,下面我们来看一下 PEG 的改进。
PEG 的中国化:
因为当年林奇老爷子认为,任何一家公司,股票如果定价合理的话,市盈率就会与收益增长率相等。所以他以 PEG =1为线,把 PEG 小于1的留位备选,大于1的剔除。(这只是个粗略的指导思想,当然会有例外)但林大爷叱咤风云的年代,那是几十年前的美国,放到今天,只能说既不天时,也不地利。所以我们代码实现 PEG 策略时,发现回测结果并不像老李头和王寡妇生活的那么幸福。
从回测结果看,PEG 策略虽然收益跑赢大盘,但是波动幅度巨大,最大回撤奇高,并且完美的栽倒在了中国股市的两次股灾面前。于是乎,聚宽团队决定小试牛刀,进行一次 PEG 策略的中国化。
通过研究发现,数据的时效性和合理适当的止损、调仓措施,对 PEG 回测结果的影响非常大。就我个人的理解, PEG 还是一个偏基本面的分析策略,而其中的关键,则是对公司盈利能力增长的判断,当 EPS 数据失效时,策略就会无所适从。于是乎,我们想到了使用其他因子对公司盈利能力的增长进行判断,并将 EPS 的增长率换成了利润的增长和销售能力的增长两个因子。基于这个想法,我们调出了上证和深成,两个指数构成的所有股票,并进行筛选。首先计算 PE 和 Profit Growth Rate 的比值,并以此为依据对所有股票进行升序排名(得出的商越小越好,所以值越低越排在前面),再用 PE 和 Revenue Growth Rate 的比值为依据重复上述过程。
这个过程如果不好理解的话,那我们举个栗子,好比烤鸭店选大肥鸭,要想做出香喷喷的烤鸭,原材料的选取上,一定是第一关。所以第一步,我们筛出体长 50cm 以上的鸭子,第二步在第一步的基础上进一步选出体重在 10kg 以上的,第三步再筛选羽毛必须洁白,没有杂毛的。第四部筛选身体健康,各项指标都合格的,并把筛选出来的鸭子进行编号,生成列表:
【小白鸭1,小白鸭2,小白鸭3…】
通过这么一步一步的筛选,我们有理由相信,筛选之后烤制出的鸭子,和随便扒拉一只做出的烤鸭相比,前者,有很大的概率,会比后者,好吃。我们选择股票也是同样的道理。
之后,我们用前面介绍过的方法,可以得到两个股票列表,取他们各自的前五十名,并求交集,生成我们全新的备选股票列表。为了具象一点,我们再举个栗子,好比班里要选三好生,条件是成绩又好,体育又好。于是乎,我们把同学们的学习成绩排了个名,前五名分别是:
{小红,小明,小李,小张,小睿}
之后又把大家跑步的成绩排了个名,但是发现前五的名单有了不小的变化,分别是:
{铁蛋,二嘎,小睿,虎子,小明}
无奈之下,我们取个交集,小张,小李,小红惨遭淘汰,只剩下 {小睿,小明} 晋级三好学生,这样,我们有理由相信,小睿和小明有很大的概率都是品学兼优德智体美全面发展的好孩子。这就好比我们筛选出的备选股票池,经过各种指标筛选并排名再筛选后,我们备选池中的股票,大概率上应该都是根正苗红,嗷嗷待涨的好股票。
但是! BUT! HOWEVER! 我们能就此放心大胆的买入这些股票了么?当然是不能!原因就是我们抄的是中国股市,那熊市来的时候,甭管什么 PEG,APT ,KNN 还是 Fama-French,策略统统不好使,无论基本面多优秀,血淋淋的经验告诉我们,持仓冒险的结果只有跌跌跌。唯有清仓止损避一避,赚取一定的无风险收益才是最稳健最保险的。因此我们引入 MA 函数对股市趋势进行判断,虽然什么时候涨不好预测,但是跌势显现时,什么时候清仓什么时候跑的判断还是相对简单的,这样我们引入沪深三百,上证综和深成指指数数据(原因是基本覆盖了股市中绝大部分的股票)并对主要指数前一个月的收盘价取平均值,当今日收盘价低于 MA 平均值时,生成信号,执行清仓,并买入国债指数,引入无风险收益。
另一方面,我们要谈一谈关于止盈止损和调仓的措施。好不容选出了这么几个矬子中的大个,嗷嗷待涨的小股票,那么我们是不是就要一直持有着,等着他们一个个变成印钞机呢?答案自然也是 no no no, 因为止盈止损的执行在我们策略中担当的角色,还是任重而道远的。小编本人是一个非常保守的投资小白,所以为了保本儿,我们设计了两个制度,一个是最高价名单制度,另一个是抛出黑名单制度。最高价制度,故名思议,我们按分钟记录每一支持有股票的价格,并创建一个字典,存入他在持有期限中曾经达到过的最高价格,这个感觉有点像我们的体重,比如说,小张同学身高一八五,体重两百斤,造成的结果就是甘油三酯也高,胆固醇也高的,最后就是因为太胖,连三好学生也没拿到。于是乎,小张同学决定减肥。但因为身宽体胖吃对的多喝的多的缘故,所以其实际体重可以描述成一个连续时间序列,在这过程中小张体重一直下降,但有时吃完饭或者喝完水之后体重会上涨一些,这是正常情况。但如果体重连续上涨了5%就不太正常了,要赶紧采取措施不然可能会减肥失败。这个5% 不是和开始减肥前的体重比的,而是和开始减肥后的最低体重比的。持有股票也同理,只不过上涨下跌要反过来。根据这个思路,我们取得的股价最高值也一样,如果以购买之后的最高价为标准,跌幅超过8%,策略就进行止损。同时我们设立一个止盈标准,如果当前股价超过成本价的100%,我们就进行止盈(多么贪心的一只小编,当然这些参数都是可以通过 set_para() 函数来实现用户自定义的)。止盈止损后卖出的股票会进入另一个黑名单系统,并且十个交易日内不再买入。
好,我们闲言废语不要讲,在这个结果导向型的节骨眼上,不拿出点儿真东西,怎么好意思在观众面前逼逼。我们上图,分钟回测结果成绩如下:
总结:
从 PEG 改进策略的分钟回测结果来看,该策略最大的优势在于其可以提供的长期、稳定的超额收益。可以在股指震荡的过程中,动态的筛选股票,并止损调仓。但略势同样明显,因为交易信号和交易条件确认的过程相对保守,所以当大盘牛市来临时,策略会有一个相对应的滞后,这也就是为什么在策略初期,我们的算法会稍微落后于大盘指数的原因。
函数和变量说明书