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


数字

FXでトレードをしようと思ったとき、突然マーケットの中に飛び込んでしまっては怪我をするのは目に見えています。もしくは偶然の当たりを実力と錯覚してしまうと、遅かれ早かれ相場を退場してしまうことは必至です。

とは言うものの、FXでトレードをはじめようと思ったらという手引きを作ったとて、当サイトには「これからFXをはじめて一攫千金を狙うんだ、フンガフンガ」という方はいらっしゃらないと思います。

稀にインターネットの海を彷徨い歩いて、漂流してしまう方もいらっしゃるかと思いますが、想像以上のFXの月利や年利の低さから興ざめされることは間違いありません。

FXの酸いも甘いも経験したあとは、裾野の広いFX界隈は卒業して、本当に利益が出る方法を作り出す必要があります。または作る方法のきっかけを教えてもらう必要があります。

FXに限らず、相場でシステムトレードをはじめるには、優位性のある手法(システム)を開発して、それを評価する必要があります。これらの作業を「検証」「バックテスト」などと呼びます。

ここではエクセルを使ってシステムトレードを検証する方法について見ていきましょう。

 

エクセルを使った検証

当サイトにお問い合わせをいただくことのひとつに検証方法があります。2015年の2月から月に1回程度ですが、少しずつエクセルを使った検証方法について記事を書いてきました。

(検証方法についてのお問い合わせが減ったのは、記事を書くようになったからか、需要が減ったからか、「すべてがFXになる」が見限られたか…)

以下はこれまでに検証について書いてきた記事になります(実際には検証をはじめる前の件も含まれています)。

直近3回の検証の記事ではエクセルを使って検証をしてみました。

前回の「エクセルを使ったFXの検証 – グラフを作成して視覚的に分かりやすくする」では、検証結果をグラフにして視覚的に評価するということもしました。

今回はもう一歩踏み込んで、数字としてシステムトレードを評価できるようにします。

FXで生き残るために最低限必要な検証方法

 

システムを評価する

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

先ほどから「システム」を「開発」してなどと、非常にレベルが高いようなことを言っていますが、なにもパソコンに向き合ってカタカタパチーンとプログラミングをするわけではありません。

アレです。「ネットビジネスで起業する」と声高に言いたがってしまう系の方と同じになってしまいます。

さて、拘っても仕方ないので進みましょう。システムを評価するには損益、勝率、PF(プロフィットファクタ)、平均勝ち、平均負け、最大勝ち、最大負け、PR(ペイオフレシオ)などを出す必要があります。

おさらいをすると、現在、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

 

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

PFの小数点の設定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とは、その勝率において、1回あたりの利益が損失の何倍かというものです。

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

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

47÷53=0.89

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

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

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

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

 

まとめ

エクセルを使ってシステムトレードを検証する、いかがでしたでしょうか。

今回は割愛しましたが、最大連続負け、最大DD(MDD)など、システムトレードは負けのことを考えることも大切です。

検証はテンプレート(ひな形)を作ると応用ができるようになります。FXに真剣に向きあうために、ひとつずつ覚えていきましょう。


The following two tabs change content below.
しゃまらーしか

しゃまらーしか

ひょんなことからFXサイトを作ったシステムトレーダ。東京都港区在住。スプレッドシートを使って過去のチャートを分析するのが得意です。MT4を使ったEAの開発もしています。大好物の甘い物を求めて、今日もVivienne Westwoodのお洋服をこしらえて甘味処を探索しています。

You may also like...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA