SSブログ

動的システムの運用 [システムトレード]

8月13日のコラムで述べました動的システムは、システムの衰えた機能を回復しつつ、運用を継続していくというものでした。
これは別に目新しい考えではなく、システムが機能停止に陥るかどうかは別として、定期的に再最適化等の処理を行なうことはよくあることです。

その背景には、いろいろな考え方があると思いますが、理想的には静的システムだけで運用できれば、それに越したことはありません。
すなわち、一度運用を開始したら、システムに一切の修正を加えることなく、できるだけ長期間にわたって運用を継続するということです。

しかし、それが極めて困難であることは、システムを開発し、運用されたことのある方なら、十分に承知していることだと思います。
そこで、動的システムの運用ということになるのですが、これはこれで、動的システムであるが故の難しさがあります。

例えば、システムが機能停止に陥った時点で再最適化を行う場合、そこに至るまでの運用期間が短いと、想定を超えるドローダウンを喫することが多くなります。
なぜならば、機能停止と判定するには、通常は、資産カーブがある基準まで下落する必要があるからです。

その基準がきつ過ぎれば、十分な運用期間が得られない内に、システムは機能停止に陥ってしまいますし、基準が緩すぎれば、十分な運用期間が得られるものの、機能停止に陥るまでのドローダウンが大きくなってしまいます。

また、基準がきつ過ぎれば、一時的なドローダウンでも機能停止と判定されてしまう可能性が高まります。
もっとも、動的システムの場合は再最適化のチャンスが与えられているわけですから、そのことが大きな問題になることは少ないかもしれません。

動的システムの検討のために、フォワードテストを行なってみると、何度かの機能停止後の資産カーブがほとんど上昇することなく、機能回復の場面が全く見られないことが多々あります。
そのようなシステムは、元々動的システムには向いていないと考えることができます。

再最適化を繰り返していくと、統計期間は段々と増加していきます。統計期間が増えれば、それだけ統計的な優位性は増大します。
それでもなお、機能停止後の資産カーブに再上昇の兆しが見られないとしたら、そのシステムは元々機能していないと考えた方が自然です。

一方、当初5年間での最適化で仮想運用後、機能停止に陥って再最適化を何度か繰り返す内に、機能停止後の資産カーブの推移が、システム判定基準を度々上回るような場面が出てきたら、そのシステムには脈があると考えます。
そのようなシステムは、その後、静的システムに近い安定した運用が期待できると思われます。

再最適化を継続した場合の一連の資産カーブをつなげて行きますと、動的システム全体の資産カーブが得られます。
これは通常、直近における最適化によって得られた資産カーブよりも劣ります。

それでも、全体として右肩上がりの推移となるのであれば、その動的システムは静的システムに準じたシステムであると捉えることが出来ます。
もちろん、そのような動的システムを得ることもまた、静的システムほどではありませんが、容易な事ではありません。

システムの最適化を行う場合、どの指標に対して最適化を行うかが重要であることは、8月21日や25日等のコラムで述べてきました。
動的システムを考えた場合、これは特に重要な要件となります。それというのも、動的システムでは資産カーブと機能判定基準との関わりが避けられないからです。

例えば、最適化後の資産カーブが回帰直線の上方に位置する場合、機能停止に至るまでのドローダウンは一般に大きくなります。
また、回帰直線の下方にある場合は、十分な運用期間が得られない内に機能停止に陥るかもしれません。更には、直近の資産カーブの傾きが下降していたら、機能停止に至り易くなるかもしれません。

別の関心事としては、資産カーブがその回帰直線の周りに正規分布していたなら、機能判定基準を適切に設定すれば、運用期間を十分長くすることができるかもしれません。
また、ある種の最適化指標を用いれば、資産カーブの分布がより正規分布に近付くかもしれません。

これらは半ばこじつけになるかもしれませんが、KFシステムクリエイターでは、最適化指標を適宜加工する事で、実際に確認することができます。
ただし、一般的なトレーディングシステムでは、そのような機能は備わっていないかもしれませんが、エクセルベースのシステムであれば、対応は可能かと思います。

例えば、回帰直線からの乖離を示す指標(KFシステムクリエイターでは「現在ポジション」)がある範囲内の時に"1"、範囲外の時に"0"とする条件式を、メインとなる指標に乗じて最適化を行なえば、直近資産カーブが回帰直線に近いという条件を実現することができます。

システム寿命とは直接的な関係はありませんが、例えばトレード数が100以上の時に"1"、そうでない時に"0"という条件式を乗じて最適化を行なえば、トレード数が100以上の場合の最適条件を見出すことができます。

KFシステムクリエイターにおいては、それらの計算式を空いたセル(例えばH32セル)に記述し、そのセルをテスト対象として指定してやれば良いわけです。
あとは、通常通り最適化演算を行えば、所望の条件におけるシステムが得られます。

最後は余談になりましたが、最適化対象をいろいろと工夫することで、動的システムの有効性を高めることができるのではないかと考えます。

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

nice! 1

コメント 1

Kフロー

悪魔くん、こんにちは。nice!ありがとうございます。

by Kフロー (2008-08-28 17:09) 

コメントを書く

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

Facebook コメント

トラックバック 0

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