實作財報選股及回測 — Methodology
「股市短期而言是投票機,長期而言是體重計」這是某個投資家大老說過的話,直觀地道出技術分析與基本分析的差異所在,個人來說我是比較喜愛基本分析,原因是分析完買了可以直接放著不管,爽,技術分析派的每天當沖盯盤實在沒這時間這樣子搞。
Anyway,既然走基本分析路線,就要看財報,但一家一家看也很累啊,所以大部分的人都會使用財報軟體,幾家有名的就不多講,我用過,但是總會有些痛點沒辦法解決
不知道選股指標的歷史績效
這個其實最致命,因為沒有回測,所以用了指標後只能買進直接實驗,賺了好棒棒,賠了拉倒。但理想上應該要先知道,這樣的指標在「過去x年的報酬率分佈」,才決定要不要用這指標去實戰。
想要的功能沒有
一言難盡,套裝軟體就這樣,畢竟不是哆啦A夢
需要花錢
這對部位大的人不是問題,不過小資的話,其實就吃掉很多利潤
好啦既然產品滿足不了需求,就自己做!
方法論
財報選股可說是「財務比率選股」,財務比率就是把財報的原始數據加減乘除後,變成指標,用這些指標來判斷股票的好壞,其實有點 Feature Engineering 的味道
財務比率都有些固定的名詞,常見的約有… 20–30種?因為不大好簡介所以如果沒概念可以先去 google,比如 雞排看財報 就是個不錯的理解方式
以下是使用頻率比較高的指標
毛利率
營業利益率
負債比率
流動比率
利息保障倍數
資產報酬率
權益報酬率
現金流量比率
現金流量允當比率
現金再投資比率
本益比
營收成長率
營業利益率成長
稅後純益率成長
資產報酬率成長
資產報酬率成長….
要作一個財報篩選股票機,就是把個股這些比率的資料都餵進同一張表裡,加上價格,下條件排除不符條件的股票,就可以看到符合篩選標準的股票,並檢視這樣操作在歷年的報酬
資料來源
這些資料其實在台灣證券交易所都有公開,所以靠爬蟲都能取得,但還是有點難度,本來這些比率是靠財務三表(損益表 / 現金流量表 / 資產負債表)組合去計算,說實在分開爬這三張表然後自己算是大工程啊,還好官方可以找得到已經算好的資料!不過就算有現成,這些比率還是分散在很多來源中,必須分開爬取,再組合起來。
整合
以 SQL來說明,某一年度的資料需要 8 個爬蟲的結果組合起來,如下所示
若需要算年度成長率,則需要以上代碼在不同年份所得到 table A,B,運算後得到 derived_table C,得 SELECT * FROM table A JOIN derived_table C ON A.公司代號=C.公司代號
雖然說用 SQL 來說明,執行並不一定要 SQL,都可以用 Pandas 完成
實作代碼
因為分很多段,後續會拆解說明,有興趣的人玩看看應該不難理解(?)
Summary
這篇文章所提到 skill —
基本財報
python requests
SQL / python pandas
有了這些,就可以實作 python 量化交易~
Let’s do this!