バナナでもわかる話

開設当初は計量経済学・統計学が専門の大学院生でした。今はデータを扱うお仕事をしています。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

ソフトバンクの株価の分析を簡単にやってみる

今回は今まで記事にした内容(+α)のみを使うだけでも、結構しっかりした株価分析が出来ちゃうぞーという話をします。

まだ今までの記事は簡単な事しかやっていませんが、これだけの道具でも結構色々なことがわかるんですよ。
ちなみに前回までの記事は株式投資カテゴリーにまとめてあります。
bananarian.hatenablog.com





とりあえず、前回やったRのquantmodパッケージを使って2000年以降の株価を取得してチャートで見てみます。
bananarian.hatenablog.com

library(quantmod)
getSymbols("9984",src="yahooj",from = "2000-01-01")
chartSeries(YJ9984)

次のようになりました。
f:id:bananarian:20180904192420p:plain

何やら2000年はじめの株価が急落していますね。この動きは明らかにおかしいのでググってみたところ、
どうやらこの時期にITバブルがはじけて、IT系企業の株価が急落したらしいです。この動きは明らかに特異な動きであり、これを今回使う統計分析に利用しようとすると、バイアスがかかるのでこのあたりのデータは使わないことにします。

※どういうバイアスがかかるかは後述



というわけで2004年以降のデータを使うことにします。

getSymbols("9984",src="yahooj",from = "2004-01-01")
chartSeries(YJ9984)

f:id:bananarian:20180904192627p:plain



まず、Rで調整済み株価の部分だけをとりだします。

data=as.data.frame(YJ9984)
adj_stock_price=data[,6]


今回はリターンの分析をしたいので、各期のリターンを計算します。この時に便利なRの関数にdiff関数があります。

return=diff(adj_stock_price)/adj_stock_price[-length(adj_stock_price)]


以前までの話であればリターンは確率変数と仮定するわけでした。

しかし、少し確率論に詳しい人であれば
「どんな確率変数なの??」
と疑問に思うはずです。


そこで今回は独立に同一な分布に従う確率変数(i.i.d.r.v.)であるという仮定を置きます。

※ITバブルのデータを省いた理由はここにあって、ITバブル時期のデータは明らかに平常時とは異常な状況であり、同一な分布であるという仮定に反します。


それでは、分布の状態を確認してみましょう。

mean(return)
sd(return)
hist(return)

f:id:bananarian:20180904194239p:plain
f:id:bananarian:20180904194247p:plain
微妙にプラスの方向に寄っていますね。四分位点も確認してみます。

quantile(return)

f:id:bananarian:20180904194530p:plain


つまり、ヒストリカルな(過去に得られた)データは、微妙にプラスによった分布をしていることがわかります。また、よっぽど運悪くマイナスになったとしても、高々-3.5%であるということもわかりました。最も端の-20%が起こる確率はかなり低そうです。

※あくまでヒストリカルなデータに基づいた、平常時の話であることに注意しておいてください。何か大きなイベント(ITバブルや、新商品発表など)がある場合のことは保証していません。


しかし、これはあくまで、「過去のデータに基づいた話だから、将来はどうなるかわからない。」と思う人もいるかと思います。そこで次のようにモデルを仮定します。


リターンは独立同一に、正規分布に従っている


この仮定に対する検証はコルモゴロフスミルノルフ検定というノンパラメトリックな仮説検定を使うと便利です。

ks.test(x=return,y="pnorm",mean=mean(return),sd=sd(return))

f:id:bananarian:20180904195630p:plain


一応p値を見る限り棄却されていないので、正規分布に従っていると考えて良いという判断になります。
※コルモゴロフスミルノルフ検定はタイ(同率)を考慮した検定もあるのですが、Rのks.test関数はその方法は取っていないようで警告が出ています。ただ、内部でどういう処理をしているのかはわかりかねますが、とりあえずp値は出してくれているので、恐らくタイとなったデータのどちらか一方を省いて出力しているんだと思います。まあそれなら別に問題ないのでこの検定を信用して先に進もうと思います。

※もう一つ注意は、コルモゴロフスミルノルフ検定はノンパラメトリックな検定であるので、サンプルサイズが重要になります。今回は3600近いデータを使っているので、とりあえず使用してみました。


真のリターンの分布が正規分布に従っていると考えて、改めて四分位点を取ってみましょう。

sim=rnorm(1000000,mean=mean(return),sd=sd(return))
quantile(sim)

f:id:bananarian:20180904200413p:plain

先ほどよりも起こりうる値の範囲は広いですが、リスク評価に関してはほぼ関係ありませんでしたね。
微妙にプラスによった分布をしていることはかわりませんし、よっぽど運悪くマイナスになったとすると-3.5%ほどのマイナスが出ると思われます。一番端の部分で28%の損失がありますが、ここが起こる確率はかなり低そうです。


一応5%点も見ておきましょうか。

quantile(sim,c(0,0.05,0.5,0.95,1))

f:id:bananarian:20180904202052p:plain

つまり、損失9%は、確率的にはかなり出にくい数字であり、もしこの値が出たとすると、市場に何かしら変化があった恐れがあると考えるべきです。

まとめ

以上より、ソフトバンク株のリターンの性質及び戦略をまとめると次のようになります。


・期待値としては僅かにプラスであり、大きく分散しているわけではないので、長期投資する価値はある。


・もし、短期投資をした際の損失を見積もるのであれば、1日辺りの損失として、投資額に対して3%から4%の損失を見積もっておくとよい。


・また、1日で20%以上の大損失が発生した場合、統計的にはほぼ出ない数字であるため、事前に行っていた独立同一の仮定が崩れたと判断すべきです。すなわち、何か市場構造に悪い変化があった(ITバブルかもしれない)恐れがあるので早急に手仕舞いして撤退すべきという戦略を立てておきます。


・更にあまり損失を出したくない人ならば、5%点の時点で、何かしらの悪い市場変化があったと考え撤退すべきという戦略も立てられます。つまり、今回であれば1日で9%以上の大損失が発生した場合はとりあえず撤退しておくということになりますね。



というわけで、基本的に今まで過去に記事で書いた内容しか使っていませんが、結構しっかりした戦略が立てられましたね。
もう少し投資理論・統計を学べば、より実践的な分析を行うことが出来ます。

それについては、また以降の記事で少しずつ書いていこうと思います。

おまけ

リターンのヒストグラムとシミュレーションのヒストグラムを重ねて描いてみます。

sim=rnorm(length(return),mean=mean(return),sd=sd(return))
hist(return, col = "#ff00ff40", border = "#ff00ff", breaks = 20)
hist(sim, col = "#0000ff40", border = "#0000ff", breaks = 20, add = TRUE)

f:id:bananarian:20180904235344p:plain