選股策略系統性學習(1)|新手初訪

  • Post author:
  • Reading time:6 mins read

FinLab 策略實驗室 的選股策略程式範例琳瑯滿目,初來乍到,你是否有選擇障礙的困擾?感覺每一道都很厲害,但又不確定適不適合自己的口味與程度?擔心程式太難,導致自己體會不出精妙所在,該如何由淺入深來學習策略思維與程式?
量化投資和點菜很像,一開始你不一定要自己煮,可以先學如何點菜與品味,了解不同料理手法的差異,找到自己得品味後,再客製化屬於自己的料理,朝投資老饕的精進之路前進。
本篇舉出5個最精簡的FinLab 策略實驗室 的選股策略程式範例,介紹給初訪者體會量化投資好味道。

截圖 2022 11 22 上午11.31.27

新手開胃策略

股價淨值比和本益比是許多人都認識的評價指標,廣為人知的程度就像炸雞一樣。炸物料理,不少人覺得不就是食材新鮮拿去炸一炸就好吃了嗎?殊不知以炸為主要手法的高檔「天婦羅」料理。要做得好,牽涉到炸功、油品、油溫、麵粉,還要精準掌握溫度火候與時間,備料與烹過程中有很多細節得講究。
覺得股價淨值比和本益比太簡單,肯定沒用?免費的肯定沒好料?那你就大錯特錯了,雖然FinLab 策略清單上以下者兩個免費的策略程式都不到15行,十分清爽,但回測數據都有穩定的效果,許多進階策略也從這兩個策略的核心延伸出去,新手必吃的開胃菜啊!

如果你仔細去了解策略備後的思維細節,會發現都是簡單而不簡單的好策略。
像是股價淨值比策略中,為什麼要使用 (收盤價*股價淨值比)? 而非單純的股價淨值比?

from finlab import data
from finlab import backtest

收盤價 = data.get('price:收盤價')
股價淨值比 = data.get("price_earning_ratio:股價淨值比")

# 條件 1
收盤價大於五 = 收盤價 > 5

# 條件 2
季線 = 收盤價.rolling(60).mean()
收盤價在季線之上 = 收盤價 > 季線

# 條件 3
總條件 = (收盤價 * 股價淨值比)[收盤價大於五&收盤價在季線之上].is_smallest(20)


backtest.sim(總條件, resample='Q')

因為股價淨值比高的通常也是高價股,如果是低價股,要小心財務安全性,所以有要求股價要大於5元,5元的標的若是高股價淨值比,例如2倍,就代表每股淨值2.5元,很危險,也會是全額交割股。

同樣的股價淨值比比較之下,因為篩選後面有用最小值篩選機制「is_smallest(20)」,所以股價低的會優先,帶入操作低價股為選股因子。越低價的標地可能有較高的風險報酬比。如果是小資族,低價股的策略由於有較高機會不用買零股,流動性風險也會較低。

本益成長比 則是重構傳統上PEG分母使用稅後盈餘成長率當分母的定義,改用本業成長純度高的營業利益率當分母,排除以往涵蓋過高一次性業外收入的雜訊。教你如何靈活應用財務指標,而不拘於傳統定義。

這兩個策略看似簡單,其實背後並不簡單,就像好吃的料理不一定要精雕細琢,大巧不工才是真味啊!就像PASTi 油量挺拔的炸芝麻葉牡丹天婦羅招牌香魚 把炸功發揮到極致!

新手雙主菜策略

若你覺得開胃菜合胃口,但覺得味道稍平淡點,想試一點比較「刺激」的熱主菜,波動度比開胃菜策略更強,給想要試試重口味的人嚐嚐:

程式也都不到15行,概念很好理解,營收股價雙渦輪 是順勢追突破,抓月營收與股價連動性高的近期強勢標的。
營收股價雙渦輪 在原型階段已有很好的表現,如果經過優化,有變成「招牌主菜」的潛力。

截圖 2022 11 16 下午12.47.28 e1668593619128
營收股價雙渦輪

護國神山救難隊 是逆勢搶反彈,賭權值股會均值回歸,是基本的布林通道理論應用,在大盤空頭時期有不錯表現,2022 實戰3連勝 ,有目共睹!

截圖 2022 11 23 上午8.59.45
護國神山救難隊

新手甜點策略

如果你還吃得下,那可以再點一個程式手法稍微繁複,但概念簡單的「財務指標計分選股法」做初訪菜單的收尾,體會 Python 函式庫強大的支援與語法精簡的美學,像是台分子料理機器,將複雜的財報計分功能實現出一道精美的料理。

小結

股價淨值比
本益成長比
營收股價雙渦輪
護國神山救難隊
財務指標計分選股法

五個入門級的經典招牌程式範例,推薦給初訪的你,下一次再來介紹升級版策略套餐。

Ben

Python 軟體工程師與量化策略研究員。 鑽研資料工程、網頁後端、資料視覺化、量化交易策略開發。 投資主力在台股市場,量化策略為主、質化分析為輔,追求人機攜做最佳化。逐步將觸角延伸到總經、美股、加密貨幣,朝更全方位的交易人邁進。