[心得] 使用班佛定律檢測美股財報造假可能性
部落格完整文章:
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模型檢查或是人工分析財報三表), 進行多種獨立性檢查才能
更降低踩雷的風險...。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.200.34 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Stock/M.1709132493.A.F79.html
推
02/28 23:05,
1月前
, 1F
02/28 23:05, 1F
推
02/28 23:08,
1月前
, 2F
02/28 23:08, 2F
→
02/28 23:10,
1月前
, 3F
02/28 23:10, 3F
推
02/28 23:11,
1月前
, 4F
02/28 23:11, 4F
推
02/28 23:12,
1月前
, 5F
02/28 23:12, 5F
→
02/28 23:22,
1月前
, 6F
02/28 23:22, 6F
→
02/28 23:26,
1月前
, 7F
02/28 23:26, 7F
推
02/28 23:30,
1月前
, 8F
02/28 23:30, 8F
推
02/28 23:35,
1月前
, 9F
02/28 23:35, 9F
推
02/28 23:40,
1月前
, 10F
02/28 23:40, 10F
→
02/28 23:40,
1月前
, 11F
02/28 23:40, 11F
→
02/28 23:40,
1月前
, 12F
02/28 23:40, 12F
→
02/28 23:41,
1月前
, 13F
02/28 23:41, 13F
推
02/28 23:46,
1月前
, 14F
02/28 23:46, 14F
推
02/28 23:57,
1月前
, 15F
02/28 23:57, 15F
→
02/28 23:57,
1月前
, 16F
02/28 23:57, 16F
→
02/28 23:58,
1月前
, 17F
02/28 23:58, 17F
→
02/28 23:59,
1月前
, 18F
02/28 23:59, 18F
→
02/28 23:59,
1月前
, 19F
02/28 23:59, 19F
→
02/29 00:00,
1月前
, 20F
02/29 00:00, 20F
→
02/29 00:00,
1月前
, 21F
02/29 00:00, 21F
噓
02/29 00:08,
1月前
, 22F
02/29 00:08, 22F
推
02/29 00:35,
1月前
, 23F
02/29 00:35, 23F
→
02/29 00:35,
1月前
, 24F
02/29 00:35, 24F
推
02/29 00:38,
1月前
, 25F
02/29 00:38, 25F
→
02/29 00:38,
1月前
, 26F
02/29 00:38, 26F
推
02/29 00:52,
1月前
, 27F
02/29 00:52, 27F
推
02/29 01:01,
1月前
, 28F
02/29 01:01, 28F
推
02/29 01:06,
1月前
, 29F
02/29 01:06, 29F
推
02/29 01:10,
1月前
, 30F
02/29 01:10, 30F
個人淺見是財報美化很常見, 可是如果到造假的程度代表公司問題很大, 所以變成得改更
多數字才能達到效果, 而改越多就代表要調整的功夫越大才不會對不起來, 尤其是現金流
量表通常是最難改的, 如果發現算出來的結果顯著有問題, 就可以考慮skip不要踩雷...
※ 編輯: zmcx16 (114.136.147.86 臺灣), 02/29/2024 01:25:45
→
02/29 01:39,
1月前
, 31F
02/29 01:39, 31F
→
02/29 01:39,
1月前
, 32F
02/29 01:39, 32F
噓
02/29 04:53,
1月前
, 33F
02/29 04:53, 33F
→
02/29 05:06,
1月前
, 34F
02/29 05:06, 34F
推
02/29 05:08,
1月前
, 35F
02/29 05:08, 35F
→
02/29 05:09,
1月前
, 36F
02/29 05:09, 36F
→
02/29 05:10,
1月前
, 37F
02/29 05:10, 37F
→
02/29 05:11,
1月前
, 38F
02/29 05:11, 38F
推
02/29 05:13,
1月前
, 39F
02/29 05:13, 39F
→
02/29 05:15,
1月前
, 40F
02/29 05:15, 40F
→
02/29 05:25,
1月前
, 41F
02/29 05:25, 41F
推
02/29 06:46,
1月前
, 42F
02/29 06:46, 42F
→
02/29 07:36,
1月前
, 43F
02/29 07:36, 43F
推
02/29 07:58,
1月前
, 44F
02/29 07:58, 44F
推
02/29 08:28,
1月前
, 45F
02/29 08:28, 45F
→
02/29 08:28,
1月前
, 46F
02/29 08:28, 46F
→
02/29 08:33,
1月前
, 47F
02/29 08:33, 47F
推
02/29 08:59,
1月前
, 48F
02/29 08:59, 48F
→
02/29 08:59,
1月前
, 49F
02/29 08:59, 49F
→
02/29 09:01,
1月前
, 50F
02/29 09:01, 50F
→
02/29 09:01,
1月前
, 51F
02/29 09:01, 51F
→
02/29 09:01,
1月前
, 52F
02/29 09:01, 52F
推
02/29 09:07,
1月前
, 53F
02/29 09:07, 53F
→
02/29 09:08,
1月前
, 54F
02/29 09:08, 54F
推
02/29 09:08,
1月前
, 55F
02/29 09:08, 55F
推
02/29 09:11,
1月前
, 56F
02/29 09:11, 56F
→
02/29 09:11,
1月前
, 57F
02/29 09:11, 57F
推
02/29 09:18,
1月前
, 58F
02/29 09:18, 58F
推
02/29 09:50,
1月前
, 59F
02/29 09:50, 59F
推
02/29 10:10,
1月前
, 60F
02/29 10:10, 60F
→
02/29 10:12,
1月前
, 61F
02/29 10:12, 61F
推
02/29 10:16,
1月前
, 62F
02/29 10:16, 62F
推
02/29 11:33,
1月前
, 63F
02/29 11:33, 63F
→
02/29 11:33,
1月前
, 64F
02/29 11:33, 64F
→
02/29 11:33,
1月前
, 65F
02/29 11:33, 65F
→
02/29 11:33,
1月前
, 66F
02/29 11:33, 66F
→
02/29 11:33,
1月前
, 67F
02/29 11:33, 67F
→
02/29 11:39,
1月前
, 68F
02/29 11:39, 68F
→
02/29 11:39,
1月前
, 69F
02/29 11:39, 69F
→
02/29 11:39,
1月前
, 70F
02/29 11:39, 70F
→
02/29 11:39,
1月前
, 71F
02/29 11:39, 71F
推
02/29 13:15,
1月前
, 72F
02/29 13:15, 72F
推
02/29 14:08,
1月前
, 73F
02/29 14:08, 73F
→
02/29 14:08,
1月前
, 74F
02/29 14:08, 74F
推
02/29 15:33,
1月前
, 75F
02/29 15:33, 75F