株初心者が本気で儲けるブログ

株式投資・仮想通貨に関連するテーマについて取り扱ってます。

【R言語】 quantmodパッケージによるトレーディングシュミレーション

 

 

前回:【R言語】 quantmodパッケージの基本的な使い方 

 

 

 quantmodの基本的な操作を紹介したところで次は、トレーディングシュミレーションをやっていきます。(quantmodはインストールしている前提で進めます。)

 

パッケージの読み込み

>library(quantmod)

 

 

まず分析に使う株価データを取得します。やり方は下の記事で紹介しています。

 

【R言語】 Yahoo!ファイナンスから株価データを取得する方法 その2 

 

使うデータはなんでもいいのですが、手元にvitaがあったのでソニーのデータでやってみます。

 

 > head(sony2)
Open High Low Close Volume Adjusted
2005-01-04 3970 4000 3960 3990 4562200 3990
2005-01-05 3980 4000 3970 3990 3971400 3990
2005-01-06 3970 3980 3950 3960 2257300 3960
2005-01-07 3990 4050 3980 4020 7471200 4020
2005-01-11 4050 4090 4040 4060 6872800 4060
2005-01-12 4050 4060 4020 4030 3730100 4030

 

データはなんでもいいですがデータの種類はxts形式じゃないとできないので、あらかじめ確認してください。エクセル形式で落として読み込んだ株価データはデータフレームなので、新しいオブジェクト<-as.xts()で変換しときましょう。したらclassで確認します。

 

> class(sony2)
[1] "xts" "zoo"

 

次はトレードの指標の作成します。元からrsiを自動で計算にしてくれる関数があるので、とりあえずRSIでやります。指標の弄り方は別の記事で紹介します。RSIとはなんぞや?という方は下の記事でざっくり説明しています。

 

 

 RSI()関数で簡単に計算にしてくれます。期間はデフォルトでたぶん14日、引数で設定日数は弄れます。

 

 ⇨【テクニカル分析】 RSIの分かりやすい説明

 

 

rsi <- RSI(sony2[, 4])

 

 

そして、トレーディング戦略を設定します。

 

signal<- Lag(ifelse(rsi >= 50, 1, -1)   ##RSIが50%以上なら”買い”、それ未満なら"売り"

 

 

最後に設定したトレーディングルールによるリターン計算と、そのパフォーマンスをグラフにプロットします。

 

ret <- ROC(sony2[, 4])*sig

 

 

パフォーマンスの計算期間は設定しないと、infでエラーが返されるので指定しときましょう。

 

ret <- ret['2005-01-02/2016-01-07']

ruturn <- cumprod(1+ret)

plot(ruturn)

 

 

f:id:oruka199665:20170108035632j:plain

 

そして、PerformanceAnalyticsパッケージでトレード戦略の累計パフォーマンス評価ができます。

 

PerformanceAnalyticsパッケージのインストールと読み込み

> install.packages("PerformanceAnalytics")

> library(PerformanceAnalytics)

 

 

table.Drawdowns関数ドローダウン(下落率)をまとめてくれます。(もし資産がある時点で10万で、ドローダウンが10%となっているときは、一時的に資産が9万まで減少したということになります。)

 

>table.Drawdowns(ret, top=30)

 

 

table.DownsideRisk()関数で、ダウンサイドリスク(損失を受ける可能性)推定の表を作ってくれます。

 

>table.DownsideRisk(ret)

 

 

f:id:oruka199665:20170108040253j:plain

 

>charts.PerformanceSummary(ret)

 

 

f:id:oruka199665:20170108040502j:plain

 

ずっとマイナスのクッソみたいなリターンをたたき出していますね(笑)

まあRSIを0.5にしているので当然なのですが・・・RSIは指標自体は簡単に計算できて分かりやすいのですが、使い方は色々意見があるので難しいんですよね。。。RSIのこまかい話は気が向いたら記事にするかもです。

 

 

www.dmjtmj-stock.com

www.dmjtmj-stock.com

 

参考:http://d.hatena.ne.jp/teramonagi/20110329/1301352620

 

 

 

追記:quantmodパッケージや金融データの解析にはコチラのRとトレード 金融データ解析の基礎という本がとても参考になったので紹介しておきます。少々値段が張りますが、Rで金融データを分析するならば読んでおいて損はない参考書だと思います。