SSブログ

エクセルを用いたトレーディングシステムにおける売買シグナルの設定 [システムトレード]

エクセルでトレーディングシステムを作成するに当たって、最も基本的なことの一つは、ポジションや売買シグナルをどのように表すかということです。
KFシステムクリエイターにおいては、買い持ちを"1"、売り持ちを"-1"、キャッシュポジションを"0"としています。

この方法のメリットは、トレード中のポジションが一目瞭然であることに加えて、前後の差分を取ることで容易に売買シグナルを得ることができるという点です。
また、うねり取りシステムへの対応も容易で、数値を実数まで拡張すれば、ポジションの大きさを表現することが出来ます。

今、簡単な事例として、nをパラメータとしたn日移動平均を用いたシステムを考えます。株価が終値で移動平均を上回ったら買い持ちで"1"、下回ったら売り持ちで"-1"とします。
すなわち、株価が移動平均の上にいる間は"1"が、下にいる間は"-1"が続くわけです。

エクセルで表す場合、特に面倒な事はありません。
IF関数を用いて、セルに次式を記入すれば良いだけです。ここで、株価を入力したセル番地を「株価」、移動平均を入力したセル番地を「移動平均」としています。
  =IF(「株価」>「移動平均」,1,-1)

もちろん、株価と移動平均は、時系列で事前に記述しておく必要があります。なお、株価は通常、終値を用います。
これにより、"1"の集まりと"-1"の集まりとが交互に現れる、売買ポジションを表す列が得られます。

この列のある行とその前の行との差を取り、全ての行に渡ってこの差分を求めると、ポジションが"1"から"-1"に変わる時は"-2"、"-1"から"1"に変わる時は"2"、それ以外は"0"となるシグナル列が得られます。
この列の値が"-2"なら売りドテン、"2"なら買いドテン、"0"ならばポジション継続ということになります。

そして、売りドテンシグナルが出たら、翌寄付きで買いポジションを手仕舞うと同時に新規売り、買いドテンシグナルが出たら、翌寄付きで売りポジションを手仕舞うと同時に新規買いとなるわけです。

これにキャッシュポジションを加えると、もう少しバリエーションが増えます。例えば、何らかの条件で発動するフィルタを設けてみます。
このフィルタは、ポジションを維持する場合は"1"、ポジションを外す場合は"0"となる数列で表されます。

このフィルタ列と、売買ポジションの列とを掛け合わせると、"1","0","-1"の3値からなるポジション列が得られます。ここで、ポジションが"0"の場合はキャッシュポジションを表します。
その前後の行の差分を取ると、"2","1","0","-1","-2"の5値からなるシグナル列となります。

その値が"2","0","-2"の場合は前述の通りです。"1"の場合は新規買いもしくは売り手仕舞い、"-1"の場合は新規売りもしくは買い手仕舞いとなります。
これらがどちらに該当するかについては、ポジション列で判断します。ポジション列が"0"なら手仕舞い、そうでないなら新規です。

このように、ポジションを"1","0","-1"の3通りで表記することにより、基本的な売買シグナルを全て得ることが出来ます。
更に、ポジションを実数表記すれば、うねり取りシステムにも対応できるようになります。

例えば、キャッシュポジションを含む3つの異なるシステムを均等に合成した場合、その合成システムは、"3","2","1","0","-1","-2","-3"の7つのポジションを取ることになります。
あるいは、運用資金を合成前の個々のシステムと同じにする場合は、これらのポジションに"1/3"を乗じれば良いだけです。ただ、以下では簡単のため、先に示した整数ポジションで考えます。

この7値のポジション間の差分を取ることにより、売買シグナルとしては、"6","5","4","3","2","1","0","-1","-2","-3","-4","-5","-6"の13通りが得られます。
それが"6"ならば3単位の売り持ちから3単位の買い持ちへの買いドテン、"-6"ならば3単位の買い持ちから3単位の売り持ちへの売りドテン、"0"ならば直近ポジション継続です。

また、"5"ならば3単位の売り持ちから2単位の買い持ち、もしくは2単位の売り持ちから3単位の買い持ちに、"-5"ならば3単位の買い持ちから2単位の売り持ち、もしくは2単位の買い持ちから3単位の売り持ちになります。
なお、これらの内どちらの売買パターンになるかは、ポジション列の値で判定できます。それは他のシグナルの場合についても同様です。

シグナルが"4"の場合は、3単位の売り持ちから1単位の買い持ち、2単位の売り持ちから2単位の買い持ち、1単位の売り持ちから3単位の買い持ち、のいずれかになります。
シグナルが"-4"の場合は、上記にて買いと売りを入れ替えればよろしいです。

シグナルが"3"の場合は、3単位の売り持ちから売り手仕舞い(キャッシュポジション)、2単位の売り持ちから1単位の買い持ち、1単位の売り持ちから2単位の買い持ち、キャッシュポジションから3単位の新規買い、のいずれかとなります。
シグナルが"-3"の場合は、上記にて買いと売りを入れ替えればよろしいです。

シグナルが"2"の場合は、3単位の売り持ちから2単位を売り外して1単位の売り持ち、2単位の売り持ちから売り手仕舞い、1単位の売り持ちから1単位の買い持ち、キャッシュポジションから2単位の新規買い、1単位の買い持ちから2単位を買い増して3単位の買い持ち、となります。

シグナルが"-2"の場合は、3単位の買い持ちから2単位を買い外して1単位の買い持ち、2単位の買い持ちから買い手仕舞い、1単位の買い持ちから1単位の売り持ち、キャッシュポジションから2単位の新規売り、1単位の売り持ちから2単位を売り乗せて3単位の売り持ち、となります。

シグナルが"1"の場合は、3単位の売り持ちから1単位を売り外して2単位の売り持ち、2単位の売り持ちから1単位を売り外して1単位の売り持ち、1単位の売り持ちから売り手仕舞い、キャッシュポジションから1単位の新規買い、1単位の買い持ちから1単位を買い増して2単位の買い持ち、2単位の買い持ちから1単位を買い増して3単位の買い持ち、となります。

シグナルが"-1"の場合は、3単位の買い持ちから1単位を買い外して2単位の買い持ち、2単位の買い持ちから1単位を買い外して1単位の買い持ち、1単位の買い持ちから買い手仕舞い、キャッシュポジションから1単位の新規売り、1単位の売り持ちから1単位を売り乗せて2単位の売り持ち、2単位の売り持ちから1単位を売り乗せて3単位の売り持ち、となります。

以上では、3システムの合成システムについて説明しましまたが、合成元システムの数を増やせば、それだけ得られるポジションの数が増加し、より細やかなうねり取りシステムとなります。

なお、ここではポジション数を増やすためにシステムの合成を考えましたが、ロジックの記述によってポジションを多段階に変化させることも可能ではあります。
しかし、そのようなロジックの記述は難しく、有効なシステムが得られる保証はありません。

合成システムであれば、個々の合成元システムの有効性を確認することは比較的容易であり、その帰結として、合成されたシステムの性能や信頼性もまた担保されることになります。
課題としては、同一銘柄で有効性が高く、しかも独立性の高い複数のシステムを揃えられるかということです。

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

nice! 0

コメント 0

コメントを書く

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

Facebook コメント

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