【R言語】変化率(株価収益率)の計算

 

今回はRによる変化率(株価収益率)の計算を行っていきたいと思います。

 

 

・使うデータ

2005年から2016年までの任天堂の株価の終値

 

 

>Close
2005-01-04 12980
2005-01-05 12930
2005-01-06 12580

2016-11-28 27970

2016-11-29 27990
2016-11-30 27775

 

f:id:oruka199665:20170328185620j:plain

 

 

株価データの取得とデータフレームのxts変換のやり方は↓の記事で紹介しています。

www.dmjtmj-stock.com

 

 

今回は株価データをts.nintenというオブジェクトの中に保存しています。そして、今回のテーマである株価収益率(変化率)の計算を行っていきます。

 

 

変化率の定義は(Xn-Xn-1)/Xn-1 ×100で表されますが、実際には対数変換してから行った方が数値の幅が狭くなり描画したときに見やすくなります。

 

 

www.dmjtmj-stock.com

 

 

要するに、(今日の値ー前日の値)を今日の数値で割って % で表しているだけです。Rで時系列オブジェクトの差をとる場合は、 階差を計算してくれるdiff( )関数と、n期をずらしたラグ(lag)を計算する lag( ) 関数を用います。今回は前日と比較した1日の変化なので階差を計算するdiff関数を使用します。

 

 

> r.ninten<-diff(log(ts.ninten))*100  ##株価収益率を計算する

>任意のオブジェクト<-diff(log(株価のオブジェクト))*100

 

収益率を計算し終わったら次は先頭に出てくるNA(欠損値)を削除します。

 

> r.ninten<-r.ninten[!is.na(r.ninten)]  ##先頭のNaを削除

 

するとこんな感じに計算できます。

 

f:id:oruka199665:20170328191801j:plain

 

 

次にこの株価収益率を描画していきます

 

>plot(r.ninten)

 

f:id:oruka199665:20170328191847p:plain

 

ちなみにヒストグラムで描写するとこうなります。

 

 

> hist(r.ninten, breaks=seq(-20,30,0.05))

 

f:id:oruka199665:20170328193615p:plain

 

正規分布に近い形になりますし、株価収益率を正規近似して計算することに一定の有用性はあるように感じます。(ちょっと裾が広いのが気になりますが・・・)

 

 

・まとめ

 

Rで変化率を計算する際はdiff関数とlag関数を使う。また変化率の数値の幅がとんでもないことになるときは、対数に変換して数値幅を小さくするとplotやhistで描画した時に見やすいグラフになる。

 

 

時系列分析については、この本がとても分かりやすかったので、もし時系列分析で詰まっている人・しっかり勉強したいと考えている人は是非一度読んでみてください。

 

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする