1. Top » 
  2. システム設計

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

力任せに作ったシステム

前回、どうしてそのトレード戦略がうまくいくのかちゃんと考えないとダメだと言いました。

歪みの原因をきちんと考えないシステムは必ず潰れる・・というわけではなく、ちゃんと考えないシステムはなかなか自信をもって運用に回すことができないのが一番の問題だと思います。

仮に運用を行ったとしてもちょっとドローダウンに見舞われただけで、すぐに運用を停止してしまう羽目になってせっかくのチャンスを逃してしまうこともあります。

今回は一般的にはカーブフィットになりやすくダメな作り方とされているようなシステム作りでもなぜかうまくいっている例をお見せいたします。


FXシステムトレード研究


◆検証期間:1999年1月~2012年2月(2006年までのデータでバックテスト、2008年までのデータでフォワードテストしそのまま現在まで放置)

◆対象通貨ペア:USDCHF

◆トレード数:1169

◆勝率:62.3%

◆獲得pips:+10714pips(スプレッド3pips考慮)

◆PF(プロフィットファクター):1.28

◆PR(ペイオフレシオ):0.78

◆1トレード損益: +9.2pips(標準偏差101.7pips)

◆最大ドローダウン:-1227pips


◆売買ルール

(前日が陰線)かつ(3日前に終値が10日移動平均線よりも上)⇒ 買い

(前日が陽線)かつ(3日前の高値が4日前の高値以上)⇒ 売り

エントリー条件を満たす限りホールド、満たさなくなれば決済。


3年くらい前に力にまかせて作ったシステムです。
思いつくエントリー条件を10個くらい用意してその条件がTrueかfalseか、そしてどの組み合わせを使用するかなどあらゆるパターンを調べていくという方法で作りました。

条件は1つ1つあてはめていくわけですが、これはもちろん自動でやりその中でもっとも良いパフォーマンスを選びます。
決定木みたいなことを行っているわけですが、決定木専用のソフトがなくとも1回プログラムさえ書いておけば、後はどんな通貨ペアでもその通貨専用の売買ルールを生成してくれます。

カーブフィッティングシステム量産テンプレートと言ってもいいでしょう(笑)


ただ、そうした無茶苦茶な作り方でも統計の力はあなどれないというか、全部が全部カーブフィットと切り捨てることはできないものも出てくるわけです。

特にサンプル数とフォワードテストを重視して選び出したものには、今回のUSDCHFシステムのように地味だけど長くワークしてくれるものが多くあります。

もしかしたらその売買ルールはもっと根本的な歪みの原因を写し出していて意味のあるものかもしれません。
「これは意味のないものだ」と先入観によって切り捨ててしまうことの方が問題だという意見にも頷ける部分があります。

しかし、そうは言ってもやはり3日前と4日前の高値を比べてエントリーするのは気持ち悪いという人は多いでしょう。

実際私もこのシステムを作ってからの3年間、2、3週間おきにパフォーマンスを眺めては理由を考え、結局はそのまま押入れにしまうという繰り返しでした。

そういった経験ふまえて言えるのは、
最終的に自分が運用するときに納得できるシステム作りの大切さです。

システムトレードといってもどこまでシステムなのか線引きすることができません。
システムトレードにかけた月日が長い人ほどそのことに悩み、気付き、そして自分なりの答えを持っています。
つまり最終的な判断はその人にゆだねられるわけです。

あと、システムを作ったいいが、今後それがうまくいくかどうかわからないという初心者の方は、その売買ルールを秘密にすることなく、思い切って公開し経験ある人に意見をもらった方が良い結果になるでしょう。

私自身も勉強会を通じてそうしてきました。

勉強会は最近準備が面倒なので開催していないですが、
もしリアルに会ってPhaiと話をしてみたいという人がいらっしゃいましたらご連絡ください。
私が会ってみたいと思えば、お返事いたしますので^^
スポンサーサイト

歪みの原因は何か?

ブログを立ち上げて3年が経過しました。

このブログを始めたころはそうでもなかったのですが、
この3年の間にMT4によるEA作成は、多くのシステムトレーダーが通るスタンダードな道になったようですね。

結局私は1つもEAというものを作らず、ここまできてしまいました。
EAが何の略かさえ知りません(苦笑)

なのでたまにメールでEA作成を依頼されたり、
EAを出品してみませんか?というようなメールをもらい困惑することもあります。

まあそれだけシステムトレード=MT、EAという印象が強いということでしょう。

今やトレード経験が少なくとも、プログラムさえできればすぐにEAを作って自動売買が可能ですが、システムトレードの垣根が低くなると共に、間違ったシステム作りも増加していると思います。

ということで今回は、初心者の方やこれからシステムトレードを勉強しようと思ってる方のため、以前から感じ続けていたことを書き綴っておきます。


よくある売買ルールとして、

「GBPJPY4時間足、ボリンジャーバンドと移動平均線、フィルタとしてADXを使って検証しました。損切りは40pips、利が乗ればトレーリングストップでストップを引き上げながら利を伸ばす戦略です。バックテストでは過去2年でサンプル数200、統計的有意性があります。」

--といったようなシステム作りをするのもいいですが、
そうしたやり方で本当に世界中の猛者を相手に勝っていけるのか考えてみましょう。

少なくとも私の目には、多くのシステムトレード初心者が、特にSE経験者などプログラミングに自信のあるシステムトレーダーがこの段階で致命的なミスをしているように感じます。

バックテストであなたが見つけ出した「歪み」は
一体なにが原因で生じているのか?


今後その歪みが消滅してしまうことはあり得るのだろうか?

とりあえずバックテストの成績は無視して、上記の2点をだれかに10分以上説明しないといけないと想像してみてください。

説明はとにかく詳しく、だれが、どうして、いつ、・・という具合に歪みが生じるメカニズムを考えていきます。

多くのシステムトレーダーはここでトーンダウンし、
「まあフォワードテストやってみるか・・」とわかりやすい数字を見て判断を行おうとします。

確かにフォワードテストもいいですが、
それだけでは不十分であることは経験を積んだシステムトレーダーなら自覚していることでしょう。


歪みの説明は、主語が明確であればあるほど良いです。
よくマーケティングでターゲットを絞れと言いますが、それと同じことがトレード戦略にも言えます。

このブログで「売買ルールはシンプルに」と言ってきたのはそういった場面でも役立ちます。そしてもし歪みの原因を自分なりに推測できたなら、それを確かめる方法がないか考えます。

こうした作業は、自分の作ったシステムを懐疑的な視点、客観的な視点で見るための良いプロセスです。
と同時に、運用する際のメンタル面のサポートもしてくれることでしょう。

システムは作れるようになったが、なかなかバックテストのようなパフォーマンスが出せないと悩んでいる人には、今回紹介した「考えるプロセス」を導入してみることをおすすめします。


参考: 優れたトレード戦略とは?

逆張り戦略のストップロスに関する矛盾

※ネタがないので昔書き溜めてた記事の1つです。


「このシステムのルールはシンプルです。」

「10日間のRSIが20を下回れば翌日に買い、80を上回れば翌日に売ります。」

「リミットは200pips、ストップは100pipsです。」


このようなロジックを良く目にします。


この例のように、典型的な逆張りルールでは、
あるインディケータが閾値(しきいち)を下回れば買いエントリーを行います。
上の例でいうと、RSIが20を下回れば買いというふうに。

売られすぎを買い、買われすぎを売るというのが逆張りの基本なわけですから
これ自体に問題はありません。

いまRSIが20を下回り買いエントリーを行ったものの、
下落は止まらず100pipsのストップ(損切り)になったとしましょう。

さて問題は翌日です。

このような場合多くは損切りした当日も依然としてRSIは20を下回っており、
買い条件を満たしています。

つまり最初に示したルールに愚直に従うのではあれば、
損切りした翌日も成行き買いを行うことになります

もしそれでも下落が止まらず再び100pipsのストップをつけてしまった場合も
ルールは同様に翌日成行き買いです。

このルールでは暴落時、買い→損切り→翌日買い→損切り・・・のループに
ハマッてしまいますね。

このようなエントリーは、このシステムの作者の意図したものではないでしょう。

FXシステムトレード研究



作者はここで1つルールを付けたします。

それは、
損切りになったら、RSIが1度20以上に戻るまでエントリーは行わない。
というルールです。

これで上で挙げたような損切り→翌日買い→損切り→・・というループを回避できます。

しかしそれは同時にトレード結果が次回のエントリー条件の一部を決定するということを意味します。

マーケットの動きがあなたのトレード結果によって影響を及ばされることはまず考えられないので、このようなルールを付け足すということは、そのルールを別の新しい戦略として吟味しないといけません。

例えば
RSIが20以下になった翌日からX%下落したら順張りでショートし、RSIが20以上に戻るまでホールド
というルールの下でどれぐらいサンプル数があり、どの程度のパフォーマンスが得られるかということを調べる必要があるということです。

新しい順張り戦略のトレード数が少ないようであれば、信頼性も落ちますので注意が必要です。

以降、この売買ルールは当初のRSI逆張り戦略と新たな順張り戦略をミックスしたものとなります。
逆張りポジションの損切りは順張りの新規エントリーとの両建てという見方をすることでロジックの整合性がとれるということです。

そうしない限り、RSIが20以下でも買わない逆張り戦略というのは矛盾していると考えざるを得ません。

優れたトレード戦略とは?

-見るべきはチャートではない、人間の行動だ。



マーケットの魔術師に出てくる人の言葉です、と言っても信用されそうですが、
実は私が単にかっこつけて呟いただけです(笑)


※以下は自分用のメモとして

味方につけるべき人、咎めるべき人の投資行動を、
いかに定量化するかということが優れたトレード戦略のキモだ。

あなたのポジションを強烈にサポートしてくれる大口の投資家がいるのか?
あなたがエントリーした後、あなたと同じ方向に乗っかってくる人を想像できるかどうか?

あるいは、あなたと逆方向にエントリーしてしまい、ウンウンうなって苦しんでいる人の姿を想像できるかどうか?
それはどんな人だろう?あなたに利益をもたらしてくれる人はどんなことを考えて、そうした行動に出ているのか?

負けてくれる人は損から逃れようと学習するのか?
それとも損得とは別の行動規範で常に一定の動きをしているのか?

そういったことが売買ルールのエッセンスとして入っているかどうかということは非常に重要だ。


例えば5日、20日の移動平均クロス売買システムに
そうしたエッセンスが存在するのか?

短期のモメンタムが中期のモメンタムを上回ったときに買うという戦略は、
どちらかと言えば「みんなが買うから・・・」というふうに、
誰かを味方につけるという試みだ。

しかし実際だれを味方につけるのかという点はいまひとつ明確ではない。

逆に、こうしたコンセンサスを利用して、
短期モメンタムが中期モメンタムを上回ってみんなが飛び乗ってきたちょうどそのタイミングで、価格が急落するような出来事があったらどうなるだろう?ということを考えてみる。

この場合の方が、損する人をよりリアルに想像しやすい気がする。


また他の例として、
日本株で海外投資家の動向を味方につける戦略を構築したとする。
その際注意すべきはその大口プレイヤーは常に同じ相手なのかどうかということだ。

下の図は地域別の海外投資家の割合を毎月プロットしたものだが、
これを見ると2008年10月のリーマンショック以降、プレイヤーの地域別割合が明らかに変化していることがわかる。

FXシステムトレード研究

もしかしたらこれが原因で取り得る最適な戦略は変わってくるかもしれない。
つまり、2008年10月以降システムのパラメータやインディケータそのものの変更が必要になってくる可能性があるということだ。


・・・と最近はこんなことを考えながら過ごしています。


  【FX システムトレード派はこちら

3つの乖離率を使うシステム

移動平均からの乖離率を売買サインに使用するシステムは非常によく知られた戦略の1つです。

今回はトレード対象の乖離率に加え、他市場の乖離率も計算して
それらの数値を以下のように足しあわせたものを売買サインとして使用することを考えてみます。

EURUSDの乖離率:k1
NYダウの乖離率:k2
USDJPYの乖離率:k3

EURUSDの乖離率計算に使用する移動平均期間:n1
NYダウの乖離率計算に使用する移動平均期間:n2
USDJPYの乖離率計算に使用する移動平均期間:n3

w1~w3をそれぞれの市場の重みとして、

K = w1*k1 + w2*k2 + w3*k3

K > 0 なら買い
K < 0 なら売り


n1,n2,n3は5~20まで5刻み
w1,w2,w3は-4から4まで1刻み

合計46656通りの最適化を行います。

まあ、この時点でかなり過剰最適化のリスクは高いのですが、
場合の数の大きさほど複雑なことをやっているわけではないので
ここは目をつぶって先へ進んでみます。

今回のように4万通り以上もの最適化はTradeStationでも
かなり時間を食います。

なので、ふつうこうした最適化を行う場合は
最初から全通りしらみつぶしに調べるのではなく
大雑把に調べ、後から詳細をチェックする方法が良いでしょう。

このとき有用なのがTradeStationの最適化オプションである
遺伝的アルゴリズムです。(これはMT4にもあるようです)

※参照: wikipedia 遺伝的アルゴリズム

遺伝的アルゴリズム


およそ8分で最適化は完了し、

(n1,n2,n3,w1,w2,w3)= 20 20 20 1 2 -3

という組み合わせが得られます。

【1】
20日間という長めの移動平均に対する3つの乖離率を使い、
EURUSDをトレードする。

【2】
EURUSD,NYダウの乖離率には順張る方向に、
USDJPYの乖離率に逆張る方向に乗っかるのが良い。


という結果になりました。


◆検証期間:1999年1月~2011年5月

◆対象通貨ペア:EURUSD

◆トレード数:347

◆勝率:44.1%

◆獲得pips:+11256pips(スプレッド3pips考慮済み)

◆PF(プロフィットファクター):1.53

◆PR(ペイオフレシオ):1.95

◆1トレード損益: +32.4pips(標準偏差237.2pips)

◆最大ドローダウン:-1739pips

FXシステムトレード研究


出てきたシステムは結果として「中期トレンドフォロー」型のシステムですが、
ダウ、USDJPY以外で同様のバックテストを行えば、たとえば短期逆張りシステムが出来る可能性もあるわけです。

つまり、3つの乖離率を使うというテンプレートだけを決めて、
逆張りなのか順張りなのか、短期なのか中期なのかはバックテストに決めてもらうというスタンスです。

また手順として最初にチャートありきではない点も特徴と言えるでしょう。

3つの乖離率を使うとうまくいく云々は私が最も言いたいことではありません。
それはいつもこのブログを読んでくださっている方にはよくわかっていることだと思います。

Page Top

プロフィール

Author:Phai
4年前に専業トレーダーに転身。
トレンドフォロー系のシステムをメインに複数のシステムで資産運用を行っています。
メンバー100名以上→【FC2限定システムトレードコミュニティを立ち上げました

最新記事
最新コメント
月別アーカイブ
カテゴリ
RSSリンクの表示
リンク
管理人に質問する

ハンドルネーム(必須):
メール(必須):
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。