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)
