R の quantmod (Quantitative Financial Modelling Framework) パッケージは、クオンツ取引 (qualitative trading) において、統計的手法に基づいた取引モデルの構築、検証および運用の支援ができるように提供されています [1]。
株価予測に機械学習を応用
本ブログの以前の記事 [2] などで、 このパッケージの getSymbols() 関数を使うと、Yahoo!ファイナンス のサイトから指定した証券コードの株価データを取得することができると紹介しました。自分も廉価なファンレスのミニ PC を買って、cron で日々の株価情報の取得をして、機械学習を応用した予測プログラムを実験的に稼働させていました。
ところが、3 月 19 日を最後にデータの更新が止まってしまいました。R を起動、quantmod パッケージをロードして getSymbols() を試してみるも、下記のように内部関数 getSymbols.yahooj() でエラーが出ていて読み込みません。
> library(quantmod) 要求されたパッケージ xts をロード中です 要求されたパッケージ zoo をロード中です 次のパッケージを付け加えます: ‘zoo’ 以下のオブジェクトは ‘package:base’ からマスクされています: as.Date, as.Date.numeric 要求されたパッケージ TTR をロード中です Version 0.4-0 included new data defaults. See ?getSymbols. > getSymbols("9984.T", src = "yahooj") ‘getSymbols’ currently uses auto.assign=TRUE by default, but will use auto.assign=FALSE in 0.5-0. You will still be able to use ‘loadSymbols’ to automatically load data. getOption("getSymbols.env") and getOption("getSymbols.auto.assign") will still be checked for alternate defaults. This message is shown once per session and may be disabled by setting options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details. getSymbols.yahooj(Symbols = "9984.T", env =, verbose = FALSE, でエラー: Unable to import “9984.T”. XML content does not seem to be XML: '1' >
quantmod パッケージのバージョンの問題かもしれないと、ダウングレードして試しましたがうまくいきませんでした。もしかして Yahoo! Japan のサービスが無くなった!? 少々自棄になって R から Python に切り替えてアプリケーションを作り直し始めたのですが、Python では Yahoo! Japan ではなく、US の Yahoo! から株価データを取得していることから、もしかすると R でもデータを取れるかもしれないと考えて試したところ、ちゃんとできました。
> tmp <- getSymbols("9984.T", src = "yahoo", auto.assign = FALSE) 警告メッセージ: 9984.T contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx( ), na.fill(), etc to remove or replace them. > tmp 9984.T.Open 9984.T.High 9984.T.Low 9984.T.Close 9984.T.Volume 2007-01-04 1192.500 1222.500 1180.000 1220.00 41067400 2007-01-05 1210.000 1247.500 1207.500 1245.00 57432400 2007-01-09 1247.500 1252.500 1225.000 1237.50 33023400 2007-01-10 1247.500 1275.000 1237.500 1242.50 75507600 2007-01-11 1247.500 1257.500 1227.500 1242.50 29319000 ... (以下省略) > chartSeries(tmp, theme="white")
Yahoo! Japan (yahooj) では日経平均株価のコードが 998407.O であったのに対し、Yahoo! (yahoo) では ^N225 になるなど若干の違いがありますので、その部分を対応させればあとは変更なしにアプリケーションを動かせそうです。
現行の quantmod パッケージのバージョンは 0.4-17 ですが、古いバージョン 0.4-15 がインストールされている環境があったので、yahooj からデータを読み出せるか確認したところ、普通にデータをダウンロードできました。Yahoo! Japan のサービスが止まってしまったというわけではなさそうです。
R のパッケージ全体を更新して quantmod パッケージのバージョンを 0.4-17 にすると、yahooj のデータを読み込めない問題が発生し、quantmod パッケージだけバージョンを 0.4-15 にダウングレードしても、yahooj を読み込めない問題は改善しません。なにか他のパッケージに問題がありそうですが、よくわかりませんでした。
参考サイト
- quantmod: Quantitative Financial Modelling Framework
- bitWalk's: 機械学習と株価
- bitwalk123/stock-explorer: prediction for tomorrow's open price of specific stock
にほんブログ村
0 件のコメント:
コメントを投稿