とある金融屋の統計技師が時系列解析してみた

25
とある金融屋の統計技師が 時系列解析してみた To my dear wife, Phoenix33勉強会@東京(#TokyoR) @teramonagi

Upload: tera-monagi

Post on 15-Jan-2015

8.242 views

Category:

Technology


3 download

DESCRIPTION

第33回R勉強会@東京(#TokyoR)の資料

TRANSCRIPT

Page 1: とある金融屋の統計技師が時系列解析してみた

とある金融屋の統計技師が 時系列解析してみた

~To my dear wife, Phoenix~

第33回 勉強会@東京(#TokyoR)

@teramonagi

Page 2: とある金融屋の統計技師が時系列解析してみた

2

本資料は個人的な勉強会のために作成したものです。本情報の内容については万全を期しておりますが、その内容を保証するものではありません。これらの情報によって生じたいかなる損害についても、情報提供者は一切の責任を負いません。なお、本資料における意見、見解等はすべて筆者の個人的なものであり、筆者の属する組織の意見、見解等ではないことをあらかじめご了承ください。

CAUTION

Page 3: とある金融屋の統計技師が時系列解析してみた

自己紹介

• ID:@teramonagi

3

Page 4: とある金融屋の統計技師が時系列解析してみた

とある弁当屋の統計技師

4

データサイエンティスト

日本が誇る

最強の 使い

石田基広氏著

発売予定:2013/9/26 税込価格:1,365円 共立出版

Page 5: とある金融屋の統計技師が時系列解析してみた

とある弁当屋の統計技師

丸善出版に心配されるヤヴァさ 5

データサイエンティスト

Page 6: とある金融屋の統計技師が時系列解析してみた

とある弁当屋の統計技師

6

データサイエンティスト

• “とある弁当屋”で、データサイエンティストが活躍する統計の入門書!

• データの要約、(単|重|ロジスティック)回帰モデルまでの基本をしっかりカバー!

• 更に、これらの内容をがっつり勉強するためのサポートサイトも開設(予定)!

• この秋、これを買わずしてデータサイエンティストは語れない

•今すぐ予約だ!

Page 7: とある金融屋の統計技師が時系列解析してみた

その他、同著者のおススメ本

7

~初心者向け~ とりあえずR言語への とっかかりとなる一冊

~中・上級者向け~ 辞書的に手元に 置いておきたい一冊

Page 8: とある金融屋の統計技師が時系列解析してみた

8

本題へ

Page 9: とある金融屋の統計技師が時系列解析してみた

本資料の概要

• (重)回帰分析の係数が(時系列データに関して言えば)、分析に使用するデータ期間に応じて相当動くという事を理解する

•どの程度ズレ得るのかを

実際にやってみる

9

Page 10: とある金融屋の統計技師が時系列解析してみた

まずはデータのダウンロード

•米国金融市場より

–米国債10年金利

–S&P500指数

–IBMの株価

–Pacific Gas & Electricの株価

を取得

10

Page 11: とある金融屋の統計技師が時系列解析してみた

まずはデータのダウンロード

11

# quantmodパッケージのインストール

install.packages(“quantmod”)

library(quantmod) # quantmod0.4系だとauto.assign=TRUEがいる

# 0.5系からはなくてもOKらしい

# 10年国債金利(アメリカ), S&P500(アメリカの株価指数, IBM, PCGの株価を取得

# 今回はアメリカ市場データを用いている

# …からのデータのマージ&欠損(NA)の除去

data <- na.omit(

merge( getSymbols(“DGS10”, src=“FRED”, auto.assign=FALSE),

getSymbols(“SP500”, src=“FRED”, auto.assign=FALSE),

getSymbols(“IBM”, src=“yahoo”, auto.assign=FALSE, from=“2003-01-01”)[,6],

getSymbols(“PCG”, src=“yahoo”, auto.assign=FALSE, from=“2003-01-01”)[,6]

)) colnames(data) <- c(“T10Y”, “SP500”, “IBM”, “PCG”)

head(data)

※裏では時系列処理のxtsパッケージ等も呼ばれてます

Page 12: とある金融屋の統計技師が時系列解析してみた

まずはデータのダウンロード

12

> head(data)

T10Y SP500 IBM PCG

2003-01-02 4.07 909.03 68.98 10.56

2003-01-03 4.05 908.59 69.90 10.41

2003-01-06 4.09 929.01 71.56 10.92

2003-01-07 4.04 922.93 73.63 10.63

2003-01-08 4.00 909.93 72.08 10.93

2003-01-09 4.19 927.58 74.48 11.02

Page 13: とある金融屋の統計技師が時系列解析してみた

データの変換(変化率・差分)

13

#データの変換関数群。変化率(ROC) or 差分(diff)

converter <- list(

function(x){diff(x)},

function(x){ROC(x, type="discrete")},

function(x){ROC(x, type="discrete")},

function(x){ROC(x, type="discrete")}

) #dataの各列に対して各convertを適用し,data.frameとして整形

data.converted <- na.omit(

do.call("cbind",lapply(

1:length(converter), function(i) {converter[[i]](data[,i])}

)

)

)

Page 14: とある金融屋の統計技師が時系列解析してみた

データの変換

14

> head(data.converted)

T10Y SP500 IBM PCG

2003-01-03 -0.02 -4.840e-04 0.013337 -0.014204

2003-01-06 0.04 2.247e-02 0.023748 0.048991

2003-01-07 -0.05 -6.544e-03 0.028926 -0.026556

2003-01-08 -0.04 -1.408e-02 -0.021051 0.028222

2003-01-09 0.19 1.939e-02 0.033296 0.008234

2003-01-10 -0.03 -1.078e-05 0.007787 0.000000

Page 15: とある金融屋の統計技師が時系列解析してみた

そもそもなぜ変換がいるのか?

15 TJOssanのサイトを見て下さい ※ http://tjo.hatenablog.com/entry/2013/08/16/095536 より

Page 16: とある金融屋の統計技師が時系列解析してみた

そもそもなぜ変換がいるのか?

16

http://www.slideshare.net/teramonagi/r-7066155より

拙著でよければ、あるいはこちら

Page 17: とある金融屋の統計技師が時系列解析してみた

x

Density T10Y

-0.05 0.05 0.10

0.38*** 0.30***-0.10 0.00 0.05 0.10

-0.4

0.0

0.13***

-0.0

50.1

0

x

Density SP500

0.72*** 0.55***

x

Density IBM

-0.0

50.1

0

0.37***

-0.4 -0.2 0.0 0.2

-0.1

00.0

5

-0.05 0.05 0.10

x

Density PCG

相関構造の可視化(概要把握)

17

# 相関構造の可視化(psychパッケージのpairs.panels関数も似た感じ)

install.packages("PerformanceAnalytics")

library(PerformanceAnalytics)

chart.Correlation(data.converted, histogram=TRUE)

Page 18: とある金融屋の統計技師が時系列解析してみた

回帰モデル

株価変化率

||

α+β×SP500変化率+γ×金利変化

18

株価変化率が、どう金利変化に依存するのかを評価したい(γを評価したい)

Page 19: とある金融屋の統計技師が時系列解析してみた

ローリング回帰とは

時系列データ (時間方向)

時系列データ全体

回帰分析1

回帰分析4

回帰分析2

回帰分析3

各回帰分析期間に対し、回帰係数を算出、回帰係数の時系列変化を取得する

Page 20: とある金融屋の統計技師が時系列解析してみた

ローリング回帰

20

# windowサイズ250(営業日)でのローリング回帰(IBM, PCG) # …からの回帰係数(切片・SP500・10年金利)取得

size.window <- 250

coefs.pcg <- rollapplyr(

data.converted, size.window, function(x){

coef(lm(PCG~SP500+T10Y, data=x))

}, by.column = FALSE)

names(coefs.pcg) <- c("PCG.intercept", "PCG.SP500", "PCG.T10Y")

coefs.ibm <- rollapplyr(

data.converted, size.window, function(x){

coef(lm(IBM~SP500+T10Y, data=x))

}, by.column = FALSE)

names(coefs.ibm) <- c("IBM.intercept", "IBM.SP500", "IBM.T10Y")

※裏では時系列処理のxtsパッケージ等も呼ばれてます ※rollapplyrはxtsパッケージの機能

Page 21: とある金融屋の統計技師が時系列解析してみた

結果の表示 with rCharts

21

# rChartsのインストール

install.packages("devtools")

library(devtools)

install_github('rCharts', 'ramnathv')

library(rCharts) # γのPLOT,数が多いので500個だけ

coefs.plotted <- merge(coefs.pcg, coefs.ibm)

coefs.plotted <- coefs.plotted[floor(seq(1, nrow(coefs.plotted), length.out=500)),]

coefs.plotted <- na.omit(data.frame(date=as.character(index(coefs.plotted)), coefs.plotted))

m1 <- mPlot(x="date", y=c("PCG.T10Y","IBM.T10Y"), type='Line', data=coefs.plotted)

m1$set(pointSize = 3, lineWidth = 2)

m1

※出力はhtml+javascriptでインタラクティブでびゅーてぃふるなグラフが作成可能

Page 22: とある金融屋の統計技師が時系列解析してみた

回帰係数γの時系列変化表示

22

Page 23: とある金融屋の統計技師が時系列解析してみた

とある弁当屋の乱子氏による解説

23

一般にPCGに代表される電力・ガスの公益関連

株は巨大設備・施設等の固定資産が多く、その支払いを有利子負債でファイナンスしているわ。従って金利が低下した場合は支払利息が減って業績面でプラス(株価上昇材料)となり、逆に金利が上昇した場合は支払利息が増えて業績面でマイナス(株価下落材料)となる傾向があるわ。γはその傾向を反映してマイナスになっているのね。 一方、IBMは特段強く金利からの影響は受けていないように見えるわね。

Page 24: とある金融屋の統計技師が時系列解析してみた

24

乱子すげぇ!!! わかりやすい!!! 買うしかない!!!

Page 25: とある金融屋の統計技師が時系列解析してみた

Enjoy!!! 25