SSブログ

移動平均を用いた新ロジック適用のトレーディングシステム開発 [KFシステムクリエイター]

トレーディングシステムにおける新たなロジックについて、ちょっとしたアイデアが浮かび、先日来、システム開発を続けてきました。
アイデアそのものは別に目新しいものではなく、多分通常のテクニカルトレードでは普通に行われてきたものではないかと思います。

株価の推移を考えた時、それが上昇トレンドにある時は買い持ちを続け、上昇トレンドが終了したら手仕舞い、もしくは売りに転じることは、極めて自然で基本的な考えです。
それを実現するための最も簡単な方法は、株価が基準とする移動平均の上方にある時は買い持ちを続け、下方に転じたら手仕舞いするというものです。

これをシステム化すること自体は、難しいことではありません。システムシートに時系列で株価の移動平均を計算し、株価が移動平均よりも大きい時は買い持ちの"1"を、小さい時は手仕舞いの"0"、もしくは売り持ちの"-1"を記述してやれば良いだけです。
これらのポジションの境目で売買シグナルが発生するようにしてやれば、移動平均システムの出来上がりです。

しかし、実際に試してみると分かるのですが、この方法で安定した収益が出せるシステムを得ることは、非常に困難です。それは移動平均期間を最適化しても同じです。
もっと正確に言えば、そのようなシステム上で安定的に機能する銘柄を見つけ出すことはとても難しい、と言うことです。

その理由は明らかで、移動平均期間を長くすれば遅延が生じて売買タイミングを逃し、短くすれば騙しが生じて収益機会を阻害する売買が増えてしまうからです。
また、移動平均期間を最適化する場合、あるトレンドでは遅延が支配的になり、またあるトレンドでは騙しが支配的になるという事態が、多かれ少なかれ生じることになります。

その影響を軽減するために、KFシステムクリエイターでは、買い判定と売り判定とで、使用する移動平均を分けています。一般に、買いはゆっくり、売りは急いで、と言われるように、上昇トレンドと下降トレンドとでは、トレンドの傾きが異なることが普通です。
買いと売りとで売買判定を変えることで、両者間のアンバランスを吸収することを目指しています。

しかし、この方法には実は重大な欠陥が存在します。例えば、買い判定を長期移動平均で行い、売り判定を短期移動平均で行う場合を考えてみます。
今、上昇トレンドが継続しているとした場合、通常は長期移動平均の上方に短期移動平均と株価があり、株価は短期移動平均と時々交差しながら、上昇を続けていきます。

この時、上述したシステムの売買を考えてみます。

株価が長期移動平均の上方にあることから、最初の段階では買い持ちとなっていることが分かります。しかし、短期移動平均と時々交差するということは、株価が短期移動平均を下回った瞬間に、買い持ちから売り持ちに転換することになります。
しかも、この場合、株価が再び短期移動平均を上回ったとしても、買い持ちに転じることはありません。

上昇トレンドが長期に渡る時は、一旦売りに転じてしまうと踏み上げを食らって、損失が増大するという事態が生じます。それを避けるために、KFシステムクリエイターでは売りに転じた場合、直近2日間が共に買い持ちだった場合、再び買い転換するという"恣意的"な処理を設けています。
それによって売りの連鎖を断ち切り、不用意に損失が拡大していく事態を防いでいます。

しかし、この方法はけしてスマートではなく、売り転換の直後に再び買い転換するという無駄な売買が生じてしまいます。
それは結局、騙しによる売買と、大きく違うものではないかもしれません。

そこで、移動平均と株価との関係をもう一度思い起こしてみたところ、例えば株価が上昇トレンドに乗って上昇を続けている場面では、その最中に生じる細かな押し目は無視しても良いのではないか、という考えに至りました。
すなわち、株価が移動平均の上方で推移している時に、一旦下落したら手仕舞いもしくは売りに転じ、その後再び上昇して下落前の水準に戻ったら買い直せば良い、ということです。

この方法だと、押し目で利益を上げることは出来ませんが、大きなトレンドには乗り続けることが出来ます。これはよく考えてみると、昔から推奨されている売買手法だったように思います。
ただ、今までこの手のシステムが開発され、機能しているという話を聞いたことがありません。そこで、実際に作ってみて確認するのが手っ取り早いと考えました。

この手法のシステム化に当たっては、まず適用範囲を明確化する必要がありました。単に株価が下落に転じたら売り転換して、元に戻ったら買い直すだけでは、収益機会を得ることが出来ません。
株価がある時点から大きく下落し、非常に長い時間をかけて元の水準に戻った場合、その間に売りで上げた収益は株価反発によって減少し、最後にはゼロになってしまうからです。

では、どうすればこの問題を解決することが出来るでしょうか?

答えは実に簡単です。基準となる移動平均を設け、株価がその上方にある間は押し目からの反発を待ち、株価がそれを下回ったら条件を反転させれば良いのです。
すなわち、株価は下降トレンドに突入したと判断し、株価が反発したら買いに転じ、再び下落して買値を下回ったら売り直せば良いことになります。

実際のシステム化に際しては、株価の動き、すなわち傾きを回帰直線の傾き(スロープ)で表し、それが移動平均の上方でマイナスになったら買いから売り、下方でプラスになったら売りから買い、としています。
この場合、システムのパラメータは、基準となる移動平均の期間、及び回帰直線の算出期間となります。

また、銘柄によっては株価のばらつきが大きく、回帰直線の傾きが安定しない事態が想定されます。そのため、傾き検出用の移動平均を設け、その移動平均の傾きを期間3日の回帰直線の傾きで表したシステムも開発しました。
この場合、システムのパラメータは、基準となる移動平均の期間、及び傾き検出用の移動平均の期間となります。

これら2つのシステムロジックの違いは、一見さほど大きくないように見えます。しかし、実際に適用してみると、作成したシステムには意外と大きな違いがあることが分かりました。
また、これらに共通して、当初の設計思想とは異なる結果が得られてしまいました。

元々は、基準となる長期移動平均の上方で推移する株価とその短期移動平均、という関係を考えていたのですが、実際に最適化を行ってみたところ、多くの場合で基準となる移動平均の方がパラメータが小さい、すなわち移動平均期間が短い、という結果となりました。

これだと、設計当初に抱いていたイメージとは大きく異なってしまいます。まだ細部まで検証したわけではありませんが、実際にどのような事態が生じているのかを精査する必要があります。
これらの結果につきましては、次回以降の記事にて解説する予定とし、今回はここまでといたします。

nice!(0)  コメント(0) 
共通テーマ:

nice! 0

コメント 0

コメントを書く

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

Facebook コメント

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