2019年6月21日 星期五

穩定配息投資策略-台新JPM新興債、元大A級以上公司債、元大美國20年政府債、富邦PFF特別股


年長者因承受風險能力較低,投資必須傾向固定收益,避免退休時遭遇金融危機,而且退休後無工作收入,如何維持穩定的現金流會是較重要的課題。這樣投資標的大概只剩下債券特別股能夠選擇,其他的投資標的如股票房地產外匯原物料則是波動風險過大,穩定收息的效果也不如債券特別股
近期幫家中長輩規劃一下年長者的投資方式,故在這裡做個紀錄,以便日後檢視績效如何。

希望投資目標的價格能夠穩定、波動不要太大,能夠有穩定的配息可以領取。剛好最近這幾年台灣券商出了很多 ETFETF 市場不再只有元大的 00500056。但是台灣市場不夠大,容易導致 ETF 的規模不夠大,使得內扣費用偏高,與美國的 ETF 相較之下顯得交易成本過高,如果券商造市不夠積極,使得買賣價差偏大,賣在偏低價、買在偏高價的機會大增。但是不希望把資金匯到海外或進行複委託的人,國內 ETF 會是相對較好的選擇。而資金不多的人其實也不適合進行海外或複委託的投資,手續費的成本會過高。

由於台灣並沒有 BNDBNDXBNDW 類型的債券,個人希望債券也能做分險分散,大致上分為美國政府債美元公司債新興市場債這三大部分。

美國政府債是最穩定的債券,依照目前國際情況,美國如果發生大事情,其他國家也不可能得到太多好處,所以美國政府債的殖利率也會是最低的。

美元公司債選擇信用評分等級 A 以上的標的,信用評比 A 以上的公司基本是全球龍頭公司,倒閉的機會不大,相對穩定的投資目標其配息率通常會比較差。

最後配置新興市場債券來提升報酬率,新興市場的法規與政策相對較不成熟,風險較大,勢必要有比較好的報酬率才會吸引投資人前來投資。

最後做個股債配置,8 成的資金進行債券投資,剩餘的 2 成資金進行股票投資。不過台股目前沒有全世界的股票 ETF 可以投資,思考許久之後決定投資特別股,特別股雖然是股票,但是具有債券的特性,公司保證配息與到期收購價,所以只要公司的營運不出問題,基本上特別股就像債券一樣可以有穩定現金流。

挑選標準是依據資產規模大、內扣費用低、每日交易量多來做決定。挑選出來的 ETF 如下:
元大美國政府 20 年債
元大 20 年期 AAA 至 A 級美元公司債

台新摩根大通新興市場投資級美元債
富邦標普美國特別股


台新新興債00734B0.5
美元公司債00751B0.22
美國政府債00679B0.08
富邦特別股007170.2

上表為目前規劃的標的,右邊為配置的比例,配置比較多的新興市場債是希望能夠提升配息率,A 級以上公司債與美國政府因為信用評分較高,投資人會願意用較高的價格購買,使得配息率較低。這些 ETF 目前上市時間上不夠久,穩定的年化配息率尚無法確定,以最近的配息來推估,台新新興市場債的年配息率約有 4%,A 級公司債約 2.7% 左右,美國政府債約 2.5%,特別股約 4%。
美國 FED 升息已經停止了,甚至不排除降息,先進國家紐西蘭已先開降息的第一槍。以正常的經濟學理論來說,升息時持有現金,享有較好的低風險報酬;開始降息會追逐利率較高的債券,直到債券殖利率下降到一定的水準。今年 3 月開始陸續投入一些資金進入債市,等過一年後再來看看結果如何。

2019年6月17日 星期一

<掌握市場週期>閱讀心得


作者霍華馬克斯為橡樹資本創辦者,先前也有寫過該作者另外一本書的心得: <投資最重要的事>。這本書著重在對於週期的一些思考。不過個人認為投資最重要的事這本書就寫得很好了,非常適合對投資有興趣、想要建立一些基本觀念的朋友閱讀。掌握市場週期這本書適合想要更進一步了解市場週期的朋友閱讀。


上面是達利歐介紹經濟學的影片,解釋了宏觀經濟學的運作情形。由貸款央行利率貨幣發行量所形成的市場週期。
先前文章也有介紹達利歐的另外兩本著作: <原則><大債危機>

週期也就是景氣循環,主要是由投資人心理政府政策所造成的影響。投資人心理占絕大的因素,又稱情緒鐘擺。
投資人心理恐慌會大量賣出各種資產進行避險,導致多數金融市場的下跌。反之,若過分樂觀,追價各種投資商品,導致估值過高,產生泡沫化的危機。
政府政策所造成的影響為利率與貨幣發行量。經濟狀況良好,政府需要調高利率、縮減貨幣發行量,避免投資人因為利率過低,大舉借債投資,造成泡沫化後無法償還債務,對經濟造成不良影響。

霍華馬克斯從 1970 年至 2016 年的平均報酬率為 10%,但是在這 47 年間只有 3 年的報酬率落在 8-12%,多數情況都偏離平均很多,可能上漲 30% 或是下跌 10%。

市場經濟目前長期來看是向上成長,但會有週期的擺動,充滿不確定性。作者一直強調未來無法準確預測,沒有人可以知道轉折點的發生時間以及震盪幅度。雖然無法準確預測,但是作者認為要努力搞清楚現在位於週期循環的哪個階段,做出相對應的策略。
要在市場獲利的一貫法則就是低買高賣,要想辦法搞清楚現在的市場週期位於何處,是已經過高,還是處在便宜的位階。
市場樂觀,大家追價購買,會使得收益逐漸降低。
市場悲觀,大家急於拋售,收益會變高。

但是要如何判斷,這就是個人要做的決策,畢竟每個人可以承受的風險程度不同。而且投資沒有勝利方程式,如果有也會被投資人套利到無利可圖了。

2019年6月1日 星期六

Kaggle 鐵達尼號乘客生存分析

markdown
學 R 也有一陣子了,一直以來都是在整理自己的資料。這次來嘗試整理別人的資料,先從 Kaggle 上鐵達尼號的資料來試試。
https://www.kaggle.com/c/titanic

由於我不是資料或統計相關科系畢業的人士,過程中也參考了不少網路資料。
http://www.jasongj.com/ml/classification/
以上連結是我主要參考的網站,是鐵達尼資料分析的詳細過程。指令出問題時則是直接去 stackoverflow 找答案。

資料下載下來共有 3 個 csv 檔,分別為 train, test, gender submission。train 是要拿來建立模型的資料,預測 test 資料中乘客的生存,最後以 gender submission 的資料形式提交答案至 Kaggle 上面。

```
train <- read.table("clipboard", header = T, sep = "\t", na.strings = c("", " ", "NA"), quote = "") test <- read.table("clipboard", header = T, sep = "\t", na.strings = c("", " ", "NA"), quote = "") ```
首先是匯入資料,同時將空白資料補上 NA,一直以來我都習慣用複製貼上的方式,不過這樣不太好,以後還是設定一下路徑會比較好。
```
library(ggplot2) library(dplyr) library(ggthemes) library(scales) library(rpart) library(randomForest) library(party) titanic <- bind_rows(train, test) sapply(titanic, function(x) sum(is.na(x))) ```
載入所需要的 package,計算一下那些變數有 NA。
```
titanic$family <- titanic$SibSp + titanic$Parch + 1 ggplot(titanic, aes(family, fill = factor(Survived))) + geom_bar(stat = "count", position = "dodge") + labs(x = "Family size")
titanic$fsize[titanic$family == 1] <- "single" titanic$fsize[titanic$family > 1 & titanic$family < 5] <- "small" titanic$fsize[titanic$family > 4] <- "large" mosaicplot(table(titanic$fsize, titanic$Survived), main = "Family size vs survival") ```
接下來就是逐一檢視每個變數,不過這裡我偷懶,我直接挑選我主觀意識認為會影響存活的變數來分析。
大家庭可能會沒有辦法每個人都登上救生艇,獨身一人可能會沒有人幫忙你逃命。所以將 SibSp 與 Parch 變數合併為 family,圖中可以看到 2-4 人的家庭其存活數比未存活數高,所以再將 family 簡化為 single、small、large 新命名為 fsize。再做成馬賽克圖比較一下,大家庭的存活數會是最低的。


```
titanic[is.na(titanic$Embarked), ] ggplot(titanic, aes(Embarked, Fare, fill = factor(Pclass))) + geom_boxplot() titanic$Embarked[c(62, 830)] <- "C" ```
找出缺失 Embarked 的資料,一般來說票價會與船艙等級或登入港口有關係,所以這邊做了一個盒子圖來看看。缺失的資料只有 2 個並不多,以中位數的方式填補資料空缺,Pclass = 1、Fare = 80 的中位數情況很符合 Embarked = C。

```
titanic[is.na(titanic$Fare), ] titanic$Fare[1044] <- median(titanic[titanic$Pclass == "3" & titanic$Embarked == "S", ]$Fare, na.rm = T) ```
Fare 的缺失值只有一個,同樣以中位數的方式填補空缺。
```
age_model <- rpart(Age ~ Pclass + Sex + SibSp + Parch + Fare + Embarked + fsize, data = titanic[!is.na(titanic$Age), ], method = "anova") titanic$Age[is.na(titanic$Age)] <- predict(age_model, titanic[is.na(titanic$Age), ]) sapply(titanic, function(x) sum(is.na(x))) ```
再來是年齡的部分,由於年齡的缺失較多,不宜使用中位數法來填補空缺。這裡使用 rpart 來推測,變數使用家庭相關的變數以及票價相關的變數。檢查還有哪些缺失值,由於 cabin 的缺失值較多,這裡就直接捨棄不處理。
```
train_complete <- titanic[1:891, ] %>% mutate_if(is.character, as.factor) test_complete <- titanic[892:1309, ] %>% mutate_if(is.character, as.factor) ```
再將檔案分回原本的 train 與 test,將 character 的特性資料轉為 factor,避免跑模型的時候出現錯誤。
```
model <- glm(Survived ~ Pclass+Sex+Age+Fare+Embarked+fsize, data = train_complete, family = binomial(link = "logit")) predict_survival <- predict.glm(model, test_complete, type = "response") survive <- ifelse(predict_survival >= 0.5, 1, 0) ```
這裡使用比較簡單的邏輯斯分析,跑出來的結果在 0.5 以上則認定為存活,將數值改為 1,反之,則改為 0。
```
submit <- data.frame(PassengerId = test_complete$PassengerId, Survived = survive) write.csv(submit, file = "titanic_submit.csv", row.names = F) ```
存檔並將資料格式改為符合 kaggle 要求的樣式,直接將存好的檔案拖曳上去 kaggle 鐵達尼的繳交頁面即可。準確率只有 0.75598,排名 9062 名。
其實很多資料還可以做更進一步的整理,例如姓名與年齡可以再做一些分級處理。分析模型可以採用比較好的 randomforest,還有很多改進的空間。


<房市老手21堂超強實戰課:快速看穿房屋買賣陷阱>閱讀筆記

https://www.taaze.tw/apredir.html?131322949/https://www.taaze.tw/products/11100982076.html?a=b 賣房篇 1.      頂樓加蓋對於房價 頂樓加蓋還是可以計入房價,多為房屋單坪價格的 1...