部落格完整文章:
https://blog.zmcx16.moe/2024/02/norn-stockscreener.html
最近在看"為什麼我們會被騙?:破解金錢騙局、假新聞、政治謊言背後的詐騙機制"這本
書, 書中其中一段有提到班佛定律, 這個定律可以用來檢測各種數據是否有造假的可能,
公式原理本身就不提了, 有興趣可以看上面的完整文章, 或是看下面的文章連結:
世界其實不完全隨機,「規則總有例外」- 班佛定律(Benford's Law)
https://tmrmds.co/article-business/18441/
感覺這公式挺有意思的, 也可以拿來檢測財報是否有造假, 就決定整合到自己做的投資網
站了, 成果如下:
https://i.imgur.com/4ju4t9U.png
Norn-StockScreener投資網站:
https://norn-stockscreener.zmcx16.moe/stock-benford-law/
Github:
https://github.com/zmcx16/Norn-StockScreener
另外我以前也有實作另一套偵測財報造假的公式: Beneish M-Score模型, 有興趣的人也
可以看看:
Blog文章: Beneish Model - 一個簡單識別公司財務報表是否造假的公式
https://blog.zmcx16.moe/2021/01/beneish-model.html
公式網站:
https://project.zmcx16.moe/?page=investment-formula
這次整合班佛定律的財報來源是從Yahoo財經取得, 分析數據是標準的財報三表: 損益
表, 資產負債表, 現金流量表。 而Yahoo的金融頁面的財報可以分別看季報跟年報, 並且
最多可以分別看最近4期的財報, 所以這次整合班佛定律會分別計算以下SSE (The sum
of squares due to error, 和方差、誤差平方和):
* LastQ SSE (近一季財報)
* LastY SSE (近一年財報)
* AllQ SSE (近四季財報)
* AllY SSE (近四年財報)
* AllQY SSE (近四季+近四年財報)
其實要看的話最主要還是看AllQY SSE就好, 原因是只看這三大表數字的話, 取樣數字還
是太少太少了, 看近四季+近四年, 才勉強達到取樣數字>1000的標準...。
另外前面有提到班佛定律的前提是數據類型差距要夠大 & 不能有人為操控, 所以我把財
報三表中的: ["Diluted EPS", "Basic EPS", "Tax Rate For Calcs"] 特別過濾掉, 畢
竟像這種ratio的數字本來就不適合套用在班佛定律上, 就決定把這種可能成為雜訊的數
據類型事先過濾掉了。
首先來看看AAPL財報跑班佛定律的結果:
https://i.imgur.com/s2f7uAl.png
可以看到近一季 & 近一年的SSE特別高, 原因其實也不意外, 因為只看近一季或近一年的
財報三表所有數字也才100多個, 取樣數字太少沒有鑑別性; 而近四季的SSE跟前面比就大
幅降低, 代表隨著取樣數字增加SSE有降低, 是有符合班佛定律的; 而近四年的SSE跟前面
相比雖然較低, 可是卻不顯著, 這是因為取樣數字還是不高導致的鑑別性太低, 還是有其
他原因, 就需要再調查研究看看; 不過看近四季 + 近四年的SSE是最低的, 取樣數字有
1240個, 看1~9的分布機率跟班佛定律也算接近, 從網站目前整合的4182檔個股來看, SSE
排序大約在13XX/4182左右還算安全, 代表至少單從班佛定律看, AAPL的財報應該問題不
太大。
另外雖然網站整合了這個功能, 可是可惜的是YAHOO財經有不少個股的財報三表數據還是
不完整, 數據不完整導致樣本數低就沒辦法用班佛定律檢測, 不過只要不買股本小的冷門
股基本上就不會遇到這問題, 對大多數人來說應該影響不大。
比較遺憾的是, YAHOO財經有整理的只有財報三表的資料, 可是一間公司完整的季報或年
報, 其實是有更多數據資料的, 像是航運公司的財報就會說自己旗下有多少船, 以及這些
船的營運成本跟收益如何; 礦產公司也會說明旗下有多少礦坑, 以及目前自己的原料庫存
有多少等等..., 這些數據如果都能拿來計算的話, 班佛定律要求的樣本數要夠多就比較
不是問題, 不過要我自己寫程式去parser SEC的財報數據太痛苦了, 也不一定能100%做
到, 整理財報資料到財經網站這工作應該也有人工負責, 寫個一體適用的程式不太實際.
..。
最後總結一下, 班佛定律雖然可以用來辨識數據是否造假, 不過首先必須先確保數據是否
適用(數據區間&差距夠大以及樣本數夠多; 並且數據類型不能有人為操控限制), 再來就
是檢查出來就算不符合分布, 也不代表數據一定有造假, 只是這個可能性較高而已; 而就
算完美符合班佛定律的公式分布, 也不代表一定沒有造假, 還是要用其他方式多加檢查
(e.g. 使用Beneish M-Score模型檢查或是人工分析財報三表), 進行多種獨立性檢查才能
更降低踩雷的風險...。