暫く振りのご無沙汰でした。
思う所があり、ブログの更新をストップしていました。

ですが、ちょっと書きたいことがあり、ちょっとだけブログをアップさせてもらおうと思いました。
その前に、近況をば。

現在は私がリリースしているHANAとSoRAについて、それぞれの後継EAの開発を進めています。

HANAについてはある程度構想が固まったHANA2を試験的にEA-1でリリースしていますが、フォワードは全く奮っていません。
面白いぐらいに右肩下がりになっています。。。

HANA2は本家をベースに開発をしていますが、その本家が調子を崩していることに原因があると考えています。
hana
こちらは本家のフォワードですが、ここ最近はものの見事に右肩下がりになっています。。。
直近2カ月はどちらも約200pips程の損失を出しており、これが響いた形になっています。

元々、HANA2の開発バージョンをEA-1に出そうと思ったのは、EA-1に出す直前まで本家のフォワードは好調でこの流れが続くと踏んたからでした。
しかし、その目論見がもろくも外れてしまい、一気に不調に陥ってしまいました。。。

これをどう見るか?ですが、HANAは好不調の波が比較的大きいので、もう暫くすれば回復基調に回ってくれるのではないかと想定しています。
また、損失自体もまだ許容範囲内と捉えていますので、私はそのまま動かし続けています。
しかし、この先損失が加速し続けるようなことがあれば停止も視野に入れざるを得ないと思っております。
そういった意味で、HANAは暫く静観を続けたいと考えています。


次にSoRAについてですが、こちらは堅調に利益を伸ばしています。
ブログ執筆時点でフォワード計測から約2,400pips以上を稼いでくれており、好調そのものです。
sora
で、現在はそのSoRAをベースとしたSoRA2の開発をメインに行っています。
今回はこの話をさせていただこうと思っています。。。


私がEA開発を始めて3年が経ちましたが、それまで自分なりに勉強をしてある程度のEA開発はできるようになったと(勝手に)思っています。

ただ、EA開発をすればするほど、1つの疑念を抱くようになってきました。
それは、バックテスト(BT)とフォワード(FW)との乖離です。

私がこれまでいろいろ作ってきたEAもそうですが、世にある大半のEAはBTとFWが乖離しています。
それはBT側の問題(期間や設定条件など)もありますが、それを差っ引いたとしても、おおよそどのEAも再現性が低いように感じるのです。

ここに対して現時点でも明確な答えを持っているわけではありません。

ですので、今までいろんなアプローチでBTとFWの乖離に挑戦しようとしました。SoRAもその一つです。
SoRAはロジックを簡略化させることで相場への普遍性を狙ったアプローチをしており、上述のように今の所利益は出せていますが、それでもBTとFWの乖離は起きています。

この問題に対して真っ向から取り組みたいと思い、これまでの開発手法、スタイルを一旦全部放棄し、もう一度ゼロベースでEA開発に向き合おうと思いました。そうして試行錯誤を繰り返し開発作業やら検証作業といった地味な作業を延々行っていました。。。

そして、その中で気づいたことがいくつかあります。例えば、開発手法に関してです。

一般的にEAは採用ロジックの自動売買化したものですが、起点は裁量ロジックありきだと私個人は考えています。
しかし、裁量ロジックはファジーな部分があり、そのロジックをプログラミングするだけでは損益曲線がきれいな右肩上がりにならない場合が多いです。
そのため、MT4/MT5の最適化機能を使い、成績の出る数字を探し出し、その数字をパラメータ値として採用します。
そうして、BT期間(インサンプル期間)における最も成績の出るEAが完成します。

しかし、そのEAはあくまでインサンプル期間における最適解であり、その後のFWとの因果関係はありません。
BTの結果はあくまでインサンプルでの結果を示しているに過ぎず、それ以上でもそれ以下でもありません。
そこに対し、私たちの何某かのバイアスがかかることで、そのEAが良く見えたり、悪く見えたりするのではないかと思います。

そう考えると、インサンプル期間を使って作成されたBTの数字情報に大した意味はないのではないかと思うようになりました。
PF、RF、RRR、勝率などなど、その数字が良いからと言って、それがFWに再現される保証はどこにもありません。そうして、BTとFWとの乖離が生まれてしまうと、それがダメEAの烙印を押されてしまいます。。。

こういったことから、インサンプル期間を使って最適化する開発手法そのものに問題があるのではないか?と考えるようになりました。

そこで、SoRA2では最適化機能を一切使わず、ロジックの動きをチャートで表現する中でその都度チャート上で人間の感覚値だけで微調整しながらEAを仕上げていく方法で開発することにしました。
また、SoRAロジックの汎用性を更に高めるために、ロジックを更に減らし、エントリー、決済ロジックをSoRAロジック以上に簡略化させました。
パラメータもインジなどで般的に使われる汎用的な数字のみを採用することで、汎用性を高める工夫をしています。そして、すべての通貨ペアで同一ロジック、同一パラメータで開発する方針を取りました。

SoRAは短時間足である5~30分足組と長時間足である1~4時間足組に分かれています。この内、SoRAの利益のほとんどは長時間足が生んでいること、ノイズを拾いにくく、回転数が上がりやすいということから、SoRA2は4時間足専用EAとして開発をするようにしました。

更に通貨ペアにも共通項を持たせるため、クロス円を対象に開発をすることにしました。そして、開発で使用するチャートはユロ円のみに限定し、それ以外のチャートは一切触らないようにしました。

そうして、現在はこのような状況になっています。
sora2_eurjpy
sora2_usdjpy
sora2_gbpjpy
sora2
この表は通貨ペアを買いと売りごとに一定の期間でBTを取った結果です。SoRA2は基本的にチャートだけを見て開発していますので、BTの結果はおおよそアウトオブサンプルテストの結果として表現されていると思っています。それは、疑似FWと考えても良いのではないかと思っています。

で、これをどう見るか?ですが、個人的にはPFだけで良いような気がしています。というのも、それ以外の数字に継続性が見られるかどうかわからないので、評価のしようがないというのが本音だったりします。。。
また、BTの数字がよいからといって、たくさんの利益が出るかどうかの保証もありませんし。

数字の継続性が分からない、数字の高い低いがアテにならないのであれば、せめてその通貨ペアで利益が出るのかどうか、ある程度の評価ができればそれでよいのではないかと思うのです。
つまりそれはPFが1を超えているかどうか、ただそれだけのような気がします。
そうやってBTを見た方が安全のような感じがします。

SoRA2は買いと売りでパラメータを分けていますが、買いの方が適応性が高いように推測しています。そこで、買いだけ動かすことも考えましたが、一応、現在は売り側の検証をしています。
最適化機能を使えばもっと良い数字が導き出せると思いますが、今はそこには意味を感じていないのでチャートを見ながらコツコツ開発をしています。

もう少しで売り側の開発も終わると思いますので、そうしたらFWに回して検証をしていきたいと思います。

私の想いとしてはBTとFWの乖離が少ない信頼性の高いEAにしたいと思っています。