2019-08-17

機械学習と株価

R の quantmod (Quantitative Financial Modelling Framework) パッケージは、クオンツ取引 (qualitative trading) [1] において、統計的手法に基づいた取引モデルの構築、検証および運用の支援ができるように提供されています [2] [3]。このパッケージの getSymbols() 関数を使うと、例えば Yahoo!ファイナンス のサイトから指定した証券コードの株価データを取得することができます。

株価予測に機械学習を応用

今年初めにこのパッケージを使ってみて、株価を大量に取得できることを知って大いに驚きました。これは機械学習の応用分野に最適だと考え、予測モデルを作ることに取り組むことにしました [4] [5]。手始めに以下のようなテーマを掲げました。

当日の株関連情報を用いて、翌日(次回)のソフトバンク株式会社 (9434.T) の始値を予測せよ。

ソフトバンクグループ (SBG) の国内通信子会社、ソフトバンク株式会社 (9434.T) に注目した理由は、昨年 12 月 19 日に東京証券取引所第1部に上場したからです [6]。これでデータの取得開始日を 2019-12-19 に設定することができました。当日株価を取得してデータベースに追加、データを学習させて次回の始値を予測するという R スクリプトを作成し、毎晩そのスクリプトを実行して予測パフォーマンスを評価していました。

私は平日のほとんどが出張でホテル暮らしです。会社から支給されたノート PC の他に、プライベートで使用する Linux をインストールしたノート PC も携行し、仕事から戻って毎晩、株価データを更新、翌日の始値の予測値を算出していました。しばらく続けると当然データが増えてくるので、それだけ毎日の学習データが増えます。計算に時間がかかるようになりましたが、その分、予測トレンドがもっともらしくなってきました。

スクリプトのアプリ化

そろそろ手作業でやっている部分を自動化したいと思うようになり、R の Shiny パッケージを使って Web のアプリ化に取りかかり始めたのが先月のことです。今週一週間、夏休みにすることができたので、じっくり手を入れてひとまず使えそうな UI に仕上げる事ができました(下図)。

 stock-explorer 0.2 の実行例 

簡単な売買シミュレーション

予測パフォーマンスを眺めているだけでは飽きますので、簡単な投資シミュレーションの機能を付けてみました。予測モデルの精度が高いことはもちろん望ましいことですが、それだけでは投資ができないので、次のテーマに進むことにしたわけです。

とりあえず想定上 100 万円を元手に 2019 年 2 月 1 日に対象銘柄の株を 100 株単位で買えるだけ買って、そこから売買のシミュレーションをしています。証券会社に支払う手数料や税金はまだ考慮していません。

現在の売買基準は、予測した次の取引の始値が購入価格より高ければ売却し、本日の始値より安ければ(買えるだけ)購入するという保守的でシンプルなものです。投機的攻めの売買基準ではないので取引頻度は低いのですが、幸い、シミュレーションでは対象としている銘柄はどれも利益を出しています。ただ、手数料などを考慮に入れれば、利益は小遣い程度にしかならないでしょう。いまのところ、実現可能な投資資金をターゲットにして、アルゴリズムに工夫を加えて利益を高めるためのシミュレーションを重ねます。単一銘柄への投資方法がある程度固まったら、(同一の資金で)複数銘柄を扱うシミュレーションができるようにしたいです。

環境の整備

この夏休みに向けて、家庭内 LAN につなげて常時稼動させるサーバーを導入しようとあれこれ品定めをしていたのですが、ぴったりな PC が Amazon.jp にあったので 8 月に入って早々に買ってしまいました [7] [8]。8 月になったら CentOS 8 の RC (Release Cendidate) 版が公開されるだろうと踏んでいて、この新しいサーバーにインストールしようと思っていました。しかし予測が外れてしまったので、現行の CentOS 7 をインストールして使い始めています。

このサーバーの用途のひとつに、本件の株価データ更新分および翌日の始値の予測値の自動算出があります。crontab コマンドで毎日午後 8 時(後に午後 7 時に変更)に更新用のプログラムを起動するように設定して、この一週間(と言っても 4 日しかありませんでしたが)問題なく動作することを確認しました [9]

今後

現在、このアプリ (stock-explore) はバージョン 0.2 です。まだまだ先の話ですが、誰でも使えるように汎用化を進めて、正式リリース (1.0) の目処が立って、需要がありそうだと見込めれば github に公開したいなあと思っています。

参考サイト

  1. 【WSJで学ぶ経済英語】第280回 クオンツ投資 - WSJ
  2. quantmod: Quantitative Financial Modelling Framework
  3. CRAN - Package quantmod
  4. bitWalk's: Rで株価を扱う 〜 quantmod パッケージ [2019-01-16]
  5. bitWalk's: Rで株価を扱う 〜 始値を予測してみた [2019-02-03]
  6. ソフトバンク上場、終値1282円 公開価格を15%下回る:日本経済新聞 [2018-12-19]
  7. bitWalk's: Skynew m2s (1) [2019-08-03]
  8. bitWalk's: Skynew m2s (2) [2019-08-04]
  9. bitWalk's: crontab を使う [2019-08-15]

一番左は、R のパッケージ Shiny について書かれた邦書の入門書が少ない中で書かれた意欲的な著作です。しかし、実際に買って読んでみると Shiny について体系的にまとめるにはページ数が足りなかったという印象を持ちます。もし英文を読むのが苦でなければ、残り三冊の中から何冊かを副読本として読むことをオススメします。

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

0 件のコメント: