ETF (exchange-traded funds) 近年已逐漸成為投資人青睞的投資工具,透過指數證券化,投資人可以以相對低廉的門檻參與追蹤的指數,在一些被動型的股票ETF,投資人更能透過買進一籃子股票做到某種程度的避險。與此同時,儘管長期以被動型的股票ETF追蹤大盤指數既省心又能獲取不錯的報酬,我們要如何評估現在的ETF價格是否在上緣或是有被低估的可能呢?
本益比
本益比 (PE Ratio) 經常用來評估一檔股票是便宜或是昂貴常用的工具,公式是 股價 ÷ 每股盈餘 (或市值÷總盈餘)。
我們可以使用相同原理對一檔股票型ETF進行PE估值:
1. 撈取一檔ETF所有的持倉股票清單。
2. 每檔股票持有股數
3. 每檔股票的EPS
4. 計算每檔股票的總盈餘
5. ETF的總市值: 可以使用ETF股價乘上其流通股數或每檔持倉股票的股價乘上持有股數
6. ETF的總市值 / ETF的總盈餘 得到此ETF的本益比。
在此篇我們會以國泰永續高股息ETF (代號00878)為例,在Google Colab使用Python計算其PE比例。
持倉股票清單
國泰提供ETF相關持倉和股數的下載連結。將下載檔案預存成data.xlsx。
import urllib from openpyxl
import load_workbook
import pandas as pd
urllib
用於處理 URL 的請求,這裡用來下載檔案。openpyxl
用於操作 Excel 檔案,支援 .xlsx
格式。pandas
用於資料分析,將資料存入 DataFrame。dls = "https://cwapi.cathaysite.com.tw/api/ETF/DownloadETFWeightExcel?FundCode=CN&SearchDate=2024/10/01"
urllib.request.urlretrieve(dls, "data.xlsx")
dls
是 Excel 檔案的下載連結。urllib.request.urlretrieve(dls, "data.xlsx")
會從指定的 URL 下載檔案,並將其儲存為 data.xlsx
。wb = load_workbook(filename='data.xlsx', read_only=True)
ws = wb['Sheet0']
openpyxl
的 load_workbook
函式載入 data.xlsx
,設定為唯讀模式(read_only=True
)。ws
是 Excel 檔案中的工作表,這裡選擇 Sheet0
。data_rows = []
for row in ws['A1':'D47']:
data_cols = []
for cell in row:
data_cols.append(cell.value)
data_rows.append(data_cols)
df_878 = pd.DataFrame(data_rows)
df_878.columns = df_878.iloc[0]
df_878 = df_878[1:]
如此我們就將最新的持倉細節、權重撈到手了 (如下圖),下篇會講解定義函式來撈取相關盈餘、股價等資訊。
謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!