迷い毎々(4)

本編は3話までだったけれど、トレーダーの迷いは続きます。



ちょっと複雑なシステムを作ると、10年のバックテストでも右肩上がりにできるのに実運用では悲惨な結果を生みます。真面目なEA開発者さんが売り出したEAも軒並み酷いことになっています。
いわゆる過剰最適化(オーバーフィッティング)ですよね。


これを避けるには、ウォークフォワード分析をクリアしたものを使えば良いと言われています。
過去3ヶ月の相場にフィットさせて次の1ヶ月を運用する(但し、過去3ヶ月で良好なパラメータが見つからなければ次の月は運用しない)EAが良好な成績を収めている噂は聞いています。しかし、1ヶ月もトレードしないのはデイトレーダーとしては有り得ないし、だったら、フィット期間を 3週間→1週間→3日 と短くしてゆけば、相場の変化にすばやく適応できて、トレードしない日も減らせる...はずですが、期間が短いと売買回数も減って、、結局、過剰最適化の罠に嵌ってしまいます。



それ以前に、常に過去の一定期間にフィットさせれば上手く行くなんて都合よく相場は出来ていない気がします。
相場の状態が過去8週間変わっていなければ、その8週間のデータで最適化すべきだし、何かの要因で昨日から相場が激変していれば、昨日からのデータだけを対象に分析するのが妥当なはずです。



相場の状態変化は、本質的にはファンダメンタルが突然もしくは、徐々に変化した結果として起こるのだと思います。
しかし、純粋に値動きだけを見ている投機家にとっては、その相場の参加者の顔ぶれ、売買戦略、投下可能資金量(=実際に投下している資金+これから投下できる資金)の変化が反映されているのだろう....という程度にしか想像できません。
参加者が入れ替わったので相場が変わったんだな〜とか、休暇シーズンで様子見戦略を取る人が増えたか〜とかね。

相場の状態 = 参加者の売買戦略 X 投下可能資金量


抽象的に表現すれば↑このような式になり、現実にこの相場の状態変化に追従するには、システムがいくつのパラメータを持てば良いのか?をずっと考え続けています。3年ほど前は、1パラメータ(値幅的な取るべきリスクの大きさ)の調整であらゆる通貨ペア、時間足に対応できるかなと意気込んでいたけれど、現状では3パラメータに落ち着いています。
(システム内部には多くの調整可能なパラメータがあって、その中の値幅的なリスクの大きさ、トレンド推定用、レンジ幅推定用の3パラメータだけでドルストレートはOKっぽい。ただ、USDCADだけがNGなので、本当は4パラメータ=4次元空間での適応を考えないといけないのかなとも思うけれど、4番目の候補を思いつかない。


相場の変化に対応すると言うと、レジームスイッチングモデルを思い浮かべますが、私にとってのレジームは、3パラメータの組合せ、例えば、4-7-14 , 5-15-12 のような記号になります。(相場用語のレジームは、もっとファンダメンタルな要素から決まる何かを言うと思う^^;;
数値としては1-1-1から始まって無数の連続した組合せを取る事が可能です。ただ、過去2〜3ヶ月の5分足データを1日ごとに分類すると、数種類のパラメータセットのいずれかが当てはまって、ほぼ勝てることがわかります。
(勝てる..と言っても、実際の売買成績やPFを見るのではなく、短期のモメンタム戦略や平均回帰戦略が成立するかどうかの評価値を見ています。



↑仮にA,B,Cの3つのパラメータセットで過去3ヶ月をカバーできたとして、現在の相場がどこに位置するか推定できればその日のトレードに使うパラメータを決められます。

↑日々の相場の値動き=状態は異なるのですが、極端に変わらなければ前日有効なパラメータセットB が有効です。

↑徐々に変化して、BでもCでも勝てる状態を経て、BからCへの移行を確認できれば、Cを採用します。
この方式では、3ヶ月のデータから有効なパラメータ候補を抽出した上で、直近3-5日(最短で前日)に合うものを選ぶので、参照期間が短いことによる極端な過剰最適化を避けつつ、そこそこ素早く相場変化に適応することを狙っています。



↑ただ・・・・、実際にはそんな理想的な状態ばかりが続くほど甘くはなくて、まれに、直近のデータと無関係に別の状態(A)に変化することがあります。もちろん、重要指標イベントや、介入など分かりやすい理由があって突然変化することもありますが、そうでないことも多いです。


↑そして非常に高い確率で、翌日には元の状態(B)戻ります。(2日掛かって戻ることもあります。


日中に突然変化した(Bの状態では観測されるべきではない値動きを検出した)ら、その日は様子見するのが安全です。そして、その日の値動きは特異日だったとして、翌日のトレードでは参照せずに無視するようにします。
もちろん、過去に同じパターンが何度か起きて特異日の傾向が掴めていれば、その日だけAのセットでトレードすることもありますけどね^^;
異常な値動きを見つけたらとにかく様子見するのが基本なのですが、そうすると1日2-3回しかないエントリー機会が全て無くなってしまうことも多いので、それを回避するために複数の通貨ペアを監視しています。状況によっては、1つの通貨ペアに対して、異なるパラメータセットでトレードすることでヘッジすることもあります。




ちなみに、私が苦手なUSDCADでこの手法を使うと、ある日突然、A,B,C どれでもない状態に遷移してしまいます..orz
流通量が少ないから変な動きをするのかなと思ってますが、今のところ謎な通貨です。初心者がトレードするなら、EURUSDかUSDJPY辺りがお勧めです。
ところで、唐突になんでこんな記事を書いたのかというと、某日某所のツイートで、3-5日で最適化しているとつぶやいた内容を鵜呑みにされても困るな〜思ったからとか、ある人からメールでシステム構築のヒントが欲しいと言われたから…なんて殊勝な理由ではなく、今日がエイプリルフールだったからです。全部ウソです。笑。