天天看點

金融資料分析| PEG

 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)      
金融資料分析| PEG