2025年5月27日 星期二

[Azure] Azure function bandwidth暴增的故事

最近遇到了Azure帳單超出預算的警示mail, 查了一下發現主要原因是跑爬蟲的azure function resource group的頻寬成本大幅增加, 可是我用了好幾年azure function從來沒被收過頻寬費, 再加上我上次deploy新build是2024年11月的事, 怎麼會4/29開始忽然頻寬量大幅增加...






後來決定先敲Azure support ticket, 讓support幫忙查問題, 不過沒想到這個case直接被轉到billing team, 不像以前會support先調查原因, 現在好像只會被轉給billing team, 然後跟你說會爭取折扣/豁免有問題的計費, 不會幫你查原因了..., 如果要查原因, 就會要求你去買他們技術支援服務, 這讓我不太敢繼續用Azure了, 講得好像Azure都不會有bug導致計費出問題一樣, 都是they的錯...




最後Azure忽然爆增Bandwidth帳單的600多塊減免了450塊:



既然Azure support那邊沒辦法幫我調查原因, 我就想說自己繼續追追看了, 仔細看了下發現並不是azure function的頻寬爆增, 而是azure function綁定的storage account Egress爆增:



看起來metrics最多只能query近兩個月, 可以發現4/29之前Egress都少少的, 而4/29之後整個大爆增, 而這件事也很玄..., 因為我Azure function的storage account只是預設綁定, 我自己根本沒有寫讀寫檔案的程式碼, 所以會用到storage account應該是azure function自己讀寫的, 像是metrics等需求之類的, 要怎麼樣才會忽然爆增這麼多Egress流量, 更不用說我根本沒deploy新build...。

之後重新去查Azure Bandwidth的pricing:
https://azure.microsoft.com/zh-tw/pricing/details/bandwidth/

上面有寫相同可用性區域內的資料傳輸頻寬免費, 以及網際網路輸出則是前100G免費, 上面看頻寬短短兩個多禮拜頻寬就超過300G, 所以被算錢也不例外, 因為我們azure function為了跑爬蟲一次跑16組 & 散布在各個region,  但是都是共用japan east storage account, 這才導致頻寬要額外算錢...。




某方面來說這也是自己的鍋, 為什麼沒有先研究azure function跟storage account跨region會被額外計費, 之前是因為沒有超過100G頻寬所以沒事, 現在不知道為什麼storage account頻寬爆增, 被多算錢了才注意到這件事..., 不過這樣要解決也簡單了, 把目前不同region的azure function都各自綁定在對應相同region的storage account就好, 這樣頻寬就不會被額外計費了 (至於為什麼4/29後storage account頻寬爆增, 就不打算查了, 反正不算錢就當不影響...。)




現在我這個Japan East的storage account住了三個azure function, 每五分鐘trigger一次, 每trigger一次Egress就會花20~80MB頻寬輸出, 因為我的code完全沒讀寫檔案, 這個頻寬用量真的有點扯..., 到底都用來幹嘛...。



最後有一個想靠邀M$的事, 我重新佈署新的azure function時, 發現azure function在新部署設定檔時, 會預設選你現有的storage account, 然後那個storage account不一定會優先選相同region, 所以你要是一路default設定按下去, 就會發生我上面的問題, 不看文件一路default到底的下場在此...。

既然選不同region的storage account會頻寬多算錢, 那M$沒有警告嗎?  有!  當然有! 可是Visual Studio那UI提示太扯, 首先default看到的畫面會長這樣:



沒有任何警告訊息, 可是如果你點擊Azure儲存體那個dropdown list, focus進去後, 在往外面按一下滑鼠, 警告訊息才會跳出來...



所以一路default按到底的人就會高機率選到跨region的現有storage account, 然後帳單金額就增加了, 這真的是bug嗎?  還是feature spec?  我就不下定論了...只覺得好噁心....。



2025年1月1日 星期三

2024投資績效報告

2024投資績效: -3.6%

VTI: 22.17%

SPY: 23.3%

QQQ: 24.84%



績效細項如下:

  • 股票績效: -5.9%
  • 選擇權績效: 5.2%
  • 劵商利息&其他費用: -2.8%
  • 股息: 5% (已扣30%稅)

---

  • 未實現: -66.6%
  • 已實現: 21.2%  (股票: 16.9%  選擇權: 4.3%)

近6年績效:


總結完畢, 2024年績效真的輸大盤輸慘慘, 難得的一個大多頭QQ  以下是落落長的心得文:

因為覺得去年美股大盤漲不少了, 所以想說今年應該大盤不會太好, 就繼續把投資方向放在比較穩定的公司(e.g. SEE, GIS), 結果股價當然穩得跟什麼一樣, 佔不到大盤上漲的便宜...。 另外因為自己習慣價值投資撿便宜, 但今年撿到不少價值陷阱的公司, 要停損又覺得捨不得, 要嘛是營收有持續成長但獲利降低(營運效率變差); 不然就是覺得品牌價值還在, 只要改善營運策略就有機會改善公司營運; 或是原物料相關的公司, 想說原物料價格遲早有回來的一天, 就滿手越來越多虧損大的公司股票了...。 

至於選擇權交易今年還是一樣持續賺錢, 不過有少數幾檔價值陷阱的股票是選擇權被行權來的, 如果當時行權後直接停損的話現股的虧損就不會這麼大, 可是也有不少標的是行權後反而大賺的, 所以目前選擇權交易的部分還是不打算改變策略, 至於價值陷阱的心魔這題要怎麼克服, 就是未來的課題了, 到底怎麼區分是未來真的有希望而繼續持有的好, 還是趕緊停損認賠找下一個投資標的好, 真的是好難啊...。 至於高科技成長股要不要投資, 這也是一直以來的課題, 除非真的有非常便宜的機會, 不然感覺自己都不會想去追高買進...。


以下是更細部的投資細項績效:

目前持有虧損大的持股:

  • EL 平均成本143.25,  現市價: 74.19 (成本市價差:-48.21%)
  • KSS  平均成本22.03,  現市價: 13.86 (成本市價差:-37.09%)
  • MPW 平均成本6.18,  現市價: 3.72 (成本市價差:-39.81%)
  • CVS 平均成本65.41,  現市價: 43.94 (成本市價差:-32.82%)
  • ILPT 平均成本17.24,  現市價: 3.58 (成本市價差:-79.23%)
  • AAP 平均成本91.35,  現市價: 46.05 (成本市價差:-49.59%)
  • ZIM 平均成本40.74,  現市價: 21.45 (成本市價差:-47.35%)
  • SID 平均成本4.54,  現市價: 1.45 (成本市價差:-68.06%)
  • ALB 平均成本173.45,  現市價: 86.14 (成本市價差:-50.34%)
恩...其中有一半是去年凹單到現在的(AAP, ALB, ILPT, MPW, SID, ZIM), 其中只有ZIM今年因為運價行情回升+營運效率改善漲了125% (可是我也只是從-75% -> -47%而已, 離回本還遠著, 不過ZIM都會把獲利約30%作為股息發放, 實際上持有成本更低就是了...), 其他的都持續擴大虧損, 像是ALB, SID因為鋰跟鋼價持續疲軟所以導致公司毛利變負的; 而MPW則是因為最大醫療租戶破產還在處置資產跟尋找新租戶, ILPT則是因為利率上漲前高槓桿併購導致現在苦苦掙扎, 還在等利率調降&處置資產...。

至於AAP就單純是營運效率問題, 雖然跟美國汽車零組件DIY市場委靡也有關, 不過因為AAP的營運效率較差, 所以跟其他同類型公司比獲利低得多甚至一度虧損, 可是因為營收還是有在略為成長, 所以我還是想賭賭看新CEO有沒有辦法改善營運效率重返榮耀...。

而今年又多了三檔大虧的持股 (EL, KSS, CVS), EL是有名的化妝品品牌雅詩蘭黛, 看了股價從2022年370一路下跌, 想說雅詩蘭黛品牌這麼大化妝品這種高奢侈品的消費品應該怎樣都不虧, 就想進場撿便宜, 結果沒想到營收卻真的每季都在萎縮, 到最近一季還轉盈為虧, 主要原因還是雅詩蘭黛的市場過度集中在中國市場, 而現在的中國消費市場卻還是持續低迷, 導致營收跟獲利持續下滑...。 目前我是相信公司有辦法改善營運狀況, 就繼續抱著觀望了, 如果明年一整年營收還是持續萎縮的話就賣出放棄...。

KSS科爾百貨則是今年的財報都不怎麼好看, 尤其是近一季財報又下調全年銷售預期導致股價大跌, 反觀競爭對手沃爾瑪(WMT)今年上漲了70%, 不過我也不太可能去買沃爾瑪就是, 之前爆出太多苛刻員工的新聞讓我完全不想買這間公司, 至於KSS也還是會持續觀望看看, 如果明年營收還是持續下滑就一樣放棄賣出...。

至於CVS則是美國最大的藥品藥局零售商, 股價從高點100一路下滑到現在44塊, CVS的營收還是持續成長的, 不過營運效率未來則可能會面臨大問題, 一方面是醫療成本支出持續增加, 另一方面則是美國鴉片類藥物訴訟以及PBM法案造成的影響, 目前還不確定這些法案造成的影響有多大, 就決定先繼續持有觀察看看了。


今年獲利較多的已實現標的:

  • DIS: 平均成本86, 111~116賣出 (+29~35%)
  • BAC: 平均成本29, Call 37行權賣出 (+28%)
  • TGT: 平均成本128, Call 146行權 & 145~156賣出 (+13~22%)
  • ACLS: 平均成本95 (Put行權), Call 125行權 (+32%)
2023年低接的DIS最近獲利了結了, 當初買進主要是想賭迪士尼100週年慶, 想說股價相對低檔又是100週年應該會有各種活動以及對應的慶祝行情, 沒想到迪士尼100週年電影也是大暴死(e.g. 星願), 畢竟那時的迪士尼塞了各種政治正確進作品裡..., 不過後來換回老CEO後有承諾迪士尼應該還是要以娛樂為主, 而不是政治正確, 營運改善+串流媒體事業成長有帶動一波股價上漲, 想說股價已經在相對高檔就決定賣出了(2024/03沒出手, 之後股價回落到12月才終於回到相對高點...), 未來要是還有撿便宜的機會會想再買進。

BAC則是去年銀行擠兌危機選擇權Put行權一直留著的, 因為大銀行中BAC的股價走勢屬於相對弱勢, 才終於在今年Call行權賣出, 而TGT則是股價相對高檔就先賣出了, 不過還有留100股繼續持有 (不過因為近一次財報公司對未來展望悲觀所以大跌, 目前差不多在成本價徘迴...)

至於ACLS則是選擇權交易中很玄的一筆, 想要賺PUT權利金結果被行權, 結果PUT剛好接到最低點後開始反彈, 從94一路漲到150 (Call 125行權時股價135, 當時還覺得有點嘔), 結果之後一路跌到現在69塊, 波動真的有夠大..., 然後自己也真的運氣超級好就是...。


2024年的投資績效真的夭壽慘, 希望2025年能比預期好, 好想財富自由ㄚㄚ!

2024年10月20日 星期日

[網站開發] 新增GPT投資助手美股選擇權估值分析頁面 (Norn-StockScreener投資網站開發)

接前篇:
[網站開發] 新增GPT投資助手美股公司分析頁面 (Norn-StockScreener投資網站開發)


上次用GPT幫忙分析整理美股公司資料, 這次想到也可以用GPT幫忙分析美股選擇權估值, 畢竟之前做了不少美股選擇權估值的模型, 如果能把這些資料交給GPT來幫忙分析, 或許可以在做選擇權交易之前看下分析報告, 讓GPT幫忙簡單整理買賣方建議這樣。

關於之前寫的選擇權估值模型的文章, 有興趣的可以也可以參考下:
[網站開發] 美股選擇權定價模型 - 新增隱含波動率計算凱利公式

做好的功能如下:


Norn-StockScreener投資網站: 

https://norn-stockscreener.zmcx16.moe/gpt-investing-assistant/

Github: 

https://github.com/zmcx16/Norn-StockScreener

https://github.com/zmcx16/Norn-Finance-API-Server

這個頁面的功能參數如下:

  1. Symbol: 美股選擇權合約的股票代號

  2. GPT Model Name: 選要使用的GPT的model name, 預設是目前CP值最高的gpt-4o, 如果選gpt-3.5-turbo的話產出的報告就會簡單不少, 另外也支援使用者自己輸入OpenAI其他支援的model, 不過不一定能用, 只有ChatGPT相關的model才能跑。

  3. OpenAI API Key: 考慮到自己的錢包, 有想使用的人得輸入自己的OpenAI API Key, 我想會有人擔心輸入了API Key會不會被我偷偷拿去用, 我說不會也拿不出證明, 所以真的有想用這功能的話, 建議申請5美元免洗帳號的API Key, 或是用自己帳號新產生的key, 用完就趕緊銷毀吧~  申請API Key可以參考這個文章: 如何免費申請ChatGPT (OpenAI) 的API Key

  4. Expriation Date: 選擇權合約到期日

  5. Strike Price: 選擇權合約履約價

  6. Call / Put Option: 選擇Call or Put合約

  7. Valuation Data: 選擇權估值模型參數選擇, 在使用GPT模型之前, 會先用自己做的估值模型跑估值結果, 使用者可以決定要不要讓GPT模型也參考這些估值結果, 目前總共有以下參數:
  8. 'Black Scholes Merton EWMA Historical Volatility', 'Monte Carlo EWMA Historical Volatility', 'Binomial Tree EWMA Historical Volatility', 'Kelly Criterion', 'Probability of Exercise of Option', 'Delta', 'Gamma', 'Vega', 'Theta', 'Rho'

使用以上參數輸入給GPT模型的Prompt範例如下, 其中大部分的資料都是從Norn-Finance-API-Server取得:

{{"model":"o1-preview","messages":[{"role":"user","content":"Please analyze the option contract for the company with the symbol DIS. Provide a detailed and comprehensive analysis, focusing on the risks—particularly the impact of the earnings date and ex-dividend date—and valuation for both the buyer and the seller. Your task is to thoroughly evaluate the data and generate a report in Markdown format (No need to wrap in code blocks). Here’s the data:\n```\n{\r\n  \"symbol\": \"DIS\",\r\n  \"currentDate\": \"2024-10-20\",\r\n  \"stockPrice\": 97.27999877929688,\r\n  \"stockExtraInfo\": {\r\n    \"earningsDate\": \"2024-11-14\",\r\n    \"exDividendDate\": \"2024-07-08\"\r\n  },\r\n  \"EWMA_historicalVolatility\": 0.18602714460634165,\r\n  \"contract\": {\r\n    \"lastTradeDate\": \"2024-10-18\",\r\n    \"strike\": 95.0,\r\n    \"lastPrice\": 2.95,\r\n    \"bid\": 2.91,\r\n    \"ask\": 2.99,\r\n    \"change\": -0.45000005,\r\n    \"percentChange\": -13.235294,\r\n    \"volume\": 2330,\r\n    \"openInterest\": 7064,\r\n    \"impliedVolatility\": 0.3794007373046875,\r\n    \"valuationData\": {\r\n      \"KellyCriterion_buy\": -10.09725610723297,\r\n      \"KellyCriterion_sell\": 0.8934698360970385,\r\n      \"KellyCriterion_MU_0_sell\": 0.8250604590273701,\r\n      \"KellyCriterion_MU_0_buy\": -5.0543039713639955,\r\n      \"KellyCriterion_IV_buy\": null,\r\n      \"KellyCriterion_IV_sell\": null,\r\n      \"exerciseProbability\": 0.33397,\r\n      \"delta\": -0.3079163039792361,\r\n      \"gamma\": 0.06899611538229457,\r\n      \"vega\": 0.09640010958844103,\r\n      \"theta\": -0.10826790796879611,\r\n      \"rho\": -0.024593911487068514,\r\n      \"Black Scholes Merton EWMA Historical Volatility\": -1.0,\r\n      \"Monte Carlo EWMA Historical Volatility\": -1.0,\r\n      \"Binomial Tree EWMA Historical Volatility\": 1.0371441540237885\r\n    },\r\n    \"expiryDate\": \"2024-11-15\",\r\n    \"optionType\": \"put\"\r\n  }\r\n}\n```"}]}}


至於結果就像上面demo圖看到的, 照慣例我直接Google翻譯頁面了, 比較好解釋XD:


上面的資料是程式使用yfinance從Yahoo財經取得的選擇權合約資料, 包含報價資料以及隱含波動率等等, 其中只有歷史波動率不是Yahoo財經給的, 是Norn-Finance-API-Server用歷史股價計算出來的。



上圖的凱利公式也是Norn-Finance-API-Server透過蒙地卡羅模擬計算出來, 可以看出該put交易用凱利公式分析對賣方有利(不過該公式只單純用歷史波動率做蒙地卡羅模擬未來的股價變化, 並沒有考慮到消息面, 財報公布日, 除權息等等, 只能當作參考不能只看這個參數是決定交易與否), 至於風險分析這邊感覺有些廢話, 除了行權機率也是透過程式估算以外, 其他的文字敘述基本上看合約報價就懂的意思差不多...。



分析結果該合約簡單總結對賣方有利, 其他的文字敘述一樣有些雞肋就是..., 另外來看看, 如果選擇權履約日在財報日之後, GPT會怎麼回覆吧, DIS下次財報日是11/14, 我們挑11/15到期, 行權價90元的迪士尼賣權合約看看: 



可以看出因為是價外合約+離目前股票落差不小, 所以行權機率低(7.34%), 凱利公式算出來也是對賣方略為有利(不過也只有0.98%, 跟不建議交易基本上也差不多了), 可是這些公式都是透過歷史波動率計算, 如果加上考慮財報日的影響, 基本上是完全不建議做賣方交易的, 而因為我們在GPT prompt有註明要考慮行權日以及除息日的風險, 所以有特別敘述賣方的風險, 算是有達到我想要的警告這樣。

這次的結果感覺沒有上次的公司分析整理報告好, 給的建議大多數都是看我原本程式的數據就能得到, 這塊我可能要再思考一下, 繼續改進prompt是否可以得到更有價值的建議...。


2024年10月8日 星期二

[網站開發] 新增GPT投資助手美股公司分析頁面 (Norn-StockScreener投資網站開發)


好久沒新頁面的靈感了, 以前是有想過用GPT幫忙給投資建議的idea, 不過測試了一下發現意義不大, 基本上給的分數或建議都沒有參考價值, 畢竟GPT的model資料大概都是一兩年前的, 所以真的問GPT給一間公司是否適合投資, 他能回答你的也只有根據那一兩年前的資料生成的建議, 有種garbage in garbage out的感覺, 後來就放棄這個想法了...。

最近則是想到, 我最常用GPT做的事是修英文文法, 效果也很不錯 (不過還是得人工校稿, 有時會修出不得了的東西出來...), 就想到GPT如果單純問問題, 他會用他的知識庫回答你, 但如果我把所有需要的參考資料都給GPT, 讓GPT幫我生成投資分析報告的話那是不是就有參考價值了呢? 

這樣GPT提供的功能就像修英文文法一樣, 靠的不是GPT資料庫內過時的公司財報資料, 而是只要GPT提供過去到現在都適用的分析公司&投資方法就好, 由我這邊負責提供最新的資料, 讓GPT幫我整理結果, 感覺這個功能就有點價值~。

做好的功能如下:


上面跑的是gpt-4o model, 另外也有試著跑最新版的ol-preview model, 看起來功能真的更強:





Norn-StockScreener投資網站: https://norn-stockscreener.zmcx16.moe/gpt-investing-assistant/

Github: https://github.com/zmcx16/Norn-StockScreener


這個頁面的功能參數如下:

  1. Symbol: 美股股票代號

  2. GPT Model Name: 選要使用的GPT的model name, 預設是目前功能最強的gpt-4o, 如果選gpt-3.5-turbo的話產出的報告就會簡單不少, 另外也支援使用者自己輸入OpenAI其他支援的model, 不過不一定能用, 只有ChatGPT相關的model才能跑。

  3. OpenAI API Key: 考慮到自己的錢包, 有想使用的人得輸入自己的OpenAI API Key, 我想會有人擔心輸入了API Key會不會被我偷偷拿去用, 我說不會也拿不出證明, 所以真的有想用這功能的話, 建議申請5美元免洗帳號的API Key, 或是用自己帳號新產生的key, 用完就趕緊銷毀吧~  申請API Key可以參考這個文章: 如何免費申請ChatGPT (OpenAI) 的API Key

  4. Key Statistics: 你想讓GPT分析的公司基本資料, 有選到的參數會從我的DB直接撈出數據餵給GPT, 目前提供的Key Statistics如下:
  5. 'P/E', 'EPS (ttm)', 'Insider Ownership', 'Shs Outstand', 'Perf Week', 'Market Cap', 'Forward P/E', 'Insider Transactions', 'Shs Float', 'Perf Month', 'PEG', 'EPS next Q', 'Institutional Ownership', 'Short Float', 'Perf Quarter', 'P/S', 'EPS this Y', 'Institutional Transactions', 'Short Ratio', 'Perf Half Y', 'Book/sh', 'P/B', 'EPS next Y_%', 'ROA', 'Perf Year', 'Cash/sh', 'P/C', 'EPS next 5Y', 'ROE', 'Perf YTD', 'P/FCF', 'EPS past 5Y', 'ROI', '52W High', 'Beta', 'Quick Ratio', 'Sales past 5Y', 'Gross Margin', '52W Low', 'ATR (14)', 'Current Ratio', 'EPS Y/Y TTM', 'Oper. Margin', 'RSI (14)', 'Debt/Eq', 'Sales Y/Y TTM', 'Profit Margin', 'LT Debt/Eq', 'EPS Q/Q', 'Rel Volume', 'Sales Q/Q', 'Price', 'SMA20', 'SMA50', 'SMA200', 'Dividend %', 'Quarterly EPS Data'

  6. Investment Gurus: 可以輸入你想讓GPT參考的投資大師的建議, 不過GPT畢竟是生成式模型, 參考大師資料生成的建議有幾分胡謅幾分可信, 就自己判斷了XD  目前提供的投資大師清單如下:
  7. 'Warren Buffett', 'Peter Lynch', 'Ray Dalio', 'Jim Simons', 'Philip Fisher', 'George Soros', 'Carl Icahn', 'Bill Ackman', 'David Tepper', 'Michael Burry', 'Mohnish Pabrai'

    另外也可以讓使用者追加輸入自己的投資大師名單, 像是肯恩費雪或查理蒙格等等...。

使用以上參數輸入給GPT模型的Prompt範例如下:

{ "model":"gpt-4o", "messages":[ { "role":"user", "content":"Analyze the following stock data for company with the HPE. Focus on key areas such as P/E, EPS (ttm), Insider Own, Shs Outstand, Perf Week, Market Cap, Forward P/E, Insider Trans, Shs Float, Perf Month, PEG, EPS next Q, Inst Own, Short Float, Perf Quarter, P/S, EPS this Y, Inst Trans, Short Ratio, Perf Half Y, Book/sh, P/B, EPS next Y_%, ROA, Perf Year, Cash/sh, P/C, EPS next 5Y, ROE, Perf YTD, P/FCF, EPS past 5Y, ROI, 52W High, Beta, Quick Ratio, Sales past 5Y, Gross Margin, 52W Low, ATR (14), Current Ratio, EPS Y/Y TTM, Oper. Margin, RSI (14), Debt/Eq, Sales Y/Y TTM, Profit Margin, LT Debt/Eq, EPS Q/Q, Rel Volume, Sales Q/Q, Price, SMA20, SMA50, SMA200, Dividend %, eps_q_data and provide an overall analysis of the stock. Here is the data:\n```\n{\r\n \"P/E\": 14.62,\r\n \"EPS (ttm)\": 1.4,\r\n \"Insider Own\": 0,\r\n \"Shs Outstand\": 1300000000.0,\r\n \"Perf Week\": 0.0134,\r\n \"Market Cap\": 26510000000.0,\r\n \"Forward P/E\": 9.65,\r\n \"Insider Trans\": -0.1258,\r\n \"Shs Float\": 1290000000.0,\r\n \"Perf Month\": 0.157,\r\n \"PEG\": 4.54,\r\n \"EPS next Q\": 0.56,\r\n \"Inst Own\": 0.8270000000000001,\r\n \"Short Float\": 0.031000000000000003,\r\n \"Perf Quarter\": -0.023,\r\n \"P/S\": 0.92,\r\n \"EPS this Y\": -0.0889,\r\n \"Inst Trans\": -0.0075,\r\n \"Short Ratio\": 2.62,\r\n \"Perf Half Y\": 0.13390000000000002,\r\n \"Book/sh\": 17.0,\r\n \"P/B\": 1.2,\r\n \"EPS next Y_%\": 0.07980000000000001,\r\n \"ROA\": 0.0316,\r\n \"Perf Year\": 0.1999,\r\n \"Cash/sh\": 3.01,\r\n \"P/C\": 6.79,\r\n \"EPS next 5Y\": 0.032,\r\n \"ROE\": 0.08689999999999999,\r\n \"Perf YTD\": 0.20199999999999999,\r\n \"P/FCF\": 9.74,\r\n \"EPS past 5Y\": 0.0461,\r\n \"ROI\": 0.0618,\r\n \"52W High\": -0.10560000000000001,\r\n \"Beta\": 1.2,\r\n \"Quick Ratio\": 0.61,\r\n \"Sales past 5Y\": -0.0106,\r\n \"Gross Margin\": 0.3271,\r\n \"52W Low\": 0.41100000000000003,\r\n \"ATR (14)\": 0.6,\r\n \"Current Ratio\": 0.94,\r\n \"EPS Y/Y TTM\": 0.7161,\r\n \"Oper. Margin\": 0.0751,\r\n \"RSI (14)\": 63.4,\r\n \"Debt/Eq\": 0.53,\r\n \"Sales Y/Y TTM\": -0.0194,\r\n \"Profit Margin\": 0.0641,\r\n \"LT Debt/Eq\": 0.36,\r\n \"EPS Q/Q\": 0.0902,\r\n \"Rel Volume\": 0.46,\r\n \"Sales Q/Q\": 0.09330000000000001,\r\n \"Price\": 20.41,\r\n \"SMA20\": 0.09630000000000001,\r\n \"SMA50\": 0.09910000000000001,\r\n \"SMA200\": 0.1375,\r\n \"Dividend %\": 0.0255,\r\n \"Quarterly EPS Data\": {\r\n \"2024-07-31\": 0.39,\r\n \"2024-04-30\": 0.24,\r\n \"2024-01-31\": 0.3,\r\n \"2023-10-31\": 0.5,\r\n \"2023-07-31\": 0.36\r\n }\r\n}\n```" }, { "role":"system", "content":"Act as an Investors Group consisting of expert gurus such as Warren Buffet, Peter Lynch, Benjamin Graham. Your task is to analyze the stock data thoroughly and present a comprehensive analysis report in a visually appealing Markdown format (no need code block wrapped)." } ] }

至於結果就像上面demo圖看到的, DIS的分析資料整理得還蠻有條有理的, 前半段會根據我提供的數據資料做文字化摘要說明, 解讀數字代表的意義 (我直接Google翻譯頁面了, 比較好解釋XD):



後面則是輸入的投資大師意見跟總結, 感覺真有點像這幾位大師會說的話, 最後結論也總結得蠻有道理的, 不過老話一句畢竟這是生成式AI, 亂寫小說的成分有多少真的不好說XD


最後來看看最近宣告破產的Big Lots的分析報告吧:


這次沒有投資大師的個別建議了, 不過看最後的總結也很符合提供的數據, 投資風險很高, 透過GPT提供的投資建議值不值得參考不好說, 不過解讀數據方面我覺得做得還是不錯的, 個人是覺得有使用的價值。

在來的規劃打算繼續朝這方向開發, 提供更多Key Statistics資料給GPT幫忙做公司個股分析, 並且也想做其他的功能, 像是產業分析, 以及同產業的個股比較排序等等, 就慢慢一步一步做吧~。

2024年5月15日 星期三

[網站開發] 新增美股產業同業比較分析頁面 (Norn-StockScreener投資網站開發)

最近看書時想到, 當我們看到某個產業想要投資時, 往往會比較該產業的哪一間公司最值得投資, 其中會看本益比, 股價淨值比, 自由現金流, 股息殖利率, 空頭比率等等..., 可是比較的時候自己的量尺很多時候不是用一個慣例的數字(e.g. 本益比小於7.5~15, 股價淨值比小於2等等)就是靠直覺, 但是每個產業的這些指標適用標準卻不盡相同。

舉例來說, 目前軟體開發產業的平均本益比為73.52, 而大型銀行產業的平均本益比為10.1, 奢侈品產業的平均本益比為11.3, 如果單純用本益比小於7.5~15作為選股準則的話, 那軟體開發公司就幾乎進不到自己的選股清單, 也可能就錯失了投資優秀公司的好機會。

想到這邊就想說, 既然這樣就來做個同業比較頁面吧! 將各種個股指標除以產業指標, 看大於1或小於1就能比較是優於產業平均或是劣於產業平均, 在簡單做個投票加總, 就可以將個股在該產業上的優劣排序出來, 想投資該產業的話就可以從排序高的公司開始研究, 先做一次排序過濾也可以節省花費在各個公司的研究分析時間。


簡單做完的成果如下:



Norn-StockScreener投資網站: https://norn-stockscreener.zmcx16.moe/stock-peer-comparison/

Github: https://github.com/zmcx16/Norn-StockScreener


其中提供了以下個股/產業指標比較:

  • P/E Peer
  • Fwd P/E Peer
  • PEG Peer
  • P/S Peer
  • P/B Peer
  • P/C Peer
  • P/FCF Peer
  • Dividend % Peer
  • Float Short Peer
  • Recom Peer

還有一個欄位Better Than Average, 會統計有多少個指標優於產業平均, 其中綠色代表優於, 紅色則代表劣於, 以基本面投資來說, 會傾向選擇P/E, P/B低的公司, 可是股息殖利率則是會傾向越高越好, 所以上面的欄位判斷優於/劣於的公式只有股息殖利率大於1是綠色(優於), 其他都是小於1是綠色(優於)。


另外需要特別一提的是, P/E, P/B這類基本面指標並不是說一定越低越好, 還是得看該公司是處於什麼時期以及投資人是基於什麼目的想投資這間公司, 所以這些個股指標/產業指標也都有做開關, 可以將自己不想比較的指標關掉不要一起比較分析。


說明完後就來實際使用這頁面分析看看吧!  首先從上圖看, 表格總共有4206檔美股資料, 其中Better Than Average = 10全部優於產業平均的有19檔, 其中有一檔是TSM, 也就是我們的護國神山台積電 (抖抖), 既然這樣我們就來分析半導體產業吧, 表格的最後一行有一個Detail欄位, 點擊後可以直接過濾出該產業的所有個股, 以下是半導體產業的比較表格:



可以看到半導體產業只有TSM是所有指標都優於產業平均, 代表如果單純用同業比較選股的話, 那台積電就可以列為優先考量, 可是看了下發現台積電的ADR股價位於52週高點-5.7%, 如果現在選擇投資台積電, 是否可能買在高點溢價過高? 

如果我們繼續往下看, 可以看到排行前面的還有ASX (日月光), TSEM (高塔半導體), INTC (INTEL), 其中ASX, TSEM的股價也都是在近幾年高檔, 只有INTC的股價從52週高點已下跌近40%以上。 如果佔在撿便宜的角度, 可能就會想投資INTC了, 不過在做進一步研究後, 會注意到近期INTC大跌是從4/3開始:



查了下近期INTEL的新聞, 發現INTEL代工營收下滑, 虧損擴大, 導致股價4/3大跌並在後續的日子繼續下跌...。 


另外也找到下面這篇新聞, 最近INTEL的13, 14代CPU爆發災情:

畢竟上面的基本面指標是落後指標, 沒辦法即時呈現目前公司的營運狀況, 從歷史上看INTEL目前的股價是相對低點, 如果對公司未來營運有信心的話, 或許也是個低檔撿便宜的機會, 我自己是想再觀察一下, 如果有機會是想撿便宜看看~。


另外既然有看INTEL了, 那也來看看AMD吧, AMD的個股/產業指標同業比較結果如下:



優於同業的指標只有P/S, P/B 以及Recommand (分析師推薦), P/S優於同業代表單看營收相對於市值是便宜且優於同業的, 不過P/E卻是223特別高..., P/S低但是P/E高通常代表是高成長的公司, 不過Better Than Average相對低的情況, 粗略的看AMD跟同業比較的話, 溢價的可能性或許更大。


這次分享差不多就到這邊, 不過最後還是要提醒一下, 會做這頁最主要還是想要一個簡單快速比較同業的表格資料, 方便在分析公司前做最初步的過濾以及刪減, 節省分析太多公司花費的時間。 這表格本身還是很粗略的, 像是半導體產業也不是裡面的55間半導體公司都是做相同的業務, 並不是都能一體適用比較的, 像是TSM台積電是半導體製程, ASX日月光是做半導體封測, HIMX奇景光電則是做IC設計等等...。

如果真的想投資半導體產業, 是要直接在上面這55間半導體產業公司一起比較, 還是先決定好想投資的是製程還是封裝還是設計, 再更細分對應的公司後再一起比較, 而不是總是大雜燴的放一起比較就好。

2024年2月28日 星期三

[網站開發] 新增班佛定律頁面檢測美股財報 (Norn-StockScreener投資網站開發)

最近在看"為什麼我們會被騙?:破解金錢騙局、假新聞、政治謊言背後的詐騙機制"這本書, 書中其中一段有提到班佛定律, 這個定律可以用來檢測各種數據是否有造假的可能, 公式也很簡單, 只要將整份數據的所有數字, 取首位數並計算1~9的總數並計算分布就好, 如果計算後的分布近似於下面公式(wiki)的機率分布, 就代表數據受到操弄的可能性低:


要用班佛定律判斷數據是否造假有兩大前提:

(1) 數據的差距必須要夠大, 且樣本數要夠多

(2) 不能有人為操控


(1) 的說明我直接貼wiki, 最簡單明瞭XD


(2) 的部分則是你取樣的數據的類別不能是特殊被人為操控限制的, 例如電話號碼, 身份證字號開頭, 身高, 體重等等, 這些數字本身的範圍通常是固定的, 有些首位數也是固定值(例如成年人身高開頭通常會是1, 體重分布大多也侷限在特定範圍, 數據的差距太小等等)

關於班佛定律更詳細的說明, 有興趣可以參考下面兩個文章:

其中第二篇還有附Python程式碼, 並且用Fibonacci數列作為demo展示:


可以看到在N=10的時候, SSE (The sum of squares due to error, 和方差、誤差平方和) 非常高, 因為數據的差距太小 & 樣本數太少, 4, 6, 7, 9這四個數字連出現的機會都沒有, 所以SSE很高; 而隨著N越大取樣數字越多, SSE也越來越低, 最後跟班佛定律的公式分布幾乎一致。 


講解完班佛定律之後, 再來就是怎麼套用在投資上了, 看介紹班佛定律很適合用來分析財務報表上的數字, 如果SSE很高就代表財報受操弄的機率可能較高, 就決定來玩玩看, 並整合到自己寫的投資網站上, 做完的成果如下:


Norn-StockScreener投資網站: 
https://norn-stockscreener.zmcx16.moe/stock-benford-law/

Github: https://github.com/zmcx16/Norn-StockScreener


另外我以前也有實作另一套偵測財報造假的公式: Beneish M-Score模型, 有興趣的人也可以看看:

Blog文章: Beneish Model - 一個簡單識別公司財務報表是否造假的公式

公式網站: https://project.zmcx16.moe/?page=investment-formula


回歸正題, 這次整合班佛定律的財報來源是從Yahoo財經取得, 分析數據是標準的財報三表: 損益表, 資產負債表, 現金流量表。 而Yahoo的金融頁面的財報可以分別看季報跟年報, 並且最多可以分別看最近4期的財報, 所以這次整合班佛定律會分別計算以下SSE:

  • LastQ SSE (近一季財報)
  • LastY SSE (近一年財報)
  • AllQ SSE (近四季財報)
  • AllY SSE (近四年財報)
  • AllQY SSE (近四季+近四年財報)
其實要看的話最主要還是看AllQY SSE就好, 原因是只看這三大表數字的話, 取樣數字還是太少太少了, 看近四季+近四年, 才勉強達到取樣數字>1000的標準...。


另外前面有提到班佛定律的前提是數據類型差距要夠大 & 不能有人為操控, 所以我把財報三表中的: ["Diluted EPS", "Basic EPS", "Tax Rate For Calcs"] 特別過濾掉, 畢竟像這種ratio的數字本來就不適合套用在班佛定律上, 就決定把這種可能成為雜訊的數據類型事先過濾掉了。


首先來看看AAPL財報跑班佛定律的結果:



可以看到近一季 & 近一年的SSE特別高, 原因其實也不意外, 因為只看近一季或近一年的財報三表所有數字也才100多個, 取樣數字太少沒有鑑別性; 而近四季的SSE跟前面比就大幅降低, 代表隨著取樣數字增加SSE有降低, 是有符合班佛定律的; 而近四年的SSE跟前面相比雖然較低, 可是卻不顯著, 這是因為取樣數字還是不高導致的鑑別性太低, 還是有其他原因, 就需要再調查研究看看; 不過看近四季 + 近四年的SSE是最低的, 取樣數字有1240個, 看1~9的分布機率跟班佛定律也算接近, 從網站目前整合的4182檔個股來看, SSE排序大約在13XX/4182左右還算安全, 代表至少單從班佛定律看, AAPL的財報應該問題不太大。


另外雖然網站整合了這個功能, 可是可惜的是YAHOO財經有不少個股的財報三表數據還是不完整, 數據不完整導致樣本數低就沒辦法用班佛定律檢測, 不過只要不買股本小的冷門股基本上就不會遇到這問題, 對大多數人來說應該影響不大。


比較遺憾的是, YAHOO財經有整理的只有財報三表的資料, 可是一間公司完整的季報或年報, 其實是有更多數據資料的, 像是航運公司的財報就會說自己旗下有多少船, 以及這些船的營運成本跟收益如何; 礦產公司也會說明旗下有多少礦坑, 以及目前自己的原料庫存有多少等等..., 這些數據如果都能拿來計算的話, 班佛定律要求的樣本數要夠多就比較不是問題, 不過要我自己寫程式去parser SEC的財報數據太痛苦了, 也不一定能100%做到, 整理財報資料到財經網站這工作應該也有人工負責, 寫個一體適用的程式不太實際...。


最後總結一下, 班佛定律雖然可以用來辨識數據是否造假, 不過首先必須先確保數據是否適用(數據區間&差距夠大以及樣本數夠多; 並且數據類型不能有人為操控限制), 再來就是檢查出來就算不符合分布, 也不代表數據一定有造假, 只是這個可能性較高而已; 而就算完美符合班佛定律的公式分布, 也不代表一定沒有造假, 還是要用其他方式多加檢查(e.g. 使用Beneish M-Score模型檢查或是人工分析財報三表), 進行多種獨立性檢查才能更降低踩雷的風險...。

2024年2月18日 星期日

[網站開發] 2023年最有價值品牌 (Norn-StockScreener投資網站開發)

接前篇:

[網站開發] 2022年最有價值品牌 (Norn-StockScreener投資網站開發)

最近發現Interbrand已經發表2023全球最有價值品牌TOP100了:

https://interbrand.com/best-global-brands/



Norn-StockScreener投資網站: https://norn-stockscreener.zmcx16.moe/ranking/

Github: https://github.com/zmcx16/Norn-StockScreener



這次新入榜的有以下兩間公司:


很神奇的Oracle這麼大間的公司竟然是新上榜! 看了品牌價值趨勢圖, 發現Interbrand到2019年之前都是有納入品牌價值評估的, 至於中間為什麼斷了三年就不知道了, 不知道是不是Oracle一度不允許Interbrand評論的關係?

而另一間新上榜的公司是一間雀巢的子公司咖啡品牌, 加上這品牌雀巢目前總共有三個品牌在Interbrand Top100裡, 因為雀巢本來就在Interbrand Top100裡, 就不多加分析了。



這邊想額外分析的是, 因為有過去2022年的Interbrand Top100資料, 可以回測看看2022年的資料看品牌價值顯著上升/下降的公司, 看看對應的股價市值是否之後一年有隨之上漲/下跌, 2022年品牌價值變化超過+20%的有以下品牌:

Brand Value / 52-Week Stock Price Change
  • Microsoft (MSFT): +32% / +59.92%
  • Google (GOOG): +28% / +54%
  • Tesla (TSLA): +32% / +1.31%
  • Louis Vuitton (LVMUY): +21% / +2.31%
  • Adobe (ADBE): +23% / +57.68%
  • Chanel (-): +32% / None
  • Hermès (HESAY): +27% / +29.89%
  • Gucci (KER.PA): +23% / -27.58%
  • Allianz (ALV.DE): +23% / +13.17%
  • Mastercard (MA): +23% / +31.51%
  • Siemens (SIEGY): +21% / +18.47%
  • LEGO (-): +30% / None
  • Ferrari (RACE): +31% / +48.11%
  • Dior (CDI.PA): +27% / -3.05% 
  • Prada (PRDSY): +21% / 1.89%
也看看品牌價值負成長的品牌:
  • Facebook (META): -5% / +175.06%
  • Intel (INTC): -8% / +66.96%
  • Pampers (PG): -1% / +12.58%
  • H&M (HM-B.ST): -8% / +10.56%
  • Gillette (PG): -4% / +12.58%
  • Danone (BN.PA): -3% / +17.30%
  • Canon (CAJ): -15% / 美股ADR已退市

另外也順便看看2022新上榜的品牌:
  • Airbnb (ABNB): New / +18.43%
  • Red Bull (-): New / None
  • Xiaomi (XIACY): New / +6.67% 

而S&P500近一年的價格變化則是+25.22%, 品牌價值超過+20%並超過S&P500的有(6/13)間(扣掉未上市公司), 而不漲反跌的則有(2/13)間; 以這數字來說我覺得算合理, 至少有差不多快一半贏大盤, 而下跌的也只有兩間, 平均下來也有+22.12%, 只不過略輸大盤就是了 (看到這邊就會覺得是不是直接買大盤就好XDD)。

而更讓人驚訝的是品牌價值下跌的公司, 其中META可是爆漲了+175%, INTC也上漲+66.96%, 明明品牌價值是下跌的, 股價卻大幅上漲成這樣, 為什麼會這樣呢?  先來看一下META的資料:





可以看到META在2021年8月達到新高價379元之後, 之後一路下跌到最低93元, 下跌幅度高達-75%, 而之後上漲也很驚人, 目前已達到473元新高價。 而META會暴跌的原因主要是2022年開始營收跟獲利都大幅衰退, 後來是2023年恢復成長才大幅上漲, 而且2023Q4的財報又爆好, 過去一年績效才贏大盤這麼多。


再來看看INTC:




INTC的情形也跟META差不多, 從2022年開始營收跟獲利都大幅衰減, 可是到2023Q1最低點之後, 公司獲利開始轉虧為盈, 所以股價也隨著公司獲利改善上漲, 不過離以前的公司股價高點還有一段長遠的路...。


從META & INTC可以看出, 雖然品牌價值下跌但股價大漲甚至贏過大盤的原因, META是因為公司的獲利能力還是很強勁的, 而且公司也還有IG這個品牌(2022 brand value +14%), 再加上之前下跌太誇張, 所以之後回漲的幅度當然也更大, 會大幅超過S&P500也就不意外了。 而INTC的情況則是標準的轉虧為盈轉機股, 雖然獲利能力跟過去相比仍算差, 但也是之前下跌太深, 所以轉虧為盈後的上漲幅度才會相對大盤來得大得多。


至於從這些資料分析後得出的結論是什麼呢? 以我個人來說, 從上面的資料看來與其看品牌價值來決定投資標的, 那還不如買大盤就好, 勝率還會高一咪咪..., 可是我覺得重要的是, 投資不是看單一因素決定的, 我們必須評估各種因素, 建立自己的投資多因子模型, 來決定自己的投資標的&進出場策略。 

從品牌價值作為選股標的的最大好處, 我覺得第一個是踩雷的可能性大幅降低, 如果投資的標的是從品牌價值TOP100選, 選到地雷的可能性就會低不少; 而如果把品牌價值下跌的公司剃掉, 踩雷的機率則是又會更小得多 (當然也可能會錯過像META or INTC這種轉機股, 這就要投資者自行去判斷了)。 然後品牌價值也只是其中一個投資因子, 在透過其他各種不同的投資因子(e.g. 分析財報, 預測產業前景, etc...), 盡可能一點一點增加投資獲利的勝率就好。



最後在附上2023年的品牌價值數據, 至於股價會怎麼反應, 就觀察這一年看看結果如何了XD


2023年品牌價值變化超過+20% (跟2022年比超少, 如果想分析更多間公司也可以拉低門檻觀察):
  • Chanel (-): +32%
  • Hermès (HESAY): +27% 
  • Airbnb (ABNB): +22%
  • Porsche (POAHY): +20%
品牌價值負成長的品牌:
  • Disney (DIS): -4%
  • Facebook (META): -8%
  • Intel (INTC): -14%
  • UPS (UPS): -4%
  • Gucci (KER.PA): -2%
  • Nescafé (NSRGY): -2%
  • Goldman Sachs (GS): -2%
  • Budweiser (BUD): -16%
  • Philips (PHG): -12%
  • Nintendo (NTDOY): -2%
  • 3M (MMM): -7%
  • Danone (BN.PA): -4%
  • FedEx (FDX): -1%
  • Xiaomi (XIACY): -1%
  • Huawei (-): -2%

ABNB個人覺得是蠻有潛力的(2022年新上榜, 2023年品牌價值成長幅度也大, 不過之前疫情關係跌太慘, 疫情結束後已大幅上漲一波, 估值是否過高不好說...), 而DIS我覺得跟上面INTC一樣算是轉機股, 尤其是DIS最近的財報真的不錯, 我自己低檔也撿了不少, 等待並心懷希望了XD