金融数据分析| 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)