目录
本益比是最常用来判断股价是否合理的指标之一,其公式为本益比=每股股价/每股盈余。若本益比太高代表目前的股价高估、偏离合理的价格,当前获利状况不足以支撑如此高的股价,未来股价修正、下跌的机会高;反之,若本益比太低代表目前股价低估、偏离合理的价格,股价并未充分反映目前获利状况,未来股价回升、上涨的机会高。
早在1970及80年代,Ball(1978)及Basu(1983)就证明在美国市场本益比能有效的解释股票报酬率,而陈俊佑(2011)利用台湾市场资料实证亦显示本益比的投资绩效表现佳。故从理论或实证上,本益比很适合做为投资参考的依据。
在投资的世界中,「买低、卖高」是经典不败的投资法则,而如何买低、卖高,可以从横断面及时间序列两种面向来操作:
综合上述,本益比河流图是一好用的投资工具,本文重点是介绍如何利用TEJ API 和视觉化套件将本益比河流图绘制出来,作为投资操作的参考依据。
本文使用 MacOS 作业系统以及 VScode 作为编辑器
输入相关参数,透过TEJ API取得计算本益比相关的股价资讯、财务资讯,资料处理步骤如下:
导入需要用到的套件(tejapi、matplotlib)
import tejapi
import matplotlib.pyplot as plt
利用tejapi设定要查询的证券码及起(gte)、迄日(lte)参数,还有每股盈余的栏位。选用栏位包括证券代码(coid)、财务资料日(mdate)、每股盈余(ac_3990)。
company = '2330'
price_data = tejapi.get('TWN/EWIFINQ', # tej 财务资料库
coid = company,
mdate={
# 起始日期
'gte':'2022-01-01',
# 结束日期
'lte':'2022-12-31'},
opts={'columns': ['coid','mdate','ac_3990']},
paginate=True
)
利用tejapi函数代入3个参数:设定要查询的证券码及起日(gte)、迄日(lte)、收盘价(close_d)参数。
company_data = tejapi.get(
'TWN/EWPRCD', # 资料库
coid=company, # 股票代码
mdate={
# 起始日期
'gte':'2018-01-01',
# 结束日期
'lte':'2018-12-31'},
paginate=True,
opts={'columns': ['mdate', 'close_d']},
)
计算本益比,利用每天的收盘股价去除以当季每股盈余,得到当天本益比。前一节已利用tejapi.get()函数取得财务相关资料(df),此节利用matplotlib.pyplot里面的plot函数来绘制本益比河流图,并且进一步进行实证分析。以下为操作步骤:
print(price_data['ac_3990'])
print(company_data['close_d'])
我们可以看到一年内四季的每股盈余资料(四笔)和一整年的收盘资料(247笔)。
2. 将每一季开盘天数存入quarter参数当中,在回圈内做该天收盘价除以对应的每股盈余。
close = company_data['close_d']
Price_to_Earnings_Ratio = []
quarter = [60,63,63,61]
quarter_count = 0
season_days = 0
init_day = 0
while quarter_count<4:
season_days = quarter[quarter_count] # 每季有几天
print(init_day+season_days)
for i in range(init_day, int(init_day+season_days)):
Price_to_Earnings_Ratio.append(round(company_data['close_d'][i]/price_data['ac_3990'][quarter_count]))
init_day = init_day + season_days
quarter_count += 1
3. 设定要画出本益比的倍数。
x = [x for x in range(0, len(close))]
Price_to_Earnings_Ratio_30 = [ratio * 30 for ratio in Price_to_Earnings_Ratio]
Price_to_Earnings_Ratio_35 = [ratio * 35 for ratio in Price_to_Earnings_Ratio]
Price_to_Earnings_Ratio_40 = [ratio * 40 for ratio in Price_to_Earnings_Ratio]
Price_to_Earnings_Ratio_45 = [ratio * 35 for ratio in Price_to_Earnings_Ratio]
Price_to_Earnings_Ratio_50 = [ratio * 50 for ratio in Price_to_Earnings_Ratio]
4. 画出本益比河流图。
plt.plot(x, Price_to_Earnings_Ratio_30, label='Ratio=30', color='blue')
plt.plot(x, Price_to_Earnings_Ratio_35, label='Ratio=35', color='blue')
plt.plot(x, Price_to_Earnings_Ratio_40, label='Ratio=40', color='yellow')
plt.plot(x, Price_to_Earnings_Ratio_45, label='Ratio=45', color='brown')
plt.plot(x, Price_to_Earnings_Ratio_50, label='Ratio=50', color='purple')
plt.plot(x, close.tolist(), label='K line', color='red') # 画出收盘价曲线
plt.title('Price_to_Earnings_Ratio') # 设定图形标题
plt.xlabel('Days') # 设定X轴标签
plt.ylabel('Ratio') # 设定Y轴标签
plt.legend() # 添加图例
plt.show()
本篇介绍如何利用TEJ API将本益比河流图利用视觉化套件呈现,投资人就可借由观察个股的本益比河流图,判断目前该股所处的相对位置、进行「买低、卖高」操作。以本文台积电的本益比河流图为例,使用者可以轻易的观察市场投资人给台积电合理的本益比大约在那个区间,判断目前台积电股价是否合理。若想要更精确的利用本益比河流图判断合理股价,则需要把对公司未来的预期考虑进来或改用预期的每股盈余计算本益比。
温馨提醒,本次介绍与标的仅供参考,不代表任何商品或投资上的建议。之后也会介绍使用TEJ资料库来建构各式选择权模型,所以欢迎对选择权交易有兴趣的读者,选购TEJ E-Shop的相关方案,用高品质的资料库,建构出适合自己的订价模型。