跳轉到

過濾 KY 股財報

在台灣第一上市的海外公司(KY 股)經常爆出財報疑慮,對此敏感的投資人可以在財報策略中排除 KY 股。本範例以現金流量策略為基礎,示範如何過濾 KY 股。

現金流量選股策略

策略篩選同時滿足以下條件的標的:

  1. 營業現金流 > 0 -- 本業有實際現金流入
  2. 投資現金流 > 0 -- 投資活動帶來正向現金流(例如處分資產)
  3. 融資現金流 < 0 -- 公司正在償還借款或減資,財務趨於保守
  4. ROE > 5 -- 股東權益報酬率高於 5%,具備基本獲利能力
  5. 股價 > 10 元 -- 排除低價股

基本面指標使用 .deadline() 對齊財報公告截止日,確保不使用未來資訊。

過濾 KY 股

透過 security_categories 資料表,找出公司名稱包含「KY」的標的,從持股中剔除。

程式碼

現金流量選股

from finlab import data
from finlab.backtest import sim

營業現金流 = data.get("financial_statement:營業活動之淨現金流入_流出").deadline()
投資現金流 = data.get("financial_statement:投資活動之淨現金流入_流出").deadline()
融資現金流 = data.get("financial_statement:籌資活動之淨現金流入_流出").deadline()
roe = data.get("fundamental_features:ROE稅後").deadline()
close = data.get("price:收盤價")

position = (營業現金流 > 0) & (投資現金流 > 0) & (融資現金流 < 0) & (roe > 5) & (close > 10)

過濾 KY 股

# 過濾 KY股
sc = data.get("security_categories")
position_col = position.columns
ky_filter = position_col[
    ~position_col.isin(list(sc[sc["name"].str.contains("KY")]["stock_id"]))
]
position = position[ky_filter]

report = sim(position, resample="M", upload=False)
report.display()

策略特色

  • 使用 .deadline() 將財報資料對齊公告截止日,避免前視偏誤(look-ahead bias)
  • KY 股過濾透過公司名稱比對實現,因為 KY 股的公司名稱固定包含「KY」字樣
  • 每月換股(resample='M'),等權重持有所有符合條件的標的
  • 此過濾方法可套用於任何基本面策略,只需在最終 position 上執行 KY 股過濾即可