見出し画像

ストラテジー検証のススメ


こんにちは。トレードボット開発&チャート分析大好き CryptoMori です。FXBTCトレーダーのみなさん夜はきちんと眠れているでしょうか?
相変わらずドテン君のロジックに惚れ込んでずっとチャートをにらめっこしています。

今回は、TradingViewというツールを使ったストラテジーの検証方法とトレードボットのチューニングの仕方をご紹介します。制限はありますが無料でも使用できます。


トレードボットのバックテスト

前回のnoteで説明したとおりトレードボットと一言に言ってもストラテジーの違いやパラメータの調整の仕方によって様々な性格を持ちます。せっかくのトレードボットも仕組みを理解してチューニングしなければ勝ち続けることはできません。

では、どのように癖や性格を把握するかですが、これは過去チャートデータと照らし合わせてバックテストという作業を行い総合的に判断します。

ここで問題になるのは大量の過去データをどこから持ってくるかという問題になります。実際に各取引所からAPIを使用してデータをダウンロードするには限界があります。そこでTradingViewというチャートツールを提供しているサービスには各取引所のデータを無料で提供しているのでこれを利用します。


TradingViewについて

次世代のチャートソフトと言われているプロトレーダーも御用達のツールで最近人気を集めています。制限はありますが無料で使用できます。


もともとかなり高機能なことに加え、ユーザーがTradingView内にてストラテジーや分析用のインジケータのスクリプトなども公開しており、自動売買プログラムや優れたテクニカル指標を使うことができます。
(※当然、使いこなすためには勉強が必要になりますが)

今日は特にその中の投資戦略テスターという機能に焦点を絞って説明します。


TradingViewの投資戦略テスター使い方

TradingViewへのユーザー登録が終わったら新しいチャートを作成します。

チャートが出てきたら、左上の銘柄選択で「FXBTCJPY」と入力します。
BitMEXであれば「XBTUSD」と入力します。

次に下のタブに「Pineエディタ」という項目があるのでクリックします。

エディタが開いたら下記のPineスクリプトをコピペして保存してください。

//@version=3
strategy("_MACD戦略", overlay=true)
[_,_,hist] = macd(close, 12, 26, 9)
strategy.entry("BUY", strategy.long, when=(hist>0))
strategy.close("BUY", when=(hist<=0))

保存が終わったら、チャートへ追加をクリックします。

チャートにエントリーとエグジットのポイントがプロットされます。

投資戦略テスターのタブをクリックします。

このストラテジーを過去データに照らし合わせて実行した場合、資産がどのように変化するかを視覚的にグラフ化します。

パフォーマンスサマリー・トレード一覧では戦績を詳細に確認できます。


パラメータ解説と見るべきポイント

私が評価に確認するポイントは下記の点です。

トレード数

トレード数はこの投資戦略テストのデータの信頼性になります。少なくとも100以上のトレードが必要だと考えます。

勝率

「勝った回数 / 総トレード数」で計算します。
トレードボットの性格を見る上でチェックします。

プロフィットファクター(PF)

「勝ちトレードの総利益 / 負けトレードの総損失」で計算されます。
トレードボットの優劣を決める重要な項目です。
私は勝率以上にPFを最重要視します。

最大ドローダウン率

一時的に最大資産から落ち込んだ時の下落率を示します。
トレードの世界においては大きな損失を出さないことという鉄則があります。損失を取り戻すためにはそれ以上のリスクを取る必要があるからです。
これもトレードボットの優劣を決める上でPFと同等に重要な項目です。

シャープレシオ

「1トレードあたりの平均損益 / トレード損益の標準偏差」で計算されます。ナンノコッチャな人に簡単に説明するとどれだけ緩やかな上昇曲線になっているかを示します。大きい値ほど波が小さく安定したストラテジーとなります。この値もある程度トレードボットの癖を知る上で重要な項目です。

平均勝ち/平均負けの比(ペイオフレシオ)

「平均利益 / 平均損失」で計算されます。一般的に言われるリスクリワードレシオのことで、要は1回のトレードで想定される利益と損失の割合を示します。

チャート上のエントリーポイントのタイミング

割りと重要な確認項目です。主にエントリーのタイミングが順張りなのか逆張りなのか、またその勢いを確認します。トレードボットのほとんどは成行で入るため、順張りでエントリーするとスリッページが発生します。スリッページによる損失はトレード回数に比例します。


私の場合は勝率、純利益率を評価のポイントとして参考にしません。なぜならトータルでの優劣を考える場合に勝率はあまり意味を持たないし、純利益率はたまたま1回大きな利益を出したことで結果が大きく左右されるからです。



MACD戦略を評価してみる

//@version=3
strategy("_MACD戦略", overlay=true)
[_,_,hist] = macd(close, 12, 26, 9)
strategy.entry("BUY", strategy.long, when=(hist>0))
strategy.close("BUY", when=(hist<=0))

先程の超適当サンプルですが、このPineスクリプトのストラテジーを解説すると、MACDのヒストグラムが正だった場合(ゴールデンクロスしていたら)エントリー、負だったらエグジットという非常にシンプルなストラテジーです。

先程の投資戦略テスターでは1時間足で実行しています。
1時間足におけるトレンドフォロー系のトレードボットで、そう悪くないストラテジーだと思います。

結果

トレード合計:406
勝率:43.1%
プロフィットファクター:1.323
最大ドローダウン率:40.47%
シャープレシオ:0.75
ペイオフレシオ:1.747

個人的な総合評価

トレード回数はほぼ問題ないのでサンプルデータとしての信頼性は高いと思います。勝率はトレンドフォロー系特有の悪さです。
プロフィットファクターに関して1.323 なのでトータルの期待値的にはプラスになる可能性が高いです。
最大ドローダウン率についてはちょっと40%は高すぎの印象です。
シャープレシオ 0.75 は仮想通貨のトレードボットとしては若干ばらつきが目立ちます。安定性が高いトレードボットとは言えないと思います。
ペイオフレシオ 1.747 はトレードボットとしては妥当なラインだと思います。

総合評価として、PFが1.3に対して最大ドローダウン率 40%が高すぎます。
10万の投資から初めて最初にこの最大ドローダウンに当たったと仮定するといきなり6万まで目減りする可能性を示唆しています。4万の損失を出した上で元の10万に戻るまでかなりの時間を要すると考えられるからです。
まず間違いなく私はこのトレードボットは使わないでしょう(笑)



トレードボットの検証は如何でしたでしょうか?
Pineスクリプトがあるのであればご自身で検証してみて、トレードボットを評価してみてください。同じストラテジーだったとしてもパラメータを変えてみたりすることで性格が変わることがありますし、今後、ボラティリティの変化で最適値が変わってきます。その調整の際にご利用ください。


カーブフィッティングについて

パラメータを調節する上で注意するポイントとして、カーブフィッティング(過剰最適化)というのがあります。

すでに存在している過去データに無理やり条件を合致させることによって恣意的にパフォーマンスを高めてしまうことです。これが何故危険なのかというと過去の相場の変化と未来の相場の変化が異なってくるからです。

例として下記のストラテジーを考えてみます。

ある価格から10%下がったらエントリー、元の価格まで戻ったらエグジットというシンプルなストラテジーです。
例えば、高いPFを出そうとギリギリの15%まで引き上げた場合、投資戦略テスターでは高いPFを叩き出すことが可能ですが、将来的にも15%の下落する保証はないので、ボラティリティが下がっていった場合に結果、極端にパフォーマンスが落ちる、更には損失が出る可能性があります。

PFや最大ドローダウン率はあくまで指標であり完全最適化するのが目的でないことを理解しておきましょう。


最後に宣伝

最後に私が推すFXBTC用のトレードボットの利食いドテン君の紹介です。

チャネルブレイク戦術を利用したトレンドフォロー系の非常に収益性が安定したトレードボットのドテン君を改良し、安定性を保ったまま非常に高いPF 3.5 を実現しています。

もし、興味がある方は参考にしてみてください。



AKAGAMI LOUNGE (Discodeアカウント) : @crypto_mori
Twitterアカウント: @crypto_mori




この記事が気に入ったらサポートをしてみませんか?