数据分析--PEG策略(选股)

数据分析--PEG策略(选股)

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)
PEG策略

 数据分析--PEG策略(选股)_第1张图片

 

posted on 2019-06-02 13:47 要一直走下去 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/staff/p/10962721.html

你可能感兴趣的:(数据分析--PEG策略(选股))