PEG策略

 彼得.林奇:任何一家公司股票如果定价合理的话,市盈率就会与收益增长率相等。

  市盈率

市盈率(PE)= 股价(P) / 每股收益(EPS)

 市盈率 = 市值 / 净收益

 例如:有一家包子铺,每年净利润为50万元,收购价格(市值)为100万元; 有一家家具店,每年净利润为100万元,收购价格(市值)为1000万元……

 

 每股收益(EPS)、 股价(P)、 市盈率(PE) = P/EPS

 收益增长率(G) = (EPSi – EPSi-1) / EPSi-1

 PEG = PE / (G * 100)

 PEG越低,代表股价被低估的可能性越大,股价会涨的可能性越大。

 PEG是一个综合指标,既考察价值,又兼顾成长性。PEG估值法适合应用于成长型公司。

 参考财务数据指标:

  https://www.joinquant.com/help/api/help?name=Stock#%E5%90%88%E5%B9%B6%E5%88%A9%E6%B6%A6%E8%A1%A8

import jqdata
import pandas as pd
def initialize(context):
    set_option(\'use_real_price\', True)
    set_order_cost(OrderCost(open_tax=0, 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)
    #print(df)  
    
    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(by = \'peg\') #df.sort(columns = \'peg\')
    #print(df)
    tohold = df[\'code\'][:g.N].values
    
    for stock in context.portfolio.positions:
        if stock not in tohold:
            order_target(stock, 0)
    tobuy = [stock for stock in tohold if stock not in context.portfolio.positions]
    
    if len(tobuy) > 0:
        cash = context.portfolio.available_cash
        cash_per_stock = cash / len(tobuy)
        for stock in tobuy:
            order_value(stock, cash_per_stock)

    

 

版权声明:本文为shengyang17原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shengyang17/archive/2004/01/13/12830389.html