最近看書時忽然想到, 我在分析一間公司時都會關注這件公司是不是一直有在賺錢, 公司的盈餘是不是一直有在成長, 以作為決定要不要買進一間公司的基準(當然還要加上是否夠便宜XD), 可是這都是透過其他選股條件(條件過濾、多因子選股模型、品牌、創新力、ESG、分析師評價...etc) 挑出一間公司後, 再進到Yahoo財經頁面看更細部的資料。 不能根據盈餘排行排序作為一個選股條件, 想說既然這次想到了, 就把這塊功能補起來吧。
要做盈餘成長排行, 首先就得寫爬蟲把所有上市公司的各季盈餘資料抓取出來, Yahoo財經頁面有兩個地方可以查到盈餘資料:
1. 金融頁面 (財報三表的損益表)
2. 分析師盈餘預測 (有分析師估計&實際盈餘的比較)
至於要用哪邊的資料, 其實我原本是想用財報三表的損益表, 想說這是最真實的資料, 可是實際分析資料後發現, Yahoo財經其實不少missing data (早已知道的事實, 只是每次碰到都得再想一次怎麼辦...), 不管是財報頁面還是分析師盈餘預測都各別會有缺失資料, 甚至還有不少公司的盈餘資料是完全不一樣的...。
以PYPL來說, 以下分別是損益表資料以及分析師盈餘資料:
https://finance.yahoo.com/quote/PYPL/financials
實作完整合好的頁面如下:
https://norn-stockscreener.zmcx16.moe/ranking/
Github:
https://github.com/zmcx16/Norn-StockScreener
Rank排行會有最近一季的盈餘成長作為排序基準, 而Rank顏色則是每一季盈餘都是賺錢的話會是綠色, 其中一季虧錢是藍色, 兩季虧錢是黃色, 三季以上虧錢則是紅色。
實際做完用網頁呈現出來, 果然分析師盈餘&損益表的結果完全不一樣XDD
分析師盈餘資料有3386筆, 而損益表資料有4163筆, 會這樣也很合理, 畢竟不太可能所有小公司都有分析師去預測盈餘。 而分析師盈餘資料中, 盈餘成長排行最高的公司是AIRC, 最近一季盈餘成長是216倍, 可是那是因為2022Q3 EPS只有0.01, 2022Q4則是2.17, 這樣拿第一名也不意外啦, 只是這代表一點參考意義都沒有, 只能當outlier處理...; 而損益表盈餘資料中, 盈餘成長排行最高的公司則是INVA, 成長爆炸的原因也一樣, 只是上一季盈餘太爛的關係...。
基本上要去除outlier很困難, 因為實際上要算成長率就是會遇到這種分母值接近0的問題, 我覺得能做的就是至少加註解讓使用者能快速知道這可能是outlier, 再來就是多做些更需要的功能, 過濾掉更多不需要的資料。
目前想到的有用的過濾標準有兩個:
1. 所有季度盈餘都是正收益 -> 代表這間公司一直在賺錢, 想投資一間公司當然挑這類公司會更安全。
2. 所有季度盈餘都是正成長 -> 代表這間公司一直在成長, 想投資一間公司當然挑這類公司會更有夢想 (當然前提是估值相對便宜)。
目前就有針對這兩個功能加了filter tag, 有選取tag的話就會只顯示符合條件的公司:
所有組合數據:
* 分析師盈餘資料
- 所有資料: 3386
- 所有季度盈餘都是正收益: 1896
- 所有季度盈餘都是正成長: 403
- 所有季度盈餘都是正收益+正成長: 240
- 所有資料: 4163
- 所有季度盈餘都是正收益: 1756
- 所有季度盈餘都是正成長: 626
- 所有季度盈餘都是正收益+正成長: 237
沒有留言:
張貼留言