バイナリーオプション

自動取引とは

自動取引とは
self.client = Client(API_KEY, API_SECRET)

Pythonでゼロ(?)から始める自動取引

まず、最初にデータを準備する必要があります。為替レートや株価などは様々なsiteで公開されていますが、一旦 download したり、少々手間ですよね。python library 自動取引とは の1つである、pandas_datareader を利用すると、簡単に様々なデータソースから過去のチャートの情報を取得することができます。例えば、Apple の株価を2010/4/1から2021/3/31まで取得するには、以下のようにします。(以下、サンプル・コードは、Google Colaboratory や Jupyter Lab へコピペするだけで動かすことができます)
Yahoo の data source を利用すると、指定した期間の日毎の高値、安値、始値、終値、出来高、調整後終値が pandas library の DataFrameとして取得できます。pandas とは python のデータ分析で不可欠な library で、様々なデータの確認・集計や可視化が簡単にできます。


ただ、default のままでは文字が小さかったりするので(個人の好みもあるとは思いますが)自動取引とは 、seaborn library を import として色々と option を変えてみるのも良いですね。

また、plotly という library を利用すると 自動取引とは interactive なグラフを作ってグリグリと動かしながらデータを分析できます。

上の例ではAppleの株価を取得しましたが、他にも様々なデータが取得できます。例えば、Goldman Sachsの株価とか(これをあとで使います)

株価だけでなく、ドル円の為替レート

30年ぶりに3万円台まで回復した日経225とか
自動取引とは
などなど、多様なチャートのデータを手軽に入手できます。

取引戦略を実装してみる

以下のコードは、SMA_SとSMA_Lの大小を比較して position を +1 or -1 を選択し、その strategy に応じて return を得ます。なお、投資戦略に未来のデータが混ざらないように注意しましょう。(以下のコードでは対数収益率 自動取引とは r_t = \ln [ p_/p_t ] \end" /> を元に収益を評価します。これは1ステップ後の時刻での価値の増加率に対応し、strategy として position を short にとっているならば、マイナス1を掛けているので元の資産が減少=資産の増加になります。)
さて、実際に試してみましょう。

するとこのように Goldman Sachs 株価のトレンドに応じて自動的にposition を long (+1) か short (-1) に 取り直す戦略で取引がなされました。この取引戦略による収益 の時系列 は以下のようにlong し続けた場合(緑の線)とこの戦略を取った場合(オレンジの線)の対数収益率の累積として 計算できます 。2018年末の株価が下がる際にタイミングよく position を取り替えたために収益が得られました。
具体的な数値は上で計算できます。単純に株を保持していた場合の1.24と比べて、この移動平均による position 管理により、1.83とより多くの収益が得られました。

長期・短期の移動平均の組み合わせ毎のパフォーマンスを比較して、より良い設定を探索してみます。

表だけではパフォーマンス(strategy – market の差)が把握しにくいので、以下のようにheatmapで見てみるのも良いですね。

長期としては80日前後、短期としては20~25日がパフォーマンスが良さそうです。この組み合わせでは 短期25日, 長期80日がベストです。


しかし、この結果は要注意です。今回の訓練データの範囲で最適化されており、別の期間での検証して性能評価をするべきです。実際にこの戦略を他の期間で実施してみると以下のようにそれほど高い性能が出ていない事がわかります。

バックテストツールを使ってみる

以上は実際に、python でゼロ(?)からアルゴリズム・トレードのデモをしましたが、すでに様々な library や専門のツールが公開されていますので、それを使って実践してみたいと思います。
既に別の blog の記事で高機能な vnpy というツールが紹介されていますが、ここでは、backtesting ( https://kernc.github.io/backtesting.py/ ) を紹介します。(Google Colaboratoryなどでは、!pip install backtesting でinstallできます)あまり複雑な機能はありませんが、シンプルで判りやすく、結果の可視化が便利です。

まず、先ほど紹介した2つの移動平均線を元に取引する戦略を実装します。これは Strategy class を用いて先ほどの取引ルール
長期・短期移動平均がクロスする際に 自動取引とは position を close し、long または short の position を取り直す
は以下のコードできます。
自動取引とは
投資戦略を実装したら、データを読み込み以下のようにバックテストを実施します。
ここで結果のレポートが詳細に表示され、収益やトレードの勝率など結果について様々な情報がわかります。


また、トレードの状況についても以下の様に表示され大変わかりやすいです。上から Equity、Profit & Loss、株価と各種指標、そして取引量の時系列がプロットされています。これらのグラフは一部を選択したり拡大したりできとても便利です。


さて、移動平均の期間などのパラメータの最適化も、以下のように探索範囲や条件、何を最大化(今回は Equity Final)するなど指定し投資戦略を探すことができます。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる