検証してますか?でも検証の落とし穴にご注意!

2013/09/08 カテゴリ:数値化
  • このエントリーをはてなブックマークに追加

検証してますか? でも検証の落とし穴にご注意!

みなさん、検証したことありますか?
FXのように、確率でモノを考えないといけないゲームでは、検証作業は避けて通れません。検証をしないで実践に投入するということは、それだけ博打に近くなり、負ける確率は検証をしている人に比べて高くなります


ところで検証には2種類の意味合いがあります。

(1)自分のルール、戦略(ストラテージ)を検証する

多くの人が検証と聞いて思い浮かべるのが、自分のルールや戦略のパフォーマンスを調べる検証です。これの究極系がEAなど自動トレードに落としこんで、勝率やプロフィットファクターを調べることですね。

(2)マーケットの特性を検証する

わかりやすい例だと、ボラティリティの高い時間帯を調べたり、通貨ペアごとの1日の平均値幅を調べる検証です。
この種の検証はあまり積極的には実施されず、誰かが検証したデータをそのまま利用しているケースがほとんどだと思います。しかし、マーケットの特性を理解しているかどうかは、成績に直結しますね。


さて、検証には2種類あると理解してもらったところで、冒頭の話に戻ります。検証をしている人に比べ、してない人は負ける確率が高くなりますが、やり方によっては検証をしている人のほうが、大きくパフォーマンスを落とすこともあります。

実は検証には大きな落とし穴
があるのです

※ブログランキング参戦中。よかったら応援してください

 

数値に合わせたトレードをしてはいけない

検証には2種類の検証があります。

  • (1)自分のルール・戦略の検証
  • (2)マーケットの特性を調べる検証

どちらも検証作業であることには変わりないけど、そこから得た結果をトレードに利用するには、注意点があります。


(2)マーケットの特性の検証については、得られた検証結果がその時たまたま発生した現象なのかどうか。つまり、普遍性の問題

 
例をあげて説明しますね! 例えば、NY市場の後場(日本時間 2:00から5:00の間)は、ボリバン2σにタッチして戻る確率が98%ある。通常よりも戻る確率が2%高いという検証データが得られたとします。

通常よりボリバンがワークするということは、この時間帯は逆張りでイケル!

と考えるかもしれません。でも、たまたまそうなっているだけかもしれない。ひとつの結果だけをうのみにするのは、非常に危険なのです。
(統計学的には、検証結果がでたら検定しないといけませんけど)

 

では、(1)自分のルールの検証はどうか?
一発で結果が出たルールは、たまたま検証期間のルールがワークしていただけなのかをキチンと調べる必要があります。
また、ルールを改良する場合にも、数値を見て「この部分を改良すればもっとパフォーマンスはあがる!」と考えると、「トレンドフォローのジレンマ」に陥ります。

 

マーケットの特性に合わせた
トレードはいいが、数値に合わせたトレードはご法度!

数値に合わせたトレードとは?

「数値に合わせたトレード」をひとことで説明すると「検証で得られた結果をもとに、ロジックを考える行為」です。
先の「NY市場の後場のボリバン2σ」を例にとると、たしかに検証の結果、その時間帯のボリバンは他の時間帯に比べると、2σがワークすると分かったとします(前提)。

数値に合わせたトレードの場合

数値に合わせたトレードの場合は、「それなら、その時間帯は2σタッチの逆張りがいける!」と考え、それを裏付けるデータばかりに着目するようになります。最初に見つけた小さな優位性を正当化する視点に切り替わっているのです。

マーケットの特性に合わせたトレードの場合

この「NY市場後場のボリバン2σ」の結果をマーケットの特性と考えるのであれば、なぜこの時間は他の時間帯に比べて2σがワークしているのかを頭で考える必要があります


師匠の為替和尚は、よく「まずは理屈に落とし込め!」といいます。
NY市場後場のボリバン2σが他の時間帯よりもワークしているのは、
あくまでも現象であり、そこには理屈があるはずです。


例えば、為替の場合、東京、ロンドン、ニューヨークは世界の3大マーケットと言われています。しかし、取引高で見るなら、ロンドン市場が圧倒的です。

為替市場の取引高

引用:Forex.com (原典 Bank for International Settlements
”Central bank survey of foreign exchange and derivatives market activity in April 2010” )

ニューヨークの後場(2:00~5:00)は、世界最大の市場であるロンドン市場が終わったあとです。ニューヨーク市場がロンドンについで2位になってますが、実際にはロンドンとニューヨークはかぶります。
大きな取引高は、このかぶっている時間帯であることがほとんどです。

「NY市場後場のボリバン2σ」が他の時間帯よりもワークするのは、最大市場の取引が終わり、取引量の大幅な減少が背景にあるのではないか?

これが仮説です。これをもとに仮説を裏付ける検証をしていきます。

両者の違い

双方ともに、裏付けの検証を行うので、一見するとどっちも同じことをしているように思えますね。


数値に合わせたトレードの場合は、最初に見つけた数値の優位性を利用するために、それを正当化するデータをかき集めます。
これの極端な例が、検証結果が良くなるようにパラメータを調整するカーブフィッティングです。


それに対して、マーケットの特性に合わせたトレードの場合は、得られたデータを頭で考え、どうしてそういう数字が出たのか「仮説」をたてます
仮説なので、途中で反するデータが出てくるかもしれませんが、それも冷静に受け止めます。


両者をひとことでまとめると…

  • 最初の数字に最適化をかけるのが、「数値に合わせたトレード」
  • 検証数値をひとつの現象ととらえ、その背後にあるものを理屈に落としこむのが「マーケットの特性に合わせたトレード」

検証をどうトレードに活かすか?

吉田の場合、最終目標はブログのタイトル「FXで完全機械化は可能か?」です。つまり、マーケットの特性をきちんと理解した上で、それに適したルールを策定し、自動トレードで利益を出すことです。

そのための検証作業をこれまでしてきました。


検証はしないよりした方がいいですが、この記事で取り上げたように、数字に一喜一憂するのは良くないことです。


大事なことはまず、「きちんと理屈に落としこむこと」と「検証結果と現実のギャップを認識すること」です。


特に検証結果と現実のギャップの認識は大事です。
検証データが、自分の実際のトレードの実感とずれている場合は、違和感を感じるはずです。その場合、まだ見えていないものがあるはずなのです。


師匠もたびたび、「検証の重要性」を説きますが、検証結果に振り回されることなく、上手に検証結果と付き合っていってください。

検証はボクらが得意なことだけど、結果をどう使うかはみんなの仕事ダヨ!

ブログランキング

この記事に対するコメント

9 件のコメント

  • りんたつ
    2013/09/09 12:45

    MT4でEAをいじり再開して8か月あまり。気が付くとEntry、決済のロジックを考えているより、どうすれば検証・分析しやすいログが取得できるかのロジック考えているほうが長かったりします。

  • 2013/09/10 08:24

    MT4のデバッグ能力は原始時代ですからね。
    詳細なログを出力して、もっとパワフルな言語で処理するしか
    ないでしょうね。

  • 吉田(同姓です^^)
    2013/09/10 22:55

    数値から仮説を出すか、仮説から数値を出すかという方法論はともかく、発見したマーケットの特性がどのような理由に基づくものなのかという仮説を考えるのは重要なことだと思います。
     もっとも、仮説は飽くまで仮説なので見当違いな仮説を立ててしまっている可能性もあるわけですが^^

     結局はおっしゃるとおり最終的な目標=利益に繋がるか否か、という点を見ていくしかないと思います。検定で有意と判断されても利益に繋げられなければ何の意味もないですからね。。

     システムトレードを研究している、どうしても値動きを自然科学的な何かの連続データとして捉えてしまう傾向があるんじゃないかと最近よく思います。 実際、値動きは正規分布に従っているように見えますし、ランダムで描いたチャートと一見区別がつきません。 しかし背景にはもっと泥臭くて強欲な人間の心理やらなにやらがあるわけで、統計学的な処理をする際にも、そういう点を踏まえていくように気をつけるようにしています^^

  • 2013/09/12 16:24

    チャートの向こう側に人間がいる以上、いまも昔もチャートの動きには大きな差はないと思います。

    仮説と検証、実践との一致(ギャップ)をつかむことは、ロジック開発
    においてかなり重要な位置を占めています。

  • ゲルググ
    2013/09/12 19:47

    私はEAにおいてはEAにしか出来ないロジックを作りフル全自動でやってます
    人間には睡眠や体力的に限界が有りますので
    自分のトレード手法・ロジックはEAにしませんでした(出来ませんでした)
    EA製作会社数社に依頼した事がありましたが無理と結論が出されました・・・
    本当はどうか分かりませんが
    それでEA用には人間には体力的に無理な簡単なロジックで対応しています
    私はプログラムの知識があまりありませんが稼ぐと言う観点を変えて見ました
    相場が固定されない限りは大丈夫なんですが・・・

  • 吉田(同姓です^^)
    2013/09/14 05:06

    ゲルググさん^^

    >EA製作会社数社に依頼した事がありましたが無理と結論が出されました・・・
    >本当はどうか分かりませんが

    ロジックが手順を追って説明可能なものなら基本的にプログラム可能かと思います。。

     製作会社が無理と言った理由が気になりますが、次のいずれかだと思いますよ。

    1.自分たちの技術では困難、あるいはめんどくさいので無理と言った(笑)
    2.出来るけれども工数がどのくらいかかるのか予想不能で見積できず
    3.他言語ではプログラム可能だがEAの仕様上無理があって出来ない
    4.ルールに不確定な(裁量にたよる)部分があり、プログラムとして記述できない。

    理由が4であれば仕方ないですが、それ以外であればなんとかなるかもしれません^^(MT以外のシステムになるかも知れませんが)

     そのロジックでEA化しづらい点として、どこか心当たりあるところないでしょうか?
     たとえば、、通常ではあまり使わない複雑な計算をするインジケータを使うとか、多通貨or異なる時間足を複合的に処理するとか、あとはライン引くのが意外と大変だったりするのでライントレード系も面倒な処理になるかと思います。

    >それでEA用には人間には体力的に無理な簡単なロジックで対応しています
     簡単なロジックで全自動で稼げるシステムとは理想的ですね!
    シンプルイズベストなのは分かっていますが、作っていると複雑になってきてしまうんですよね。。。
     ゲルググさんのように実運用できるよう頑張ります^^

  • 2013/09/14 08:10

    EAに向いているロジックを、機械に任すという判断は適切だと思います。
    吉田も師匠のロジックを自動に落としこんでいますが、スキャルピング
    だとローソク足の動きといった感覚的な判断が必要な部分もあり、
    自動化しているロジックは骨子を単純化しているものです。

    EA作成会社の件ですけど、技術職であり、システムトレーダーでも
    ある吉田の見解ですが、

    (1) システム会社のトレードに対する知識理解不足
    (2) ゲルググさんが自分のロジックを、明確に言語化できてない部分がある

    のいずれかだと思います。ロジック開発は数量化という部分も含まれており、これをきちんとこなすには技術的なスキルもさることながら、為替相場への深い理解が必要です。

    それでも実稼働に耐えるシステムを運用しているのは、すごいことですが。是非、少しずつ先に進んでみてください。

  • ゲルググ
    2013/09/14 16:23

    吉田様・吉田(同姓です)様
    ご意見・アドバイスありがとうございます。
    業者さんからはEA上の限界とかバグる?とか言われた覚えがあります
    それと感覚的(裁量)部分の明確化を要求されましたが
    当時の私はそれが自分の手法のポイントに全く合うように機械的に
    示す知識もありませんでしたし今もありません・・・
    >MT4のデバッグ能力は原始時代ですからね。
    この意味は分かりませんがEAの限界を示しておられるのでしょうか??

    今後はその知識を身に付け自分の手法を自分でEAに全て落とし込み
    機能できる事を目的とします。

    ※実稼動しているEAですが 簡単すぎて笑われたりバカにされるようなプログラムですよ(笑)しかし1人の人間には同じトレードは出来ません!
    人間も限界突破したら出来るかもしれません・・・が2人なら出来ます

  • 2013/09/14 18:50

    EAの限界上云々は、どういう発注をしたかによるのでコメントは控えます。

    裁量部分の明確化はこのブログのテーマでもありますが、単に他所から依頼を受けてプログラムを作るレベルの業者では、間違いなく処理できない問題であると言えます。

    MT4のデバッグ能力ですが、少なくとも20年以上遅れてます。
    MT4(これ自体はMicrosoft Visual C++ 6.0というソフトで作られています)というソフトウェアにとってつけた開発環境なので仕方がないですが。標準的な開発環境は、最低でもデバッガーという機能があり、プログラムの動作を事細かに監視し、修正が行えます。
    MT4はその能力にありませんが、ロジックを外部DLLにすればあるていど解決する問題なので、業者の力量不足でしょうね。

    ちなみにソフト開発会社の費用は、人月という単位で請求がかかります。1人の人間が1ヶ月係る仕事でいくらという考えです。他にもいろいろな工数計算がありますが、結局人月に落ち着きますね。

    たぶん、FXとか競馬とかロジック開発を伴うソフトを依頼すると、相当な金額が請求されます。
    EA作りますと言ってるところは、無難なレベルの請求しかしないと思うので、その範囲内で収まる仕事しか受けません。

    ちなみにまともにソフト作成の依頼とかをかけると、数百万、数千万の世界です。