システムトレードのためのエクセル講座 第3回 モデルの評価
システムトレーダーのためのエクセル講座
第3回
モデルの評価
前回はパラメーターの変更と最適化をとりあげるとかいたのですが、その前にモデルの評価を記述することの方が先だと気が付きましたので、今回はモデルの評価をとりあげます。パラメーターの変更と最適化は次回にとりあげます。失礼いたしました。
今回モデルの評価で取り上げるのは以下の8つです。隣には評価を算出するのに必要な関数を添えました。
最大損益 MAX
平均勝ちPips AVERAGEIF
平均負けPips AVERAGEIF
取引回数
勝ち回数 COUNTIF
負け回数 COUNTIF
PF ABS
勝率
累計損益
まずは今回初めて出てきた関数から説明し、
その後上から順に記述する方法を取り上げていきます。
____________________________________________________________________________________________
簡易コード表
1. L11に =IF(K10>L10,K10,L10) と記述
2. 最終行までコピー(コピーの仕方は第1回のエクセル講座をご覧ください)
3. M11に =L11-K11 と記述
4. 最終行までコピー
5. A1に最大損失と記述
6, A2に平均勝ちPipsと記述
7, A3に平均負けPipsと記述
8, A4に取引回数と記述
9, A5に勝ち回数と記述
10, A6に負け回数と記述
11, A7に勝率と記述
12, A8にPFと記述
13, A9に累積損益と記述
14. B1に=MAX(M10:M5001)と記述
15, B2に =AVERAGEIF(I11:J5001,">0")と記述
16, B3に =AVERAGEIF(I11:J5001,"<0")と記述
17, B5に =COUNTIF(I11:J5001,">0")と記述
18, B6に =COUNTIF(I11:J5001,"<0")と記述
19, B4に =B5+B6と記述
20, B7に =B5/B4と記述
21, B8に =(B2*B5)/ABS(B3*B6)と記述
22, B9に =B2*B5+B3*B6と記述
____________________________________________________________________________________________
関数解説
今回取り上げるのはMAX,AVERAGEIF,COUNTIF,ABSです。説明することはあまりないのですぐに終わります。
MAX
指定した範囲の最大値を表示します。
記述式: =MAX(範囲)
具体例:=MAX(A3:B19)
A3からB19までのセルで最も大きい値を表示します。
メモ:範囲を指定する際には : を使用します。=MAX(始点 : 終点)といった感じです。 =MAX(A3,B19)で
したらA3とB19のうちどちらが大きいかということにしかなりませんので注意してください。
AVERAGEIF
指定した条件に当てはまる範囲の平均値を表示します。
記述式: =AVERAGEIF(範囲,"条件")
具体例: =AVERAGEIF(A3:B19,">0")
A3からB19までのセルの中で、数値が0以上であるものの平均を算出します。範囲を指定したらコンマで区切ると条件に移行します。 条件はダブルクオーテーションマーク(")で囲む必要があることに注意してください。
COUNTIF
指定した範囲の中で条件に当てはまるセルの個数を表示します。
記述式: =COUNTIF(範囲,"条件")
具体例: =COUNTIF(A3:B19,">0")
A3からB19までのセルの中で、数値が0以上であるものの個数を数えます。範囲を指定したらコンマで区切ると条件に移行します。 条件はダブルクオーテーションマーク(")で囲む必要があることに注意してください。
ABS
ABSに続く括弧内の数値、もしくは式の解の絶対値を表示します。
記述式: =ABS(数値)
具体例: =ABS(E10-F10)
E10=202.35 F10=202.65 の場合 ABS(E10-F10)=0.3
E10=202.35 F10=202.05 の場合 ABS(E10-F10)=0.3
______________________________________________________________________________________
関数解説は以上です。それではモデル評価の記述方法にまいりましょう。
最大損失
概要
モデルを評価する上で大変重要になってくるのがこの最大損失です。
最大損失とは一時的に最大資産から落ち込んだ所の損失額で最も大きいものを表します。
簡単に言うとそのシステムを最悪の時期に使用した時に生じる損失はいくらかということです。
僕はそんなに資産が無いので最大ドローダウンよりも最大損失で計算しています。わかりやすいので。
システムを使用する際に、最大損益の3倍の資産は欲しいところです(理想ですが)。
システムを使用する際に、自分の資産が最大損益が発生しても20%程の損失でしか無い程のロット数で賭けるのが資金管理的にはちょうど良いのではないかと思います。
記述式
1.L11に =IF(K10>L10,K10,L10) と記述
2.最終行までコピー(コピーの仕方は第1回のエクセル講座をご覧ください)
3.M11に =L11-K11 と記述
4.最終行までコピー
5.A1に最大損失と記述
6.B1に=MAX(M10:M5001)と記述
解説
1,最大損失を求めるためにはピークを求めなければなりません。累計損益(K10)とピーク(L10)を比べ、累計損益が今までのピークを上回れば累計損益の値を表示し、上回らなければピークをそのまま表示します。
3,上記で求めたピークから累計損益を引いたものがピークからの損失額になります。
6,3で求めた損失額の最大値を求めます。
平均勝ちPips
概要
勝ちトレードの時は平均で何Pipsとっているのかを算出します。システムを使っている時の目安になると思います。
記述式
1,A2に平均勝ちPipsと記述
2,B2に =AVERAGEIF(I11:J5001,">0")と記述
解説
個別損益(I11:J5001)のなかで0以上の値のもの(=勝ちトレード)を抜き出しその平均値を算出します。
平均負けPips
概要
負けトレードの時は平均で何Pips負けているのかを算出します。システムを使っている時の目安になると思います。
記述式
1,A3に平均負けPipsと記述
2,B3に =AVERAGEIF(I11:J5001,"<0")と記述
解説
個別損益(I11:J5001)のなかで0以下の値のもの(=負けトレード)を抜き出しその平均値を算出します。
勝ち回数
概要
取引回数、勝率をだすための準備だと思ってください。売買回数よりもさきにこちらから解説します。
記述式
1,A5に勝ち回数と記述
2,B5に =COUNTIF(I11:J5001,">0")と記述
解説
個別損益(I11:J5001)のなかで0以上の値のもの(=勝ちトレード)を抜き出しその個数を数えます。
負け回数
概要
勝ち回数と同じく取引回数、勝率をだすための準備です。
記述式
1,A6に負け回数と記述
2,B6に =COUNTIF(I11:J5001,"<0")と記述
解説
個別損益(I11:J5001)のなかで0以下の値のもの(=負けトレード)を抜き出しその個数を数えます。
取引回数
概要
検証で行われたトレード回数です。この値が少なすぎるとシステムの信頼性が疑われます。
自分のロジックはそこそこのエントリー機会があり、売買検証の結果は信頼に足るものなのかを判断するのに必要な材料になります。
記述式
1,A4に取引回数と記述
2,B4に =B5+B6と記述
解説
勝ち回数+負け回数=取引回数ですね。
勝率
概要
システムを使っている時の目安です。勝率がわかっていれば平均どれくらいの頻度で勝ち負けがあるかが気休め程度に把握できます。(もちろん勝率70%でも負けが何回も続くことはありますのであくまでも気休めです。)
記述式
1,A7に勝率と記述
2,B7に =B5/B4と記述
解説
総トレード回数を勝ちトレード回数で割ることで勝率がでます。
PF
概要
PFとは、プロフィットファクターで、総利益が総損失の何倍かを示すデータのことです。
期待値のようなものになります。1以下ならばそのシステムは使えない(やればやるだけ損失を出す)
ものであることがわかり、2以上ならば相当良いシステムということができます。
記述式
1,A8にPFと記述
2,B8に =(B2*B5)/ABS(B3*B6)と記述
解説
勝ちトレード数×勝ちトレード回数÷負けトレード平均PipS×負けトレード回数
=( 総利益 )÷( 総損失 )
となり、PFになります。損失は-がついてしまいますのでABSを使って絶対値で計算します。
累計損益
概要
そのシステムで取引を続けた結果いくらの損益になったかを表すものです。
ここではスプレッドを入れていないので、累計損益-(スプレッド×売買回数)が累計損益になります。
記述式
1,A9に累積損益と記述
2,B9に =B2*B5+B3*B6 と記述
解説
勝ちトレード数×勝ちトレード回数+負けトレード平均PipS×負けトレード回数
=( 総利益 )+( 総損失 )
となり、累計損益となります。
大変お疲れ様でした。もし僕と同じデータをお使いになられた方はおそらく↓のようになると思います。
(書式をいじって色等はかえています)

結果としてはどうでしょうか。まぁ、悪くはないシステムですね。目立たないですが。
最大損失が10なのでもし常に1万通貨で取引をしていると仮定したら10万円が最大損失になります。最悪のタイミングで取引をはじめたら10万円の資金でやっていたら破産するということになります。
スプレッドが0.3がとして考えると実際の累計損益は32.65-568×0.03=15.63
つまり1563Pips抜いていたということになります。
一万通貨で取引し続けたら15万6千3百円の利益です。
2008年4月7日から2008年1月30日までで1563pipsなのでまぁ、すくなくても僕が裁量で取引するよりかは格段に良好なパフォーマンスといえると思います。
僕裁量システムはPFが0.02とかだと思います。データを集めて計算してみると二度と裁量はやりたくないと思えて良いかもしれません。
PFは1.22と低いですが売買回数が568回と多いのでそこはまぁ目をつぶっても良いのではないかと思います。
今回のモデルの評価はこんな感じです。適当に作った割には、まぁ良いかなというところです。
前後してしまいましたが、次回こそ、パラメーターの変更と最適化を取り上げたいと思います。お楽しみに。
最後まで読んで頂きありがとうございました。
押していただけると大変励みになります。ありがとうございます。
第3回
モデルの評価
前回はパラメーターの変更と最適化をとりあげるとかいたのですが、その前にモデルの評価を記述することの方が先だと気が付きましたので、今回はモデルの評価をとりあげます。パラメーターの変更と最適化は次回にとりあげます。失礼いたしました。
今回モデルの評価で取り上げるのは以下の8つです。隣には評価を算出するのに必要な関数を添えました。
最大損益 MAX
平均勝ちPips AVERAGEIF
平均負けPips AVERAGEIF
取引回数
勝ち回数 COUNTIF
負け回数 COUNTIF
PF ABS
勝率
累計損益
まずは今回初めて出てきた関数から説明し、
その後上から順に記述する方法を取り上げていきます。
____________________________________________________________________________________________
簡易コード表
1. L11に =IF(K10>L10,K10,L10) と記述
2. 最終行までコピー(コピーの仕方は第1回のエクセル講座をご覧ください)
3. M11に =L11-K11 と記述
4. 最終行までコピー
5. A1に最大損失と記述
6, A2に平均勝ちPipsと記述
7, A3に平均負けPipsと記述
8, A4に取引回数と記述
9, A5に勝ち回数と記述
10, A6に負け回数と記述
11, A7に勝率と記述
12, A8にPFと記述
13, A9に累積損益と記述
14. B1に=MAX(M10:M5001)と記述
15, B2に =AVERAGEIF(I11:J5001,">0")と記述
16, B3に =AVERAGEIF(I11:J5001,"<0")と記述
17, B5に =COUNTIF(I11:J5001,">0")と記述
18, B6に =COUNTIF(I11:J5001,"<0")と記述
19, B4に =B5+B6と記述
20, B7に =B5/B4と記述
21, B8に =(B2*B5)/ABS(B3*B6)と記述
22, B9に =B2*B5+B3*B6と記述
____________________________________________________________________________________________
関数解説
今回取り上げるのはMAX,AVERAGEIF,COUNTIF,ABSです。説明することはあまりないのですぐに終わります。
MAX
指定した範囲の最大値を表示します。
記述式: =MAX(範囲)
具体例:=MAX(A3:B19)
A3からB19までのセルで最も大きい値を表示します。
メモ:範囲を指定する際には : を使用します。=MAX(始点 : 終点)といった感じです。 =MAX(A3,B19)で
したらA3とB19のうちどちらが大きいかということにしかなりませんので注意してください。
AVERAGEIF
指定した条件に当てはまる範囲の平均値を表示します。
記述式: =AVERAGEIF(範囲,"条件")
具体例: =AVERAGEIF(A3:B19,">0")
A3からB19までのセルの中で、数値が0以上であるものの平均を算出します。範囲を指定したらコンマで区切ると条件に移行します。 条件はダブルクオーテーションマーク(")で囲む必要があることに注意してください。
COUNTIF
指定した範囲の中で条件に当てはまるセルの個数を表示します。
記述式: =COUNTIF(範囲,"条件")
具体例: =COUNTIF(A3:B19,">0")
A3からB19までのセルの中で、数値が0以上であるものの個数を数えます。範囲を指定したらコンマで区切ると条件に移行します。 条件はダブルクオーテーションマーク(")で囲む必要があることに注意してください。
ABS
ABSに続く括弧内の数値、もしくは式の解の絶対値を表示します。
記述式: =ABS(数値)
具体例: =ABS(E10-F10)
E10=202.35 F10=202.65 の場合 ABS(E10-F10)=0.3
E10=202.35 F10=202.05 の場合 ABS(E10-F10)=0.3
______________________________________________________________________________________
関数解説は以上です。それではモデル評価の記述方法にまいりましょう。
最大損失
概要
モデルを評価する上で大変重要になってくるのがこの最大損失です。
最大損失とは一時的に最大資産から落ち込んだ所の損失額で最も大きいものを表します。
簡単に言うとそのシステムを最悪の時期に使用した時に生じる損失はいくらかということです。
僕はそんなに資産が無いので最大ドローダウンよりも最大損失で計算しています。わかりやすいので。
システムを使用する際に、最大損益の3倍の資産は欲しいところです(理想ですが)。
システムを使用する際に、自分の資産が最大損益が発生しても20%程の損失でしか無い程のロット数で賭けるのが資金管理的にはちょうど良いのではないかと思います。
記述式
1.L11に =IF(K10>L10,K10,L10) と記述
2.最終行までコピー(コピーの仕方は第1回のエクセル講座をご覧ください)
3.M11に =L11-K11 と記述
4.最終行までコピー
5.A1に最大損失と記述
6.B1に=MAX(M10:M5001)と記述
解説
1,最大損失を求めるためにはピークを求めなければなりません。累計損益(K10)とピーク(L10)を比べ、累計損益が今までのピークを上回れば累計損益の値を表示し、上回らなければピークをそのまま表示します。
3,上記で求めたピークから累計損益を引いたものがピークからの損失額になります。
6,3で求めた損失額の最大値を求めます。
平均勝ちPips
概要
勝ちトレードの時は平均で何Pipsとっているのかを算出します。システムを使っている時の目安になると思います。
記述式
1,A2に平均勝ちPipsと記述
2,B2に =AVERAGEIF(I11:J5001,">0")と記述
解説
個別損益(I11:J5001)のなかで0以上の値のもの(=勝ちトレード)を抜き出しその平均値を算出します。
平均負けPips
概要
負けトレードの時は平均で何Pips負けているのかを算出します。システムを使っている時の目安になると思います。
記述式
1,A3に平均負けPipsと記述
2,B3に =AVERAGEIF(I11:J5001,"<0")と記述
解説
個別損益(I11:J5001)のなかで0以下の値のもの(=負けトレード)を抜き出しその平均値を算出します。
勝ち回数
概要
取引回数、勝率をだすための準備だと思ってください。売買回数よりもさきにこちらから解説します。
記述式
1,A5に勝ち回数と記述
2,B5に =COUNTIF(I11:J5001,">0")と記述
解説
個別損益(I11:J5001)のなかで0以上の値のもの(=勝ちトレード)を抜き出しその個数を数えます。
負け回数
概要
勝ち回数と同じく取引回数、勝率をだすための準備です。
記述式
1,A6に負け回数と記述
2,B6に =COUNTIF(I11:J5001,"<0")と記述
解説
個別損益(I11:J5001)のなかで0以下の値のもの(=負けトレード)を抜き出しその個数を数えます。
取引回数
概要
検証で行われたトレード回数です。この値が少なすぎるとシステムの信頼性が疑われます。
自分のロジックはそこそこのエントリー機会があり、売買検証の結果は信頼に足るものなのかを判断するのに必要な材料になります。
記述式
1,A4に取引回数と記述
2,B4に =B5+B6と記述
解説
勝ち回数+負け回数=取引回数ですね。
勝率
概要
システムを使っている時の目安です。勝率がわかっていれば平均どれくらいの頻度で勝ち負けがあるかが気休め程度に把握できます。(もちろん勝率70%でも負けが何回も続くことはありますのであくまでも気休めです。)
記述式
1,A7に勝率と記述
2,B7に =B5/B4と記述
解説
総トレード回数を勝ちトレード回数で割ることで勝率がでます。
PF
概要
PFとは、プロフィットファクターで、総利益が総損失の何倍かを示すデータのことです。
期待値のようなものになります。1以下ならばそのシステムは使えない(やればやるだけ損失を出す)
ものであることがわかり、2以上ならば相当良いシステムということができます。
記述式
1,A8にPFと記述
2,B8に =(B2*B5)/ABS(B3*B6)と記述
解説
勝ちトレード数×勝ちトレード回数÷負けトレード平均PipS×負けトレード回数
=( 総利益 )÷( 総損失 )
となり、PFになります。損失は-がついてしまいますのでABSを使って絶対値で計算します。
累計損益
概要
そのシステムで取引を続けた結果いくらの損益になったかを表すものです。
ここではスプレッドを入れていないので、累計損益-(スプレッド×売買回数)が累計損益になります。
記述式
1,A9に累積損益と記述
2,B9に =B2*B5+B3*B6 と記述
解説
勝ちトレード数×勝ちトレード回数+負けトレード平均PipS×負けトレード回数
=( 総利益 )+( 総損失 )
となり、累計損益となります。
大変お疲れ様でした。もし僕と同じデータをお使いになられた方はおそらく↓のようになると思います。
(書式をいじって色等はかえています)

結果としてはどうでしょうか。まぁ、悪くはないシステムですね。目立たないですが。
最大損失が10なのでもし常に1万通貨で取引をしていると仮定したら10万円が最大損失になります。最悪のタイミングで取引をはじめたら10万円の資金でやっていたら破産するということになります。
スプレッドが0.3がとして考えると実際の累計損益は32.65-568×0.03=15.63
つまり1563Pips抜いていたということになります。
一万通貨で取引し続けたら15万6千3百円の利益です。
2008年4月7日から2008年1月30日までで1563pipsなのでまぁ、すくなくても僕が裁量で取引するよりかは格段に良好なパフォーマンスといえると思います。
僕裁量システムはPFが0.02とかだと思います。データを集めて計算してみると二度と裁量はやりたくないと思えて良いかもしれません。
PFは1.22と低いですが売買回数が568回と多いのでそこはまぁ目をつぶっても良いのではないかと思います。
今回のモデルの評価はこんな感じです。適当に作った割には、まぁ良いかなというところです。
前後してしまいましたが、次回こそ、パラメーターの変更と最適化を取り上げたいと思います。お楽しみに。
最後まで読んで頂きありがとうございました。
押していただけると大変励みになります。ありがとうございます。
