SSブログ

フィルター設計と循環参照 [システムトレード]

エクセルで作成したトレーディングシステムにフィルターを適用する場合、基準となるシステムの出力をフィルター用のシステムに入力し、基準となるシグナルに対してその実行を一部停止するように行なうのが比較的容易かと思います。

しかし、その場合は基準システムが完全に確定した上でそれにフィルターを掛け、新たなシステムとするわけですから、少なくとも2つのシステムを同時に扱う必要があります。
この構造は、KFシステムクリエイターにおける追加システムと同じです。

ただ、追加システムの場合は、基本的に、基準システムが最高性能となるように条件を固定した上で、追加システムを適用することができました。
しかし、単純に特定期間のトレードをカットするだけのフィルターの場合、必ずしも基準システムにおける最適条件下で最高性能が得られるという保証はありません。

そこで、もしも可能であるならば、基準システムのあらゆるパラメータの組み合わせに対して、フィルター条件を適用し、それらの中で最高性能が得られる条件を見つけ出さなければなりません。
もちろん、最高性能となる基準システムに対してフィルターを適用した場合が、ほとんどのシステムにおいて最も性能が高くなる可能性はあります。

しかし、残念ながら初期の段階においては、そのことを確実に保証することは出来ません。少なくとも検討の初期段階においては、マトリックス評価を行なう必要があります。
その場合にネックになるのが、基準システムとフィルターという、2つのシステムを同時に実行しながら、基準システムの最適化を行なわなければならない、ということです。

すなわち、基準システムのパラメータを変えながら、その結果をフィルターシステム上で確認し、最適パラメータを探って行くわけです。
従来の追加システムの場合であれば、基準システムは固定したままでしたから、基本的には追加システムのみを用いて最適化を行なうことができました。

そこで、基準システム上にフィルターを設定し、その状態で最適化を行なうことができれば、最適条件の決定が容易になると考えられます。
基準システムにキャッシュポジションを設定し、その結果を正しく評価できるようにすれば、それが可能となるわけです。

例えば、フィルター列を設けて、フィルターを掛ける場合は"0"、掛けない場合は"1"となるようにすれば、そのフィルター列と売買ポジション列を掛け合わせるだけで、売買シグナルにフィルターを設定する事ができます。

ただし、売買ポジションとしては、例えば買いを"1"、売りを"-1"といったように、"0"以外を設定しておく必要があります。
現行のKFシステムクリエイターにおいては、買いポジションが"1"、売りポジションが"0"ですから、そこを修正してやらなければいけません。

そのようにしてフィルターを設定する時に、フィルターは当然どこかのセルの演算結果を参照することになります。
その場合に陥りやすいのが、エクセルの循環参照エラーです。

これは、基本的には売買ポジション列以降の列を参照すると、引っ掛かってしまう可能性が高くなります。
しかし、それらを参照しないことには、有効なフィルターは作成できません。

循環参照を防止するためには、当日ではなく前日のセルの値を参照してフィルターを作成する必要があります。
しかし、それだけでは十分ではありません。

そこで、もう一つのテクニックが、できるだけ前のセルを参照する、ということです。例えば、フィルターを作成する時に、どうしても当日のシグナルを参照したくなります。
しかし、単純にそれを実行すると、ほぼ確実に循環参照に引っ掛かってしまいます。

なぜならば、フィルターは最終的に売買ポジション列に乗じるわけですが、売買シグナルは通常、売買ポジションから作成されるからです。
それでは、同一システム内において、直前までのシステム売買結果を用いたフィルターを適用するのは不可能なのでしょうか?

基本的に、売買ポジション列は、それ以前の列を参照して作成されています。すなわち、フィルター列においても、売買ポジション列以前の列のみを参照して作成することも不可能ではありません。
計算式はそれだけ冗長なものになってしまいますが、循環参照を避けるためには止むを得ないでしょう。

ただ、言葉で説明するのは簡単ですが、実際にそれを行なうということになると、なかなか大変ですし、必ずしもそれが可能というわけでもないようです。
現在、そのようなフィルターを設定できないか検討を行なっていますが、かなり苦戦しています。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。