日々のメモ

統計解析や機械学習、ファイナンスについての勉強メモ

Rによる統計解析 日経平均先物その2

日経平均先物の分布について確認してみたいと思います
Black-Scholesモデルなど、株価のリターンの分布は対数正規分布と仮定されることが多いですが、実際はどのような分布になっているか調べてみます

今回は2010/6/21〜2016/6/21の日足データを使います
Macであれば楽天証券のMarketSpeedからデータをcsvで保存します
f:id:Kenjiqun:20160621103244p:plain
この中で、

> file <- file("NikkeiSakimono.csv", open="r", encoding="cp932")
> data <- read.table(file, header=TRUE, sep=",")

ですがこのままだとデータがfactor型になってしまいます
factor型のままでは解析できません

> sapply(data,class)
    日付     始値     高値     安値     終値   前日比   出来高    X5DMA
"factor" "factor" "factor" "factor" "factor" "factor" "factor" "factor"
  X25DMA   X75DMA   X5DVMA  X25DVMA  X75DVMA
"factor" "factor" "factor" "factor" "factor"

桁区切りを無くせばread.tableした時にnumeric型になってくれます
ということでExcelで桁区切りを一旦なくしてから再度読み込みました


あと日付のデータ型を日付型に変換します

> data$日付<-as.Date(data$日付)

f:id:Kenjiqun:20160621105210p:plain

株価のリターンとしては前日比を用いることにして、ヒストグラムをかきます

リターンは収益率にするべきでした
リターン=前日比/前日の終値
とします

> return <- data$前日比[-1]/data$終値[1:length(data$終値)-1] 

[-1]で第1成分以外を指定し、[1:length(data$終値)-1]で最後の成分以外を指定します
リターンのヒストグラム

> hist(return,main="Histogram of Return",xlab="return",freq=FALSE,breaks=50)

f:id:Kenjiqun:20160621215630p:plain

freq=FALSEとすることで縦軸を頻度ではなく確率密度にしています
breaksは分割数を指定しています

さて、パッと見正規分布に見えますがどうでしょう

> mu=mean(data$前日比)
> sigma=sd(data$前日比)
> curve(dnorm(x,mu,sigma),add=T)

dnorm(x,mu,sigma)で平均mu分散sigma正規分布を作ってヒストグラムに重ねてみます

f:id:Kenjiqun:20160621220143p:plain

これを見ると日経平均先物正規分布と比べて端の方に分布が偏っているように見えます
実際、分散は0.0145くらいなので6σ程度まで分布が存在することになります

6σといえば1億分の1以下なので正規分布だとまあほぼほぼ出現しないはずですが、実際にはその辺まで現れます
暴騰暴落が起こりやすいということでその辺に気をつけないと死んでしまいそうです

リターンの分布がべき分布になるとか、フラクタル性を持つとかいう話もありますがそれはまた今度にしようと思います