2018 投資檢討

話說 2018 年的投資真如坐雲霄飛車一般, 整整一個月以前, 那是我今生迄今最有錢的一天. 但 2018 年封關之後, 整個獲利率就縮到 1.12%, 幾乎是在定存了, 真是叫人情何以堪啊~~~

放眼台股, 表現也不怎麼好. 連續獲利好幾年的公司治理指數終於吃鱉了. 而高股息指數罕見地打敗了台灣 50. 異軍突起的高息低波動指數則暫且在 2018 年領先群雄.

指數 大盤 台灣 50 高股息 公司治理 高息低波動
2017年 18,234.75 13,825.76 11,570.64 6,767.86 3,466.96
2018 年 17,354.55 13,215.20 11,715.45 6,561.71 3,604.94
報酬率 -4.83% -4.42% 1.25% -3.05% 3.98%

去年做得最好的一件事就是為了避新制所得稅, 在除息前把台股全部賣光光, 雖然不是賣在最高點, 也算是逢高賣出. 除了"永記" (1726) 成交量小, 買價差, 真的很難賣, 只好留著一部分繼續咬布袋之外.

做得不好的就是沒有留下現金, 而是轉身投入過高的美股 ETF 和打底的陸股 ETF. 這兩個投資都是虧損的. 美股雖然跌還有個分寸. 這陸股就刺激了, 03169 ETF 均價 8.6, 標準差 0.81 (只觀察持有區間), 所以 2018 年是以 10% 左右的幅度正常能量釋放, 讓人愈練神經愈大條.

按照薛教授的五線譜投資法, 投入陸股沒什麼錯. 只是要等待.  投入美股就有點急躁. 當時跟著台股大換血, 美股也順便賣光光, 波克夏賣在 220.6 USD, 可樂賣在 42.22 USD 都很漂亮. 只是 VIG 買點不好, 買了一直跌, 嗚嗚嗚~~~ 當初買 VPU 就好了.

套句同事法蘭克的話, 金融風暴的虧損, 在歷史長河上也只是一個小激凸. 希望這些 ETF 大軍 (VIG, VDC, 高息低波動, 02801.HK, 03169.HK, 03140.HK) 和小個股 (KO, BRK.B, 永記) 以後可以幫我拗回來. 

其實我還有買一點 “統一" (1216), 當作資金棲息的地方, 避免手癢去亂買別的. 雖然這是學老農夫, 但買點不太好. 又因為 Q2 之前一定要賣掉避股息所得稅. 也不算是長期投資. 不長不短, 有點畫虎不成反類犬的感覺.

這部分我還是應該 follow 艾蜜莉, 買進前多點耐心. 不要因為沒有時間研究就輕易地出手. “阿母, 我又亂花錢了."  希望以後我都不用再這麼說.

 

Excel 小技巧

前陣子看到網路上的美股投資 Excel 檔 [1], 覺得很厲害. 仿照它可以用來管理同仁在每個子產品線的計畫投資了多少人力. 不過, 想要把它從 Google Doc 搬到 Windows 平台,  很多厲害的指令都不能用了!!

首先是這個 D2 = if(isblank(A2),,counta(SPLIT(B2,",")))

spli_count-768x146

D2 可以將 B2 裡面的項目數算出來 (counta), 但先要用 SPLIT 把 B2 按照逗號 (,) 隔開. 不過 Office 裡面的 Excel 函數就做不到這點. 取而代之, 另外一個技術是計算逗號數再加一. 

B2=IF(ISBLANK(A2),,LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1)

它的原理是先算整個長度 LEN, 再減去字串中的逗號被取代的次數 (SUBSTITUTE). 這樣逗號的前後有空白也沒有關係.

第二個是上述的 C2, 它可以去另外一個工作表 (Portfolio) query 整張 ($B$5:$O$70) 裡面, 有沒有 B 欄的內容等於本頁的 A2 (也就是上圖中的 Apple), 有的話就取出它 O 欄的值.

C2=if(isblank(A2),,query(Portfolio!$B$5:$O$70,“select O where B='"&A2&“‘"))

我覺得這個功能超強大, 不過 Office 的 Excel 也不能用. 取而代之的, 是用

C2=VLOOKUP($B2,Portfolio!$C$5:$O$70, 13, FALSE)

用垂直方向 LOOKUP 找 B2, 找到之後, 選右方第十三欄的內容. 這看起來很矬, 但也算是堪用.

第三個技巧是, H 欄可以把所有股票中, 每個單月的配息分別加起來, 從一月到十二月. 例如:

H2 =sum(query($B$2:$E$64, “select E where B like ‘%Jan%'"))

它 query 整張 (B2:E64) 裡面 B 欄裡面找到有 Jan 這個單字的列, 將其 E 欄的內容累加起來 (sum).

然而, Office Excel 的 query 也不是這樣用的. 因此我先把 H2 的內容 ‘Jan’, 前後加上萬用字元 (*), CONCATENATE(“*",$H2,"*").

CONCATENATE(“*",$H2,"*")

SUMIF() 是條件式的函數, 第一個參數是加總的範圍為整張 (B2:B64), 第二個參數是條件式是否成立. 目前是 *Jan*, *Feb*’…這些是否存在. 第三個參數是要加總的內容.

H2 =SUMIF($B$2:$B$ˊˊ64,CONCATENATE(“*",$H2,"*"),$E$2:$E$64) 

這個作法也等效於 Google Doc.

以上供大家參考, 也避免自己忘記.

[Note]

  1. http://www.twoinvesting.com/2017/10/dividend-stock-portfolio-spreadsheet-on-google-sheets/

三支美股 ETF 的 IRR

網路上有一些關於美股 ETF 的討論, 瞄了一下有些是要花錢買會員的. 如果不花錢的就要靠 Yahoo 了, 希望它繼續做公益, 不要把網站關了.

在 Yahoo Finance [1] 可以搜尋這些 ETF, 雖然不能說資料多麼詳盡, 介面多麼好用, 至少它是相當地佛心. 剛剛抓了 VIG, VDC, NOBL 三支 ETF 的每月股價 (經過股利發放與無償配股調整後的價格), 計算各自的 IRR, 比較如下:

ETF 月份數 月 IRR 起始時間 調整股價 海嘯後低點 調整股價
NOBL ˊ61 1.739% 2013/10 38.74 N/A N/A
VDC 178 1.485% 2004/1 36.63 2009/2 38.95
VIG 150 1.242% 2006/5 38.12 2009/2 26.86

看起來 NOBL 非常之厲害.  不過這些歷史資料, 還是要分成金融海嘯前或是之後.

2008 年金融海嘯之前, NOBL 還沒出生. 另兩支 ETF 只能算小漲. 金融海嘯之後, VDC 至少沒退回起點, 而 VIG 不只是白做三年工, 還打七折. 看似 VDC 勝出, 但把 VDC 和 VIG 放在同一條起跑線, 假設大家都從 2006/5 開始算, 比較結果如下:

ETF 月份數 月 IRR
VDC 150 1.485%
VIG 150 1.57%

換言之, 扣掉 2004/1~2006/5 這個時段, VIG 也不輸 VDC. 主要是 2005 年美股比較不動. 停滯期數愈多, IRR 算出來就愈低.

至於, NOBL 雖然出生得晚. 但是它的統計資料卻歷史久遠. 從 1990~2017 年化報酬率是 27.34%, 2018 到目前為止是跌的. 比較公平的比法還是大家都對齊到 NOBL 上市的時間. 不然我查不到 1990 年 VDC, VIG 各應該值多少?

ETF 月份數 月 IRR
NOBL 61 1.739%
VDC 61 1.339%
VIG 61 1.621%

如果起跑線一樣, NOBL 還是贏過另外兩位. 所以, 以我不專業路人的觀點, NOBL 確實比較好. 這也是 <美股股息成長投資術> 這本書裡面提到的一支 ETF, 作者追日 Gucci 常常會拿自己的投資報酬率和它 PK, 或者討論它 [2]!

[Note]

  1. https://finance.yahoo.com/
  2. https://www.guccidgi.com/2017/12/dividend-stocks-vs-growth-stocks

股市大跌小筆記

上週美股跌, 導致台股跟著跌, 加上大陸跌好久了; 現在正是進場的好機會. 想到要分散風險, 中美台應該都要買一點. 買中美是因為他們是世界兩強, 買台股最大的好處是殖利率高 (但成長性差於美股). 如果不是買日股比較麻煩, 我想買 Konami 把我以前買遊戲的錢賺回來, 哈!

陸股已經跌得慘兮兮, 可能快見底了. 雖然有人說現在 all in, 以後可以賺很大. 不過截至目前為止, 有幾個台股 ETF 今年都還是正報酬 (台灣 50: 1.17%, 高股息: 0.53%, 公司治理: 1.63%, 高息低波動: 7.18%)[6]. 只賭中長期大賺, 但短期卻青筍筍也不好看. 所以陸股買到一定程度就先放緩.

[Note] 根據證交所的資料, 高息低波應該有 7.18% 的報酬, 不過如果是買元大高息低波 ETF (00713), 今年迄今報酬率是 -2.064%. 這可能是因為內扣費用或是周轉率造成的, 因為它並沒有配息, 難道追蹤誤差這麼大?

[Note 2] 國泰低波動 30 幾乎就符合證交所的漲幅.

買美股是一門大學問, 個股我只買過可口可樂和波克夏, 這兩支股票都很不錯. 雖然波克夏最近大概是蘋果吃多了, 跌勢有點像科技股, 但應該還是個好標的. 根據 Morning Star [1] 等網站 [2], 美股的 ETF 則多得令人眼花撩亂.  稍微瞄一下 VDC 裡面前三大持股都是我喜歡的, 主要持股至少到 Costco 我都還認識 [3], 目前看得很中意但還沒買到.

vdc-1

至於這次殖利率太高導致美股崩跌的十年期公債, 我也算了一下. Firstrade 上面現在有四個報價, 前三個都是 treasure notes, 第四個是 treasure bonds. 看來 treasure bonds 賣比較貴. 兩個都是十年左右才到期,  風險也一樣, 但 Treasury notes are not callable [4]. 不知道是否價位跟這個屬性有關?

us-treasure-bond-1-620x190

根據 [5], YTM 是這樣來的:

ytm-1

P = price

I = interest.  其中 coupon 是年化報酬率, I 才是真正月配 (或季配/年配) 的利息.

n = 分為 n 期, 或到到期日還有幾期?

M = mature = 到期領回的錢.

把 YTM 帶入公式, Excel 算出 coupon = 2.875 的這兩個 treasure note 的 price 比網站上低一點點 (不論假設月配或季配), 不知道是否含稅的關係?

想要直接買美債, 看來需要個好頭腦, 可能還是買美債 ETF 比較有機會. 我以前買過美元計價的抗通膨美債 ETF, 後來靠著台幣貶值才回本, 至今還沒有更聰明的想法可以出手. 而且現在台幣貶美金漲, 拿新資金去買美債, 可能有好幾年的債息 (約 2%) 要拿去填匯差, 再想想吧~~~

[REF]

  1. http://news.morningstar.com/etf/lists/ETFReturns.html
  2. https://tools.alphaarchitect.com/screener
  3. http://portfolios.morningstar.com/fund/holdings?t=VDC&region=usa&culture=en-US
  4. https://financetrain.com/us-treasury-bills-notes-and-bonds/
  5. https://publish.get.com.tw/BookPre_pdf/51MB400418-2.pdf
  6. http://www.twse.com.tw/zh/page/trading/indices/SPTLHD.html

SPIN_LOCK 小註解

最近看到一個 Kernel config 叫做 CONFIG_UNINLINE_SPIN_UNLOCK, 這 un 又 un, 真的是讓人看得眼花. 雖然說現在人強調 “減法" 的思維, 看這個名詞還是得用 “加法".

STEP 1: SPIN_LOCK [1], 多處理器共用一個資源時, 透過 SPIN_LOCK 去鎖住不讓其他人用. 自己用完後, 設為 unlock, 別人就可以用. 怎麼知道可不可以用呢? 要透過 trylock() 來判斷是否拿到資源. 如果拿不到回直接回傳 busy, 除非一直 try 否則也不會浪費資源. 真的 try 不停就要看演算了 [2].

STEP 2: INLINE_SPIN_LOCK. inline 是指會將 spin_lock() 插入程式之中. 但它也不只是當作巨集處理而已, 參考 [3] 這段話, 它會把 spin_lock() 這個函式的內容優化之後才代入. 

The point of making a function inline is to hint to the compiler that it is worth making some form of extra effort to call the function faster than it would otherwise – generally by substituting the code of the function into its caller. As well as eliminating the need for a call and return sequence, it might allow the compiler to perform certain optimizations between the bodies of both functions.

STEP 3:  INLINE_SPIN_UNLOCK. 有鎖的動作就有解鎖. 使用之前, kernel config 要先打開. 追溯到 2012 年, 當初只有 CONFIG_INLINE_SPIN_UNLOCK [4].

STEP 4:  Linus Torvalds 自己建議把原本預設開 CONFIG_INLINE_SPIN_UNLOCK, 改為預設 CONFIG_UNINLINE_SPIN_UNLOCK 未定義 [4].

-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_UNINLINE_SPIN_UNLOCK is not set

想要 debug inline spin unlock 的人如果想要加 debug code, 開這個 config 就不會因為 inline 的作用, 使自己的 code 和原本 inline 的函式融為一體, 以致於無法正確地 debug.

預期的路人心得:  不能因為負負得正, 就把 CONFIG_UNINLINE_SPIN_UNLOCK 想成 CONFIG_INLINE_SPIN_LOCK. 哈!

[Ref]

  1. https://blog.csdn.net/u010144805/article/details/80354679
  2. https://locklessinc.com/articles/locks/
  3. http://www.greenend.org.uk/rjk/tech/inline.html
  4. http://lkml.iu.edu/hypermail/linux/kernel/1203.2/03015.html