にほんブログ村為替ブログへ ←お役立情報が満載 応援クリックお願いします

2008年09月07日

【重要記事】たまに大損する売買システムとの上手な付き合い方


 にほんブログ村 為替ブログへ ←お役立情報が満載 応援クリックお願いします
たまに大きく負けるEAとの付き合い方は難しいものです。裁量でも同じですが、どうすれば生き残り、結果として膨大な利益を得ることができるのか?

その戦略のヒントは「ケリー基準」と呼ばれる考え方にあります。

これは純粋に確率を扱ったものですので、相場にそのまま適用するには無理があるのですが、考え方は「なるほど!」と思わせるもので・・・・

 ・破産(資金を失うこと)する人と
 ・膨大な利益を得る人


の違いを理解する上で洞察を与えてくれます。

こちらのサイトに詳しいのですが、数式等々は割愛して一部引用させていただきます。

運用資金100万円あるとして、以下のゲームの場合に利益を最大にするには1回当たり運用資金の何%を賭ければ利益が最大になるでしょうか?

 ケース1:勝率60%で+1円/回、負けると-1円/回

 ケース2:勝率 59.999%で+1円/回 勝率0.001%で+100円/回。損失は40%で-1円/回
          これは、たまに大きく勝つケース

 ケース3:勝率 60%で+1円/回、損失は39.999%で-1円/回、0.001%で-10円/回
     これは、たまに大きく負けるケース(ちびちびコツコツ系のEAに似ています)

この最適賭率(運用資金に対する率)をケリー基準で計算すると下記の表になります(運用資金100万円の場合)。
keri.gif
(事例とデータはhttp://www.geocities.jp/y_infty/managementから引用)

つまり、10万回に1回100倍勝つとしても、最適な掛け金は57円しか増加しません。ほとんど統計上の誤差と考えてよさそうです。

いっぽう、10万回に1回、10円負けるとすれば、最適な掛け金は半分以下になるという事実です。(ここまでの記述は、http://www.geocities.jp/y_infty/managementからの引用です。)

上記サイトの著者も述べていますが、ある売買システムの将来の勝率は不明であるので、残念ながらケリー基準を正確に適用することは不可能です。サイコロゲームのようには、売買システムの将来の勝率を明言できないからです。

しかし、この「損失の可能性は思ったよりひびく」という考え方の方向性は全く正しいものです。

■バックテストで検証!
では、ここでケリー基準の妥当性をMT4のストラテジーテスターで検証してみたいと思います。

Robowalk FX EUR/USD(5m)の2007年中に運用資金1000ドル(約10万円)で、0.5ロットでの運用成績は・・・
0_5lot.gif
(拡大)
なんと運用資金が約13倍、PF7.31 勝率97.33%

1年毎に福利運用すると10万円を3年間運用すれば2億円になります(1000$ x 13 x 13 x 13)。
どこかの情報商材の唄い文句みたいですが・・・

これを倍の1ロットで運用すると・・・・
1lot.gif
(拡大)

悲しいかな、わずか2回目の取引で、マージンコールでゲームオーバーです。

そこで、ケリー基準とバックテストから導かれる当たり前すぎる答えは、「レバレッジを上げるな」です。

では、2007年で0.5ロットなら安全であったかというとそうではなく、最初のグラフの中ほどでガクンと下がっている部分がありますが、この直前からEAを稼働させた場合、0.5ロットでは破産します。最悪の損失を被る直前に高いロットで取引すると即刻ゲームオーバーです。

バックテストの結果では0.4ロットでは無事に生き残り、2か月で資金が2.7倍になりますが、途中の含み損に、わたしなら精神的に参ってしまうでしょう。

最適なロット数を導くのは困難ですが、4倍の安全を見て、0.1ロットなら許容できそうです(2007年の過去の話ですが)。


プロの投信があまり儲からない訳(蛇足)
これで、巷の情報商材が「●十万円が●年で●億円」というのに対して、プロの投資信託の利率は良くて、年数十%、多くが年数%の一桁代で、1年で倍になるものが皆無である理由が良く解ります。

つまり、情報商材は売ってしまえば良いので、ケリー基準を無視できますが、投資信託はお客さんのお金を安全に増やす使命があるためケリー基準の考え方を無視できないために、レバレッジを上げることができないのです。

そこで、目下、好調なRobowalk FXですが、ケリー基準の考え方を無視するとまちがいなく破産いたします。
posted by robowalk at 20:02| Comment(6) | TrackBack(0) | バックテストと最適化 | このブログの読者になる | 更新情報をチェックする

2008年05月20日

メタトレーダーのパラメータ・セットを切り替える方法


 にほんブログ村 為替ブログへ ←お役立情報が満載 応援クリックお願いします
Robowalkです。

通貨やタイムフレームによってパラメータを切り替える方法です。

Robowalk FXは,複数通貨ペアで動作しますが,そのためには,パラメータを変えなくてはなりません。
ダウンロードファイルには,これまで実験した通貨ペアのパラメータセットを同梱しましたが,その使い方を記します。

1 パラメータ設定ファイルを入れる

・拡張子が .set となっているのがパラメータ設定ファイルです。
それを,適当なフォルダにコピーします。

MT4では,バックテストで使う場合は,MT4フォルダ > testerフォルダ
デモ口座やライブ口座で使う場合は,MT4フォルダ > experts > presetフォルダ

に入れるのが一般的ですが,どこにいれてもOKです。

2 strategy tester(Cnt+R) の[Expert property]ボタンを押す

 ダイアログが表示されるので,[パラメータの入力]タブを選択します。下記の画面になります。

画像1
load.gif


3 [Load]ボタンを押す。


前記1のフォルダから,目的のパラメータ設定ファイルを選択します。


画像2
setfills.gif

これで,パラメータ一式がセットされます。


画像1のその他のボタンの説明

[Save]ボタン

 パラメータをいろいろと試して,よいものや,保存しておきたい設定があれば,このボタンで設定ファイルとして保存できます。


[Reset]ボタン

 これは,パラメータ設定を,対象となるEAのデフォルト設定に戻すときに使います。(前記3でロードした設定はなくなります)
 例として,Robowalk FXの場合は,デフォルトとしてEURUSD 15mの設定に戻ります。

 これは,ごちゃごちゃとパラメータをいじって,わけが判らなくなったときに,元々の設定に戻すのにも使えます。


もし,不明な点がありましたら,コメントいただければと思います。


 
posted by robowalk at 12:22| Comment(15) | TrackBack(0) | バックテストと最適化 | このブログの読者になる | 更新情報をチェックする

2008年05月05日

ストップロスの最適値をメタトレーダーで検証する方法


 にほんブログ村 為替ブログへ ←お役立情報が満載 応援クリックお願いします
Robowalkです。こんばんは。

今回は、もっとも悩ましいストップロスの最適化についてです。

一般的に
    ・ストップロスを小さくする ->勝率が下がる 最大ドローダウンは小さくなる
    ・ストップロスを大きくする ->勝率は上がる 最大ドローダウンは大きくなる

傾向にあります。

情報商材によっては「ストップロスは設定しない!」といっているものは、要するに塩ずけにしておけばそのうち利益になることを期待しているわけです。

しかし、ドローダウンは底なし沼となり得るため、豊富な資金が必要です。

どこにストップロスを設定するかは、その人が何を重視するかによってことなってきます。

そこで、Robowalk FX Rev.4でストップロスのシミュレーションを行います。


1 テストの設定
DD.gif
画像1

ストラテジーテスターの[Exoert Properties]ボタンから上記のメニューから、バランス、プロフィットファクター等々のうち、どの影響を調べるかを選択します。
Robowalk FX Rev.4はロングとショートに別々にパラメータを設定できるので、[Positions]を[Long Only]としておきます。


2 パラメータの選択と設定
SLSET.gif
画像2

1     [パラメータの入力]タブの[SL_Pips_Buy]にチェックを入れます。
2   スタートを十分な値である200(Pips) ステップを -5 ステップ ストップを50
    このようにステップをマイナス指定することも可能です。

    これでストラテジーテスターの[Optimaization]にチェックを入れて実行します。


3 検証

下に、バランス(収益)、プロフィットファクター、ドローダウン で実行したグラフを掲載します。


a 収益の変化
Balance.gif
画像3 画像1のBalanceで実行 ステップをマイナス5としているので、右ほど値は小さい

収益は、ストップロスが大きいほど大きくなる傾向があり、ストップロスを小さくすると、収益が減少する傾向があります。
おおむね、ストップロスを130あたりに最大値があり、それ以上ストップロスを増加させても、収益が大きくならないので、130Pips以上のリスクを取る意味はないことがわかります。

b PFの変化
PF.gif
画像4 画像1のプロフィットファクターで実行  ステップをマイナス5としているので、右ほど値は小さい

・プロフィットファクターでも130にピークがきています。このグラフからも130pips以上のストップロスは意味がないようです。
 この時のPFは4.15と非常に高い数字です。

c ドローダウンの変化
DDown.gif
画像5 画像1のドローダウン - パーセントで実行  ステップをマイナス5としているので、右ほど値は小さい

・ドローダウンは、ストップロスの設定にほぼ比例します。(ステップをマイナス5としているんので、グラフの左ほど設定値は小さくなる)
・PF、および収益が最大となる130でのドローダウンは8.93%(画像1の10000$の設定に対する値)です。この値を許容できるかを考える必要があります。

ドローダウンを小さくしようとして、ストップロスも小さくすると、恒常的に勝率が下がり、グラフで示されるドローダウンが頻繁に発生します。

例としてストップロスを50Pipsにすると、勝率は72%、PFは1.85に下がります。

25pips刻み毎の変化
ストップロス       収益     PF    勝率      ドローダウン
     50            5,549$   2.16   72.11%        5.37%
     75              7,269$   2.65   82.44%        6.91%
    100             8,004$   2.92   87.31%        8.48%
    125             9,514$   3.95   92.07%        8.65%


3 1Point毎の検証


上記は5Point刻みでストラテジーテスターを動かしましたが、125~135の間を1Pointステップで検証したところ、128Pointにピークがあることがわかりました。



ストップロス       収益     PF    勝率      ドローダウン

    128             9,785$   4.21   92.68%        8.82%



4 結論
結論として、一般的には収益が最大になるようにストップロスを設定するのが良いが、そのために必要なドローダウンを許容できるほど十分な資金を準備する必要がある。



posted by robowalk at 20:35| Comment(1) | TrackBack(1) | バックテストと最適化 | このブログの読者になる | 更新情報をチェックする

2008年05月01日

最適なパラメータを見つける方法


 にほんブログ村 為替ブログへ ←お役立情報が満載 応援クリックお願いします
メタトレーダーのストラテジーテスターを用いて、最適なパラメータを求める方法を解説します。

「最適」といっても、さまざまな視点があります。利益が最大、ドローダウンが最少、PFが最大etc.

そこで、ここでは例として、利益を最大とするパラメータを求めることにします。

1最適化オプションの設定
Testing_tab_OPpara.gif
[画面1]

1  Strategy Tester(Ctrl+R)の [Expert properties]ボタンで上記のタブウィンドウを表示
2 Optimized parameter から[Balance]を選択

なお、まずロングの最適値を求めますので、Positionsは[Long Only]を選択します。
Initial depositは、最初は十分な資金量でテストします。少ない資金量ではすぐれたEAでも破産する確率が高くなり、EAそのもののパフォーマンスを長期間にわたって検証するのが困難です。


2 最適化パラメータの設定
Para_input.gif
[画面2]

例として、Robowalk FXの利益に大きく影響するパラメータ(Balance_Fillter)を最適化してみます。
1 パラメータ範囲と、刻み(ステップ)の設定
   上記画面の[スタート]を0、[ストップ]を100,[ステップ]を1 とすると、0から100までを1刻みにテストできます。
2 変化させたいパラメータの左にあるチェックボックスをチェック

  ※ ステップは1でも5でも10でも0.1でも構いませんが、刻みが小さいほどテスト回数が増加します。
  ※ EAの特性をざっくりとしるためであれば、粗いステップでテストし、あたりを付けてから細かいステップで再テストします。
  ※ 複数のパラメータにチェックを付けると、2次元、3次元的に各パラメータの相互影響を含めたテストができますが、計算量が乗算的に増加します。
    このテストについては改めて解説します。


3 テストの実行
OP_exec.gif
[画面3]

1 [OPtimization] をチェック
2 モデルを選択
 ここでは、[Open Prices only]を選択します。
    robowalk FX は「トレーリングストップ(TP)」を使わない限り、前のバーが確定してから計算を実行します。ですから各ティックは関係ありません。
    EAによっては、必ず[Evrey Tick]を選ばなければ、正確にテストができない場合があります。
3 [スタート]ボタンで実行

4 結果の検討(1)
tester_OPGraph.gif
[画面4]

テスターはパラメータを変えながらテストを実行し、上記のようにグラフ表示します。
この図のように、25〜71の範囲では、12000$以上であり、比較的バタツキが少ないということは、相場が変化しても、利益を計上する確率が高いことを暗示しています。
どの値を採用するかを決めなければなりませんが、中央の48あるいは最高パフォーマンスの56を選択するとよいでしょう。
なお、突出して利益が大きい場合、そのパラメータはオーバフィット(過剰最適)の可能性があり、将来の相場には通用しないと考えるべきです。

(便利機能)
上の画面のカーソルの状態でダブルクリックをすると、下の画面に自動的に移動します。
利益、PF等の情報がわかります。
OP_Results.gif
[画面5]

(便利機能)
上記の画面の状態で、ダブルクリックすると、そのパラメータ設定が、自動的に反映されます。
Auto_hanei.gif
[画面6] 画面3に一度戻るが、これはパラメータを確認するため[Expert Propaties]を開いたところ。毎回確認する必要はない。

これは、なぜ便利かというと、画面3にで[Optimization]のチェックが外れていることを確認し、[スタート]ボタンを押すと、選択したパラメータによるバックテストをすぐに実行できるからです。

5 結果の検討(2)
画面5を見ると、PF、利益、売買回数等々がわかります。下記の観点から選択したいパラメータが適切であるかを考察します。

1 売買回数とPFのバランスは不自然でないか?
     売買回数が少ないとPFが高くなります。しかし、売買回数が少ないと信頼性が劣ります。わたしは売買回数は100以上、PF2以上を候補とします。
2 ドローダウンは許容できるか?
   利益が大きくてもドローダウンが大きいと破産の可能性が大です。ただし資金量によります。
posted by robowalk at 10:52| Comment(2) | TrackBack(0) | バックテストと最適化 | このブログの読者になる | 更新情報をチェックする

2008年04月30日

ロングとショートのパフォーマンスを別々にテストする


 にほんブログ村 為替ブログへ ←お役立情報が満載 応援クリックお願いします
これから少しづつ、MT4でテストとパラメータの最適化について書いてゆきたいと思います。
最適化に伴う不確定要素や注意事項についても含めてゆきます。

まず、多くの場合、ロングとショートではパラメータの最適値が異なります。そこで、ロングだけ、ショートだけ、をテストする方法です。

Testing_Positions.gif

1  Strategy Tester(Ctrl+R)の [Expert properties]ボタンで上記のタブウィンドウを表示

2  [Positions]からテストしたいものを選択

これで、まずロングの最適パラメータを見つけ、次にショートのパラメータを見つけることができます。

わたしは、EAを開発する場合には、まずロングのアルゴリズムのみをつくって、使えそうならショートの実装を行います。

次に、ロングのみ、ショートのみでそれぞれの最適パラメータを見つけてから、最後に[Long & Short]で確認をおこないます。


posted by robowalk at 16:16| Comment(0) | TrackBack(0) | バックテストと最適化 | このブログの読者になる | 更新情報をチェックする