機械学習で株価予測(Backtraderでバックテスト調査)

中国・武漢で発生した「新型コロナウイルス(新型肺炎)」が、世界に拡散中です。

これにより投資家心理を圧迫し、アジアの主な株式市場が春節(旧正月)で休場となり商いが薄いなか、日本株のヘッジ売りが目立つ状況です(483円安)。

会社の取引先の社員もコロナウイルスに感染したらしく、社内でもマスク人口が拡大しています。

 

 

Pythonのバックテストライブラリ「Backtrader」は開発・コミュニティも活発で自由度も高そうです。

ですが、海外含めてマトモにストラテジー組んで運用している人は少ないのでは?

と思うほどサンプルを超えた情報が少ないです。

FX用なのか、ショート・ロング、pipsなどの情報もあり、複数銘柄売買もよく分かりません。

まず知りたいのは、次の機能です。

  • 機械学習済のデータのバックテストが可能か?

加えて、バックテスト結果を見るために大事なのは、

「Protraレベルの分析機能を持っているのか?」

だと思ってます。

  • バックテスト結果の各種計算算出
  • 複数銘柄にまたがるバックテスト
  • 市場全体の傾向指標の追加(騰落レシオ等)
  • 空売りや指値買い
  • 単利計算、複利計算

この辺りを調査するために、Backtraderを利用してみます。

ただし、のめり込むと目的(学習データの利益確認)と施策(Backtraderの理解)が変わってしまうので注意です。

※ 私はFFS理論のD因子(拡散型)タイプ

sklearnの学習データの保存&ロード

今回は学習済みのモデルを利用する方法の一つとして pickle を扱い方を調べてみます。

学習済みモデルを保存する

30MB程度のファイルが出来ました。

別のバージョンの Python からも読み込むことが考えられるときは protocol オプションに 2 を指定します。

これでPython 2.3 以降であれば保存したモデルを復元できるようになります。

学習済みモデルをロードする

ロードも簡単です。

実際にロードした学習データで計算可能な事が確認できました。

Backtraderでpickleの利用方法

・・・。

調べてもサンプルがありません。

Backtraderの売買方法を完全に理解すれば可能だと思いますが・・・目的と施策が変わってしまう・・・。

Backtraderで複数銘柄の扱い方

可能なようです。

bactrader_sample.pyを見る限り、銘柄数読み込んで「cerebro.adddata」に渡しているように見えます。

ただ、読み込んだ銘柄数だけグラフ表示が別になります。

Multi Exampleでは、フォルダ内のCSVを読み込んで利用する方法が書かれています。

結構、面倒なんだね。

Backtraderを使った学習データ利用

ドキュメントは下記にあります。

Analyzers Reference - Backtrader
python backtesting trading algotrading algorithmic quant quantitative analysis

が、説明が少なくて何の数値が算出されているのか分かりにくいです。

Protra風に出力する

とりあえずやってみました。

結果は次のようになります。

まだ知識が乏しいので合っているかどうか分かりません。

が、なんかやり切った感です。

まとめ

出力結果がProtraっぽくなりました。

 

 

よし、じゃあ三点チャージ法作ったり、今までのストラテジー移植方法でも調べるか!

 

 

と、売買部分を調査し始めて気づきました。
 

 

肝心の「機械学習の結果を用いたバックテスト」が分かっていない・・・

 

 

この施策だと目的達成には遠そうな気がします。

・・・

本質を見失わないようにしよう。 

うん、そうだ!

よく気づいた自分!
 

 

・・・で、更に上位の目的は何だっけ?
 

 

さらに、機械学習で株価予想するのは何のためだっけ?
 

 

そもそも、株価予想は何のためだっけ?
 

 
あれ??

ソースコード

タイトルとURLをコピーしました