PEG估值法(来自“彼得'林奇的成功投资”)
那个谁谁谁说过:”把最复杂的变成最简单的,才是最高明的。“PEG估值法就很好的体现了这个思想。下面,给出PEG的估值原理。
一言以蔽之:计算每只股票的PEG值,并排序,取PEG值最小的前n支股票,作为待买股票即可!
PE:“市盈率TTM”
G:“净利润增长率”
PEG = PE / (G*100)
从以上公式可以看出,PE蕴含着股价的信息,PEG是一个股价相对于收益增长率的比值。直观来讲,PEG越高,代表该公司的股价有被高估的可能性,不建议买。反之,PEG越低,代表该公司的股价有被低估的可能性,考虑买入(*一般情况下,PEG越低越好)。
策略思路
step1:
设置沪深300为初始股票池,将当日停牌的股票剔除,得到可行股票池。
step2:
聚宽平台的取数据函数get_fundamentals可以直接取PE,G值
step3:
对股票的PEG进行排序,取出PEG最小(且全都小于0.5)的前n只支股票,作为调仓时待买入的股票列表。
step4:
每次调仓时,先卖后买,腾出资金。对不在待买入列表的股票,执行卖出操作。
对在待买入列表的股票,分配资金,执行买入操作。
改良:
#通过回测选择合适的调仓间隔天数(可能会存在过拟合)#限制PEG,过滤掉收益突变的妖股(增长<0 或者 增长>200)#限制filter_PEG, 过滤掉前一年增长率大跌的品种#对需要卖出的股票设立一个缓冲池,当PEG排名跌出排名前15时才卖出此股票#双均线择时止损,当指数下降太快时空仓#pe均值止损,当整体pe偏低时,禁止止损,当pe偏高时,激活双均线止损(可能会存在一些过拟合)
择时止损使用的是双均线策略
n1 = 3n2 = 60# 取得过去多天的平均价格 ma_hs1 = close_data['close'][-n1:].mean() #当天平均价格ma_hs2 = close_data['close'][-n2:].mean() ma_hs1_pd2 = close_data['close'][-n1-1:-1].mean() #昨天平均价格ma_hs2_pd2 = close_data['close'][-n2-1:-1].mean()if ma_hs1 > ma_hs2 and ma_hs1_pd2 <= ma_hs2_pd2: g.hs300_stoploss = False # 昨天n1小于n2均线# 今日n1均线大于n2均线(10日均线上穿60日均线),正常持仓elif ma_hs1 < ma_hs2: g.hs300_stoploss = True # 如果n1日均线小于n2日均线,进行止损