2020-04-04

R の quantmod パッケージと Yahoo! Japan

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")
ソフトバンクグループ (9984.T) の株価チャート作成例

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 を読み込めない問題は改善しません。なにか他のパッケージに問題がありそうですが、よくわかりませんでした。

参考サイト

  1. quantmod: Quantitative Financial Modelling Framework
  2. bitWalk's: 機械学習と株価
  3. bitwalk123/stock-explorer: prediction for tomorrow's open price of specific stock

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: