2024-11-11|閱讀時間 ‧ 約 4 分鐘

Python 解鎖 - 如何計算 ETF 的PE Ratio? (以00878為例) Part 4

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()


  1. df_878['股數'] 列中可能含有逗號,這些逗號先被去除,再將數值轉換為 float 型別,便於數值計算。
  2. Earning_TrailingEarning_Forward 是公司過去和預期的盈餘。
  3. MarketValue_878 是公司的市值,由收盤價和股票數量相乘得到。
  4. 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()
  1. Earning_Trailing_878 是所有的過去盈餘總和。
  2. Earning_Forward_878 是所有的預期盈餘總和。
  3. MarketValues_878 是所有的市值總和。


  • 計算PE
PE_Trailing_878 = MarketValues_878 / Earning_Trailing_878
PE_Forward_878 = MarketValues_878 / Earning_Forward_878
  1. PE_Trailing_878 是根據過去盈餘計算的PE。
  2. PE_Forward_878 是根據預期盈餘計算的PE。


如果發現forward PE算出來比trailing PE大,代表公司或分析師預估未來的EPS比現在還差(看壞),可作為投資的參考。

通常一檔ETF包的高成長股(市值)越多,forward PE理應比trailing PE低的多,這可以作為其中一個驗證資料的依據。之後我們會繼續介紹如何撈取其它的ETF,more to come!


謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!







分享至
成為作者繼續創作的動力吧!
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

作者的相關文章

DigNo Ape 數遊原人 的其他內容

你可能也想看

發表回應

成為會員 後即可發表留言
© 2024 vocus All rights reserved.