【BTC/JPY】指数移動平均(EMA)のクロス戦略のバックテスト
指数移動平均(EMA)のクロスを使った、ビットコイン取引戦略(日足)のバックテストをしたいと思います。
今回は、Yahoo financeからBTC/JPYペアのデータを使います。
検証期間は2018/01/01から2023/06/30で、単利運用とします。
取引ルールは、
「短期EMAが長期EMAを上に交差した足の次の足の始値で、売りポジションを決済し、100万円分のBTCを買う」
「短期EMAが長期EMAを下に交差した足の次の足の始値で、買いポジションを決済し、100万円分のBTCを売る」
手仕舞いしたら反対のポジションを持つ、ドテン方式です。
損切、利食い目標が無いため、トレンドが続く限りポジションを持ち続けます。
取引の度に0.1%の手数料がかかるとします。
最適化したいパラメータはEMAの短期と長期の二つになります。
ここではドローダウンを、未実現損益(評価損益)を含めた数値で計算しました。
(ドローダウン) = (いままでの実現損益の最大値) - (現在の実現損益+未実現損益)
通常は実現損益のみを基に計算しますが、中長期のトレードであることを考慮してそのようにしました。
通常の意味でのドローダウンよりも大きい値になります。
EMAの期間を変えたときの利益の分布
上のグラフは、パラメータを変えたときのEMAクロス戦略の利益の分布を表しています。縦がEMAの短期の期間、横がEMAの長期の期間です。
左上を除いて、広範囲で利益がプラスになっています。
(左上領域は、EMAの短期と長期が逆転してしまっているので、上の戦略に当てはめると逆張りになってしまっています)
バックテストでは、パラメータをずらしたときに利益が大きく変化しすぎてないかを確かめることは重要です。
少しずれただけで損失になる戦略は未来では全く役に立ちません。
純粋なトレンドフォロー戦略(順張り)は基本的に長期のトレンドさえあれば利益が出るので、パラメータ依存性がやや少ないです。
過去に価格が大きく伸びているビットコインに対してバックテストを行えば、利益がプラスになるのは当然ですね。
次は個別のパラメータについて注目してみます。
利益を最大にするパラメタ(短期:4, 長期:37)
短期のEMA期間:4
長期のEMA期間:37
のとき利益が最大になりました。
上がBTC/JPY価格、真ん中が資産推移、一番下がドローダウンです。
資産推移の水色は評価損益を含めた損益でオレンジは実現損益を表しています。直近では一年近くドローダウンが続いちゃってますね。
利益:616万円
最大ドローダウン:70万円
トレード回数:80
プロフィットファクター:2.81
勝率:28.75%
5年と半年で100万円の投資資金から、プラス616万円の利益になりました。
この間に、BTCは170万円から270万円に約1.6倍になっています。
それと比べて、約7倍に資産が増えているので現物保有放置(ガチホ)には勝っています。
ただし、勝率が三割を切っていて、
ドローダウンも大きいのでメンタル的に厳しい戦略になりそうです。
利益÷最大ドローダウンを最大にするパラメタ(短期:5, 長期:75)
短期のEMA期間:5
長期のEMA期間:75
のとき、利益÷最大ドローダウンの値が最大になりました。
ドローダウンも考慮して、リスクを抑えめにしようという狙いがあります。
利益:575万円
最大ドローダウン:30万円
トレード回数:46
プロフィットファクター:4.58
勝率:41%
利益を最大にした結果と比べて、ドローダウンが半分以下になりました。
トレード回数が減り、無駄なトレードが減ったことで、
プロフィットファクターが非常に大きいです。
無駄なトレードを減らすのは良いけれど、
トレード回数が少なすぎるとバックテストの信頼性が損なわれるのが悩ましいところ。
使用したpythonコード
この記事にあるグラフを出力するために使ったpythonコードのファイルを有料部分に張っています。テスト期間や通貨ペアを変えてご活用ください。
ソースコードには以下の内容が含まれます。
・yahoo financeのAPIから、ビットコインのろうそく足データをダウンロードする。
・複数のパラメータでバックテストを行う。並列処理を使って高速化しています。
・バックテスト結果をグラフに出力する。
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?