過濾 KY 股財報
在台灣第一上市的海外公司(KY 股)經常爆出財報疑慮,對此敏感的投資人可以在財報策略中排除 KY 股。本範例以現金流量策略為基礎,示範如何過濾 KY 股。
現金流量選股策略
策略篩選同時滿足以下條件的標的:
- 營業現金流 > 0 -- 本業有實際現金流入
- 投資現金流 > 0 -- 投資活動帶來正向現金流(例如處分資產)
- 融資現金流 < 0 -- 公司正在償還借款或減資,財務趨於保守
- ROE > 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 股過濾即可