小資族優等生策略
小資族也能用基本面指標篩選出優質股票。這個策略結合了市值、現金流、獲利能力、成長性和估值五個維度,從中小型股中挑選出體質良好的標的。
策略邏輯
選股條件共五項,全部同時滿足才會納入持股:
- 市值 < 100 億 -- 鎖定中小型股,這類標的較容易有超額報酬空間
- 自由現金流 > 0 -- 公司有實際產生現金的能力,而非帳面獲利
- 股東權益報酬率 > 0 -- 公司有正向獲利,ROE 為正
- 營業利益成長率 > 0 -- 本業獲利持續成長
- 市值營收比 < 5 -- 估值不過高,避免追高
自由現金流取近四季移動平均,以平滑季節性波動。市值營收比則以近四個月累積營收作為分母,搭配每日市值計算。
程式碼
from finlab import data
from finlab.backtest import sim
股本 = data.get('financial_statement:股本')
price = data.get('price:收盤價')
市值 = 股本 * price / 10 * 1000
df1 = data.get('financial_statement:投資活動之淨現金流入_流出')
df2 = data.get('financial_statement:營業活動之淨現金流入_流出')
自由現金流 = (df1 + df2).rolling(4).mean()
稅後淨利 = data.get('fundamental_features:經常稅後淨利')
權益總計 = data.get('financial_statement:股東權益總額')
股東權益報酬率 = 稅後淨利 / 權益總計
營業利益成長率 = data.get('fundamental_features:營業利益成長率')
當月營收 = data.get('monthly_revenue:當月營收') * 1000
當季營收 = 當月營收.rolling(4).sum()
市值營收比 = 市值 / 當季營收
condition1 = (市值 < 1e10)
condition2 = 自由現金流 > 0
condition3 = 股東權益報酬率 > 0
condition4 = 營業利益成長率 > 0
condition5 = 市值營收比 < 5
position = condition1 & condition2 & condition3 & condition4 & condition5
report = sim(position, resample='M', upload=False)
report.display()
策略特色
- 每月換股(
resample='M'),等權重持有所有符合條件的標的 - 持股數量隨市場狀況動態變化,多頭市場時符合條件的標的較多
- 適合小資族,因為鎖定市值較小的標的,所需資金門檻較低