[Python]ビットコイン自動売買プログラムのバックテスト

自動売買

はじめに

前の記事で、単純移動平均のゴールデンクロス・デッドクロスを利用したビットコイン自動売買プログラムを公開しました

また、下の記事では、ビットコイン自動売買プログラムのパラメータを最適化しました

この記事では、作った自動売買プログラムを、バックテストしていきます

バックテストをする理由

バックテストをする理由を、1言で表すと、「パラメータが果たして有効なのか?」「リスク的には大丈夫なのか?」を検証するためです

上の記事で、過去のデータでシミュレーションをし、見込まれる利益を計算しました

この結果、長期移動平均期間が1000分、短期移動平均期間が700分をパラメータとすると、見込まれる利益が最も大きくなることがわかりました

しかしこのパラメータは、得られる利益の観点では魅力的ですが、リスクのことを一切無視しています

バックテストをすることで、バックテストをしてリターンだけではなくリスクについても知ることができるので、バックテストをしていきます

バックテストの方法

バックテストの評価項目を計算することにより、アルゴリズムを総合評価します

バックテストの評価項目は9つあります

・利益回数、損失回数、総損益回数

・利益計、損失計、総損益計

・平均利益、平均損失、平均損益

・利益時平均保有期間、損失時平均保有期間、総平均保有期間

・勝率

・プロフィットファクター

・リスクリワードレシオ

・連敗数

・ドローダウン

詳しくはこの記事に書いてあります

バックテスト項目の計算

2020年2月のデータでバックテストをしました

2020年2月のチャート、1000分移動平均、700分移動平均をグラフにするとこんな感じです

以下、バックテスト評価項目の計算結果です

計算の方法については、また別の記事をあげる予定です

利益回数、損失回数、総損益回数

利益回数:19回

損失回数:7回

総損益回数:26回

利益回数が多く、損失回数が少ないため、良いモデルと言えます

利益計、損失計、総損益計

利益計:10,033円

損失計:2,724円

総損益計:7,308円

利益計が大きく、損失計が小さいため、いい結果と言えます

平均利益、平均損失、平均損益

平均利益:528円

平均損失:389円

平均損益:281円

平均利益が大きい方がいいモデルとされているので、いい結果と言えます

利益時平均保有期間、損失時平均保有期間、総平均保有期間

利益時平均保有期間:17時間

損失時平均保有期間:9時間

総平均保有期間:15時間

利益時平均保有期間は長く、損失時平均保有期間が短い方が良いとされているので、いい結果と言えます

勝率

勝率:73.%

平均利益が高いことに加えて、勝率も高いので、理想的な結果と言えます

プロフィットファクター

プロフィットファクター:3.68

プロフィットファクターは2以上がいいとされているので、いい結果と言えます

リスクリワードレシオ(RRR)

リスクリワードレシオ:1.36

リスクリワードレシオは2倍以上が良いモデルとされているので、まずまずです

連敗数

連敗数:最大1回

連敗数が最大1回と、1ヶ月のうちに連敗をしていないです

ドローダウン

ドローダウン:最大7.7%

ドローダウンの目安は25%以下とされているので、とてもいい結果だと言えます

まとめ

この記事では、作った自動売買プログラムを、バックテストしました

バックテストをする理由は、「パラメータが果たして有効なのか?」「リスク的には大丈夫なのか?」を検証するためです

バックテストの評価項目を計算した結果、損益回数や平均損益など全体的にいい結果となりました

なので、長期移動平均期間が1000分、短期移動平均期間が700分というパラメータは有効と言えると思います

また、ドローダウンや連敗数が小さいことから、リスク的には問題ないと言えると思います

このパラメータをビットコイン自動売買プログラムに実装しようと思います

参考



コメント

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