エクセルを使ってシステムトレードを検証する

FXで長期的に利益を出すには、手法を検証する必要があります。

エクセルを使ったFXの検証方法では、MT4(メタトレーダー4)からヒストリカルデータをダウンロードし、エクセルを使ったかんたんな検証方法を紹介しました。

ここではさらにもう一歩踏み込み、損益や勝率、プロフィットファクターなどさまざまな面からシステムを評価する方法を紹介します。

システムを評価する

FXのトレード手法ができあがったら、「実際のトレードで通用するものなのか」「過去のチャートにおいてどのような損益曲線を作るのか」を適切に評価する必要があります。

システムを評価するにはここでは以下の項目を使います。

  • 損益
  • 勝率
  • PF(プロフィット・ファクター)
  • 平均勝ち
  • 平均負け
  • 最大勝ち
  • 最大負け
  • PR(ペイオフ・レシオ)

PFやPRなどの項目が難しく感じる場合は、FXで生き残るために必要な最低限の検証方法で概要をおさらいしておきましょう。

ここではエクセルを使ったFXの検証方法で使ったエクセルの表を使います。

 

検証項目の入力

現在、F列に「損益」、G列に「累積」が入力されています。

今回はH列に「項目」を入力し、I列に「関数」を入力します。

また、何度か書いていますが、検証方法やエクセルの関数の使い方は何種類かの方法があります。ここでは比較的やさしい方法、もしくは両方を説明するので、お好みの方法をお使いください。

それではひとつずつ見ていきましょう。

損益(総利益・総損失)

損益=総利益−総損失

損益は総利益から総損失を引いたもの、つまり、すべてを足したものなので、F列をすべて足したものと同じです。

=SUM(F3:F261)

損益を出したついでに総利益と総損失も出してみましょう。

総利益

総利益は利益をすべて足したものです。利益とは0より大きい値になります。関数には「0より大きい値だけ足す(返す)」ために、足し算の条件を設定できるSUMIF関数を使います。

=SUMIF(F3:F261;”>0″)

総損失

総損失は損失をすべて足したものです。損失とは0より小さい数になります。関数には「0より小さい値だけ足す」ために、おなじくSUMIF関数を使います。

=SUMIF(F3:F261;”<0″)

勝率(勝ち・負け)

続いて勝率を出します。勝率を出すために、まずは「勝ち」の数と「負け」の数を計算します。

勝ち

勝ちの数は「0より大きい値のセルの個数」を足した数になります。関数には「0より大きい値の数をカウントする」ために、条件に一致するセルの数を数える(返す)COUNTIF関数を使います。

=COUNTIF(F1:F261;”>0″)

負け

負けの数は「0より小さい値のセルの個数」を足した数になります。関数には「0より小さい値の数をカウントする」ために、おなじくCOUNTIF関数を使います。

=COUNTIF(F1:F261;”<0″)

勝率を計算する

勝ち数と負け数が計算できたら、勝率を計算します。

勝率は勝ち数を総取引数(勝ち負け+負け数)で割ります。

=I6/(I6+I7)

 

勝率の表示_小数点

このままだと、表示が%ではなく小数点になっていると思います。

 

勝率の表示_パーセント

エクセルやOpenOfficeなどの表計算ソフトで「数の書式」を「パーセント」で表示します。OpenOfficeだと画像のピンクの四角の場所をクリックするとパーセント表示できます。

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

PF(プロフィット・ファクタ)は総利益が総損失の何倍かを表します。いまいちイメージしにくいですが、1以上でその手法がプラスになることになります(ドローダウンは吟味していません)。

反対に1未満の場合、その手法は利益より損失が大きいことになるため、使えない手法であることが分かります。

PF=総利益÷総損失

=I4/I5

 

PFの小数点の設定1

小数点以下の数が多くなってしまった場合は、「セルの書式設定」で小数点以下の値を設定します。

 

PFの小数点の設定2

今回は「小数点以下の桁数」を[2]で設定しました。

 

平均勝ち・平均負け

トレードごとの平均勝ち、平均負けを計算します。

平均勝ち

平均勝ちは勝ちトレードの平均の値です。いわゆる平均何pips勝てるかというものです。

平均勝ち=総利益÷勝ちトレード

=I4/I6

平均負け

平均負けは負けトレードの平均の値です。

平均負け=総損失÷負けトレード

=I5/I7

先ほどとおなじように、どちらも「小数点以下の桁数」の設定をしておきましょう。

最大勝ち・最大負け

全トレードの最大勝ち、最大負けを計算します。

最大勝ち

最大勝ちは勝ちトレードの中でもっとも大きい値です。

最大勝ちを計算するには、トレード結果が入力されているF列からもっとも大きい値を探す(返す)MAX関数を使います。

=MAX(F3:F261)

最大負け

最大負けは負けトレードの中でもっとも小さい値です。

最大負けを計算するには、トレード結果が入力されているF列からもっとも小さい値を探す(返す)MIN関数を使います。

=MIN(F3:F261)

PR(ペイオフレシオ)

PRは損益率を表します。平均勝ちが平均負けの何倍かを表します。

平均勝ちを平均負けで割ることで計算できます。

PRは検証の中で理解しにくい項目なので、きちんと理解しておきましょう。

PR=平均勝ち÷平均負け

=I10/I11

しかし、このままだと平均負けがマイナスで計算されているため、答えがマイナスになってしまいます。-1を掛けて0以上になるようにしてあげましょう。

=I10/I11*-1

収益がトントンになるPRを計算する

また、負ける確率を勝率で割ることで、その勝率における収益がトントンになるPRを計算することができます。

収益がトントンになるPR=負ける確率÷勝率

たとえば今回の手法だと、勝率が47%なので負ける確率は53%になります。

53÷47≒1.13

つまり、1.13以上のPRがあれば勝てることになります(ドローダウンは吟味していません)。

1.13以上というのは、たとえば平均損失を10pipsとした場合、平均利益が11.3pipsより大きいと勝てることを意味します。

しかし、この手法のPRは0.81です。

以上のことから長期的にトレードすればするほどマイナスになることが分かります。

まとめ

エクセルを使ってシステムトレードを検証する方法を紹介しました。これらの項目を使って検証をすることで、今使っているシステムやこれから作るシステムを客観的に評価できるようになります。トレードのお役に立てれば幸いです。