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

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

backtrader

戦略:前日比x%以下で買い、前日比y%以上で売り その12 アナライザの使用

昨日の記事で、 `backtrader.Analyzer` を使えば、バックテストの結果を解析することができそうだという技術メモを残した。今日はそれを実際に使っていく。試しに「ドローダウン」と「年次リターン」を表示するように変更する。

技術メモ:backtrader.Analyzerの使い道

昨日の記事で、 Analyzer を使用すればシャープレシオを計測できると書いた。 www.backtrader.com さらにドキュメントを読み進めると、 backtrader.analyzers.SharpeRatio を使用して、シャープレシオの計測を行っていることがわかった。つまり、自分が算出…

戦略:前日比x%以下で買い、前日比y%以上で売り その11 微修正・注文量の調整

昨日の記事に一部誤りがあったので修正する。 how-to-make-stock-trading-system.dogwood008.com ログ出力用の部分で FIXME が残っていたので、それを下記の通り修正したのみ。 price=open_today, unit=size, open_today=open_today, close_yesterday=close_…

戦略:前日比x%以下で買い、前日比y%以上で売り その10 真・注文量の調整

昨日の記事を受けて、動くものを作り直した。 how-to-make-stock-trading-system.dogwood008.com 必要な部分のみ抜粋し、その内容を下記の通り掲載する。 (前略) def _size(self, unit_price: float, is_buy: bool) -> Optional[int]: ''' Params --------…

戦略:前日比x%以下で買い、前日比y%以上で売り その9 注文量の調整

昨日の記事で、一旦戦略は完成したものの、注文量の調整については未着手だった。 how-to-make-stock-trading-system.dogwood008.com そこで bt.Sizer を使用して注文量の調整を行う為、下記を参考に実装していた。 www.backtrader.com しかし、結果として、…

戦略:前日比x%以下で買い、前日比y%以上で売り その8 一旦完成

バックテスト用の戦略1個目が(一旦)完成しました。ライセンスをGPLにして配付しているので、誰でも無料で閲覧できます。

戦略:前日比x%以下で買い、前日比y%以上で売り その7

昨日に引き続き、公式のドキュメントで怪しいと思った部分を翻訳していく。 how-to-make-stock-trading-system.dogwood008.com <原文> The current data has already happened and cannot be used to execcute an order. If the logic in the strategy is …

戦略:前日比x%以下で買い、前日比y%以上で売り その6

下記は前回までの記事。 how-to-make-stock-trading-system.dogwood008.com 注文が通らない理由が、だんだんわかってきた気がする。 www.backtrader.com The current data has already happened and cannot be used to execcute an order. If the logic in t…

戦略:前日比x%以下で買い、前日比y%以上で売り その5

上記は昨日の記事。引き続きうまく注文が通らないので、アタックしている。 にっちもさっちもいかないので、一旦与えているパラメータに誤りが無いかを見直すことにする。 下記は buy() に渡すパラメータのうち、 exectype のものを抜粋したものである。 exe…

戦略:前日比x%以下で買い、前日比y%以上で売り その4

前回の記事は下記の通り。 how-to-make-stock-trading-system.dogwood008.com しかし、注文が依然として通らない。困った。 下記はbacktraderから出力されたログである。 [DEBUG] 2020-11-18, Expired: Buy ¥xxx,100 (@xxx1.00 * 100) ←前日の注文が有効期限…

戦略:前日比x%以下で買い、前日比y%以上で売り その3

昨日に引き続き戦略を作成していく。但し未だ完成していないので途中経過を添付する。 how-to-make-stock-trading-system.dogwood008.com import backtrader as bt from logging import getLogger, StreamHandler, Formatter, DEBUG, INFO if USE_BOKEH: fro…

Backtrader で KABU+ のデータを読めるようにする その5

昨日は元の呼び出し部分をそのままコピーしてきて、 KabuPlusJPCSVData クラスに再実装することで、確かにそのメソッド内で失敗することを確認した。 how-to-make-stock-trading-system.dogwood008.com 今日以降はそれを受けて、実際に呼び出し部で失敗しな…

Backtrader で KABU+ のデータを読めるようにする その4

昨日の記事では転けている箇所とその行数、およびその行が所属するメソッドを特定した。 how-to-make-stock-trading-system.dogwood008.com 今回は、標準で bt.feeds.YahooFinanceCSVData に用意されているパーサである _loadline() メソッドを上書きするた…

Backtrader で KABU+ のデータを読めるようにする その3

昨日は、どの辺で転けているかの特定を行った。 how-to-make-stock-trading-system.dogwood008.com 具体的には、 h = float(linetokens[next(i)]) で転けている。 /usr/local/lib/python3.6/dist-packages/backtrader/feeds/yahoo.py in _loadline(self, lin…

技術メモ - KABU+で取得したCSVファイルをbacktraderで使う

bt.feeds にCSVファイルでインポートするためのクラスが揃っている。その中でも、米Yahoo!用の be.feeds.YahooFinanceCSVData をオーバライドして使えば、独自の外部CSVファイルの取り込みができるようになりそう。 github.com

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

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

グラフに単純移動平均 (SMA) を追加する (変更内容PRの紹介) ◆ Backtrader 最初の戦略その6.1

概要 下記の記事で変更した内容を、GitHubのPRにまとめたので、参考にしてほしい。 https://how-to-make-stock-trading-system.dogwood008.com/entry/backtrader-output-chart-smahow-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com

グラフに単純移動平均 (SMA) を追加する ◆ Backtrader 最初の戦略その6

前回の振り返り 今回の内容 単純移動平均 (Simple Moving Average; SMA)とは? main.py を変更 前回の振り返り 前回は、バックテストの結果をグラフとして出力した。 how-to-make-stock-trading-system.dogwood008.com how-to-make-stock-trading-system.dog…

バックテストの結果を出力する(変更内容PRの紹介) ◆ Backtrader 最初の戦略その5.1

概要 下記の記事で修正した内容を、GitHubのPRにまとめたので、参考にしてほしい。 how-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com サンプル 実際にこのPRに沿ってグラフを出力すると、下記のようなものになる。 how-to-make-stock…

バックテスト中に手仕舞いする(変更内容PRの紹介) ◆ Backtrader 最初の戦略その4.2

概要 下記の2記事で修正した内容を、GitHubのPRにまとめたので、参考にしてほしい。 how-to-make-stock-trading-system.dogwood008.com how-to-make-stock-trading-system.dogwood008.com GitHubのPR github.com

バックテストの結果を出力する ◆ Backtrader 最初の戦略その5

前回の振り返り 今回の内容 main.py の変更 Photo by Lorenzo from Pexels 前回の振り返り 前回は手仕舞いするためのコードを紹介した。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 今回は、一連のバックテストの結果をグラフとして出力す…

バックテスト中に手仕舞いする ◆ Backtrader 最初の戦略その4.1

前回の振り返りと今回の内容 main.py の修正 next() の修正内容 Photo by Chris Ried on Unsplash 前回の振り返りと今回の内容 この記事は、下記記事の続きの記事である。手仕舞い戦略の部分の説明を追加する。 how-to-make-stock-trading-system.dogwood008…

backtrader-plotting: Backtraderのグラフを綺麗に描画してくれるライブラリ

Backtrader の標準の機能で出力できるグラフは、2種類ある。PNGの静止画として出力するか、Jupyter等で対話的に出力することでインタラクティブなグラフとして出力するかである。 しかし、後者の場合、ファイルとして保存することがやや難しい。 backtrader-…

バックテスト中に手仕舞いする ◆ Backtrader 最初の戦略その4.0

前回の振り返り 前回は、株式を買うことで建玉を作った。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 建玉を手仕舞い(売る)ことで、含み益または含み損を確定させる。また、どのようなタイミングで売買しているかをグラフにプロットする…

バックテスト中に買い建玉を作成する ◆ Backtrader 最初の戦略その3

前回の振り返り 今回の内容 変更差分 Photo by Jason Leung on Unsplash 前回の振り返り 前回は、ログレベルに応じたログ出力をできるように改造した。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 今回は、簡単なロジックに基づいて、バッ…

logger と handler を使用して、ログレベルに応じたログ出力 ◆ Backtrader 最初の戦略その2

前回の振り返り 今回の内容 バックテストの実行 Photo by Arget on Unsplash 前回の振り返り 前回は基礎的な戦略 TestStrategy を作成した。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 今回は昨日作成した戦略を使用した、バックテストを…

backtrader 最初の戦略その1

前回の振り返り 今回の内容 Photo by Pixabay from Pexels 前回の振り返り 前回はヒストリカルデータ(過去データ)を読み込めるようにした。 how-to-make-stock-trading-system.dogwood008.com 今回の内容 最初の取引戦略1を実装していく。 www.backtrader.…

backtrader クイックスタートその2

前回の振り返り 今回の変更差分 サンプルの取得とビルド エラーの修正と再実行 Photo by Adam Nowakowski on Unsplash 前回の振り返り 前回の記事では、初歩の初歩からはじめた。今回はもう少し発展的なサンプルに挑戦する。 how-to-make-stock-trading-syst…

昨日分の差分をGitHubにも反映

昨日は backtrader 利用の最初の一歩を試した。 how-to-make-stock-trading-system.dogwood008.com GitHubの専用のリポジトリに、今回の変更内容ををコメント付きで作ったので参考にしてほしい。 github.com 本日分はシンプルにこれでおしまい。

backtrader の最初の一歩

## 昨日の振り返りと今日やること 昨日は Dockerfile 内で `pipenv sync` を呼ぶ事で、固定したバージョンで backtrader をインストールした。今日は backtrader の最初のサンプルを実行する。

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