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

2024年1月25日 星期四

MongoDB Atlas Auto-Scaling的神奇事

最近工作負責了改善產品系統使用Mongo DB的效能部分, 最主要做了把部分大流量的操作從Synchronous改成Asynchronous, 以及針對一些DB的寫入操作做Cache壓縮, 把一些暫態的寫入操作放到Cache keep住, 等Cache滿了或Schedule Timer時間到了在自動刷新Cache & 寫入到DB, 節省不必要的DB寫入。

改善完以後觀察Mongo Atlas Metrics, IOPS, CPU, Network, DB Update都降了不少, 可是唯獨Memory的使用量卻幾乎沒變, 用量一直維持在50%~60%左右, 而且不管是尖峰或離峰的情況都一直維持一個很平穩的狀態。

常理想應該是Mongo Atlas的DB Server在啟動時有預留一些記憶體當Cache使用, 所以照理說也不是什麼大問題。會覺得奇怪的地方是, 因為我們使用了Mongo Atlas Auto-Scaling服務, 在改善效能之前我們的DB Cluster Tier是M40, 這次改善的部分還不小, 對比過去的資料應該M30就夠用了, 為什麼沒有觸發Auto Scaling Down到M30呢?


後來就去查了一下Mongo Atlas的文件, 關於Auto-Scaling的文件可以參考這裡:

https://www.mongodb.com/docs/atlas/cluster-autoscaling/

其中關於Auto-Scaling的條件如下:



Scaling Up的條件是過去一小時內CPU or Memory > 75%; 而Scaling Down的條件則是過去24小時CPU and Memory < 50%, 看條件其實蠻合理的, 畢竟會需要Scaling Up的時候通常是系統忽然遇到高流量的情況, 不趕緊Scaling Up可能就要被打爆了; 而Scaling Down就比較寬鬆, 畢竟反反覆覆Scaling對系統也不太好, 系統穩定性相對Cost重要得多。


看上面的條件可以發現是因為M40的System Memory使用率一直都高於50%, 所以才無法觸發Auto Scaling Down, 可是我觀察過去系統在M30的Metrics, 發現記憶體用量卻是一直低於50%, 反而是Scaling Up到M40的瞬間就一直大於50%了, 相同流量下規格較差的DB Clusters反而記憶體整體用量比較小也太奇怪。


後來去查了下Mongo關於Atlas Cluster Sizing and Tier Selection的文件:

https://www.mongodb.com/docs/atlas/sizing-tier-selection/


M40或更高規格的Clusters, 會預設把50%的實體記憶體給WiredTiger Cache使用, M30或更低規格的Clusters則是預設把25%實體記憶體給WiredTiger用。 這也是為什麼會觀察到低規格的Clusters記憶體整體用量會比高規格小的關係。


然後問題就來了, 我要Auto Scaling Down就必須過去24小時CPU and Memory < 50%, 可是M40以上的Clusters又預設給WiredTiger 50%的實體記憶體, 這樣我這Auto Scaling Down的機制還能work嗎XD  後來就乾脆把上述的finding以及過去兩年Scaling Event整理一下, 敲Support Ticket Case請Mongo的人幫忙解答, Mongo Support的回覆如下:

for M40 or larger clusters, WiredTiger dedicates more than 50% of RAM - 1 GB for the WiredTiger cache in Atlas. Out which Atlas always tries to maintain 80% of the total allocated WiredTiger cache for performance optimisation. The main goal of WiredTiger cache is to avoid I/O operations to load the page from the disk while not reaching a fill ratio of over 80%. If the working set is bigger than the cache, the goal is to perform as few evictions as possible. Our internal article on How does MongoDB use memory? will provide you more insights.

...

Our product team is aware of the issues with auto downscaling based on memory utilisation for M40+ tier and they are working internally to improve this.


WiredTiger Storage Engine的文件中Memory Use的段落也有提到WiredTiger使用的預設記憶體大小:
https://www.mongodb.com/docs/manual/core/wiredtiger/


因為WiredTiger預設會吃50% - 1GB的實體記憶體, 所以只要M40 Clusters使用的記憶體扣掉WiredTiger超過1GB, 那就很難有機會Trigger到Auto Scaling Down, 尤其是對越高規格的Clusters來說更是如此。 而關於這問題Mongo Support也有回覆他們有注意到Auto Scaling Down在M40+會有這問題, 內部正在研究怎麼改善它, 而在Mongo改善這問題之前, 如果你遇到偶發的高流量事件或是寫出某個Bug導致Auto Scaling Up, 又或者你最近有Enhance Performance而且改善後目前的Cluster Tier太高的話, 可能就得自己手動降低Spec, 避免多花無謂的$$。


這次的分享大概就到這邊, 好久沒寫開發雜談了, 雖然工作上總會遇到各種神奇事, 不過會想要分享寫到部落格的卻很少, 畢竟寫部落格文章還蠻花時間的, 只想寫些印象深刻的事件並記錄下來XD

2023年12月30日 星期六

2023投資績效報告

2023投資績效: 40.41%

VTI: 26.05%

SPX: 26.19%

QQQ: 54.85%



雖然報酬看起來還不錯, 不過夏普比率只有0.8大輸大盤指數, 代表這些報酬是靠風險換來的, 高興不太起來...。

績效細項如下:

  • 股票績效: 32.7%
  • 選擇權績效: 14.7%
  • 劵商利息&其他費用: -7.2%
  • 股息:  11.5% (有1/3是ZIM的配息...)

上面的股票績效&選擇權績效如果把變壁紙的SBNY算進去的話(畢竟交易時是擠兌危機前, 行權的時候已經是壁紙...), 實際上要在轉移11%左右(股票: 43%, 選擇權: 3%)

---

  • 未實現: -55.7% 
  • 已實現: 50.6%  (股票: 37.4%  選擇權: 13.2%)

Note. 上面的細項%是自己用年初帳戶市值換算的所以不一定完全準確, IB的活動報表沒辦法看未實現&已實現細項%, 超麻煩...。


近五年績效:


開戶到現在累積報酬還是輸大盤, 主要還是因為認真投資是這幾年的事, 剛工作1~2年沒特別花心力在投資這塊, 還踩到一個深海鑽油公司暴死的雷, 後來才開始自己認真做投資工具&投資(&薪水開始有餘裕多投入進去)。


總結完畢, 再來是落落長的心得:

今年是個神奇的一年, 一方面是經歷去年的空頭後整個大起飛(尤其是科技股相關); 另一方面則是今年的美國銀行擠兌危機導致數間銀行倒閉, 我還踩到了其中兩間銀行(SBNY&FRC)導致股票變壁紙, 資產的15%直接歸零..., 然後自己也因為銀行危機太早把科技股轉換成銀行&消費類股, 導致今年初的績效直接歸零甚至還一度變負的...。

不過因為自己的投資準則就是買績優公司撿便宜當股東, 只要基本面沒有根本性變壞就一直持有(當然也有各種例外的時候, 就是當個凹單仔XD), 原本想說銀行&消費類股可能要凹單個兩三年, 沒想到今年底就解套了。 雖然解套很開心, 不過也重新思考自己的投資策略, 今年跟往年相比, 有太多的看對但抱不住, 只能繼續改進檢討(今年要檢討的地方跟過去比真的太多了...), 希望能早日達到財富自由的目標!


再來會針對幾個交易事件紀錄說明&交易策略分析檢討:


2023年初:  2個月績效就+48%

去年整年科技股持續破底, 去年底的時候看科技股真的有夠便宜, 就用自己的投資網站過濾出長期營收&獲利正成長的科技公司or成長股, 然後把一些價值股賣掉轉投資這些低檔的成長or科技股:

  • ADSK 買:191.6 賣:192.22 (已實現:0.32%) 現市價:243.48(成本市價差:27%)
  • AMD  買:75.95 賣:96.79 (已實現:27.4%) 現市價:147.41(成本市價差:94%)
  • AMZN 買:84.66 賣:125 (已實現:47.6%) 現市價:151.94 (成本市價差:79.5%)
  • ANSS 買:241.97 賣:293.125 (已實現:21.14%) 現市價:362.88 (成本市價差:50%) 
  • ASML 買:569.13 賣:669.91 (已實現:17.7%) 現市價:756.92 (成本市價差:33%)
  • CRM  買:149.6 賣:171.26 (已實現:14.48%) 現市價:263.14 (成本市價差:75.9%)
  • GOOG 買:91.2 賣:124.02 (已實現:35.97%) 現市價:140.93 (成本市價差:54.5%)
  • NFLX 買:248.65 賣:345 (已實現:38.7%) 現市價:486.88 (成本市價差:95.8%) Cover Call行權
  • NOW  買:441.02 賣:406.43 (已實現:-7.84%) 現市價:706.49 (成本市價差:60.2%)
  • QCOM 買:119.75 賣:124 (已實現:3.55%) 現市價:144.63 (成本市價差:20.8%) Cover Call行權
  • WDAY 買:171.27 賣:174.81 (已實現:2.07%) 現市價:276.06 (成本市價差:61.2%)
  • ZTS  買:149 賣:161.54 (已實現:8.42%) 現市價:197.37 (成本市價差:32.5%)

P.S. 上述有不少標的是分批買進&賣出的, 為了方便買進只寫平均成本, 賣出只寫最後一次賣出價。 上述除少部分大多數都是3~4月賣出。


看到上面的已實現跟成本市價差, 真的是買得準賣得蠢(另外有一部分是Cover Call被行權, 這塊檢討留到後面再說...), 會這麼早賣的最主要原因, 就是隨後3月發生的銀行擠兌危機..., 導致我的IB槓桿率一度最高到2倍左右, 雖然我的IB帳號可以開到4倍多槓桿, 可是我不想承受這麼大的風險, 於是就決定早早賣出降低槓桿率...。

我自己偏好的槓桿率是0~50%最高不要超過100%(隨大盤DrawDown調整), 如果是短時間大量行權到200%是極限, 超過200%我就會立刻賣出部分持股, 畢竟我的目標是長期持有當股東, 選擇權交易為了活用資金, 短時間的槓桿以我個人來說是可以接受的(不過遇到黑天鵝到底能不能承受得住, 還是得看這隻黑天鵝多大隻就是...)。


銀行擠兌危機事件:

這次的銀行擠兌危機發生前, 我有Sell Put不少銀行股, 雖然我有分散交易&分散行權時間來降低行權風險, 不過想法還是太天真了, 當時為了多賺點權利金, 分散好幾檔都是銀行股, 然後同一個銀行股又交易好幾個不同時間的合約(隔週~一個月左右行權), 然後這次的銀行擠兌危機是整個銀行產業股價都被拖累, 導致我幾乎所有銀行股合約都被行權, 然後被行權的量又是我想持有的量的1~4倍, 變成我的資產分布光是銀行股就瞬間超過50%...。

於是就面臨了三選一問題, 是要認賠銀行股, 還是要把手邊的科技&成長股獲利了結, 或是繼續維持高槓桿, 當時的我選了賣出科技&成長股, 想說這類股已經漲了不小, 短時間上檔獲利有限, 然後手邊被行權拿到的銀行股大多數都是超大間的銀行(BAC,BK,C,WFC), 美國政府不太可能放任擠兌危機持續擴大, 沒想到科技股後面會漲的這麼兇猛, 沒賺到最主要的波段...QQ 

幸虧銀行股後來大多數也回來了, 在不想維持超過200%高槓桿率的情況, 不管選哪邊其實都不算錯, 真的錯的還是我過度交易的選擇權合約..., 後來我也更謹慎控管選擇權交易, 產業更分散而且每個標的就算行權也都不超過5%資產。


持股變壁紙成就解鎖:

再來該說說最心痛的部分了, 這次銀行擠兌危機大銀行只要肯等待基本上不會有什麼大問題, 但是小銀行就不好說了, 偏偏銀行擠兌危機發生前, 我手邊也是有小銀行的Sell Put合約(SBNY, CMA, ZION), 恩...就是倒閉了那間SBNY標誌銀行, 而且我還有兩份合約, 所以被行權時SBNY已被監管, 資產的10%直接歸零變壁紙...。

SBNY是銀行擠兌危機之前交易的合約, 這個要怪說自己運氣太雖小還說得過去, 不過這次銀行危機之後, FRC第一信託銀行也是當時存款外流嚴重的銀行, 當時看到新聞寫許多大銀行提供資金應對FRC存款外流問題, 想說這麼多大銀行當靠山應該是穩的, 就投入了總資產的5%買進, 沒想到之後財報公布存款外流太嚴重, 財報公布沒兩天就被擠兌到監管了, 人生第二檔壁紙沒想到實現得這麼快...。

SBNY&FRC讓我的資產瞬間蒸發15%, 加上手邊被行權的銀行股持續下跌, 讓我今年的績效瞬間歸零甚至變負的, 不過幸好預期降息來的比想像得快, 雖然變壁紙的部分回不來, 至少大多數銀行股都漲回擠兌危機前, 我的資產分布中的銀行股也從超過50%降到20%以下, 回到了我覺得舒適的產業配置比例, 以下是這次銀行股相關的交易:

  • BAC  買:30.89 賣:31 (已實現:0.36%) 現市價:33.67 (成本市價差:9%) Sell Put & Cover Call行權
  • C    買:44.73 賣:46 (已實現:2.84%) 現市價:51.44 (成本市價差:15%) Sell Put & Cover Call行權
  • CMA  買:62.5 賣:(已實現:%) 現市價:55.81 (成本市價差:-10.7%) Sell Put
  • FRC  買:13.82 賣: (已實現:-100%) 現市價:0 (成本市價差: -100%)
  • SBNY 買:74.27 賣: (已實現:-100%) 現市價:0 (成本市價差: -100%) Sell Put & Cover Call行權
  • WFC  買:39.87 賣:42 (已實現:5.34%) 現市價:49.22 (成本市價差: ) Sell Put & Cover Call行權
  • ZION 買:42.5 賣:42.5 (已實現:0%) 現市價:43.87 (成本市價差: ) Sell Put & Cover Call(預計)行權

目前FRC(代號已改為FRCB)&SBNY已移到OTC場外交易, 基本上賣了也是浪費手續費, 留倉做個紀念隨時提醒自己這次的事件了XD




另外從上面的交易可以看到大多數都是Sell Put & Cover Call被行權, 這邊留到後面在檢討...。


目前虧損不小的持股:

  • AAP  買:91.42 賣: (已實現:%) 現市價:61.03 (成本市價差:-33.2%) Sell Put行權
  • ALB  買:173.75 賣: (已實現:%) 現市價:144.48 (成本市價差:-16.8%) Sell Put行權
  • ILPT 買:17.25 賣: (已實現:%) 現市價:4.7 (成本市價差:-72.8%) Sell Put行權
  • MPW  買:6.24 賣: (已實現:%) 現市價:4.91 (成本市價差:-21.3%)
  • SID  買:4.54 賣: (已實現:%) 現市價:3.93 (成本市價差:-13.4%)
  • ZIM  買:40.74 賣: (已實現:%) 現市價:9.87 (成本市價差:-75.8%)  Sell Put行權

首先ILPT是去年交易繼續持有留下(細節在去年的投資績效報告), 因為是REIT所以打算繼續凹單等降息, 看能不能有機會恢復配息; SID也是前年鐵礦石&鋼鐵價格大漲時買進的, 但沒想到鐵相關原物料會跌這麼低, 當時賭烏俄戰爭會結束+美國大基建價格會回漲結果等超久, 一樣繼續凹單持續等待; 至於ZIM就是繼續賭運價不會跌爛, 結果還是賭輸了XD 不過都跌成這樣佔資產比例也小了, 就打算繼續留著等下一次運價循環。

至於今年交易的部分, 首先是AAP, 當時是看公司股價便宜 + 美國汽車DIY零組件第四大廠商, 想說營收有持續成長應該沒問題, 就決定交易Sell Put賺權利金&看有沒有機會撿便宜, 沒想到公司的Q1財報獲利大減, 股價直接海洩下去...。

因為AAP本身營收還是有持續成長的, 只要業務重組得當提高毛利率, 想說股價還是會有重新回去的機會(當然越搞越糟也是有可能就是...), 後來有在低檔加碼了些, 會繼續觀望公司的業績狀況決定要不要繼續持有。

會投資ALB其實就是賭鋰電池的需求跟價格, 不過沒想到鋰價還繼續往下跌, 就看往後幾年電動車增加的需求是否能讓鋰價回升, 因為ALB是百年以上的老公司, 所以基本上除非發生什麼嚴重的大事件, 不然我應該還是會繼續持有。

MPW則是醫療的REIT, 因為升息的關係+部分租賃的客戶發生財務問題收不到利息, 目前就看能不能解決這些問題&降息後恢復以前的高配息...。


選擇權交易檢討:

從去年做了選擇權估值模型後, 就一直在調整自己的選擇權交易策略, 基本上大方向策略就是先用自己做的投資網站找出大約100檔左右想要投資的公司, 然後每天跑cron job去尋找這100間公司有沒有凱利公式勝率高的合約, 在用Sell Put合約賺權利金&撿便宜以及Cover Call合約賺權利金。 

目前還是想繼續維持這樣的交易策略, 不過這次的銀行擠兌危機讓我更體會自己太低估行權風險了, 目前有在調整自己能接受最大的put行權金額, 之前是設定全部行權最多增加到槓桿率100~200%, 現在調整到50~100%以下, 並且也拉高了凱利公式門檻, 調整之前每個月差不多能賺75%~100%現在的本職收入, 現在直接降到30%以下了, 雖然權利金賺的少了, 但相對的更不用擔心黑天鵝帶來的風險。


至於Cover Call的部分, 從上面的交易紀錄可以看出, 為了賺權利金, 我放棄了超多未來的潛在報酬, 可是我自認自己超不會賣股票, 用Cover Call可以延遲我賣股的時間&找更好的價格, 像是下面幾次Cover Call讓我獲利頗豐&避免虧損:

  • KSS 買:24.92 賣:29 (已實現:16.4%) 現市價:28.68 (成本市價差: 15.1%) Sell Put & Cover Call行權
  • MPW 買:9 賣:10 (已實現:11.1%) 現市價:4.91 (成本市價差:-45.4%) Sell Put & Cover Call行權

MPW後來跌到了4.9塊, 等於我閃過了-45%的虧損; 而KSS在今年7月的29.1塊後就急速下跌, 最低到17.8塊(-28% drawdown), 讓我後來又有機會從低點加碼, 現在的未實現報酬也十分不錯, MPW我後來也在6.24塊重新進場, 讓我有機會用更低的價格在投資這幾間公司。

  • KSS 買:21 賣: (已實現:%) 現市價:28.68 (成本市價差:36.6%) Sell Put行權
  • MPW 買:6.24 賣: (已實現:%) 現市價:4.91 (成本市價差:-21.3%)

不過即便如此, 從比例上來說我因為Cover Call錯失的獲利也是大得多太多了(前面提到的NFLX被行權也是), 像是我抱了快2年的INTC, 從50塊進場到25塊加碼, 最後因為INTC這波漲得超快一下就被行權了, 兩年下來只獲利了7%, 不勝唏噓阿...。
  • INTC 買:36.9 賣:39.5 (已實現:7.04%) 現市價:50.25 (成本市價差: 36.17%) Cover Call行權

目前想改善的地方是, 如果要做Cover Call要更嚴格限制在自己期望的價格, 而且不要一次Cover一整批部位, 這樣至少被行權時, 還有機會思考要賣出, 還是繼續持有, 心理上也比較不會有錯失的不平衡...。


今年應該是個人檢討最多&資產波動最大(畢竟15%資產差不多時間變壁紙...)的一年, 希望這些經驗都能變成未來成長的養分, 早日達到財富自由的一天!  另外最後提一下今年回饋社會的部分, 跟往年一樣每月10%的薪資收入認養家扶國內外兒童, 今年還有額外一筆10W的土耳其大地震捐款, 也是為了感謝當年921土耳其的幫忙(雖然烏俄戰爭土耳其的立場不是很能認同, 不過一碼歸一碼就是...)。 也希望明年的自己有更多能力&行動力回饋社會~。



2023年12月11日 星期一

MahoMangaDownloaderVer19.6~19.8更新

2024/03/11 updated

這次更新主要是有使用者回報colamanga會只下載部分圖片就結束下載了,  查了一下發現colamanga擋爬蟲又更絕了, 之前colamanga為了擋爬蟲, 網頁不會放漫畫頁數, 然後又用lazy loading技術, 如果只是這樣還好, 可是它還會塞假的html element, 然後設成display none; 讓爬蟲以為還有圖片下載不到, 之前是還有一些規則可以判斷是不是假的圖片element, 現在改版後是完全看不出來了...。

雖然看不出來哪個element是假的圖片, 不過要workaround bypass還是做得到的, 不過就不保證100%能下載到完整的圖片, 只能將就修一修了...。

順便附上19.8版VirusTotal的掃描結果, 已經被問好幾次程式被防毒軟體偵測到有病毒, 回覆好幾次有點累了, 越來越多防毒軟體廠商用機器學習掃描病毒, 導致False Positive的機率變高, 我的程式又沒有商業程式碼簽章, 會被誤報基本上不意外, 被誤報也無能為力阿~~。
https://www.virustotal.com/gui/file/1365b2bb82ddc8829fd8ae4ce9603266a2da94f2b8e5d0459e41375cd2172637?nocache=1


至於慣例的推坑時間, 因為很久沒改版了, 就直接放最近有看的動畫:

勇氣爆發


巴哈動畫瘋:

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

這是我這輩子看過最基甲的機甲番沒有之一!!  棒棒棒棒棒 棒棒 布雷棒~~~!!!


BanG Dream! It's MyGO!!!!!


巴哈動畫瘋:

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

已經完結一陣子了, 之前追番的時候看前三話太八點檔就先停坑, 最近因為BGD手遊更新MyGO團員才趕緊補完坑, 沒想到越後面越好看, 這麼八點檔這麼心機這麼黑暗的劇情都能轉回來, 還轉得這麼精彩, 真的是很不簡單...  這部不愧是梗圖製造機XD


非自願的不死冒險者


巴哈動畫瘋:

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

這部之前就有追漫畫跟原作小說, 小說描寫雖然青澀可是劇情很不錯, 個人還蠻喜歡的一部作品~。


夢想成為魔法少女


巴哈動畫瘋:

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

總之就是又瑟又好看XD


2023年11月4日 星期六

MahoMangaDownloaderVer19.3~19.5更新

2023/11/29 updated

這次更新主要是發現EH站遇到壞檔卡住的比例增加了, 後來發現是EH站有改Reload image的提示按紐(Click here if the image fails loading -> Reload broken image), 之前的regular expression寫的很不嚴謹所以換個wording就炸了, 就趕緊修了一下, 不然不時卡住真的有點煩...。

這次就不推坑了, 直接放鎮樓圖~~



Ver19.5 更新內容:

* 修復E站遇到壞檔時不會自動跳轉Reload Image問題


免責聲明:

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

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


2023年10月21日 星期六

[manga-image-translator] 自動翻譯漫畫的工具程式

最近參加完公司舉辦的AI大賽, 當時為了參加比賽有課金買了openai API credit 100鎂 (為什麼一口氣買100鎂那又是另一個故事了...), 結果比賽完才花了35鎂左右, 還剩65鎂沒地方花, 就想說來研究一下可以拿來幹嘛, 結果讓我找到一個超棒的開源漫畫翻譯工具: manga-image-translator

https://github.com/zyddnys/manga-image-translator

這個工具支援多個翻譯引擎, 並且直接整合OCR, 所以可以一行指令就直接自動翻譯一整部漫畫 e.g. python -m manga_translator -v --translator=gpt3.5 --gpt-config "I:\gpt_config_cht.yaml" -l CHT -i "I:\Himitsu no Reputairuzu v06"), 適合直接想看渣翻的日文小白使用, 如果是稍微懂日文又想認真翻譯的, 則是會比較推薦可以手動調整的工具, 像是下面這個:

https://github.com/dmMaze/BallonsTranslator


順便也放之前分享的日文小白專用文章:

啃生肉漫推薦 - moeka.me網站的mangaEditor

[OCR+即時翻譯] Capture2Text 軟體推薦 - 玩Gal Game or 生肉漫神器


回歸正題, 會想推manga-image-translator這個工具的最大理由, 除了他支持批次翻譯以外,  最棒的是支援openai GPT-3.5 & GPT-4, 應該不少人都覺得google的日文翻譯跟OO沒兩樣, 看google翻譯出來的日文真的很痛苦, 可是如果是chatGPT的話, 翻譯品質就好多了, 下面用我超喜歡的一部台灣代理斷尾漫畫: 機車一族比較:


可以看到google翻譯還是很渣, 可是GPT-3.5 & GPT-4還不錯, 甚至我覺得GPT-3.5還略好一點 (當然只看一張不太準就是了)。

再來看看其他用GPT-3.5翻譯的頁面:

坦白說有點慘, 不過這不是GPT的問題, 翻譯的時候會產生一些中間檔案, 如果是維持原本的日文, 代表那是OCR沒處理好, 沒辦法解析文字是什麼; 反之如果是一片空白, 則是翻譯引擎出問題。 如果是翻譯引擎出問題, 還可以調教一下gpt prompt或temperature在試試看, OCR出問題除了手工處理應該沒其他招了, 對日文小白來說應該就是靠腦補了吧...。


再來換另一個也是超喜歡但是後續沒翻譯的漫畫: 秘密爬蟲類



這部的翻譯品質就很不錯, 不知道是畫質的關係導致機車一族OCR比較難parse文字還是其他原因, 只要OCR能正常運作, GPT的翻譯引擎我自己是覺得算很夠力的, 不過偶爾還是會有一兩頁凸槌, 像下面這頁:


文字框是空白代表OCR有正確parse文字, 看起來是所有翻譯內容都擠到了第一格, 比較像GPT引擎出問題, 改下temperature再跑一次就正常了:


再來看看如果用GPT引擎, 要花多少錢吧, 下面是我分別用GPT-3.5 & GPT-4翻譯一頁的成本:

GPT-3.5一頁小於0.01鎂 (台幣0.3塊), GPT-4則是一頁要0.04鎂 (台幣1.2塊), 以CP值來說, 我不覺得GPT-3.5的翻譯品質有比GPT-4差很多, 所以我幾乎都只用GPT-3.5翻譯。 下面是翻譯整部機車一族15卷(207頁)的成本, 大概0.3鎂 (台幣9塊), 一部渣翻漫畫不用台幣10塊錢, 個人覺得真的很不錯XD


另外這個工具也支援用Nvidia顯卡GPU平行處理, 只要你的顯卡有支援cuda, 就可以開啟平行處理功能, 翻譯機車一族15卷的總共時間如下:

* Google (only CPU) - 3957.51秒 (1小時05分)
* Google (GTX1060 - cuda) - 3061.18秒 (51分)
* GPT-3.5 (GTX1060 - cuda) - 5475.2秒 (1小時31分)

其實沒省多少時間, 畢竟cuda應該頂多省影像處理的時間, bottleneck主要還是在翻譯引擎上, 聊勝於無啦~。

另外小提醒一下, 如果翻譯的不是簡體中文而是繁體中文, 會有機率翻譯成廣東話 (不知道是不是香港中文的關係?), 要解決這問題也很簡單, 修改一下prompt加個taiwan關鍵字就沒問題了~。


這次分享差不多就到這邊, 這次找到的這個工具真的超棒, 不過最後還是提醒一下, 最好不要亂用這個程式做商業營利或隨意散佈渣翻的檔案, 畢竟這就是渣翻, 要是因為網路上有了渣翻導致減少翻譯大老翻譯意願, 變成劣幣驅逐良幣的情況的話就得不償失了, 建議這個工具還是日文小白自用就好!