Python Ubuntu

pandasとmatplotlibで株式取引の可視化

投稿日:2017年11月26日 更新日:

可視化

前回、Python3で株式売買のシミュレーション〜pandasでは、ランダムで売買するよりも成績が悪かった.
その理由としては、いろいろ考えられる.
– エントリーの判断が正しくない
– 利益が確保できていない
– 株価は予測不可能だった

これらを確かめるには、まず、結果として出てきた平均値が、そのデータを本当に代表しているのか、その内容を確認してみる必要がある.
数値のデータをグラフにして可視化するのがその第一歩となる.

そこで、まず、売買シミュレーションをした期間の株価のグラフを描画して、これに利用した指標のグラフを重ねあわせる.
次に、実際のAIが取引したデータで取引した日と価格をグラフに書き加えたい.

下準備

csvデータとして保存

まず、csvデータとして保存することから、DataFrameインスタンスは、to_csvメソッドというメソッドでcsvファイルとして保存できる.
今回は次のようなデータを用意した.
score.csv

対象期間の株価データ

取引データ

pandasのplot

pythonでは、グラフ描画にはmatplotlibというライブラリのが一般的.
pandasでは、matplotlibをラッパーしたplotというメソッドが用意されている.

Pandasのplotの全引数を解説

jupyterでグラフ描画の準備

とりあえずヒストグラム

極端な数字の外れ値があると、平均値はデータを代表する値ではなくなる.
外れ値を見るには、ヒストグラムにしてみるのが手っ取り早い.

バーが離れてて気持ち悪いヒストグラムだけど、とりあえず大きな外れ値はなさそう.

サンプル数を1000件まで増やしてみると、だいたいこんな感じ.

とりあえずplotしてみる

なお、画像を保存するには、

とりあえず、x軸は日付、y軸はcloseだけでいいので、xyを指定する.

日本語タイトル指定

日本語表示にはフォントをまず指定する(ubuntuなのでタカオフォント)

そして、titleで指定

ほかの指標グラフも重ねあわせる

同じデータフレームなのでyをリストで指定してもいいけど、あとからグラフを重ねることもできる.
その場合、plotの返り値でaxオブジェクトが返ってくるので、オプションのaxで指定すればOK
alphaの指定は透明度
gridはグリッド線を表示するかどうか

matplotlibでsubplot

よくある株式チャートのように別のグラフで取引高やRSIを表示したい.
matplotlibのグラフは、Figureという描画領域の中に、複数のaxという座標軸を持つことができる.
(そのほかにグリッド上に複数の座標軸を配置できたり、座標で指定したところに座標軸をさらに指定したりすることもできる.)
ここでは、x軸を共通にする複数の座標軸を持つグラフを縦に3つ並べてみる.

matplotlib の figure(図) と axes(座標軸)-python

縦幅のバランスを整えたい.
1番目のaxは2分の1、3番目、4番目は4分の1

売買データをプロットする

時系列データは折れ線グラフであらわすのだけど、設定でマーカーを表示して、線を消せば、エントリーとイグジットのポイントを図示できる.
グリーンの+が買いのエントリ、*がイグジット.レッドの+が売のエントリ、*がイグジット.
Matplotlib.pyplotのplotの全引数を解説を参考にして、linestyle、marker、colorなどを設定する.

番外編 ローソク足チャート

ローソク足チャートは、今のところmatplotlib.financeにある.
将来的に、mpl_financeに移る予定というアナウンスがあるけど、mpl_financeのリポジトリにはもうメンテナンスしてないって書いてある.

candletick2_ohlcはx軸を指定できないので、別にx軸を指定しなければならない.
xticksでindexを5つおきに目盛にして、そのラベルをstrftimeで作成している.
参考: pythonのmatplotlib(とちょこっとpandas)でローソク足のチャートを書く

まとめて保存

大きな波で利益を確保できていない
損切りが多くてもいいから、大きな利益を取るようにしたい

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理書籍

作者Wes McKinney

クリエーター小林 儀匡, 鈴木 宏尚, 瀬戸山 雅人, 滝口 開資, 野上 大介

発行オライリージャパン

発売日2013年12月26日

カテゴリー大型本

ページ数474

ISBN4873116554

Supported by amazon Product Advertising API

-Python, Ubuntu
-, , ,

執筆者:

関連記事

Ubuntu Desktopで指紋認証〜Fingerprint GUI

By: Chris Costes – CC BY 2.0 目次1 Fingerprint GUI2 インストール3 指紋登録4 Done Fingerprint GUI launchpad …

no image

Ubuntu Server12.04にRedmine2.0.3をインストール

環境 Ubuntu Server12.04にrvmでrubyをインストール 目次1 準備2 MySQLを準備3 nginxのインストール4 Redmineのダウンロードと展開5 config/data …

Pythonではじめての機械学習~scikit-learn、tensorflow

By: krheesy – CC BY 2.0 目次1 機械学習2 scikit-learn3 tensorflow 機械学習 勉強しているところなので、間違っている箇所もあるかもしれませ …

Python3で株式売買のシミュレーション〜pandas

By: Michael Gwyther-Jones – CC BY 2.0 目次1 株式売買シミュレーション2 ファイルの構造3 pandas4 DataFrameの作成、構造5 csvか …

Ubuntu Server14.04にMediaWikiをインストール

By: Cambodia4kids.org Beth Kanter – CC BY 2.0 目次1 MediaWikiとは2 MariaDBのインストール3 PHP5.6のインストール4 …