株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

手数料の導入 ◆ Backtrader 最初の戦略その8

前回の振り返り

前回は Jupyter を導入して、作業の効率化を図った。

how-to-make-stock-trading-system.dogwood008.com

今回の内容

今回は、株取引に避けては通れない、手数料の計算を導入する。

変更内容

今回の変更内容を下記に記す。行数としては少ないが、変更を加える手順が前々回までと異なっているので、続けて説明する。

(前略)
if __name__ == '__main__':
(中略)
    # Add the Data Feed to Cerebro
    cerebro.adddata(data)

    # Set our desired cash start
    cerebro.broker.setcash(100000.0)

+   # 簡単にするため、
+   # 手数料を購入・手仕舞い額の 3.98% にする
+   # (auカブコム証券、制度信用1日分に相当)
+   cerebro.broker.setcommission(commission=0.0398)

変更方法

まず、 docker-compose up で Jupyter Notebook を起動して、表示されたURLにアクセスする。

$ docker-compose up
(中略)
app_1  |      or http://127.0.0.1:8888/?token=fb737(中略)f1eda

次に、前回作成したファイルを開く。ここでは、 main.ipynb という名前を付けておいたので、それを開く。

main.ipynb
main.ipynb

下記の通り、今回の変更内容を挿入する。

変更を加えた部分
変更を加えた部分

あとは昨日同様、 CellRun All でグラフを出力する。

Cell → Run All
CellRun All

実行結果

手数料無しの場合

今回の実行結果を見る前に、前回までの実行結果を見てみよう。下記の図がそれである。このバックテストでは、最初の現金を 100,000 から始めており、バックテスト後の評価額を一見すると、儲かっているように見える。

手数料無しの場合
手数料無しの場合

手数料有り(3.98%)の場合

次に、手数料有りの場合を見てみよう。評価額が大幅に減っていることがわかるだろうか。どうやら、このストラテジーは、取引毎に課される手数料を 3.98% 取られると、利益をだせないようである。

手数料有り(3.98%)の場合
手数料有り(3.98%)の場合

手数料有り(0.3%)の場合

最後に、手数料が 0.3% の場合を見てみよう。下記のものがそれである。これ位の手数料率でやっと利益が出るくらいであることがわかるだろうか。

手数料有り(0.3%)の場合
手数料有り(0.3%)の場合

高頻度取引は手数料との闘い

もしあなたが作ろうとしている取引アルゴリズムが、例えばデイトレードのように高頻度に取引を行うものならば、如何に手数料を抑えるかが肝になってくるだろう。

「1日の総約定代金」に対して手数料が課され、かつ一定金額までは無料という証券会社1もある。これらの証券会社をいくつか契約し、口座に資金を分散して投入しておき、手数料が無料になる上限まで注文が通ったら、その後は次の証券会社へ注文を出す、といったようなことが理論上は可能である。高頻度取引を行う人は、こういった手数料を抑えるための対策を検討しても良いかもしれない。

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.