PEG策略:
任何一家股票定价合理的话,市盈率与收益增长率相等
市盈率:
市盈率(PE) = 股价(P)/ 每股收益(EPS)
怎么理解市盈率? [ 股价(P)/ 每股收益(EPS)] * 股数 可以看出
市盈率 ≈ 市值 / 净收益
例如:有一家包子铺,每年净利润为50万元,收购价格(市值)为100万元;
有一家家具店,每年净利润为100万元,收购价格(市值)为1000万元
市盈率:包子铺--100/50=2 家具店--1000/100=10 买包子铺划算,市盈率大概表示买哪个划算
收益增长率:
收益增长率(G) = (EPSi - EPSi-1) / EPSi-1
收益增长率 = (本次的收益-上次收益) / 上次收益
PEG指标:
PEG = PE / G * 100%
PEG越低,代表股价被低估的可能性越大,股价会涨的可能性越大。
PEG是一个综合指标,既考察价值,也兼顾成长性。PEG估值法适合应用于成长型公司。
PEG策略选股原理:
计算股票池中所有股票的PEG指标
选择PEG最小的N只股票调仓
注意:过滤掉市盈率或收益增长率为负的股票
from jqdata import * def initialize(context): set_benchmark('000300.XSHG') set_option('use_real_price', True) set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock') g.security = get_index_stocks('000300.XSHG') g.N = 20 g.q = query(valuation.code, valuation.pe_ratio, indicator.inc_net_profit_year_on_year).filter(valuation.code.in_(g.security)) run_monthly(handle, 1) def handle(context): df = get_fundamentals(g.q) df = df[(df['pe_ratio']>0) & (df['inc_net_profit_year_on_year']>0)] #过滤掉负的 df['peg'] = df['pe_ratio'] / df['inc_net_profit_year_on_year'] / 100 df = df.sort_values('peg') # 默认升序 to_hold = df['code'][:g.N].values # 取前g.N个 for stock in context.portfolio.positions: if stock not in to_hold: order_target_value(stock, 0) to_buy = [stock for stock in to_hold if stock not in context.portfolio.positions] if len(to_buy) > 0: cash_per_stock = context.portfolio.available_cash / len(to_buy) for stock in to_buy: order_value(stock, cash_per_stock)