2023年5月11日 星期四

[網站開發] 新增美股空頭資料歷史整理頁面 (Norn-StockScreener投資網站開發)

最近反省近期的交易, 覺得自己今年交易的一些個股/選擇權, 因為高空頭比率的關係卻做多導致損失不少, 所以開始思考自己能怎麼針對這塊做改善。

針對這部分, 其實自己已經有在常用的一些投資頁面加個股的short float資料, 讓我在交易之前能快速知道該標的的空頭比例, 再決定要不要進場。 不過後來想想這樣還是不夠,  主要原因在於單純從short float / short ratio這兩個數字中, 我雖然能知道目前有多少流通股被做空以及平均要花多少時間消化這些空頭數量, 可是我不知道這件事的歷史變化, 以及這樣的空頭比率對這間公司, 這個產業是否正常, 畢竟只有一個數字沒辦法透漏我想要的更多細節資訊。 

想了下決定要改善這塊後, 就來研究怎麼取得美股空頭歷史資料了, 查了一下美國金融業監管局(FINRA)有規定各個交易所, 每個月中&月末都必須提交空頭資料, 然後也開放讓大眾在FINRA網站上查詢空頭歷史資料:

https://www.finra.org/finra-data/browse-catalog/equity-short-interest/data

查詢頁面提供的資料有short interest, avg daily volume, days to cover (short ratio), etc... 可惜的是沒有提供個股流通量所以沒辦法算short float, 不過這個資料我以前寫的爬蟲就有抓了, 所以也算得出來, 資料都準備好了, 再來就是寫個網頁整理這些資料了, 做好的網站如下:

https://norn-stockscreener.zmcx16.moe/short-stocks-summary/


Github:

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




上圖表格上的Short Float值為放空股數 / 流通股數量, 同字面意思就是空頭股數佔流通股的比例, 而流通股數量有兩個數字可以用, 分別是Share Outstanding以及Share Float, 前者是字面上意思的公司已發行股票; 後者則是扣除公司內部人士以及控股投資人的流通股數量, 因為一般內部人士不常買賣公司股票, 所以就決定使用Short Float = Short Interest / Share Float這個公式。 

而Short Ratio就是Days To Cover, 表達的意思是平均要花幾天才能把這些空頭股數消化完, 公式為Short Ratio = Short Interest / Average Daily Volume, 雖然FINRA本身就有提供Days To Cover這個值, 可是小於1的數值他都會直接給1, 為了精準表達就決定還是自己計算就好。


其實Short Float & Short Ratio這兩個值來說, 各大財經網站就都有提供了, 不過想說自己有FINRA資料就還是自己計算, 畢竟每個財經網站的資料都有些落差, 而且我還得計算歷史變化, 使用相同的資料跟公式才不會有奇怪的落差。

再來表格上有SF-15d, SF-30d, SF-45d, SR-15d, SR-30d, SR-45d, 代表的是最近一次報告跟前15天, 30天, 45天的變化 (short interest latest - short interest history / short interest history), 表示Short Float & Short Ratio這段時間的變化(另外還有6mo & 1yr的資料, 因為時間太遠就預設隱藏, 有需要也可以自行打開), 有了這些欄位資料, 我就可以知道這些個股是空單持續增加, 還是維持一陣子了, 或是已經空單已經開始減少, 輔助使用者做進一步交易判斷。



除了統整的表格資料, 也提供近一年的歷史圖表做視覺化, 上圖為股價&交易量線圖; 中圖為空頭股數&平均交易量線圖; 下圖為Short Float & Short Ratio的歷史線圖, 可以直接看這個圖表了解這一年股價跟空單交易的趨勢走向。




介紹完之後, 再來看看近期銀行危機的股價&空單交易變化吧, 首先來看看最近倒閉的FRC:


可以看見FRC在區域銀行危機之前, 交易量 & Short Interest & Short Float都很小, 然後爆發區域銀行危機後, 3/15空單數量激增, Short Float也從2.75% -> 4.94%, 這算是一個小警訊(Short Ratio反而下降是因為相對於增加的空單量, 股票交易量暴增的更是龐大), 而3/31更是誇張, Short Float從4.94% -> 30.04%, 這暴增量就是一個警訊了, 而再下一次空頭回報日一樣維持在高放空率, 再再下一次就被監管破產了, 所以也就沒資料了。

這次新增的功能就介紹到這邊, 最後補充一下個人想法, 大多時候空頭指標跟股價實際相關程度並不大, 除了非常劇烈的變化才會有正相關性, 所以建議空頭指標最好只拿來當交易前的警示判斷參考標準, 千萬不要只用這個指標作為交易的準則甚至去做放空的交易...。

2023年5月6日 星期六

MahoMangaDownloaderVer18.3~18.5更新

這次更新原因是有使用者回報動漫之家會噴403 error, 看了一下單純是以前網站request header沒驗很嚴謹, 現在開始驗了擋爬蟲所以就壞了, 這邊就在補上比較複雜的request header解決~。


另外慣例的推坑時間, 這季新番最強的我推的孩子就不特別在推廣了, 這次想推坑: "無神世界的神明活動"


巴哈動畫瘋:

https://ani.gamer.com.tw/animeVideo.php?sn=33446

介紹:

身為邪教教主的兒子「征人」,轉生到一個既沒有神也沒有宗教概念的異世界。原本已經受夠了神和宗教的征人,卻在這個世界遇上了「神」並被其所拯救。為了壯大神的力量,征人在世界展開了佈教的旅程——!

https://gnn.gamer.com.tw/detail.php?sn=248292


御靈大人超可愛XD





免責聲明:

******************

MahoMangaDownloader僅作為學術研究使用,禁止利用本程式行非法用途。


2023年4月28日 星期五

[網站開發] 新增美股投資檢查清單頁面 (Norn-StockScreener投資網站開發)

最近看了"複利的喜悅: 從價值投資到人生決策, 啟發巴菲特、蒙格等投資典範的穩健致富金律", 書中內容主要探討並宣揚巴菲特 & 蒙格的投資策略以及價值觀, 其中也有特別提到投資檢查清單的重要性, 而看到投資檢查清單這章時, 我也重新思考了一遍, 自己的投資檢查清單依然還是停留在非系統&實體化的階段, 在決定要買進一間公司的股票前, 就大致看一下公司基本資料&數據就下決策了, 而不是一項一項的做檢查, 就覺得該是時候改善這塊了!


至於該怎麼做這一塊呢, 以我個人想法來說, 投資檢查清單可以分成兩類:

1. 可量化類型: 各大財經網站或財報有揭露&統一格式的資料, 像是本益比、股價淨值比、ROE、盈餘成長等等, 可以系統化的方式歸類整理。

2. 不可量化類型: 需要對資料進一步思考探討, 例如公司市場是否有前景、公司管理階層是否優秀&誠實、公司的競爭力、品牌或研發或不可取代性之類的隱含價值等等, 較難系統化分析檢查評比。


基本上不可量化類型的部分只能靠自己人工分析, 而可量化類型的部分是有機會用程式自動整理, 節省人工整理資料的時間, 其實這塊以前自己也有嘗試做過類似的網站Norn Minehunter

norn-minehunter網站開發 [美股掃雷&健檢網站]

不過當初做這一塊時自己還沒有什麼資源, 那時才剛開始寫投資相關的side project, 沒有美股資料爬蟲, 沒有DB, 檢查清單是參考投資大師製作的定式格式, 沒辦法讓使用者客製化使用, 每次Query都是後端server即時跑爬蟲所以又很慢, 只能說是個陽春的檢查清單網站...。


而自己重新回顧這幾年累積下來現有的資源後, 發現其實我該有的都有了, 每天爬蟲程式都會自己去抓各種財經資料存到DB, 我只要寫前端的code, 做一個合用的網頁就好, 就決定開工來做一個新版的檢查清單網頁了!


做好的網站如下:

https://norn-stockscreener.zmcx16.moe/checklist/


Github:

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




支援美股市值5000萬鎂以上的上市公司, 每個檢查項目可以讓使用者參數化, 支援的檢查項目如下:
 ["Market Cap", "P/E", "Forward P/E", "P/B", "P/C", "P/S", "PEG", "ROE", "ROA", "ROI", "EPS this Y", "EPS next Y_%", "EPS Q/Q", "Sales Q/Q", "Debt/Eq", "LT Debt/Eq", "Quick Ratio", "Current Ratio", "Dividend %", "Gross Margin", "Oper. Margin", "Profit Margin", "Insider Trans", "Inst Trans", "Short Float", "Beneish Model",
"ESG_TotalEsg", "Recommendation Rating", "EPS Growth (Analysis)", "EPS Growth (Financial Statements)", "52W High", "52W Low", "Perf Week", "Perf Month", "Perf Quarter", "Perf Half Y", "Perf Year", "Perf YTD", "SMA20", "SMA50", "SMA200"]

左邊的Score會顯示所有checkpoints的Pass(%)以及tooltip顯示Pass / Total, 另外除了基本的Add / Edit / Reorder / Delete以外, 也支援多組投資檢查清單, 匯入匯出, 以及儲存local storage功能。


即便這次的開發幾乎只有前端的effort, 我還是花了快三個禮拜才做完 (每天下班 + 假日), 每次寫前端code都覺得超級累, 要學新套件又得customize到符合我想要的, 然後因為自己前端的技能又是自己土炮學的, 所以遇到bug解決的時間又花得特別久, 每次寫前端的code時都真心想著絕對不考慮前端的工作, 當後端工程師豪幸福啊~~~。


這次分享差不多就到這邊, 最近公司工作超忙, 白天認真上班下班又要趕side project真的肝指數爆高, 再來就繼續邊忙公司的事邊充電, 慢慢想下一步要做什麼吧~~。

2023年4月5日 星期三

[網站開發] 新增Yahoo財經盈餘成長排行頁面 (Norn-StockScreener投資網站開發)

最近看書時忽然想到, 我在分析一間公司時都會關注這件公司是不是一直有在賺錢, 公司的盈餘是不是一直有在成長, 以作為決定要不要買進一間公司的基準(當然還要加上是否夠便宜XD), 可是這都是透過其他選股條件(條件過濾、多因子選股模型、品牌、創新力、ESG、分析師評價...etc) 挑出一間公司後, 再進到Yahoo財經頁面看更細部的資料。 不能根據盈餘排行排序作為一個選股條件, 想說既然這次想到了, 就把這塊功能補起來吧。


要做盈餘成長排行, 首先就得寫爬蟲把所有上市公司的各季盈餘資料抓取出來, Yahoo財經頁面有兩個地方可以查到盈餘資料:

1. 金融頁面 (財報三表的損益表)

2. 分析師盈餘預測 (有分析師估計&實際盈餘的比較)


至於要用哪邊的資料, 其實我原本是想用財報三表的損益表, 想說這是最真實的資料, 可是實際分析資料後發現, Yahoo財經其實不少missing data (早已知道的事實, 只是每次碰到都得再想一次怎麼辦...), 不管是財報頁面還是分析師盈餘預測都各別會有缺失資料, 甚至還有不少公司的盈餘資料是完全不一樣的...。

以PYPL來說, 以下分別是損益表資料以及分析師盈餘資料:

https://finance.yahoo.com/quote/PYPL/financials







可以看到損益表的Q4 EPS那欄直接空了, 然後損益表上的EPS數值也跟分析師盈餘提供的實際每股盈餘不太一樣, 會不一樣我想可能有幾種情況, 像是計算方式不同, 可能一邊看的是GAAP另一邊看的則是Non-GAAP, 或是像ADR之類的財報上的貨幣單位就不是美元, 換算後的EPS就可能有落差, 或是其他各種原因...。

因為看哪一邊都不太對, 最主要的情況還是我分析完兩邊都會缺資料... 最後沒輒了, 乾脆兩邊的爬蟲都寫都做, 不過目前是沒考慮要再合併兩個頁面的資料, 因為總不能把GAAP的盈餘跟Non-GAAP的混在一起吧, 兩邊資料都有的情況也不知道該看哪一邊, 所以最終還是決定分兩個頁面看了...。


實作完整合好的頁面如下:

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

如果我們只想關注一直成長+賺錢的公司, 那我們可以只針對剩下的200多間公司在進一步分析就好, 不用從4000多間公司大海撈針。


這次分享差不多就到這邊, 話說這次明明前端只是加個Tag功能卻搞超久, 搞了老半天才發現是MUI的theme的雷, 使用theme後他不會照著我的useState動態變換對應的style, 我不要用theme直接寫css style+useState功能就正常了... 真心覺得前端的坑超多, 每次寫前端都覺得夭壽累, 刻板調layout要花老半天不說, 每次解bug拆雷都各種障礙QQ

2023年2月18日 星期六

[心得] 標的高Short Float與選擇權價格關係

這禮拜一在看自己的cron job跑完的選擇權估值結果時, 意外發現有一檔價格特高但是極價外的選擇權合約:


上面的表格是用凱利公式排序後的結果, 因為是賣方高期望值的合約, 所以照理說價格應該要極低才對, 可是這檔合約竟然價格特高。 以合約來說, 賣方預期5天獲利為2.33%, 換算年報酬率為212%, 而要行權的條件則是得五天內跌超過20%, 以他的歷史波動率來說, 要五天內跌20%是機率極低的事件, 一般正常的情況應該是像這個表格的其他合約那樣, 在凱利公式計算的高下注比率下, 預期年報酬率有個5~10%就差不多了, 這檔合約價格可以高成這樣實在不可思議...。


一般來說, 如果選擇權理論估值跟實際價格差距過大, 通常有以下幾種原因:

  1. 合約到期前已知有重大消息宣布 (e.g. 財報公布日) ->  因為很大可能消息公布那天價格會劇烈變化, 所以合約價格就會更高, 畢竟選擇權模型的波動率很難連這類新聞事件一起計算進去。

  2. 合約到期前為除息日 -> 配息是原標的持有人的權益, 因為配息會影響價格, 但是合約所有人不會得到對應的配息, 所以針對高股息的個股, 合約到期日前配息的合約價格也都會更高一些, 以補償配息日的股價調整。

  3. 標的宣布被併購消息 -> 如果一間公司確定會被收購, 那股價會直接跳到接近收購價, 而選擇權合約則會針對這收購價大幅調整, 畢竟幾乎已確定收購的價格了(當然還要考慮後來併購吹了的情況, 不過通常機率極低)。

基本上上面這三項我以前都有吃過虧, 所以(1)&(2)我才寫程式整合進表格裡, 直接提醒我這檔合約會不會有雷, 而併購消息這個就沒辦法了, 只能看到像這種天上掉餡餅的合約時, 每次交易前都先google一下確定是不是沒問題, 大多時候都證明沒有白吃的餡餅可以吃...。

而這次的標的, 已經確定合約到期前沒有財報公布日也沒有除息日, Google了幾次也沒任何併購的消息, 看起來真的就像是天上掉下的餡餅, 不過在調查的過程倒是有注意到一件事, 就是這檔標的公司的放空比率極高:


Short Float = 22.07%, 代表市面上流通的股票有22%被借去放空, 一般來說這個值通常個位數就差不多了, 兩位數代表被高度做空, 因為選擇權估值模型是以標的價格波動率來估值, 一般的簡單模型當然不可能把Short Float考慮進去, 所以理所當然的這檔合約才會有這麼貴的價格。 再來看看EBIX的其他合約:



每檔的預期報酬都高得嚇人, 因為預期下次公布財報是3/13~3/17, 所以3月的合約又更是貴的誇張。 而分析完後再來的問題就是, 我該交易EBIX的賣權合約嗎? 思考後總結了幾個要點:

  1. 高放空比率代表這間公司極度被看沒有, 所以這間公司之後繼續下跌的機率不小, 可是既然沒有確定事件的話, 你也不知道什麼時候會大跌, 站在機率跟期望值的角度, 我應該要交易這些高凱利公式估值的合約。

  2. EBIX這五年股價表現不怎麼好, 不過公司是1976年成立的老牌公司, 商品為保險產業的軟體供應商, 公司也有持續在賺錢, 一般來說保險公司基於風險考量, 沒必要不會勤換系統軟體, 除非EBIX發生什麼大問題, 不然一般來說業務應該很穩健才對。





  3. 3/17的合約到期前會有財報公布日, 考慮到已知風險, 還是不要交易三月的合約比較安全。

分析完就決定來交易2/17到期行權價15的合約了(還交易得比平常多一倍, 畢竟分析完就像半個天上掉下的餡餅, 不過考慮到還是有風險, 也不敢交易更多...), 反正真的被行權了我也覺得這間公司不錯, 就持有股票就好, 最後結果賭贏了, 18.86 -> 17.16 跌了9%, 離15塊行權價還遠得很, 順利賺到這次的意外之財XD

另外因為這次的經驗, 就決定把目前做的投資網站的表格都加上Short Float data, 這樣之後在挑選標的時, 也可以多關注有沒有放空比率高但是長期看還是績優的公司, 如果有的話即便不先買股票當股東, 也可以交易點高溢價賣權增加投資收益!

[網站開發] 2023年Clarivate百大創新機構 (Norn-StockScreener投資網站開發)

接2022年: [網站開發] 透過Clarivate百大創新機構報告尋找投資標的

最近Clarivate公布了2023年百大創新機構, 趁這週假日就決定快速整合資料到Norn-StockScreener網站裡, 另外關於Clarivate的介紹就不重複了, 有需要可以直接回顧上面的文章連結。


整合好的網站如下:

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

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



另外也可以直接去Clarivate網站下載年度報告:

https://clarivate.com/zh-hant/top-100-innovators/top-100-innovators/?clv-award-year=2023


今年的名單變化:


個人會比較想關注連續12年都上榜的企業 & 今年新上榜的企業, 另外我也比較了今年跟2022年的TOP連續上榜企業有沒有今年落榜的, 結果竟然是Intel, 股價跌50%又被從百大創新企業除名, 根本是在打落水狗阿..., 不知道我的Intel持股還有沒有機會重返榮耀XD

 

基於產業的未來排名預測:


電子及通訊產業排名預期會快速升到高位後穩定, 而製藥則是一直下滑, 另外政府與學術機構預期之後會快速攀升, 不過到2026年還是會在中低排行左右。


這次分享差不多就到這, 不過一樣要提醒一下, 不管是什麼指標, 基本都只能做投資參考, 持續創新的公司不代表就會有競爭力&持續成長&賺大錢, 還是要做各方面的研究後, 在決定是否要投資這間公司!

2023年2月10日 星期五

[網站開發] 新增Yahoo財經分析師評分排行頁面 & 搜尋過濾條件 (Norn-StockScreener投資網站開發)

最近在思考怎麼繼續擴充自己的個股口袋名單, 後來看書看到一半忽然想到, Yahoo財經有分析師評分可以看, 以我個人來說其實很少在看分析師評分, 畢竟分析師要分析公司產業也得跟對應的公司配合, 所以通常也不太能寫公司的壞話, 不然被封殺的話就不用工作了, 更不用說應該也有不少分析師會拿公司的好處幫寫好話, 所以一直對這塊興趣缺缺...。

至於為什麼這次會想整這塊資料呢? 一方面是目前在多方嘗試改善自己的投資績效, 所以需要建立更多的個股口袋清單; 另一方面則是有注意到, 如果分析師評分過低(持有以下), 通常代表這間公司已經有點危險了, 如果手邊有綜合評分是持有的公司, 可能就得在多方評估一下, 是否要堅持買進或持有, 既然還是有幫助, 那就還是做吧!


首先是蒐集資料部分, 之前整合的ESG data已經寫好了cron_job每天爬Yahoo財經的資料, 所以只要擴充下就能一起拿分析師綜合評分, 只要小改一下就能收資料了, 過去的累積真棒XD  至於整合功能部份, 則也跟之前ESG一樣, 實作到stock screener過濾條件, 以及Ranking table page。


整合好的頁面如下:

https://norn-stockscreener.zmcx16.moe/ranking/


Github:

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




Ranking page會用分析師評分做排序, Yahoo Recommendation Rating分數定義如下:

* <= 1.5    Strong Buy

* 1.5~2.5   Buy

* 2.5~3.5   Hold

* 3.5~4.5   Underperform

* 4.5~5      Sell


另外我的資料庫是只有美股5000萬鎂市值以上的個股, 分析師評分對應的分布如下:

* Strong Buy       (235 / 3522 = 6.68%)

* Buy                   (2350 / 3522 = 66.7%)

* Hold                  (905 / 3522 = 25.7%)

* Underperform   (30 / 3522 = 0.85%)

* Sell                    (2 / 3522 = 0.06%)


看這個分布就知道分析師評分有多偏頗了, 評分買進以上佔了超過70%, 低於表現竟然只有0.85%, 而建議賣出竟然只有兩間公司, 實際統計後真的覺得超扯XD

基於好奇來看看被分析師建議賣出的公司到底是哪兩間:

1. BEST (代號也太諷刺...)



中國在美上市的快遞公司, 近一年虧損幅度加大, 市值也快低於5000W鎂, 分析師建議賣出倒是完全不意外...。


2. WIT



印度一間IT諮詢服務公司, 看財報一直有在穩定賺錢, 不過沒有成長, 員工人數達24W, 其實我看不懂為什麼評分這麼低, 雖然也不怎麼好, 可是感覺也沒特別差...。


接下來, 要怎麼使用分析師評分找投資標的呢? 其實就跟之前整合的Ranking page的資料一樣, 選Ranking排序高(分數低)的公司投資, 再搭配一些基本面或技術面的指標則可以針對這些好公司挑撿便宜的機會, 不過這邊要特別小心的是, 有些知名度低或冷門的公司可能只有1~2個分析師評分, 這樣的評分結果可能就很主觀性, 在真的行動前也要確認下其他條件, 盡可能降低踩到地雷公司的風險。

這次分享差不多就到這邊, 希望能活用這次的開發經驗, 如果能稍微改善些投資績效就太棒了!