見出し画像

EAにおけるデータ分析の活用

こんにちは!そーまんあやとんです(o*。_。)oペコッ
5月の途中から7月末まで試していた方法。ここに公開!!
リベロ-Libero-での分析例で説明しますが、考え方はいろんなEAにも活用できると思うので、ためになったと思ったらぜひサポート(投げ銭)して下さると泣いて喜びます(*'ω'*)

0.下準備

 データ分析を行うために準備するものがあります。といっても無料だし誰でも使えますのでご安心を!プログラミング知識も不要です。
 ✅MT4(MT5)
 ✅Quant Analyzer4
 ✅Excel(もしかしたらこれがないって方もいるのか??)

1.データ分析の概要

 まずは全体の流れを簡単に説明しておきます。やることは大きく3つです。
 1.MT4で候補の通貨ペアで最適化
 2.最適化したデータをExcelで分析して通貨ペアとパラメータ絞り込み
 3.絞り込み結果をバックテストしてQuant Analyzerで相関分析

実作業としてはこれだけ。私はこれを毎週末実施しています。できる限り裁量判断を除いてますので誰でもできると思います。しかしリベロ-Libero-であっても、ましてや他のEAでは機能するかは全くわからないので、ちゃんと自分で確認することは怠らずにお願いします。
 早速次章からやり方を説明していきます。

2.最適化

2-1.最適化する通貨ペアを決める

 ここでは自分が稼働候補にあげている通貨ペア全てです。私の場合は、AUD,NZD,CAD,CHF,EUR,USD,GBP,JPYの8通貨の組み合わせのペアとGOLD(XAU/USD)を合わせた以下の29通貨ペアで行っています。

2-2.最適化するパラメータを決める

 最適化する項目にチェックを入れていきます。選択するポイントは最終的に判断する指標に大きく影響しそうなパラメータです。私の場合はリカバリーファクター(RF)と最大DDなので、その二つに影響しそうな以下赤枠を選んでいます。この項目は増やせば増やすほど、カーブフィッティングしてしまうことになりますし、そもそも最適化時間が加速度的に増えます。そのためどれだけ項目を減らせるかも何気に重要な項目になりますので、色々試してみてください。
 どの項目が影響するのかは、一つ一つ変化させて、結果を確認していくしかありません。ロジックを深く理解していればある程度目星はつくと思いますが、そうでなければ地道にやるしかないと思います。

2-3.最適化するパラメータ範囲を決める

 前節でチェックを入れた項目について、どの範囲で最適化をかけるのかを決めていきます。以下は今私が試している設定です。
 ここでもどの範囲が良いかは試行錯誤が必要な部分であり、範囲を広げすぎたり、ステップを細かくしすぎると同じくカーブフィッティング、最適化時間の拡大につながってしまいます。ちなみに以下の最適化条件だと432通りとなります。参考にしてください。

2-4.最適化する期間を決める

 最適化に使うアウトオブサンプル期間を決めます。正解はありません。私の例では直近1か月としています。これを聞いて短い!と思う方が多いと思います。普通は数年とかじゃないの?という声が聞こえてきそうですが、それはEAの運用戦略による最適化の目的違いです。誤解を招かないように言っておくと、目的次第では期間を長くとる必要も出てくるのでそこは考えましょう。
 簡単に私の考えを述べておきますと、メインの執行足が5分足であり、数か月前の相場環境が今の動きにどれだけ影響するのか?できるだけ直近の値動きにミートさせていく方が資金効率が良くなるのではないか?ただ期間内の取引回数としてあまりに少ないのは信頼性が極端に下がるので、バランス取って直近1か月としています。

2-5.最適化しないベースパラメータを決める

 最適化する項目も重要ですが、それ以外のパラメータをどうするかも重要です。最適化するために入れた✓以外の項目のパラメータは赤枠の中の数値が適用されますので、指定した数値になっているか全て確認してください。ここが間違っていると全く意味を成さないことになるので。
 まずはデフォルト設定で良いと思いますが、私は利確設定のところをいじっています。リベロ-Libero-については各パラメータの意味をこちらで全て公開していますので、そちらを参考に決めてください。

2-6.最適化する

 通貨ペア、時間足、スプレッド、期間を設定し、パラメータ設定も間違いがないことを確認できたら、最適化にチェックを入れて最適化するだけです。スタートを押したら最適化が終わるまで放置して待ちましょう。これを候補にあげた通貨ペア全てで実施です。(MT5だと簡単にできますが、MT4は一個ずつ通貨ペア選んでやるか、バッチファイル等の外部ソフトがあれば少しだけ楽です。リベロ-Libero-用の口座開設頂き、専用オプチャに入っていただいた方には希望があればバッチファイル送ります)
 一つポイントとしては、モデルはよほどのこだわりがない限り「始値のみ」にしておいてください。ここでも全ティックじゃないと精度が悪いでしょ!というお叱りの声が聞こえてきそうです。もちろん全ティックにするに越したことはありませんが、かかる時間に対して得られるリターンが小さすぎます。始値と全ティック、もちろん結果はずれてくるのですが、始値同士で比較した結果と全ティック同士で比較した場合、全局で見た時の大勢、優位性に差は出るでしょうか?気になる方はぜひ自分の手で検証してみてください。パラメータが決まった最終確認の時だけ全ティック(TDS)でやれば私的には十分です。

3.データ分析

3-1.最適化結果をExcelに取り込む

 最適化が終わると、以下のような最適化結果、最適化グラフが出来上がっていると思います。

 これをこのまま眺めていても分析ができませんので、誰でもできる分析ソフトExcelに取り込みます。(Googleであるスプレッドシートでもできるかもしれませんが、OfficeなんてYahooショッピングで数百円で買えるので(合法です)これを機に手に入れてみてはいかがでしょうか?)

 さて、データの取り込み方ですが、Excelを持っている前提でお話します。先ほどできた最適化結果のタブを出してどこでもいいので右クリックして、すべてコピーをクリックします。

 Excelを立ち上げ、A2セルに貼り付けします。すると、先ほどの最適化結果がExcel内に貼り付けされます。

 1行目を空けたのは、そこに項目名を書くためです。最適化結果にあるように左から、「パス」「損益」「総取引数」・・・と並んでいるので、そのまま書いていきます。A列から貼り付けていれば、I列から右はパラメータ値になります。これは最適化に選んだ項目が優先され、その後それ以外のパラメータがパラメータ設定画面の一番上から順番に並びます。わかりやすいように列幅を自動設定で広げておくとよいと思います。
 しかし、分析で使うためには下の画像のように文字が邪魔です。

 数字だけにしておく必要があります。一個一個消していくなんて途方に暮れますね。ここは色々あるExcelの関数やマクロを駆使してなんとか数字だけにしてください。

 ・・・メンドクサイですよね。こんなこと毎回やるのかよと。えぇえぇわかります。私もそう思ったわけですよ。Excelの関数使うにしてもマクロ使うにしてもこんなこと毎回やってられるかと。
 なので、リベロ-Libero-には、バックテスト結果を自動でCSV出力してくれる機能をつけております。MT4画面のメニュー画面からファイルーデータフォルダを開くを押してください。以下のようなフォルダが出てくるはずなので、引き続き「tester」-「files」の順にフォルダを開いていくと、「Test_report_ver.X.XX.csv」というファイルが出てくると思います。
(ver.は変わるのでX.XXで代用です)

 対象ファイルを開いていただくと感動すると思います。、、、あ、そうでもないですか??
 項目が全て記載されており、数字だけになっているのはもちろん、通常は出てこないRF(リカバリーファクター)も内部計算して表示するようになっています。1点だけご留意いただきたい点があります。「損益」が通常と違います。通常バックテストをすると、バックテスト期間が終わるとその時点で持っているポジションは強制決済されてしまいます。含み損を持っていればその分損益はマイナスされます。しかしここでの損益は、強制決済する直前の最終損益となっています。つまり最終含み益、含み損は考慮されずEAで決済された分の損益となっています。PFやRFもそれを元に計算しているため、実際のMT4の最適化結果と若干違ってくることにご注意ください。(あくまで私がそうしたかったのでそのように作っています。今後も変更する予定はありませんのでご了承願います)
 出力されたファイルはCSVファイルのため、別途Excel形式で新規保存しておきましょう。あと、このCSVファイルですが、フォルダ内にあるとどんどん下にデータを追加していってしまうので、一通りの作業が終わったら毎回削除しておくことをオススメします。そうしないとどこからが対象のデータなのかわからなくなってしまいますので。

3-2.良し悪しを判断したい指標で箱ひげ図を作成する

 箱ひげ図って何ですか?って方はGoogleで検索してみてください。簡単に言うと、データの中央値、平均値、データ分布のばらつき度合いを可視化できます。
 私の場合は、最大DDとRFで判断したいので、その二つについて箱ひげ図を作成しています。作るのはExcel2021であれば簡単にグラフ化できます。なければ関数で作ることもできるので、各々調べてください。

 上記は一度作っておいてフォーマットとしておけば、2回目からはCSVのデータを貼り付けるだけで対応できます。

3-3.フィルタ機能で通貨ペアを絞る

 ここまで作ってしまえばあとは作業となります。Excelに標準でついている機能である「フィルタ機能」を使っていきます。

 フィルタをかけたい項目を選択(①)して、メニューにある並べ替えとフィルター(②)、フィルター(③)をクリックするだけです。項目セルの右端に▽マークが付いたら準備完了です。

3-4.判断基準に基づき通貨ペアを絞る

 通貨ペアをフィルタリングしていきましょう。▽マークをクリック(①)すると通貨ペアが並んだ窓が出てくると思うので、すべて選択の✓を外して好きな通貨ペアに✓を入れる(②)とその通貨ペアだけが選択できるようになります。

 通貨ペアを絞ると、先ほど作成した箱ひげ図の数値が変わっていくと思います。ここからは各々の判断基準を当てはめて通貨ペアを絞っていきます。
 私の参考基準は以下です。
  RFの「中央値」が1以上
 上記基準を満たす通貨ペアがあれば、タブごとコピーしておきましょう。

3-5.フィルタ機能でパラメータを決める

 通貨ペアが絞れたら、次はパラメータを決めていく作業です。絞った通貨ペアはタブをコピーしていると思うので、パラメータを決めたい通貨ペアのタブを開いておきましょう。
 これこそ人によって全く変わると思いますのでぜひ自分なりの判断基準を作ってみてください。考え方のポイントは「相場環境の変化に堅牢でよりパフォーマンスの高いものを選ぼう」です。以下は私の具体例ですので参考にしてください。
 ①平均足計算時間足
 ②ADX使用時間足
 ③アップトレンド時RSIロング値
 ④ダウントレンド時RSIショート値
の順にフィルタ機能を使っていきます。それぞれの項目において以下のことを繰り返します。
 ①項目の中の水準を一つずつ選択し、RFの中央値が最も高いものを選択
 ②①が同程度であればRFばらつきが小さい方を選択
  (第一四分位数と第三四分位数の差)
 ③②が同程度であればRFの最小値が高いものを選択
 ④③も同じであれば最大DDの最大値が低い方を選択

4.ポートフォリオを組む

4-1.選んだ通貨ペアとパラメータでバックテストする

 通貨ペアを絞り、パラメータが決まったら、決めた通貨ペアとパラメータを正確にセットして再度バックテストを行います。この時、できる限り正確なデータを取りたいため、モデルは「全ティック」もしくはTDSを使用してください。また、スプレッドもその通貨ペアのスプレッド+αにしておくとなお良いです。TDSであれば変動になるかと思います。意識することは、通常のスプレッドよりも広めにしておくことです。
 取れたバックテスト結果は、「結果」タブを右クリックし「レポートの保存」を押しhtmファイルを作ってください。

4-2.バックテスト結果をQuant Analyzerに取り込む

 下準備ですでにインストールが済んでいるものとして進めます。起動後、「Load report」を押して先ほど保存したhtmファイルを開きます。CtrlボタンやShiftキーを押しながらクリックすると複数選択することもできるので、ポートフォリオを組みたい通貨ペアを全て選択してOKを押してください。Initial depost欄に初期証拠金を入力し、continueを連打すれば取り込み完了です。

4-3.仮のポートフォリオを作成する

 取り込みが完了したら、ポートフォリオ(通貨ペア毎のBT結果の合成)を作っていきます。Saveボタン横に✓を入れて通貨ペアを全て選択し「Create Portforio」を押してください。

 Portfolioタブを押して、PortfolioができていればOKです。Symbolのところをダブルクリックすれば読み込めますので、下の画像のようになっていればポートフォリオの作成は完了です。上のタブを色々触ると様々な情報が見れますが、そこは割愛します。他の解説サイトを見て色々触ってみてください。

4-4.ポジションの相関係数を確認する

 ここでは、先ほど組んだポートフォリオのオープンポジションの重なり具合を見れるようにしていきます。Portfolio Correlationタブを選択(①)し、Correlation byに「Hour」を選択(②)、Correlation ofに「Number of open positions」を選択(③)します。最後に「Compute」を押す(④)とすぐ下のウィンドウに選択したポートフォリオの相関係数の計算結果が出てきます。
 これにより時間毎のオープンポジションの重なり具合が見れます。同時にポジションを取ればとるほど含み損が増える可能性が高くなるであろうという考えです。諸説あります。

4-5.相関係数が高いものを排除する

 相関係数が出たと思いますが、先ほども言ったようにこの数字が高いと同時にポジションを持ちやすくなるということ。つまりチャートの動きも似たような動きをしやすいということです。基本的なポートフォリオの考え方としてリスクを分散させるということが重要になってきますが、ここでは相関係数が低いものを選ぶことになります。
 じゃあいくつ以下がいいの?というのは正解はないです。でも決めないと先に進めないので、私は±0.25以下としています。箱ひげ図で絞った通貨ペアをこれを目安に3~5通貨ペアに絞っていきます
 相関係数を見て排除する通貨ペアが決まったら、「Simple strategies」タブをクリックし、排除する通貨ペアの✓を外し4ー3、4を繰り返します。

 上記の方法で絞り切った通貨ペアの相関係数の一例がこちらです。5通貨ペアは多い方です。多分最初は3通貨ペアぐらいにしておいた方が良いです。上の方法で3通貨ペアのポートフォリオを2つ3つ作って別口座で稼働させるというのが最強だと思います。もちろん諸説あります。

4-6.選んだ通貨ペアの初期ロット数を決める

 稼働させる通貨ペアが決まったら、あとは証拠金に応じて初期ロット数を決めていきます。Quant Analyzer上のover veiwにて、組んだポートフォリオの概要が表示されており、一番下のDrawdownが組み合わせた時の最大DD相当となりますが、私の場合は更に安全を期して、個々のDDを見ていきます。ここに表示されているのはMT4でバックテストした時の結果であり、おそらく初期ロット数0.01の時の結果だと思いますので、それを0.02にすればDDは2倍、0.03にすれば3倍になるはずです。それを使って、各々の初期ロット数を調整し、単純合算のDDが初期証拠金の30%以下になるようにしていきます。例えば証拠金10万であれば、合算DD3万以下を狙います。ここでDDが大きく調整ができないならばさらに通貨ペアを減らしていっても良いです。

4-7.決めたロット数で再度バックテストする

 ここからは、やってもやらなくても大差ありませんが、最終確認作業としてやっておくことをオススメします。
 ここまでで、通貨ペア、パラメータ、初期ロット数が決まったと思いますので、再度MT4のストラテジーテスターでロット数加味のバックテストを稼働する通貨ペア分行い、結果を保存してください。

4-8.Quant Analyzerでポートフォリオを組み最終確認

 ロット数を加味したバックテスト結果を、再度Quant Analyzerに取り込み、ポートフォリオを作成してください。over viewに表示される組み合わせた時のDDが想定内(証拠金の30%以内)であることが確認できれば作業終了です。

5.おわりに

 ここまでお疲れ様でした。私はこれを毎週末行い、通貨ペアとパラメータを見直しフォワードテストを重ねてきました。おそらくまだまだ改良の余地はあると思いますので、私自身もどんどん成長していきたいと思っておりますが、一つ形にすることができましたのでここに公開することとしました。
 考え方自体は、他のEAを稼働させる際にも必ず活かせる内容かと思いますので、ぜひご自身の戦略、ルール作りに役立てて下さい。

記事自体は無料で公開しておりますが、もしよろしければいくらかサポート(投げ銭)していただけますとモチベーションアップにつながります。今後ともよろしくお願いいたします。

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