EAポートフォリオ構築の基本

項目

  • ポートフォリオって何?
  • 何のためにポートフォリオを組む?
  • ポートフォリオの効果の具体例
  • ポートフォリオの組み方
    • EAの分散
    • ポートフォリオ比率の決め方1
    • ポートフォリオ比率の決め方2

自動売買におけるポートフォリオって何?

「EAのポートフォリオ」の意味は、一般的な投資で言われる「金融資産の組み合わせ」を表すポートフォリオと意味合いはよく似ており、「EAの組み合わせ」を表しています。例えば、さまざまな投資戦略、通貨ペアを取引する10種類のEAを組み合わせてポートフォリオを組むイメージです。

何のためにポートフォリオを組むのか?

ポートフォリオはリスクを減らすために組みます。正確には、ある目標リターン(例えば年率20%)を達成するために取らなければいけないリスクを、適切にポートフォリオを組むことで低減できます。例えばEA1では年率20%に対するリスク(最大ドローダウン)が20%、EA2では年率20%に対するリスクが18%だとすると、EA1とEA2を適切な割合で組み合わせることで、年率20%はそのままにリスクを15%まで減らせます。リターンとリスクは相対値(%)を絶対値(円)に変えても同じことが言えます。

適切な条件を持つEAを組み合わせることで、年中無休で取引してリターンを上げてくれる自動売買のリスクを下げて恩恵を最大限に受けられるようになります。

ポートフォリオの効果の具体例

例えば、GBPJPYの30分足で取引するトレンドフォロー系EA(EA1)と、EURUSDの5分足で取引するスキャルピング系EA(EA2)を組み合わせて稼働させることを考えます。下図は、EA1とEA2の資金配分を100%:0%〜0%:100%まで5%刻みで変化させたときの結果(青点)を、最大ドローダウン(横軸)と総損益(縦軸)としてプロットした図です。今回はリスクを最大ドローダウン、リターンを総損益としています。赤線は、EA1とEA2が全く同じEAだったときに変化するラインで、実際にはEAを組み合わせることで赤線よりもリスクが下がる側に変化しています。つまり、特性の異なるEAを組み合わせるとリスクを減らして運用できるのです。

似た性質のEAを選んだ場合でも、異なる取引を行うEA同士であればリスクを減らせます。下図は、USDJPYを1時間足で取引を行うトレンドフォロー系EAを2つ選んだ場合の図です。このように似たEAを組み合わせてもリスクは減っていますが、性質の異なるEAを組み合わせる場合ほどではありません。最初の例では単体EAの小さい側の最大ドローダウンが約8万円、ポートフォリオとしての最大ドローダウンの最小値が約6万円で約25%改善しているのに対し、下図では約8.5万円から約8万円へ6%程度しか改善しません。似たEA同士でも組み合わせる意味はありますが、ポートフォリオとしての最大限の恩恵を受けるためには特性の異なるEA同士を組み合わせることが重要になります。

ポートフォリオの組み方

EAの分散

先ほどの例のように、EAを組み合わせてポートフォリオを組む際は、異なる特性を持つEAを組み合わせることが特に重要になります。では、どのように「異なる特性」を決めれば良いのでしょうか。

証券会社などが行う一般的な投資におけるポートフォリオで投資比率を決める際は、現在でも多くの場合は「現代ポートフォリオ理論」やその改良手法に基づいて決められています。現代ポートフォリオ理論においては、特性の違いは「損益系列の相関係数」で表現されます。正確には分散共分散行列ですが、ここでは相関係数と読み換えていただいて大丈夫です。つまり、損益の傾向が似ているかどうかで特性が似ているかどうかを表現しています。例えば3つの株A,B,Cへ投資するなら、それぞれの日毎の株価を持ってきて、AとB、BとC、CとAの間の相関係数を確認します。相関係数が0であることが最も望ましく、1.0の場合は完全に同一なので組み合わせる意味がありません。詳しくは次の節で解説しますが、仮に、AはBともCとも相関係数がほぼ0、BとCの相関係数が0.90であるなら、Aは他の株と組み合わせるとリスクを下げられるので大きめに重みを設定し、BとCはよく似ているので小さく重みが設定されるイメージです。

では、EA(自動売買)の場合はどうかというと、こちらでも損益の傾向を見ることは大切です。EA同士の損益の相関は0に近い方が望ましいです。ただEAの場合は株などを買う場合とは異なり、同じ通貨の組み合わせ(USDJPYなど)を違う手法で取引する場合があります。このとき、日本で大きな地震が起きる、アメリカと中国が戦争を開始したなど特定の通貨の価値が大きく変動した場合、普段は全然違う損益傾向のEAたちが、USDやJPYの極端な変動によって同じタイミングに大きな損失を出すことがあります。EAの場合、損益の相関だけを見ても「特性」を正しく把握しきれません。

そこでEAの場合は、イベントが起きた時の影響の分散を目的として「取引通貨」も確認します。また、EAの取引戦略が異なればポジションを持つタイミングや方向が変わるため「取引戦略」も重要な特性です。最後に、同じ取引戦略のEAでも、ポジションを保有する時間によってイベントによる相場変動の影響を受けやすさが変わるため「取引スパン(ポジション保有時間)」も重要な要素です。つまり、EAの場合は損益の相関に加えて「取引通貨」「取引戦略」「取引スパン」の3つを分散することが重要になります。

ポートフォリオ比率の決め方1

最も簡単なポートフォリオ比率(EA間の資金配分)の決め方は、全てのEAを同じリスクで動かすことです。例えばリスクを「2015/1/1〜2024/12/31の最大ドローダウン」と定義するのであれば、それぞれのEAでバックテストを行い最大ドローダウンが10万円になるようにロットを調整します。最後に口座の資金に対して、ポートフォリオとしての最大ドローダウンが許容範囲か、フルでポジションを持った時でも証拠金が足りるか、を確認して、資金が足りない/余裕がありすぎる場合はリスクの値を増減して調整します。

この方法はとてもシンプルではありますが、そこそこうまく機能します。少なくとも何となくでポートフォリオ比率を決めるよりは良い結果になることが多いです。「嬉しさの具体例」の2つの図を見ると、「リスクの低減量」(赤線からどれだけ左にシフトしたか)という点で見ると、どちらの例でもベストではないにせよ十分にリスクが低減しています。

ポートフォリオ比率の決め方2

もう一つの決め方は、ポートフォリオ理論に従って比率を計算することですが、これを自分で行うのはなかなか大変です。この記事でのフォーカスから外れるため計算方法は割愛しますが、ExcelやPythonを使える方であれば日本語で解説しているWEBページや記事がありますのでGoogleなどで検索してみてください(例1例2例3)。

この方法ではまず比率を計算する際の基準を設定します。例えば、リスクを最小化する、シャープレシオ(損益の平均値÷損益の標準偏差)を最大化する、などです。この基準を達成できるように、各EAの比率を調整していき最終的なポートフォリオ比率を決定します。

とはいえ、複雑な計算を自分で実装できるのはほんの一部の人だけです。この次の記事から、この計算を自動的に行なってくれるツールを使ってポートフォリオを組む方法を紹介していきます。次回は、EA-BANKポートフォリオシミュレータというツールを用いて、EA-BANKのEAを使ってポートフォリオを組む方法を紹介します。

EA分析方法

前回まではポートフォリオシミュレータの使い方について解説してきました。

今回の記事ではもう少し基本に立ち戻り、EA自体の分析について書いていきます。この記事の内容をある程度理解しておけば、厳しい審査がなされているEA-BANKだけでなく、玉石混交なEAが販売されているゴゴジャンなどで勝てる確率が高そうなEAを見繕えるようになると思います。

分析を通して知りたいことと各分析の概要

分析の方向性がぶれないように、まずは知りたいことをまとめておきます。言うまでもなくEA分析を行う本質的な目的は 運用に値するEAかどうかを知ること です。そのためには、分析対象のEAの特性多くのEAの中での分析対象EAの位置付け の2つの目線での分析が必要になります。

前者では分析対象EAの成績にフォーカスしてEAの特性を分析し、後者では複数のEAを同じ切り口で見て比較したときに分析対象EAがどんなレベルにいるかを評価します。

まずは分析する項目の概略を説明し、その後に各節で項目の詳細を説明していきます。

説明全体は大変長くなっていますから、ご自身に必要な部分だけをピックアップして読むような使い方をしていただければと思います。

分析対象のEAの特性を知る

投資効率

リスクに対するリターンを分析します。投資効率は高ければ高いほどよく、この値が低い時点で使う選択肢から外れます。
分析には以下を指標として用います。

  • リカバリーファクター(Recovery Factor, RF)
  • シャープレシオ(Sharpe Ratio)
  • ソルティノレシオ(Sortino Ratio)

利益と損失の特性

損益の特性を確認することでEAの戦略の特徴を把握します。
以下を指標として用います。

  • 勝率(Winning Percentage, WP)
  • ペイオフレシオ(Payoff Ratio, PR)
  • 期待利得(Expected Payoff, EP)
  • 損益分布とそのスキュー(歪度, Skewness)

手仕舞い戦略の分析

EAを特徴づける大きな要因の1つが手仕舞いです。ポジションの保有期間と利益を横軸と縦軸に取った散布図を使い、手仕舞い戦略を分析します。

バックテストからフォワード推移を予測する

EAのフォワードのエクイティカーブがバックテストどおりに推移しているかは、EAを評価する上で特に重要です。ただ、困ったことにここまでに出てきた指標は「時間」の要素が含まれておらず、時間あたりの取引回数の変化を評価できません。バックテストではひと月に30回トレードがあったがフォワードではひと月5回しかない場合でも、指標が近ければ「順調」と評価されてしまいます。ここでは、バックテストから時間要素も含めてフォワードのエクイティカーブの予測推移を生成し、予測推移に対するフォワードの位置付けを評価します。

多くのEAの中での分析対象EAの位置付けを知る

損益特性と投資効率

EAの損益特性に対する投資効率を評価するために、横軸にリターンのスキュー(Skewness)、縦軸にソルティノレシオ(Sortino Ratio)を用いた散布図を描きます。この散布図を用いて、同じような損益特性(スキュー)を持つEAに対する分析対象EAの投資効率の位置付けを分析を行うとともに、異なる損益特性を持つEAを抽出します。この分析を通して、似たEAの中で分析対象のEAがどの程度優れているかや、分散対象として相性の良いEAの候補を知ることができます。

勝率と損益特性

横軸に勝率(WP)、縦軸にペイオフレシオ(PR)を用いた散布図を描くことで、EAのロジックの戦略を大まかに分類できます。そして、WPとPRから計算する等価ラインを考慮して別のEAと比較するとこで行き過ぎた成績を持つEAでは無いことを確認するとともに、「損益特性と投資効率」と同様に分散対象として相性の良いEAの候補を抽出します

他のEAとのエクイティカーブの相関係数

分散投資による投資効率改善を目的として複数のEAでポートフォリオを組むうえで、他のEAとのエクイティカーブの相関係数を確認することは重要です。相関係数が極端に高いものを組合せても、ポートフォリオの必要証拠金額の増加に見合う投資効率改善が見込めない場合があります。EA同士のエクイティカーブの相関係数を確認し、同時に動かすことで投資効率を改善できそうなEAの候補を抽出します。

なお、すべてのEAに複利機能があるわけではないので、このブログにおいてはここまでの解析はすべて単利の結果に対して実施する点に注意してください。

詳しい説明

分析対象のEAの特性を知る

この節では、分析対象のEAの成績にフォーカスして分析をしていき、EAにお金を投入したときに高いリターンが見込めそうか(投資効率)、どういった戦略に基づくEAなのか(利益と損失の特性、手仕舞い戦略の分析)を把握していきます。
分析の中で数式が出てきますが読み飛ばしても構いません。

投資効率

この項ではリスクに対するリターンを分析します。投資効率は高ければ投入した資金に対して大きなリターンが得られる可能性が高いですから、この分析は利益の期待値を見積もる最も重要な分析の一つです。用いる指標の特徴と何を見るために使うのかを順に説明していきます。

リカバリーファクター(Recovery Factor, RF)

リカバリーファクター(以降はRFと表記)は取ったリスクに対するリターンの比率を表す指標です。大きな特徴は全体の損益には注目しますが個々の損益は評価しないです。この部分が後述するシャープレシオ(Sharp Ratio)やソルティノレシオ(Sortino Ratio)との違いです。

RFはリターンを「累積損益」、リスクを「最大の累積損失(Max Draw Down)」としています。累積損益を$CP$、最大の累積損失を$MDD$と表記すればRFは式(\ref{eq:rf})で計算できます。

\begin{eqnarray} \label{eq:rf} RF & = & \frac{CP}{MDD} \end{eqnarray}

ただこのRFには1つ大きな問題があります。それは分子に累積損益を用いているために評価する期間の影響を受けてしまうことです。10年間のテストのRFと1年間のテストのRFは前提が違うため直接比較できません。この問題はバックテスト・フォワード期間の異なる複数のEAを比較する際に表面化します。

対策はシンプルで、期間で正規化して「月あたり」や「年あたり」のRFを計算すれば良いです。このブログでは年あたりのRF(Yearly Recovery Factor, YRF)を用いることにします。YRFは式(\ref{eq:yrf})で計算します。

\begin{eqnarray} \label{eq:yrf} YRF & = & \frac{1}{\verb|Years|} \cdot \frac{CP}{MDD} \end{eqnarray}

ここで、$\verb|Years|$はテスト期間の年数を表します。10年なら$\verb|Years|=10$、5年6ヶ月なら$\verb|Years|=5.5$です。

シャープレシオ(Sharpe Ratio)

シャープレシオはRFと同様に取ったリスクに対するリターンの比率を表す指標ですが、RFとはリターンとリスクの定義が異なりますシャープレシオのリターンは「損益率の平均値」、リスクは「損益率の標準偏差」を使います。RFを全体の損益に着目した指標と表現するなら、シャープレシオは個々の損益に着目した指標です。損益のブレが少なければ値が高くなるので、損益の安定性を評価する指標と言っても良いと思います。

シャープレシオの計算式は式(\ref{eq:sharp})です。

\begin{eqnarray} \label{eq:sharp} SharpRatio & = & K \cdot \frac{\bar{r} – R_f}{\sigma_n} \end{eqnarray} \begin{eqnarray*} \label{eq:sharp_R} r_i & = & \left( \frac{p_i}{p_{i-1}} \right) \\ \bar{r} & = & \frac{1}{n} \sum^{n}_{i=1} r_i \\ \sigma_n & = & \sqrt{\frac{1}{n-1} \sum^{n}_{i=1} \left( r_i – \bar{r} \right)^2} \end{eqnarray*}

ここで、$K$は調整定数で日次損益なら$K=\sqrt{252}$、週次評価なら$K=\sqrt{52}$です。$\bar{r}$は損益率の平均値、$p_i$はi本目の損益、$R_f$は無リスク金利(債権金利など)、$\sigma_n$は損益率の標準偏差を表します。このブログでは簡単のために$R_f=0$とします(超低金利の今、$R_f=0$で評価してもほとんど問題ありません)。

このシャープレシオを使うことで、全体を見るRFでは評価できなかった損益の安定性を評価できます。

なお、式(\ref{eq:sharp})を見てわかる通り、シャープレシオは調整係数を掛けることで年あたりの値に変換するため「ポジションごとの損益」に対しては正しく計算できません。加えて、日次損益で見ると取引がない日が多くなりすぎてしまい(10年で1000回トレードしても3日に1回程度)、月次損益で見ると荒く見すぎてしまいます。この理由から、このブログではEAに対してちょうどよい粒度の週次シャープレシオを用いています。

もう一点注意すべき点として、シャープレシオは本来は資金量に対する割合でリスクをとるような複利運用を想定した指標という点が挙げられます。常に証拠金の2%のリスクを取って4%のリターンを得るようなシステムを評価するならば損益率評価はマッチするのですが、EAのバックテストのように単利で長期に渡り評価することが多い場合は上記式の損益率$r$はだんだん小さくなってしまう問題があります。
例えば同じ$\$50$の利益を上げたとしても、資金が$\$1000$のときの損益率$r=\frac{1050}{1000}=1.05$であるのに対し、資金が$\$5000$に増えたあとの損益率$r=\frac{5050}{5000}=1.01$です。同額の利益でも割合で見ると5%から1%に下がっています。1年に1回あるかどうかの爆益のはずが、評価の最後に出現したがために前半の平均的な利益と大して変わらないと評価されるようでは、単利のEAを正しく損益を評価できるとは言えません。これを解決するために、このブログのEAの評価においてはシャープレシオを「損益率」ではなく「損益額」で計算することにします。

シャープレシオで評価できることをイメージするために例を挙げます。
例えば下図のような青系列オレンジ系列の2つの損益線があるとします。2つの系列の累積損益も最大DDもまったく同じですが、青系列の大きなDDは最大DDの1度だけなのに対し、オレンジ系列は定期的に大きなDDが生じている点が異なります。運用するならば安定感がある青系列を採用したいところですが、2つの系列のRFは同一なのでRFでは判断できません。

こういう場合、損益のバラツキ(標準偏差)を考慮するシャープレシオが役立ちます。2つの系列の取引回数も同じだとすれば、シャープレシオの分子の損益率の平均値$\bar{r}$はほぼ同じになります。一方で分母の損益率の標準偏差$\sigma_n$は損益のブレの大きいオレンジ系列のほうが大きくなります。つまり、青系列のシャープレシオはオレンジ系列のそれより大きくなり、より安定して利益を上げられる(=投資効率が良い)と言えます

この例のように、RFだけでなくシャープレシオを見ることで損益の安定性の観点からEAを評価できます。

ソルティノレシオ(Sortino Ratio)

実は先ほど説明したシャープレシオには問題点があります。それは、シャープレシオはリスクを「損益率の標準偏差」で評価しているために、損失方向へのバラツキだけでなく利益方向へのバラツキもリスクと捉えている点です。このために、トレンドフォロー戦略など大きな利益で複数の小さな損失をカバーする戦略のシャープレシオを過小に見積もってしまうことがあります。この問題に対応するために、「ソルティノレシオ」では標準偏差を「損失を出したリターン」だけで計算してリスクを評価します。

ソルティノレシオは式(\ref{eq:sortino})で計算します。シャープレシオの計算式(\ref{eq:sharp})との変化点は分母の$\sigma_{down}$だけです。

\begin{eqnarray} \label{eq:sortino} SortinoRatio & = & K \cdot \frac{\bar{r} – R_f}{\sigma_{down}} \end{eqnarray}

$\sigma_{down}$は、式(\ref{eq:sortino_sigma})のように損失だけに限定して標準偏差を計算しています。

\begin{eqnarray} \nonumber r_i & = & \left( \frac{p_i}{p_{i-1}} \right) \\ \nonumber D_r & = & \{ r_i | r_i < 0 \} \\ \nonumber \bar{x} & = & \frac{1}{N\left(D_r \right)} \sum_{x \in D_r} x \\ \label{eq:sortino_sigma} \sigma_{down} & = & \sqrt{\frac{1}{N\left(D_r \right) – 1} \sum_{x \in D_r} \left( x – \bar{x} \right)^2} \end{eqnarray}

ここで、$N \left( X \right) $ は集合$X$に含まれる要素数を表します。説明の関係上数式に$D_r$のような「集合」の考え方が出てきますが、これは「条件を満たす値の集まり」と考えていただければ問題ありません。ここでは「損益率が負の値の集まり」を意味します。

ソルティノレシオでは、損失がコントロールされて狭い範囲にまとまっているEAは良いと評価され、ときおりそれまでの利益を吹き飛ばすような損失を出すEAは悪いと評価されます。定性的には、ナンピンや損失をコントロールしないスキャルピングは低く評価されやすく、損失をコントロールできるスキャルピングやトレンドフォローは高く評価されやすいと考えれば良いです。

利益と損失の特性

投資効率の項では、取ったリスクに対するリターンをを測る指標について見てきました。この項と次の「手仕舞い戦略の分析」の項ではEAの戦略を把握するための指標にフォーカスします。大切な資金を投入するEAについて深く理解するために、指標として計算した1つの数値を見るだけでなく、分布や散布図を確認することで指標からでは見えない傾向を把握していきます。

勝率(Winning Percentage, WP)

細かい説明はしません。全体の取引のうちの勝ちトレードの割合を表します。例えば勝率90%以上の極端な値の場合、フィルタロジックで過剰に負けトレードを排除している可能性があるため注意が必要です。

勝ちトレード数を$N_{win}$、負けトレード数を$N_{lose}$とした場合、勝率$WP$は式(\ref{eq:winning_percentage})で定義できます。

\begin{eqnarray} \label{eq:winning_percentage} WP & = & \frac{N_{win}}{N_{win}+N_{lose}} \end{eqnarray}

ペイオフレシオ(Payoff Ratio, PR)

こちらも良く使われる指標なので詳しい説明はしません。ペイオフレシオはシステムの利益の平均値と損失の平均値の比を指します。「リスクリワード」や「リスクリワードレシオ」と呼ばれることもあります。勝率とペイオフレシオはトレードオフの関係にあることが多く、スキャルピングなどの高勝率を狙うEAだとペイオフレシオは1未満、トレンドフォローなどの高いペイオフレシオを狙うEAだと勝率は$50%$未満になりやすいといえます。

平均利益を$\bar{R}_{win}$、平均損失を$\bar{R}_{lose}$とした場合、ペイオフレシオ$PR$は式(\ref{eq:payoff_ratio})で定義できます。

\begin{eqnarray} \label{eq:payoff_ratio} PR & = & \frac{\bar{R}_{win}}{\bar{R}_{lose}} \end{eqnarray}

期待利得(Expected Payoff, EP)

期待利得もよく使う指標なので概要の説明のみ行います。期待利得は1トレードで得られる利益の期待値を指します。期待利得が小さすぎる場合、ボラティリティ上昇によるスプレッド拡大や通信遅延によるスリッページなどのコストに負けてしまい、フォワードで通用しない可能性があります。期待利得が小さいEAを使う場合は動作環境には特に気を使う必要がある点に注意してください。

累積損益を$CR$、全トレード数を$N_{all}$とした場合、期待利得$EP$は式(\ref{eq:expected_payoff})で定義できます。また、ここまでに使った勝ちトレード数$N_{win}$、負けトレード数$N_{lose}$、平均利益$\bar{R}_{win}$、平均損失$\bar{R}_{lose}$を用いて式(\ref{eq:expected_payoff2})のようにも書けます。

\begin{eqnarray} \label{eq:expected_payoff} EP & = & \frac{CR}{N_{all}} \\ \label{eq:expected_payoff2} & = & \frac{N_{win} \cdot \bar{R}_{win} + N_{lose} \cdot \bar{R}_{lose}}{N_{win} + N_{lose}} \end{eqnarray}

損益分布とそのスキュー(歪度, Skewness)

次に損益の特性を把握するために損益分布とそのスキューを確認します。損益分布は、EAの分析においては損益のヒストグラムのことを指します。損益のヒストグラムとは、損益額をある一定幅の区間に区切り、その区間に含まれるデータの数をカウントして横軸に損益額、縦軸にカウントしたデータ数をプロットした図のことです。

さてスキュー(Skewness)ですが、日本語では歪度といい、式(\ref{eq:skewness})で計算する分布の歪み具合(非対称性)を表す指標です。

\begin{eqnarray} \label{eq:skewness} Skew & = & \frac{E\left[ \left( X – \mu \right)^3 \right]}{\sigma^3} \end{eqnarray}

ここで、$X$はスキューを計算する集合の値、$\mu$は$X$の平均値、$\sigma$は$X$の標準偏差です。今回の場合は$X$は損益になります。Excelならば損益の列に対してSKEW関数を適用すれば計算できます。

軽く式を見てイメージを把握しておきましょう。分子に値と平均の差の3乗があります。3乗ということは、単なる差と比べると、符号はそのままですが平均に近いものはより小さく、平均から遠いものはより大きく評価されます。この性質があるので、平均に対して左右対称であればスキューはゼロ、スキャルピングのように利益側が密集(平均に近い)して損失側の裾が重い(平均から遠い)場合はマイナス、その反対でトレンドフォローのように利益側の裾が重く損失側が密集している場合はプラスになります。

下の図は左から順に、スキューがマイナス(スキャルピング想定)、スキューがゼロ、スキューがプラス(トレンドフォロー想定)の損益分布のイメージです。

スキュー別分布
スキュー別損益分布イメージ。左からネガティブスキュー(スキャルピング)、ゼロスキュー、ポジティブスキュー(トレンドフォロー)。

ネガティブスキューの場合、利益は30ドル程度を高い勝率で稼ぐ一方、一撃で150ドル程度負けることもあるような分布になります。ネガティブスキューの損益分布を持つEAはいわゆるコツコツドカン型です。スキャルピング系のEAによく現れる特徴です。下図(左)はネガティブスキューを持つEAの累積損益です。100トレード目辺りを見ると、ドローダウンに陥る際は勢いよく負け、じわじわと復活する様が見て取れると思います。

ポジティブスキューの損益分布を持つEAは、よく負けますが一度の勝ちでお釣りがくるくらいに勝つタイプです。純粋なトレンドフォロー系EAに表れやすい特徴です。特性はネガティブスキューのちょうど反対です。累積損益(下図(右))の50トレード目前後を見ると、じわじわ負けて少数の勝ちで一気にドローダウンを抜け出す様が見て取れます。

スキュー別累積損益
スキュー別累積損益の例。左からネガティブスキュー(スキャルピング)、ゼロスキュー、ポジティブスキュー(トレンドフォロー)。期待利得はすべて同一。

注意して欲しいのは、スキューはポジティブだから良い、ネガティブだから悪い、というわけではない点です。あくまでEAの特性を表す一つの指標と認識してください。

手仕舞い戦略の分析

ここでは、各トレードに対してポジションの保有時間を横軸、利益を縦軸に取った散布図を分析して手仕舞い戦略を考察します。ランダムエントリーでも手仕舞い戦略さえ良ければトータルで利益を残せる場合があるほど、手仕舞い戦略はEAの利益獲得の手段として重要です。

下図は、ある2つのEAの保有時間と損益の関係です。1つの点が1トレードに対応します。これらは保有時間と損益の関係に特徴的な傾向を持っていることが見て取れます。

保有時間と損益の分布

左側のEAを見ると、ポジションの保有時間と損益の間に線形の関係が見て取れます。これは、時間と共に利益目標・損切り位置を変化させるロジック、もしくはスワップが特に大きい通貨ペアを扱うEAに現れる特徴です。仮に前者だとすると、このEAは時間依存の利益目標・損切り位置設定ロジックをそれぞれ2種類持っていることになりたいへん興味深いです。これを少し踏み込んで考えると、このEA特有の環境認識を行い、時間とともにリスクを下げるほうが良いのか、それとも一方向に動くと見てより大きな利益を取りに行くほうが良いのかを判断しているのかもしれません。

右側のEAは、同じ間隔で4本縦線が生じているのが見て取れます。これは確定足で決済が入るEAによく出現する傾向です。加えて、下方の損切りラインから損益ゼロの間に確定足決済を除いてトレードがほとんど存在していません。この傾向は、一定の利益が出たときに損切りをブレークイーブンに持ち上げると出現します。ブレークイーブンより上の損益ではトレードが散っており損切りラインのようなまとまった横線がないので、指値決済は行わず、おそらくロジック決済とトレーリングストップを主としているのだと読み取れます。

このように、手仕舞いでよく考慮される「ポジション保有時間」と「損益」を組合せて表示することで、手仕舞い戦略を詳細に分析して理解できます

バックテストからフォワード推移を予測する

EAを評価する上でフォワードがバックテストどおりに推移しているかは特に重要にもかかわらず、ここまでに出てきた指標は「時間」の要素が含まないために時間あたりの取引回数の変化を評価できません。バックテストではひと月に30回トレードがあったがフォワードではひと月5回しかない場合でも、指標が近ければ「順調」と評価されてしまいます。

この「バックテストからフォワード推移を予測する」では、バックテストのトレードの時間的・損益的性質を維持したまま擬似的なトレードを発生させたときに、予測される推移の分布がどうなるかを可視化します。

もう少し噛み砕いて説明します。
例えばフォワードの経過日数が100日だったとしましょう。「バックテストの性質に従って100日分の疑似トレードを行う」ことを1試行として1000回実施します。日次損益が大きい順に試行を並べたとき、例えば上から2.5%, 97.5%(下から2.5%)の位置を計算します。この2つの間には生成した試行のうち95%のトレードが含まれます。もしフォワード結果がこの範囲から外れていれば、全体の5%しか起こらないような状態、つまり異常な状態にある可能性が高い、と言えます。フォワードが下側(97.5%)より下回って推移していればバックテスト通りに推移していないと言って良いと思います。

フォワード推移予測には別の使い方もあります。
例えば、フォワードがいったんバックテストどおりに推移した後、下側(97.5%)を下回ったことがわかったとしましょう。このEAはここから平均に回帰するように連勝する可能性がありますから、まだこのEAを運用していないならば運用の始めどきです。反対に、上側(2.5%)より上回って推移していれば近々平均に回帰するようなドローダウンが発生する恐れがありますから、いったん運用を停止して様子を見ると良いかもしれません。当然外れることもあり確実ではありませんが、このようにEAの運用判断にも使えます。

では、具体的なやり方です。
やり方はいくつもありますが、単純な方法として「ブートストラップ法」を使うことができます。ブートストラップ法は、限られたデータから構成される系列を使って、もっとたくさんのデータがあるときの平均値がどの範囲にありそうかをを推定する手法です。そのために、データ系列からランダムに何回もサンプリング(リサンプリングといいます)して、似ている別のデータ系列を何本も作成してそれぞれの平均値を出し、作成した平均値の分布を作成する手順を踏みます。EA分析に当てはめれば、「バックテストのトレードから重複を許してランダムに100トレード抽出する」ことを1試行として、1000試行実施するイメージです。

ここでは、ブートストラップ法を使えばリサンプリングによってバックテストから将来の推移を何本も作成できるという点にフォーカスしてフォワード推移予測に用いることにします。

実際のEA分析で使っている方法では、バックテストで出てこないトレードを生成するためにもう少し難しいことをやっていますが、本質的にやっていることは変わりません。

バックテストのトレードのうち、再現している性質は以下の3つです。

  • 損益
  • ポジション保有時間 = CloseTime[t] – OpenTime[t]
  • 建玉時の、1つ前の建玉時刻からの経過時間 = OpenTime[t] – OpenTime[t-1]

この3つを再現することで、バックテストからトレードの時間的性質を考慮して将来の推移予測が行なえます。バックテストのトレードに対して上記3つの値を計算しておけば、Excelでもブートストラップ法でフォワード推移予測が行えます(詳しくは説明しません)。

下図は、この方法でフォワード推移予測を生成した際のイメージです。

緑色の背景の範囲にバックテストから予測したエクイティカーブの期待値が含まれる確率が95%の範囲です。先ほど説明したとおり、この範囲から外れた場合は普通ではない状態です。左図はフォワードがバックテストどおりに推移している例です。真ん中あたりでフォワードが下側を外れていますが、バックテストどおりに従っていれば平均に回帰する可能性が高いですから、このタイミングでEAの稼働を始めれば大きく勝てる可能性があります。

一方、右側はもはやフォワードが機能していない例です。常に下限を下回って推移しており、もう95%区間に回帰することはなさそうで稼働する意味のないEAです。稼働後しばらくは範囲内を推移することがほとんどで見分けがつかないことも多いですが、数ヶ月あれば概ね判断できるはずです。

さいごに、複数通貨をトレードするEAの場合、この分析はまず通貨ごとに行い各通貨での結果を把握したうえで、複数通貨での結果を分析するようにしてください。通常、複数通貨でのトレード結果を集約した場合はリターンの分散が小さくなる傾向があり信頼区間の幅が小さく出やすい(分散効果)ため、EAの特性を見誤る可能性があります。また、通貨ごとにフォワード推移が異なるため、すべての結果をまとめると通貨ごとの推移の良し悪しがわからないことが理由です。

多くのEAの中での分析対象EAの位置付けを知る

「分析対象のEAの特性を知る」、そして「バックテストからフォワード推移を予測する」では1つのEAの特性を見てきました。この「多くのEAの中での分析対象EAの位置付けを知る」では、名前の通り複数のEAに対して分析対象のEAを比較していきます。そして、位置付けを知ることを通して分析対象とは異なる特性を持つEAを抽出し、同時に動かすことで分散効果が得られやすいEAを確認します。

損益特性と投資効率

ここでは、同じような損益特性を持つEAの中で分析対象のEAの投資効率がどの程度か、他のEAと差別化できているのかを知ることで、相性の良い分散対象候補を見つけるために、EAの損益特性を表すスキューと投資効率を表すソルティノレシオを用いて分析していきます。2つの指標を組合せて分析することで、1つの指標を見るだけではわからないEAの特性が見えてきます

以下の図は横軸にスキュー、縦軸にソルティノレシオを取りEAをプロットした散布図です。ソルティノレシオは週次の損益に対して計算しています。横軸のスキューは損益特性を表しますから、分析対象のEAに近いスキューを持つEAは同じような勝ち方/負け方をする似たEAと言えます。

以下の図はインタラクティブレイアウトを採用しているため、PCやスマホの横置きなど横長の画面での閲覧を推奨します。
なお、EAへのマウスオーバーで表示される画面のRFについて、複数通貨対応EAの全ペア統合データ(ALL-PAIRS)は最大DDを正確に計算できないため$RF=0.0$としている点に注意してください。

例えば、スキューが $-1$ 周辺の青色の点KonokaSystem_USDJPY_M5を分析対象とするならば、比較対象は近いスキューを持つMBTradingSystemED1Power_ScalBeatrice DELTA2Rhino_WinModeCROCUS_EURJPYCradleロンドンは午前7時あたりになります。MBTradingSystemは頭ひとつどころかほかを突き放したソルティノレシオを示していますが、公式のバックテスト期間がわずか4年間のため、この時点では分析からは除外するのが懸命です。分析に含めるのならば十分な期間のバックテストを実施した後が良いでしょう。
改めてKonokaSystem_USDJPY_M5を類似のEAと比較すると、KonokaSystem_USDJPY_M5は頭一つ抜けたソルティノレシオを持ち、より効率的な投資対象だとわかります。もちろん「バックテストからフォワード推移を予測する」で分析したフォワード推移が順調であることが大前提になります。
ただ注意して欲しいのは、これらの中でKonokaSystem_USDJPY_M5だけを使えば良い、と言っているわけではない点です。EAでポートフォリオを組む目的はロジックや投資対象を分散することで1EAだけを動かす場合よりリスクを減らして多くの利益を得ることですから、取引通貨や時間足が異なれば分散対象になり得ます。EURUSD M5の ロンドンは午前7時と、EURJPY H1のCradleと、USDJPY H1のRhino_WinModeを分散対象に使っても良いのです。「頭一つ抜けた」というのはあくまで同じ投資対象(取引通貨、時間足)の中の話です。

ではこのKonokaSystem_USDJPY_M5と相性の良い分散対象のEAはどれでしょうか。答えは上で書いたとおり「ロジックや投資対象を分散」できる相手、つまりスキューが異なり、取引通貨や時間足が異なるEAです。今回は大きなネガティブスキューを持つMultiLogicShot_EA上がり3ハロン、レアなポジティブスキューEAのLegato USDJPY梓弓 USDJPY梓弓 EURUSDPower_of_Japanあたりが候補となります。Legato USDJPY梓弓 USDJPYは投資対象が重複しますから、スキューゼロあたりのRhino_ProfitModeRECOBA Triple Swing M53本の矢も良い分散対象候補になります。

このように、損益特性と投資効率の軸でEAを分析することで、特性が良く似たEAの中での分析対象EAの投資効率の位置付けがわかります。また、損益特性の軸上で離れた位置のEAを見つけることで、ポートフォリオを組んだ際にリスク低減が期待できるEAの候補を抽出できます。

勝率と損益特性

ここでは、EAの特性を表す勝率とペイオフレシオの2つを使うことでEAの戦略を大まかに分類します。そして、勝率とペイオフレシオから等価ライン(プロフィットファクター)を計算してグラフ上に描くことで、特性の異なるEAを比較する基準を作成します。

下図は横軸に勝率(Winning Percentage)、縦軸にペイオフレシオ(Payoff Ratio)を取った散布図です。3本のラインはプロフィットファクター(Profit Factor, PF)が$1, 2, 3$のラインです。プロフィットファクター$PF$は総利益÷総損失で計算でき、式(\ref{eq:winning_percentage})の勝率$WP=\frac{N_{win}}{N_{win} + N_{lose}}$と式(\ref{eq:payoff_ratio})のペイオフレシオ$PR=\frac{\bar{R}_{win}}{\bar{R}_{lose}}$を使って式(\ref{eq:PF-PR-WP})と表現できます。

\begin{eqnarray} \nonumber PF & = & \frac{\bar{R}_{win} \cdot N_{win}}{\bar{R}_{lose} \cdot N_{lose}} \\ \nonumber & = & \frac{\bar{R}_{win}}{\bar{R}_{lose}} \cdot \frac{N_{win}}{N_{lose}} \\ \nonumber & = & PR \cdot \frac{ \frac{N_{win}}{N_{win} + N_{lose}} }{ \frac{N_{lose}}{N_{win} + N_{lose}} } \\ \label{eq:PF-PR-WP} & = & PR \cdot \frac{ WP }{ 1 – WP } \end{eqnarray}

あとは$PF=PR \cdot \frac{ WP }{ 1 – WP }=1,2,3$となる$WP$と$PR$の組を計算すれば、勝率とペイオフレシオのグラフ上にPFの線を引けます。

※このグラフは横長の画面での閲覧推奨です。

このグラフ上では、スキャルピングのような高勝率低PR型のEAは右下に、トレンドフォローのような低勝率高PR型のEAは左上に配置されます。そして、総損失に対する総利益が大きい(PFが高い)EAは右上に寄っていきます。
ここで注意して欲しいのは「PFが高い=優れたEA」ではないという点です。特に高勝率型EAの場合、もともと損失を出す取引の総数が少ないため、強くフィルタをかけ負け取引を排除するだけで簡単にPFは上がります。このようなEAはフォワードでも一時的に勝てるかもしれませんが、バックテストに出現しない値動きが起きたときにフィルタが機能せず、莫大な損失を計上して一撃退場になりかねません。少なくとも長く勝ち続けることはできないでしょう。
あくまで目安ですが、勝率60~70%を超えており、かつPFが2を超えるようなEAには注意が必要です。もちろん優れたアルファを見つけてEAとして実装した例もありますから、EAのロジックを含めて精査したうえでの判断が必要です。

このグラフにおける戦略の分類方法ですが、基本は「近くにいるものは似ている」という考え方です。同じような勝率、勝ち負けの損益比率のEAは似たロジックを採用している、というスタンスです。例外もありますが、勝率が0.6を超えてPRが1.0を下回るようなEAはほとんどがスキャル型と言えますし、逆にPRが1.0を超えてくるEAはトレンドフォロー型と言えます。スキャル型の極端な例はMultiLogicShot_EA上がり3ハロン、トレンドフォロー型の例はLegato USDJPYです。前者は勝率が9割を超える代わりにPRが0.1前半しかない毎回勝つことを重視したロジックであるのに対し、後者はPRが2に近い代わりに勝率が4割の、小さく負け続ける中で大きな勝ちを狙うロジックです。この例から明らかなように、勝率とPRが明らかに異なるEAはロジックの狙いそのものも異なる可能性が高く、同時に運用することで高い分散効果を得られると期待できます

一方で勝率0.6~0.7辺りをみると、多くのEAが集まっています。これらのEAは今回の勝率とPRという切り口で見ると同じような特性を持つよく似たEAであると言えます。これらのEAはすべて小さく勝って大きく負けるタイプです。そのため、2019年のフラッシュクラッシュや2020年のコロナショックなどの想定外の大相場が来たとき、すべてのEAがまとめて大きく負ける可能性があります。上記ショックのような極端な動きをする“クライシス”と呼ばれる相場では、平時のリターンの相関が低いとしても同じようなロジックを持つEAの相関は高くなりやすいです。理由は様々ありますが、クライシス相場ではどの通貨・時間足でも一様にボラティリティが高くなり、一方向に協調して変動することが増えることがひとつの理由だと考えられます。
ただ注意して欲しいのは、この中の1つだけを動かせと言っている訳ではない点です。同種のロジックでも取引通貨や時間足が異なるEAでポートフォリオを組めば分散効果は得られます。避けるべきは、同種のロジック”だけ”でポートフォリオを組みクライシスで退場に追い込まれることです。様々なロジックに投資対象を分散し、かつ同種のロジックでも異なるいくつかの対象に分散することが、もっともリスクを減らせるポートフォリオの組み方のひとつです。

まとめると、この分析で把握すべきことは以下の2点です。

  • 同時稼働は注意すべき、分析対象のEAとよく似た特性を持つEA
  • 良い分散対象となる、全く異なる特性を持つEA

これらを把握することで、分析対象のEAと比べる対象となるEAがわかり、同時にポートフォリオを組む候補を見つけられます。

他のEAとのエクイティカーブの相関係数

ここまでは目視で直感的にわかる分析を行ってきました。ここではもう少し数値的にEA同士の関係性を見ていきます。具体的には、タイトル通り「EA同士のエクイティカーブの相関係数」を計算することでEA同士の似ている度合いを判断します。相関係数には式(\ref{eq:correlation})で表現されるピアソンの積率相関係数$COR$を用います。一般に使われる相関係数です。

\begin{eqnarray}
\label{eq:correlation}
COR & = & \frac{\sum_{i} \left(x_i – \bar{x} \right) \left(y_i – \bar{y} \right)}{\sqrt{\sum_{i} \left( x_i – \bar{x} \right)^2 } \sqrt{\sum_{i} \left( y_i – \bar{y} \right)^2} }
\end{eqnarray}

ここで、$x_i, y_i$ は相関係数を計算する2つの系列$X, Y$の値、$\bar{x}, \bar{y}$は系列${x_i}, {y_i}$の平均値です。相関係数は系列$X, Y$の共分散$cov\left(X,Y\right)$と標準偏差$\sigma_X, \sigma_Y$を用いて式(\ref{eq:correlation2})と書くこともできます。

\begin{eqnarray}
\label{eq:correlation2}
COR & = & \frac{ cov\left(X,Y\right) }{ \sigma_X \cdot \sigma_Y }
\end{eqnarray}

分析を行ううえで知っておくべき相関係数の特徴を説明しておきます。相関係数は2つの系列の間の「直線的な」関係性を測定する指標です。単利のEAのリターン同士の関係性は正しく測定できますが、単利と複利のリターンの組み合わせやリスク割合が異なる複利のリターンの組み合わせは2つの系列の関係が「非線形、曲線的」になるので、相関係数では正しく関係性を測定できません。単利と複利の組み合わせはそもそもリスクの取り方の土俵が違うので通常は比較しません。複利同士の比較では対数変化率$\log\left( p_i / p_{i-1} \right)$を使って比較することで、単利同士を変化額$\left( p_i – p_{i-1} \right)$で比較する場合と同じように比較できます。

本ブログでのEAのエクイティカーブの相関係数は、週次で集計したエクイティカーブの変化額をもとに算出します。週次を使う理由ですが、EAの運用判断は日ごとには行わず最低でも週ごとに行うだろうという運用上の想定がひとつです。そして、日次で判断する場合はEAの取引数の違いが原因で相関係数が過剰に小さく見積もられることがあることも理由です。
例えば年間取引回数が平均100回のEA1と平均300回のEA2を考えます。年間の取引日数を252日と考えると、EA1は週に平均2日だけトレードし、EA2はほぼ毎日トレードします。日次で集計するとEA1は週の3日は変化額がゼロになり、毎日変化が生じるEA2との相関係数は明らかに小さくなってしまいます。場合によっては、日次では相関係数がほぼゼロでも週次では高くなることもあり得ますその意味でも運用上の判断に用いる期間で計算した相関係数を使うことは大切です

また、相関係数を求める際は期間を揃える必要があります。相関係数には「時間」の要素は存在しないので、分析者自身が期間を揃えないと正しく相関係数を計算できません。(相関係数自体は2000年~2002年の結果と2004~2006年の結果の組に対しても求められます)この分析では都度分析に応じた期間を抽出したり、必要ならば改めて条件を揃えたバックテストを行って相関係数を計算します。

相関係数ですが、一般には絶対値が0.4を越えてくると相関があるとみなされることが多いので、このあたりを目安としておけば良いです。0.4を超えなければ大丈夫、ではなく、0.4を超えるEAは同時稼働しない、0.4以下でも相関係数が高いものは要注意、が推奨する考え方です。

ただ、これはポートフォリオを目視判断と経験に基づいて選択するのではなく、平均分散アプローチに基づいて選択する際には話が変わってきます。詳しくは書きませんが、平均分散アプローチの立場ではポートフォリオの分散(標準偏差)はポートフォリオ内のEAの相関係数(正確には共分散)も用いて計算します。この場合は相関係数が小さくても影響が出る可能性がある点に注意してください。

以下は、「損益特性と投資効率」「勝率と損益特性」で取り上げたEAに対して、公式のバックテストを使って相関係数を計算した例です。期間は公式バックテストの共通期間2010年01月04日~2015年12月30日を含む週としています。

まず、例として取り上げた中でスキュー・勝率-PRの切り口で似た特性を持つEAが存在しないMultiLogicShot_EALegato USDJPYに注目します。この2つのEAに対して相関係数が0.2を超えるEAは存在しておらず、スキュー・勝率-PRの観点同様に相関係数で見ても似たEAはほとんど存在しません。この2つのEAは他のどのEAとも異なるロジックを採用していると考えられ、今回見たどんなEAと組合せても分散効果が得られ投資効率を改善できそうです

一方で、スキュー・勝率-PRの切り口で良く似た相手がいるED1ユーティリティ・プレイヤーを見てみます。ED1Power_Scalとの相関係数が0.443もあり、大変良く似たエクイティカーブを持っていそうです。もう少し詳しく見ると、ED1Power_Scalも取引通貨はEURUSDで同じ、時間足はM1とM5で異なりますが短期足という点は変わらないため、全体のエクイティカーブとしても良く似たのだと考えられます。この2つは作者が同じであるため、同一ロジックを使いまわして作成したのかもしれません。この2つを同時に動かす意味がないとは言いませんが、別の分散対象候補のEAを動かした上で証拠金的に余裕がある場合のみ同時稼働すべきです。ユーティリティ・プレイヤーについても同様で、スキュー・勝率-PRの観点で近い位置にいるCounterQとの相関係数が0.3を超えており、同時稼働には注意が必要です。なお、この2つのEAはどちらもUSDJPY M5が投資対象です。ユーティリティ・プレイヤーは他にもRECOBA Triple Swing M5、特にEURJPYとの相関係数が0.23程度あるので同時稼働には注意が必要です。それ以外のEAは0.1前半以下の相関係数しかないので、相関係数の切り口で見れば同時稼働に大きな問題はなさそうです。スキュー・勝率-PRの切り口での類似性と合わせてポートフォリオを検討すれば、よく分散したポートフォリオを作成できます

今後のポートフォリオ運用について

昨今のトランプ相場により安定した成績が期待できない状況が続いております。
本プログラムは12月〜5月の6ヶ月のお約束で延期させて頂いておりますので、記事の方は引き続き執筆させて頂き、ポートフォリオは相場が安定するまで停止させて頂きます。

期待して記事を購読して頂いた方々には非常に申し訳なく、心苦しい限りではございますがご理解頂けたら幸いです。

ポートフォリオシミュレータの使い方〜その2〜

前回は、EA-BANKポートフォリオシミュレータの説明と、実際にそれを使ってポートフォリオを組む方法を説明しました。

毎回イチからポートフォリオを組むのは大変なので、ポートフォリオシミュレータにはあらかじめ選出されたポートフォリオ、EA-BANK SELECTIONが存在します。今回は、このEA-BANK SELECTIONを使って自分なりのポートフォリオを組む方法を説明していきます。

EA-BANK SELECTIONとは

EA-BANK SELECTIONとは、EA-BANKがEA戦略や期待利得、想定する最大ドローダウンに基づいてEAを選別して提供している基本ポートフォリオです。「EA-BANK SELECTIONから選ぶ」から確認できます。

現在は、最大ドローダウン想定10万円~50万円まで、EA数10~40個、戦略や期待利得で8種類のポートフォリオが提供されています。ウィンドウ右側の構成EA列の「〇〇個のEA」というボタンを押すとポートフォリオの構成EAを確認できます。

EA-BANK SELECTIONをベースにポートフォリオを組み替える

では、このEA-BANK SELECTIONをベースにしてポートフォリオを組み替えてみましょう。まず、ベースにするポートフォリオを選びます。今回は自分で選ぶのが結構面倒な高期待利得EAを中心にした「20EAポートフォリオ-高期待利得EA」をベースに、5個のEAを追加して25EAのポートフォリオを作ってみましょう。

EA-BANK SELECTIONからベースポートフォリオを選択

まず、EA-BANK SELECTIONの画面を開き、「20EAポートフォリオ-高期待利得EA」を選択して「このポートフォリオを使う」をクリックしてください。ポートフォリオが選択され、ポートフォリオ結果の画面が表示されます。

損益傾向の確認

まず、直近の成績を確認しておきましょう。期間の設定を2015-01-01~2023-01-01に設定し、Out-of-Sampleとして直近2年強を確認できるように設定します。

最初にポートフォリオ損益グラフで過去の期待値に対する直近の成績を確認します。添付の図を見る限り、ほぼ期待値通りに推移しているのでこのポートフォリオは今後も成績を残せる可能性が高そうです。

ポートフォリオバランスの確認と方針決め

次にポートフォリオ全体のバランスを確認します。「類似EAグループ」を見るとポートフォリオ構成EAの特性は全体に満遍なく散っていますが、EAがほとんど採用されていないエリア(赤丸)が見受けられます。このあたりを埋めるようにEAを採用していくのが基本方針になりそうです。

「戦略/通貨ペア」グラフでEAの戦略や通貨ペアが偏っていないかを確認します。戦略は満遍なく分散していますが、通貨ペアがUSDJPYに相当偏っています。実際に通貨ペアごと、通貨ごとに集計すると下の表のようになり、USDJPYが12EAもあります。通貨単位だとUSDを取引するEAが14EA、JPYは17EAあり、USDやJPYの変動に大きく影響を受け得る構成になっています。採用通貨を補間し、USDやJPYの影響を減らすのも方針の一つになります。

最後に「勝率/ペイオフレシオ」グラフですが、これは「戦略」に特化してEAを確認している状態なので、これまでの内容と読み取れる情報は重複します。より詳細に戦略を分析したいときに確認してください。

方針に基づいたEA採用

ポートフォリオバランスを確認し、以下の2つの方針が得られました。

  • EAがほとんど採用されていないエリアを埋めるようにEAを採用
  • 採用通貨を補間しUSDやJPYの影響を減らせるEAを採用

つまり、赤丸のエリアでUSDやJPYを含まないEAのうち、成績の良いものを採用するのが基本方針です。とはいえ完璧に条件を満たすEAがあるとは限らないので、ある程度の妥協は必要です。

グラフ下部にある通貨ペアの文字をクリックすると、その通貨ペアの表示・非表示を切り替えられます。実は、USDやJPYを含むEAを排除すると真ん中上部の赤い点(RGM-86T)の回り以外にほとんどEAが残りません。これだけで補間するのは無理なので、ここから1~2個採用し、残りは特に数が多いUSDJPYを除いた通貨ペアのEAから選ぶ方針とします。

以下はUSDJPYを除いたEAを表示したグラフです。これなら十分に採用候補EAがあり、良さそうなEAを選べそうです。左側の赤丸の中から順に#1,#2,#3,#4と名前を付け、それぞれ1個、2個、1個、1個のEAを採用します。どのEAを採用するかは実際に自分で手を動かして考えてみていただきたいと思いますが、ここでは「直近2年を含めてフォワード成績が良好であること」「採用優先順位はUSD,JPY以外 >> USDを含むEA ≥ JPYを含むEA >> USDJPY」の2つの軸で以下のEAを選ぶことにします。

これらのEAを採用すると、以下のように全体に満遍なく特性が分散するように補間できました。ポートフォリオ損益グラフを見ても、変わらず期待値通りに推移するポートフォリオとなっており、大きな課題はなさそうです。

このような手順を経ることで、EA-BANK SELECTIONをベースにして比較的手軽に自分なりのポートフォリオを作成することができます。さらにポートフォリオを補強するのであれば、USDとJPYを減らすようにいくつかのEAを入れ替えるのも良いと思います。ご自身で色々とバリエーションを作成してみてください。

最後に今回作成したポートフォリオへのリンクを以下に載せておきますので、ご自身の試行錯誤の参考にしてください。

https://s.ea-bank.com/6C9Is4

EAポートフォリオシミュレータの使い方

EAポートフォリオシミュレータとは

EAポートフォリオシミュレータとは、EA-BANKに登録されている150個以上のEAを任意に組み合わせて、自分だけのポートフォリオを構築することを支援するツールです。ポートフォリオシミュレータそのものについて全体像を知るには、公式サイトの解説ページを見ていただくのがわかりやすいと思います。現在はこの解説ページの内容に加えて、「ポートフォリオ候補EAの自動抽出機能」「Out-of-Sample期間*の統計値表示機能」がリリースされています。

*Out-of-Sample期間とは、今回の場合はポートフォリオ配分計算に”使っていない”期間のことを指し、配分計算の妥当性を確認するために用います。

ポートフォリオ候補EAの自動抽出機能

この機能は、前回解説したEAポートフォリオにおけるEAの分散を担保するために必要であった、「取引通貨」「取引戦略」「取引スパン」「損益相関」を考慮して、自動的に指定した数のEAを抽出してくれる機能です。ポートフォリオシミュレータ内の「おまかせEA抽出」をクリックすると利用できます。

「おまかせEA抽出」画面ではEA抽出条件を設定でき、「ポートフォリオに組み込みたいEAのタイプ」では「EAの取引戦略」の観点から抽出対象とするEAの種類を、「重視するファクター」では「似たEA」の中から最も良い1つを選ぶための基準を選択できます。「抽出するEA数」は文字通り何個のEAを抽出するかを選択します。

しばらく待つと以下のようなEA抽出結果一覧画面が表示されます。内容を確認して「EAをポートフォリオに加える」をクリックすると、ポートフォリオにこれらのEAが追加されます。抽出条件を変更したい場合は画面左上の「<<」をクリックしてください。

おまかせEA抽出は、すでに今のポートフォリオに新しいEAを加えたい場合にも使えます。「+EAを追加する」から「おまかせ抽出」を選ぶと先ほど同様にEA抽出の条件設定画面が現れます。

先ほどとの違いは「すでにポートフォリオに組み込まれているEA」が表示されている点で、「今のポートフォリオに追加するのに適したEA」を指定した条件に従い抽出します。例えば「バランス型」「トレンドフォロー型」メインのポートフォリオに少しのスキャルピングEAを加えたい場合などに使います。

条件指定後の流れは先ほどと同じです。

Out-of-Sample期間の統計値表示機能

ポートフォリオシミュレータでは、ポートフォリオ配分計算の期間を前日(今日が2025/2/1であれば2025/1/31)までの期間で自由に指定できます。終了日が前日より前の日付(例えば2022/12/31)を指定した場合、終了日の翌日〜前日(2023/1/1〜2025/1/31)の期間はポートフォリオ配分計算に使わない期間になります。この期間をOut-of-Sample期間と呼び、その期間での取引の統計値を表示します。

反対にポートフォリオ配分計算に使う期間のことをIn-Sample期間と呼びます。ポートフォリオはこのIn-Sample期間での成績が良くなるように配分を調整されているため、この期間に過剰に適合してしまい、それ以外の期間で期待した通りに動作しない可能性があります。それを確認する手段の一つがOut-of-Sample期間の損益や統計値を確認することです。

以下の2つの画像右側の赤枠で囲われたエリアがそれにあたります。 1枚目のグラフは、In-Sample期間の損益(薄緑)とIn-Sample期間の損益からの将来の予測損益レンジ(水色背景エリア)、Out-of-Sample期間の損益(濃い緑)が表示されています。水色背景エリアの中に濃い緑の線が入っていれば、過去の期待値通りに推移していると確認できます。 2枚目の表にはIn-Sample期間とOut-of-Sample期間の損益の統計値が表示されています。取引回数と成長は集計期間の長さに比例して数字が変わってしまうので比較する意味は薄く、それ以外の期待利得や勝率、Recovery Factor(RF)などの統計値を比較します。

ポートフォリオシミュレータを使ったポートフォリオ構築

自分でEAを選んでポートフォリオを組んでみる

実際にポートフォリオシミュレータを使って、ポートフォリオを組んでみましょう。

まずは5個のEAを使ったポートフォリオを組むことにします。

1. 許容するドローダウンを入力します。
この値はポートフォリオ運用の際に自分が許容できる最大ドローダウンの値を入力します。注意して欲しいのは、あくまで過去のデータを元に算出されるドローダウンなので、実運用ではその値を超えるドローダウンが発生する可能性があります。資金効率とリスクのトレードオフを考えると、運用資金の20%(ローリスク)〜50%(ハイリスク)の中で自分が許容できる値を設定しましょう。


2.ポートフォリオ算出期間を入力します。
今回は成績を見るための練習も兼ねて、2015/01/01〜2022/12/31を設定してください。この設定では、In-Sample期間は8年間、Out-of-Sample期間は2年ちょっと(計算日によって変わる)になります。

3.「自分でEAリストから選ぶ」を選択します。
 a. まず一つEAを選ぶ。
開いたEA一覧ウィンドウの中から、どのEAでも良いので自分が気になるEAを1つ選んでください。期待利得やRecovery Factor(RF)、シャープレシオでソートして最も良いEAを選んでも構いません。例では、Alps_EURCHF_M30(EURCHFでペイオフレシオ0.44)を選ぶことにします。

 b.「取引通貨」「取引戦略」「取引スパン」を分散させて残りの4EAを選ぶ。

取引通貨=通貨ペア、取引戦略=PayoffRatio(ペイオフレシオ、PR)、取引スパン=平均保有時間として、これらをできるだけ分散させて残りの4つのEAを選んでください。 例で選んだTK-EX USDJPYは通貨ペア=EURCHF、ペイオフレシオ=0.44、平均保有時間=34.6ですので、別の通貨ペアでペイオフレシオ・保有時間が異なるEAを探します。ペイオフレシオと保有時間は比較的正比例する傾向があるので、ペイオフレシオと保有時間が、(低い・短い)〜(高い・長い)の組み合わせを、いろいろな通貨ペアから選ぶ、という考え方をすると選びやすいです。 なお、通貨ペアはペアとして異なるだけでなく、含まれる「通貨」自体の重複をできるだけ減らすことが望ましいです。5EAの場合は10種類の通貨を1回ずつ採用している状態が最も良いのですが、いつも欲しい種類のEAが存在していて成績も良いとは限らないので、6種類の通貨で4種類は2回ずつ採用するくらいでも構いません。採用できそうなEAと相談して決めましょう。 選び終えたら「EAを追加する」をクリックします。

4.EAの分散状況を確認する。
EAをポートフォリオに追加したら、「類似EAグループ」や「勝率/ペイオフレシオ」のグラフを確認し、全体にまんべんなくEAが分布しているかを確認します。以下の図の場合、「類似EAグループ」では比較的綺麗に分散していますが、「勝率/ペイオフレシオ」では真ん中らへん(ペイオフレシオ1.0〜1.5周辺)が抜けており、右側(ペイオフレシオ0.6あたり)に2つのEAが固まっています。片方を真ん中に移せれば理想的ですが、都合よくそのようなEAが存在するとは限らないので、2,3個のEAをまとめて変えないと上手くいかないことが多いです。手作業でポートフォリオを組む場合、納得がいく構成になるまで何度も試行錯誤が必要になります。

5.ポートフォリオの損益グラフと統計値を確認する。
納得がいく構成を作成できたら、損益グラフと統計値を確認して、直近まで安定して推移しているかを確認します。この成績の場合、2023年末までは期待値通り安定して推移していますが、2024年以降は成績を落としており直近の相場を苦手としていそうだとわかります。統計値を見てもOut-of-Sample期間のシャープレシオ、RF、ペイオフレシオが大きく悪化しています。この結果を見ると、このポートフォリオを動かすのはリスクが高そうだと判断できます。原因となったEAを入れ替え、ポートフォリオを調整する必要がありそうです。

6.ポートフォリオを調整する。
先ほどは2024年の成績が悪いEAが集まってしまっていたため、それらを別のEAと差し替えることにします。今度は個別EA紹介ページ(EA名に設定されたリンクから飛べる先)の成績も見て、直近の成績も良いEAを中心にポートフォリオを組んでみます。例えば以下のAtlas_FXのように、全体的に成績が安定していて、直近も調子を崩していないEAを集めます。この考えで、AussyEA_AUDJPY_M30以外の4つのEAを入れ替えました。

その結果が以下のポートフォリオです。このポートフォリオでは、損益グラフは水色背景エリアの中に濃い緑の線が入っており、In-Sample期間の期待値に従いOut-of-Sample期間も推移しており、統計値も比較的近い傾向を示しています。「類似EAグループ」「勝率/ペイオフレシオ」グラフ上でもよく分散しており、このポートフォリオなら将来でも同様の成績を残してくれそうなので、これらのEAを組み合わせたポートフォリオを採用することにしましょう。

7.直近までの損益に基づいてロット配分を決定する
最後に、直近の成績を含めてポートフォリオとしてのロット配分を決定します。EA構成は変えないまま、期間指定の「終了」を昨日の日付に設定して「ロット配分を自動計算する」ボタンを押します。その結果「lot数」列に表示される値が、各EAに設定するロットになります。

慣れないと中々大変な作業ですが、このようにして自分独自のEAポートフォリオを作成できます。

あるEAを軸にして、おまかせEA抽出でポートフォリオを組んでみる

手動でポートフォリオに組み込むEAを選ぶのは非常に大変でした。「おまかせEA抽出」機能を使うとより簡単にEAの分散を考慮しながらEAを抽出できます。

すべておまかせする場合

1.直近の成績も重視してEAを選ぶ
先ほどのように期間の「開始」を2015/1/1に設定すると、直近の成績が全体の成績に埋もれてしまい、「直近の成績は芳しくないが全体を見るととても良い」EAが選ばれてしまうことがあります。例えば直近4年間の成績だけをみてEAを抽出しておき、後から全体の期間を見てロット配分を設定すると、先ほど手動で行ったことに近いポートフォリオを構成できます。
期間を直近3〜4年(例えば2021/1/1〜昨日)の範囲に設定します。

2.おまかせEA抽出を実施
おまかせEA抽出の条件を設定します。今回の例の場合、EAタイプはすべてにチェックを入れ、EA数は5個に設定します。重視するファクターはお好みで構いません。

3.抽出されたEAで構成されるポートフォリオの成績を確認する
期間を長期に設定(例えば手動と同様に2015/1/1〜2022/12/31)に設定し、損益グラフと統計値を確認します。この例の場合、自動抽出されたEAで構成されるポートフォリオは、In-Sample期間の期待値通りに推移しており、統計値も極端な変動はない(Out-of-Sample期間が多少悪くなるのは通常)と確認できます。

4.必要に応じて手動でポートフォリオを調整する
今回は行いませんが、EAの分散などを見ながら手動でポートフォリオを調整します。
5.直近までの損益に基づいてロット配分を決定する
構成EAが決まったら、手動の時と同様に昨日までの成績に基づいてロット配分を決定します。EA構成は変えないまま、期間指定の「終了」を昨日の日付に設定して「ロット配分を自動計算する」ボタンを押します。その結果「lot数」列に表示される値が、各EAに設定するロットになります。

軸となるEAを自分で選ぶ場合

1.期間を直近数年に設定する
すべておまかせの場合と同様に、期間を直近3〜4年(例えば2021/1/1〜昨日)の範囲に設定します。
2.軸にしたいEAを選ぶ
1つ以上、ポートフォリオに絶対に組み込みたいEAを手動で選んでポートフォリオに追加します。今回はZephyr(USDJPY)を軸にするEAにします。
3.おまかせEA抽出で残りのEAを選ぶ
「+EAを追加する」から「おまかせ抽出」を選び、EA数を4個に設定して合計5個のEAが選ばれるようにします。

4.あとは「すべておまかせ」と同様の手順

まとめ

この記事では、EA-BANKのEAポートフォリオシミュレータを用いて自分独自のポートフォリオを組む方法を紹介しました。手動でEAを選ぶ方法、「おまかせEA抽出」でベースを作る方法、指定したEAを軸に「おまかせEA抽出」でポートフォリオを構成する方法を解説しており、この記事を見れば自分自身で独自のポートフォリオを組めるようになっています。ぜひ、自分でいくつかポートフォリオを組んで、納得がいくものができれば運用してみてください。その場合も、月1回程度の頻度で定期的にポートフォリオ構成EAの見直しやロット配分の再計算(リバランス)を行うことをお勧めします。

2月の入れ替え(全EA、0.01)

2月の全EAの入れ替え表です。
先月に引き続き国内証券に移行するにあたって期待利得の低い、又はスプレッド負けしそうなEAは取り下げましたので更に数が減っております。
今月は様子を見て頂いた方が無難かと思います。
管理表zipファイルは本ページのリンクからDLお願いします。

0.01の管理表となります。G列の赤字が採用で青字が取り下げとなっております。

1月の入れ替え(0.01)

事前に配布済みの0.01ですが、これまでの方針はEAの取り下げや新規追加以外は入れ替えは無しで運用してきましたが、全EAでも説明させていただいた通り国内に移行するにあたって期待利得の低い、又はスプレッド負けしそうなEAの運用を停止しております。
期待利得の低いEAを停止した事で相対的にトレンドフォロー型に組成され直しているので、これまでよりも安定する想定です。
管理表は本ページのリンクからDLお願いします。


※管理表について
・今後は0.01も毎月少しですがアジャストしていく事になるので多少の入れ替えが出てまいります
・グレーのセルは取り上げEAとなります
・紫と青のセルは今月は使用しなかったEAとなります
・今後もう少し見やすくなるように改修してまいります