#SPX 月次収益率統計モデル その2
データの準備
TERM <- "1972::2024-02"
merge(g20=diff(cli_g20)[TERM],usa=diff(cli_usa)[TERM],g7=diff(cli_g7)[TERM])-> w
merge(w,nfci=as.vector(diff(to.monthly(NFCI)[,4])[TERM]),spx=as.vector(monthlyReturn(GSPC)[TERM])) -> w
w<-last(w,120)
# r <- (lm(w$spx ~ poly(w$nfci,3,raw=T) + w$g20))
r <- (lm(spx ~ poly(nfci,3,raw=T) + g20,data.frame(w)))
# as.data.frame(predict(r,interval='p'))[,c(1,2,3)] %>% unlist() %>% as.vector() %>% matrix(.,ncol=3) %>% cbind(w,.) -> w
cbind(w,as.xts(predict(r,interval = 'p'),index(w)) ) -> w
# colnames(w)[c(6,7,8)] <- c('lwr','fit','upr')
colnames(w)[c(6,7,8)] <- c('fit','lwr','upr')
as.data.frame(predict(r,interval='p'))[,c(1,2,3)] %>% unlist() %>% as.vector() %>% matrix(.,ncol=3) %>% cbind(w,.) -> w
# は以下のようにしても良いかもしれない。
cbind(w,as.vector(predict(r,interval = 'p')[,1]),as.vector(predict(r,interval = 'p')[,2]),as.vector(predict(r,interval = 'p')[,3]) )
そもそもwはオブジェクトでそのタイムゾーンはUTCがセットされている。ところがpredcit(r)をそのままxtsに変換すると元のデータに影響されてJSTがインデックスデータとなりそれがバインド時の日付不一致を引き起こす。
> as.xts(predict(r)) %>% index() %>% head()
[1] "2014-04-01 JST" "2014-05-01 JST" "2014-06-01 JST" "2014-07-01 JST" "2014-08-01 JST"
[6] "2014-09-01 JST"
そこで、インデックスをwから借用しデータの変換を行う。そうすればインデックスの同期が取れるので余計なデータ操作なしでデータを統合できる。
cbind(w,as.xts(predict(r,interval = 'p'),index(w)) )
作成されたデータ
> head(w)
g20 usa g7 nfci spx fit lwr upr
2014-04-01 -0.0145 0.0577 -0.0210 0.00691 0.006200789 0.0079035368 -0.05846891 0.07427599
2014-05-01 -0.0160 0.0509 -0.0390 -0.02492 0.021030280 0.0226361026 -0.04379053 0.08906274
2014-06-01 -0.0162 0.0374 -0.0516 -0.00201 0.019058332 0.0120911721 -0.05427816 0.07846051
2014-07-01 -0.0142 0.0188 -0.0597 0.04239 -0.015079831 -0.0089385896 -0.07546959 0.05759241
2014-08-01 -0.0123 0.0027 -0.0597 0.02339 0.037655296 0.0001021594 -0.06631484 0.06651915
2014-09-01 -0.0101 -0.0121 -0.0520 0.05519 -0.015513837 -0.0151286265 -0.08177599 0.05151874
検証結果
> w[w$spx < w$lwr,]
g20 usa g7 nfci spx fit lwr upr
2018-12-01 -0.11161 -0.22513 -0.19228 0.04457 -0.09177689 -0.008917332 -0.07545223 0.05761756
2022-04-01 -0.23788 -0.24420 -0.31910 0.04553 -0.08795671 -0.007995872 -0.07453918 0.05854744
2022-12-01 0.07517 -0.05791 0.01104 -0.03313 -0.05897147 0.025353068 -0.04110877 0.09181491
> dim(w)
[1] 120 8
> w[w$spx > w$upr,]
g20 usa g7 nfci spx fit lwr upr
2020-11-01 0.29763 0.39870 0.29321 -0.06706 0.10754564 0.037827139 -0.02889918 0.104553454
2021-10-01 -0.10270 -0.04210 -0.06490 0.02070 0.06914384 0.002366807 -0.06403502 0.068768639
2023-03-01 0.13092 0.00729 0.05067 0.14426 0.03505161 -0.059399801 -0.12774449 0.008944886
この記事が気に入ったらサポートをしてみませんか?