自製 mini ChatGPT

根據 [1], 決定自製一個 mini ChatGPT. Afiz 的流程如下:

首先在 Anaconda 中 pip install openai 就失敗, 原來要用 conda install -c conda-forge openai [2].

pip install gradio 沒問題

from config open_api_key 一看就不合用! 看 [2] 裡面的說明, 要先參加 OpenAI會員. 這個我已經註冊過了. 登入後, 可以在 https://beta.openai.com/account/api-keys 產生 key. 然後把 key 設為環境變數 %OPENAI_API_KEY%.

後面照抄 [4], 可是出現 check internet connection. 暫時卡住.

這要怎麼 debug 呢? 因為是抄的, 所以有點不明就裡. 乾脆來問 ChatGPT 本人要怎麼呼叫它? 然後它就大方地給我一個 sample code. 這感覺就是 “玄 “!

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
    model="text-davinci-003",
    prompt="The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",

    temperature=0.9,
    max_tokens=150,
    top_p=1,
    frequency_penalty=0.0,
    presence_penalty=0.6,
    stop=[" Human:", " AI:"]
)

不過, 這段程式還是有個相容性問題. 它說 Anacoda 裡面有段 source code 開檔預設是 latin-1, 不是 UTF-8. 這…這我 debug 不了啊? 查一下午資料, 都說要改 mysql database 那邊的設定.

UnicodeEncodeError: 'latin-1' codec can't encode character '\u201c' in position 7: ordinal not in range(256)

好在我到處 Google 找到了另外一篇中文教學 [5], 它的範例不會打到上面那個 bug. 所以狗哥不用怕, 裁員一次就好, ChatGPT 暫時還不能把你幹掉. 仔細比較兩個程式, 目前認為還是 export private key 沒有成功, 所以暫時用明碼才能夠連線的關係. 這樣總算在過年假期當中, 把 OpenAI 的探索前進了一小步! 現在它可以講笑話了, 雖然要等 2~3 秒.

[REF]

  1. https://twitter.com/itsafiz/status/1610245691812741120
  2. https://anaconda.org/conda-forge/openai
  3. https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
  4. https://github.com/afizs/chatgpt-clone/blob/main/mini_ChatGPT.ipynb
  5. https://steam.oxxostudio.tw/category/python/example/openai.html

投資策略思考 – 過年篇

領到年終獎金之後, 因為銀行營業日只剩兩天, 立馬就轉帳到不同的證券戶. 又為了搶低點, 買價設得接近市價, 兩三下就幾乎花光了. 只剩下集運匯錢到美國帳戶的資金, 因為不用急著成交, 反而都沒買到. 在這個寒冷、老人不宜外出的天氣裡, 正好窩在電腦前查資料.

首先瞄到 2023/1/4 一篇 Seeking Alpha 上有一位作者 (推銷員?) Rida Morwa的投資策略, 七八分合我的意, 於是我認真地看它. 作者說他偏好固定收益, 像是優先股, baby bonds 或是 bonds. 下一段又說特別留意 Pass-Thru Entities, 例如 REIT, 以及 CEF, MLP 優先股. Baby bond 就是面額低於 1,000 USD 的債券. 但 Pass-Thru 這個名詞對我又熟悉 (i.e. pass thru bugs) 又陌生, 所以我先來研究一下 Pass-Thru Entity.

Pass-Thru Entity

此處的 pass-Thru = pass-through = flow-through. 意思是說, 這些 entity (包括: sole proprietorships, partnerships, limited liability companies, and S-corporations. [1], 簡稱公司) 把稅直接轉嫁給 owner, 所以只有 owner 要繳稅, 這些 entity 可以避稅, 或者避免雙重繳 (利息) 稅. 相反的例子就是台灣政府取消兩稅合一, 股東擁有的企業先扣一次營業稅, 股東的利息也扣一次所得稅, 接著再扣二代健保補充費…呃, 過年不罵人. 先回到大家比較熟悉的 REIT [2], 它並不是 Pass-Thru entity! [3]

我從 [4] 抓到下圖, 它解釋了 S-corporations 以外的公司型態, 大家看圖意會即可. 至於 S 公司, 可以參考 [5], 它是一個經過註冊, 股東少於 100 人 的 (美國) 國內公司.

CEF 優先股

CEF 是指 Closed End Funds, 也就是封閉式基金. 封閉式基金的規模會固定下來, 所以大家只能互相買賣, 也會物以稀為貴 [10]. 根據 [6], 厲害的點不是 CEF, 而是 1940 這個法案 [7]. “This is because of the requirements that the CEF have at least 200% asset coverage for preferred stock and 300% for debt asset coverage of “senior securities” which means debt and preferred stocks. " 也就是說公司的資產為 1, 才可以發行價值為 1/2 的優先股和 1/3 的高級債券. 當公司清算時, 優先股一定能夠回本.

上圖取材自 [8], 以及 http://www.antiquesage.com

根據 [8], 購買優先股可以獲得 5.6% 的殖利率, 但 CEF 優先股可以獲得 7~9% 的殖利率. “Preferred stocks that are bought individually—that is, outside of a fund—yield 5.6% as I write this. But purchasing through a CEF can upsize that payout to 7%, 8%—even 9%." 這是什麼魔法呢?

  1. 因為封閉式, 有機會買到淨值 (NAV = Net Asset Value) 以下的價格.
  2. 槓桿操作 – 聽起來危險, 通常控制在 35% 或以下.

根據上述理論, [8] 的作者 Michael Foster 推薦四隻殖利率> 7%, 折價 2~4%, 長期回報 5.7%~9.6% 的四支優先股基金: FPF, JPC, JPS, LDP. 在美國券商都買得到. 因為推薦的時間是 2020 年. 理論上在 2022 大升息期間有更多的好料可以買. 只是晚了就漲價買不到.

MLP 優先股

根據 [9], MLP = Master Limited Partnership. 回到 “types of business" 那張圖, 商務的型態有合夥 (partnership) 和公司 (cooperation) 兩種主要型態. 前者像是律師事務所, 就像我們看到韓劇裡面的律師, 拚到最後就是升為合夥人. 它就是個 LLP ( limited liability partnerships) 的典型例子. 但不要跟圖上的責任有限公司/ LLC (limited liability companies) 搞混. [12]

LLP 架構下有一個或多個要負全責的人 (general partner, 事務所老闆), 和一些只負有限責任的人 (limited partener, 合夥人律師). Master Limited Partnership 即是可以出售的 partnership, 我把它想像成不用自己當律師, 也不用當事務所老闆, 但是我花錢買到這個分紅的權利. “The word “master" in MLPs pertains to the general partner, who will usually own two percent of the MLP. " [13]. 意思是原本老闆擁有 MLP, 然後他把這個權利拿出來賣錢.

那 MLP 的優先股會有啥好料呢? 根據 [11], 呃…這些 LLP, 我確實一點也不熟悉.

小結論: CEF vs PFF

根據 [10], “通常一檔基金架構會選擇封閉型,主要原因都是投資的標地流動性較差." 如果大幅升息, 那封閉式基金的殖利率放到現在一定不漂亮. 果不其然, 抓個圖 [14] 就可以看到這淨值的跌幅也很考驗心臟. 不過跌下去之後, 它的殖利率有 8%, 還是算高的. 雷達 (Rida) 先生說要買算是有理.

再看看 Firstrade 的圖, 這支基金顯示折價 (Price < NAV), 好像麥克 (Michael) 也所言不虛. 只是年假雖長, 時間還是有限. 目前我只能知道優先股值得買, 但是 CEF 優先股基金… 我好像剛看完交通規則考古題, 還不知道應不應該開上高速公路啊~~~

根據 [15], CEF 優先股基金有下面這些標的. 其中 PFF (Open End Fund) 是放進去 PK 用的. 果然 CEF 都有槓桿, 甚至超過 50%. 雖然殖利率都高出 PFF 一小截, 總回報有些也比 PFF 厲害, 不過我還是買 PFF 就好了.

因為 FPF 的成分股 [16] 和別家差不了多少, 就是 8% 的優先股買得多一點. 但光是槓桿這部分就扣分了. 其中, NPFD 沒槓桿, 也沒有手續費, 不過虧 20%. 好像一個學生沒作弊但是被當掉, 好可憐.

總結

優先股在成長股狀況不佳的時候, 的確可以提供短期的保障. 根據 [17], 如果把 PFF 的股息拿去再投資, 經過 15 年壓力測試, 其實還跑不贏把股息拿去爽爽花! (下圖紅色 > 記號) 所以對於不會成長的標的物, 其實沒有股息再投入的必要. 優先股在升息導致大盤下跌時, 也就是黃色底時買進, 可以當作短中期保證穩定獲利的工具. 但是長期就輸給 S&P500 許多.

[REF]

  1. https://www.thebalancemoney.com/what-is-a-pass-through-entity-5217698
  2. https://rich01.com/what-is-reits/
  3. https://www.sec.gov/files/reits.pdf
  4. https://corporatefinanceinstitute.com/resources/management/sole-proprietorship/
  5. https://www.irs.gov/businesses/small-businesses-self-employed/s-corporations
  6. https://innovativeincomeinvestor.com/preferred-stocks-of-closed-end-funds/
  7. INVESTMENT COMPANY ACT OF 1940
  8. https://www.forbes.com/sites/michaelfoster/2020/07/28/preferred-stock-closed-end-funds-how-they-yield-up-to-9/?sh=726ea3375d1a
  9. https://seekingalpha.com/article/4541734-comparing-mlp-preferred-stocks
  10. https://rich01.com/closed-end-funds-vs-open-end-funds/
  11. https://seekingalpha.com/article/4541734-comparing-mlp-preferred-stocks
  12. https://www.legalzoom.com/articles/difference-between-llc-and-llp
  13. https://www.investopedia.com/terms/m/mlp.asp
  14. https://www.nasdaq.com/market-activity/stocks/fpf/advanced-charting
  15. https://stockmarketmba.com/listofpreferredstockcefs.php
  16. https://www.ftportfolios.com/Retail/cef/cefsummary.aspx?Ticker=FPF
  17. http://www.lazyportfolioetf.com/etf/ishares-preferred-and-income-securities-etf-pff-dividend-yield/

LeetCode 小體驗

話說我摸了一陣子 Python, 那要算會? 還是不會呢? 稍微 Google了一下相關資料, 臉書的廣告就變成各種 Python 補習班了. 當然, 要我花錢去補習或是考照那是絕不可能的! 好歹我還曾經贓到過 Sun 認證的第一代 Java 講師稱號呢, 怎麼可以從講師變學徒呢? 至少要自修吧! 哈! 但是誰可以幫我鑑定一下我的水準呢? 我靈機一動就想到了 LeetCode.

如果我用 Python 來解 LeetCode 的題目 [1], 不就知道自己的水準好不好了嗎? 於是乎我找出註冊 N 年還沒開工過的 LeetCode 帳號, 選用 Python3 來作答. …..嗯, 果然程度不太好. 雖然看過一些 code, 也把教學 [2] 讀完了. 不過還是不能得心應手.

尤其第一次做, 我還不知道題目下面就有 test case, 也不知道不用自己寫輸出入 UI, 只要 function 吃到參數就好. 所以花了很多時間設計怎麼輸入 list 最 user friendly, 結果不但做白工, 還判失敗~~ 結果拔一拔反而 pass 了. 完全在搞笑!

所以提醒初學者, 先選選擇難度. 然後挑個自己想解的題目.

點進去之後. 可以選各種語言. 下面有 test case. 右下角選 run, 然後看 Result 對不對? 對的話就可以按綠色的 Submit. 如果選 auto, 電腦可以自動幫忙完成, 當然那也要花錢錢. 點選題目也可以看別人的解答, Stackoverflow 也一堆解答. 不過我第一個程式當然要自己摸索~~ (當然也就搞笑了).

Accept 之後, 系統還會說明執行速度和使用 memory 兩方面贏過多少人? 這個要拚的話當然是可以再努力. 不要 init class 也可以變快一點 (^^). 另外, 我傻傻地用初學時的 Jupyter Notebook 打草稿, 這樣連 list 都要 import 才編得過. 但是在 LeetCode 卻都可以忽略. 果然是有差!

Anyway, 我第一次 run LeetCode, 而且是用 Python. 這還滿值得我記錄的, 算是 2023 年的新年新把戲!

[REF]

  1. https://leetcode.com/problemset/all/
  2. https://docs.python.org/zh-tw/3/tutorial/index.html

IC 設計公司營收排名 2022

稍微整理一下今天出爐的 IC 設計公司 2022 年營收排行榜. 和往年一樣, 有疏漏之處還請見諒. 因為本國公司在 1/10 必須揭露前一個月的業績, 但是海外註冊公司不用. 因此 HIMX, SIMO 我就先根據網路消息抓個大概了. 在這個範圍內, 他們剛好也沒有敵手.

特別值得一提的是, 本海產公司在尾牙的時候 (12/23, 還沒到年底) 就號稱已經甩開聯詠, 成為 No 2! 但聯詠年底 “湧現急單" 補血 [1], 如果他們硬是要多放 20 億應收帳款, 那誰是小三還未可知啊? 無論如何, 期待了幾年, 螃蟹這次總算是上位成功了!

另外值得一題的是, 螃蟹在去年雖然是虎頭蛇尾, 但還算是整年有成長. 反觀大多數的公司營收都下滑. -20% 以下比比皆是. 另一方面, 賣 IP 的公司像是創意, 智原都有爆發性的成長 (+60% 上下), 以致排名產生不小的變動. 年度成長王由基期較低的合邦 (6103) 以 219.81% 獲得.

年度衰退王是凌泰 (6198) 的 -81.02%, 因為營收只有 3 百萬台幣左右. 原來凌泰在 2022/7/1 已經改名瑞築建設, 新聞說: “控制晶片研發公司大者恆大,因此凌泰公司最近2年積極轉型,期待創造股東最大利益,營業項目擴大增列不動產領域。" [2] . 沒錯! 既然傳不到 IC 設計的錢, 就來賺競爭對手的錢也是一樣的!

排名公司股號2022 (K NTD)註解(成長率)
1聯發科2454548,796,03011.22%
2瑞昱2379111,789,7915.96%
3聯詠3034109,956,674-18.77%
 群聯 [*]829960,256,142IC 設計佔25% 左右, -3.68%
 旺宏[*]233743,487,454 有晶圓廠, -14.01%
 新唐 [*]491941,872,426有晶圓廠, 1%
4奇景光電HIMX34,234,800413+313+214+214*(4~8% down)
5慧榮SIMO30,000,000241+242+251 (1.00 B TTM)
6創意344324,039,67159.12%
7矽力641523,602,3169.75%
 擎亞 [*]809623,356,182電子通路, -19.97%
8瑞鼎359222,822,164-8.10%
9譜瑞496620,052,2230.29%
10天鈺496119,680,425-13.94%
11達發科技652618,781,04663.45%
12矽創801618,027,827-19%
13晶豪科300616,207,898-32.03%
14世芯-KY366113,705,77831.48%
15智原303513,065,15561.59%
16義隆245813,030,484-28.90%
17敦泰354512,949,902-41.11%
18威盛23889,297,01832.58%
19致新80818,420,080-10.57%
20凌陽24016,705,708-15.77%
21茂達61386,381,606-5.63%
22力智67196,084,9552.25%
23盛群62026,015,968-15.60%
24祥碩52695,248,329-12.66%
25原相3227 5,225,907-40.62%
26聯陽30145,212,206-27.45%
27信驊52745,210,12843.23%
28愛普65315,095,709-23.02%
29鈺創53514,684,589-23.78%
30昇佳電子6732 4,025,559-45%
31富鼎82613,911,228-6.96%
32宜特 [*]32893,742,682FIB IC, 16.46%
33立積49683,428,818-35.50%
34松翰5471 3,354,067-42.82%
35神盾64623,289,300-4.46%
36創惟61043,250,2640.20%
37力旺35293,216,71136.08%
38凌通49523,169,374-11.49%
39大中64353,004,740 -3.56
40威鋒電子67562,954,986-12.24%
41偉詮24362,888,153-19.82%
42晶焱64112,811,260-32.13%
43揚智30412,651,069-5.84%
44尼克森33172,613,483-8.59%
45聚積35272,534,448-20.17%
46晶宏31412,516,130-6.41%
47杰力52992,334,541 -15.32
48普誠6129 1,952,40618.63%
49點序64851,921,551-1.50%
50九齊64941,776,825-21.64%
51通嘉35881,631,877-23.55%
52安國80541,605,7888.02%
53研通62291,604,931-24.06%
54凌陽創新52361,541,720-32.64%
55倚強32191,484,272-27.65%
56禾瑞亞35561,418,990-12.15%
57沛亨62911,416,82636.13%
58系微62311,406,5738.16%
59M3166431,360,16536.13%
60亞信31691,335,4761.30%
61宏觀65681,303,1362637.00%
62九暘80401,302,57317.68%
63海德威32681,231,075-17.18%
64類比科34381,035,975-34.28%
65晶心科6533931,82113.67%
66驊訊6237725,544-51.65%
67迅杰6243713,885-13.66%
68虹冠3257542,232-58.16%
69笙泉3122510,944-34.98%
70笙科5272 509,302-12.15%
71佑華微8024446,418-16.76%
72旺玖6233438,323-2.26%
73金麗科3228416,014-32.72%
74鑫創3259402,605-41.85%
75聯傑3094307,0908.33%
76通泰5487235,756-46.07%
77矽統2363 182,202-27.74%
78凱鈺5468159,81511.37%
79點晶3288116,0994.54%
80合邦610377,376219.81%
81世紀民生531418,40631.57%
82太欣530211,235-64.17%
83凌泰–> 瑞築61983,640-81.02%

[REF]

  1. 聯詠獲急單Q4營運拚財測高標- 工商時報
  2. 凌泰更名瑞築建設 正式跨入建築不動產業

投資詞彙小整理

因為股市不振, 我也關心債券能不能幫忙防守? 現在元大的投資先生 APP 就可以直接買債券了, 對於債市小白相當方便. 只要肯下單, 就可以買到 Apple, Comcast, Visa… 的證券, 只不過我看不懂買了之後倒底貴了還是便宜了? 另外就是優先股基金裡面, 持股明細不容易看懂, 都不知道買什麼? 怎麼知道划不划算? 考慮到上述幾點, 所以不買也多少研究一下.

以上面這個持股明細為例. 我就當作逆向工程來解讀, 解完再去對答案. 以前看人家的 source code 也是這麼玩的. 首先看到最後都是數字結尾, 不然就是 VAR. 所以推測數字就是票面利率的百分比. 例如 4.817%. 若為 VAR, 就是 variable 變動利率.

倒數第二個字, 斜線之前都小於 12, 這個應該是月份, 斜線後面當然就是年了. 第一個 03/49 就是 2049 年 3 月到期. 跟信用卡的有效月年 coding 方式一樣.

再來有 JR, SR, 顯然就是 junior 和 senior. Senior bond 有優先的償債權 [1], 它們都還清了之後, 才輪到 junior bond 討債. 所以 junior bond 的抵押品比較少, 當然還是比股票優先一點.

至於 secured 和 unsecured 的差異在於前者有資產擔保, 後者沒有 [2]. 所謂無擔保公司債, 就會用到 unsecured 這個名詞. 上述的持股中有 SR Secured 這個就是有擔保又優先.

接下來這邊的債券都有 REGS. 這應該是兩個字 REG S (Regulation S) , S 條例 [3]. 簡單說是海外 (相對於美國) 發行的債券, 可以不受美國證券法有關信息披露規則的約束. 有點類似台股的 KY. 不給管的風險當然就會比較高.

最後解讀一個 subodina, 它是 subodinated 的簡稱 [4], 也是次級的意思. 公司如果破產了, 還錢的順序是:

  1. 優先股股東 (preferred shares)
  2. senior subordinated bond
  3. 滯納稅金
  4. subordinated bond.
  5. junior (subordinated) bond
  6. 普通股股東

First, payments are due to holders of preferred shares, then payments will be made for senior unsubordinated bonds and tax arrears. Then come payments on subordinated bonds, if funds remain for this. Holders of ordinary shares receive payments last. 

因為 Junior 順位較低, 所以通常利率較高, 以吸引買家. 如果優先股償債順位還高於債券, 那麼利率會不會就特別低, 給予懲罰呢? 其實以最近美國升息, 股債齊跌的狀況來看, 優先股或是債券的股價都會對齊市場利率 (e.g. 4%). 而蘋果公司喜歡發債券, 不喜歡發優先股. 台灣好幾家銀行都發行過特別股, 但不喜歡舉債 (金控的負債比例已經夠重了). 因此算是見仁見智.

依台灣法規規定, 特別股可以優先, 也可以劣後 [5]. 因此我們可以理解台灣的特別股不等於國外優先股.

[REF]

  1. What is a Senior Bond?
  2. Secured and Unsecured Bonds: Understand the Difference
  3. https://www.xuehua.us/a/5eb8629286ec4d4eda8d39c0?lang=zh-tw
  4. https://cbonds.com/glossary/subordinated-bond/
  5. 發行債務性特別股之會計處理