在Part 3,我們獲取了00878的每個持倉的盈餘和價格,本篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。
- 資料清理與轉換
df_878['Earning_Trailing'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['eps_trailing'].astype(float)
df_878['Earning_Forward'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['eps_forward'].astype(float)
df_878['MarketValue_878'] = df_878['股數'].str.replace(',', '', regex=True).astype(float) * df_878['previousClose'].astype(float)
filt = df_878['eps_forward'].notna()
- df_878['股數']列中可能含有逗號,這些逗號先被去除,再將數值轉換為- float型別,便於數值計算。
- Earning_Trailing和- Earning_Forward是公司過去和預期的盈餘。
- MarketValue_878是公司的市值,由收盤價和股票數量相乘得到。
- filt是一個篩選器,用於篩選- eps_forward非空值的行。
- 計算各項數值的總和
Earning_Trailing_878 = df_878['Earning_Trailing'].loc[filt].sum()
Earning_Forward_878 = df_878['Earning_Forward'].loc[filt].sum()
MarketValues_878 = df_878['MarketValue_878'].loc[filt].sum()
- Earning_Trailing_878是所有的過去盈餘總和。
- Earning_Forward_878是所有的預期盈餘總和。
- MarketValues_878是所有的市值總和。
- 計算PE
PE_Trailing_878 = MarketValues_878 / Earning_Trailing_878
PE_Forward_878 = MarketValues_878 / Earning_Forward_878
- PE_Trailing_878是根據過去盈餘計算的PE。
- PE_Forward_878是根據預期盈餘計算的PE。
如果發現forward PE算出來比trailing PE大,代表公司或分析師預估未來的EPS比現在還差(看壞),可作為投資的參考。
通常一檔ETF包的高成長股(市值)越多,forward PE理應比trailing PE低的多,這可以作為其中一個驗證資料的依據。之後我們會繼續介紹如何撈取其它的ETF,more to come!
謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!
















