システム売買とは売買プログラムの実例シミュレーションのワナシミュレーションの検証TradeStation指標紹介
TradeStationについて先物取引ゼミナールMENUシステム取引入門MENU

■売買プログラムの実例
 プログラムを作って、シミュレーションをしてみましょう。ここでは代表的な例をいくつか見てみましょう。


@2本の移動平均のクロスオーバー
 システム取引というと、よく引き合いに出される2本の移動平均のクロスオーバーによるシステムを紹介します。それでは日経平均を例に見てみましょう。なお、シミュレーションに使ったのは先物のデータでなく、日経平均株価指数です。

<売買のルール>
 ・短期移動平均が長期移動平均を上抜いたら、翌日終値で買い。
 ・短期移動平均が長期移動平均を下抜いたら、翌日終値で売り。
 ・シミュレーション期間は1990年1月4日から1998年12月31日。
 (なぜ直近のデータまで使わないかは後述します)
 ・手数料は片道20,000円、値ずれ(スリッページ)も片道20,000円。
・ 単独の仕切りルールは設けず、ドテンによる売買とします。

※ 使用データは日経平均株価指数の日足です(日経平均先物は長期のデータがないため、指数にしました)。値動きは10円単位、倍率は1000倍としました。売買は日経平均先物でないとできないので、あくまでもこの結果は参考程度に留めてください。

 ここで日経平均を例に取り上げたのにはわけがあります。実はいくつかの銘柄で2本の移動平均でのクロスオーバーシステムを試してみましたが、いい結果が出ませんでした(例えばソニーなど)。個別株へは、このルールを単独で適用するのはかなり難しいと言えそうです。
 最適化の結果、パラメータは8、18日の組合せがベストと出ました。1998年までのシミュレーション結果では、それほど際立った成績ではありませんが、まずまず利益を上げています(図1参照)。パラメータをそのままにして、1999年以降のデータを加えると、成績は悪化しています(図2参照)。チャートはこちらを参照して下さい。
 次に図3の累積損益曲線を見てみましょう。1998年末までは右上がりで上げていますが、1999年以降はそれまでの利益を吐き出しています。過去のベストパラメータが将来まで有効とは限らないという好例です。


Aチャネル・ブレークアト
 チャネル・ブレークアウトとは、過去n日間の高値を上抜いたら買い、過去n日間の安値を下抜いたら売りというのが基本ロジックです。このシステムを考案したのは、リチャード・ドンチャンという人です。このシステムは1960年代ころ、考案されたようですが、今でも広く使われています。さて、具体的なロジックを考えてみましょう。

<売買のルール>
 ・過去a日間の最高値を逆指値で買う。
 ・過去b日間の最安値を逆指値で買い玉を仕切る。
 ・過去c日間の最安値を逆指値で売る。
 ・過去d日間の最高値を逆指値で売り玉を仕切る。

 通常は新規建玉のa,cは40日、仕切りのb,dは20日とするのが一般的ですが、日数を変えてシミュレーションします。なお、売りと買いでも日数を変えてみます。
 東京小豆の先限つなぎ足でシミュレーションしてみましょう。データは1990年1月4日から1998年12月28日まででシミュレーションします。直近のデータまで使わないのは、過去の長期データでの最適化の結果のパラメータが、その後の期間もテストするためです。これをフォワード・テストといいますが、フォワードテストについては、「シミュレーションのワナ」のコーナーで紹介しています。
 さて、最適化の結果ですが、a=6、b=18、c=34、d=30となりました。すなわち、6日の最高値を売り、18日の最安値で仕切り、34日の最安値を売り、30日の最高値で仕切りとなります。結果のレポートは図4をご覧下さい。勝率は46%とまずまずでしょう。
 このパラメータを1999年以降のデータに当てはめた結果は、図5をご覧下さい。勝率は低下し、累積の利益も減少しています。この例だけ見ると、過去のパラメータをそのまま適用して継続して利益を出しつづけるのは、なかなか難しそうです。
 次に図6の累積損益曲線をご覧下さい。なかなかきれいな右肩上がりという具合いにはいきません。ただ、各銘柄の特性を考慮し、過去に動きの少ない時期は取引しないとか、売り優位の月には買わないといった工夫で、パフォーマンスはさらに向上するはずです。また、このシミュレーションは先限つなぎ足を使ったものなので、パラメータが有効かどうかは、一代足を使って検証する必要があります。TradeStationのEasy Languageのソースコードは図7をご覧下さい。


Bボラティリティ・ブレークアト
 ある一定の値幅だけ上げたら買い、下げたら売りというのが基本ロジックです。「ある一定の値幅」の計算には次のような計算方法があります。

・過去n日間の高値−安値のx倍。例えば、過去5日間の高値−安値の0.3倍。
・過去n日間のATR(Average True Range)のx倍。

 値幅の計算方法は工夫次第でいろいろ考えられると思います。なお、「ある一定の値幅」が「どこから動くか」も重要なポイントです。基本的には、前日の終値ですが、他にも当日の始値や前日の高値と安値の中間を取ったりします。ここでは、「前日の終値より、過去n日間のATRのx倍だけ上げたら買い、下げたら売り」というロジックを考えてみます。ここでは、売りと買いのプログラムを別々にします。

<売りの仕掛けのルール>
・前日の終値より、過去n日間のATRのx倍だけ下げたら売り。

<買いの仕掛けのルール>
・前日の終値より、過去n日間のATRのx倍だけ上げたら買い。

<仕切りのルール>
・ 買い玉の場合、直近の終値より、ATRのy倍だけ下げたら仕切り。
・ 売り玉の場合、直近の終値より、ATRのy倍だけ上げたら仕切り。
※下の2つはトレイリング・ストップ。

 東京小豆の先限つなぎ足でシミュレーションしてみましょう。まずは売りのプログラムですが、データは1990年1月4日から1998年12月28日まででシミュレーションした結果は、図8です。成績はまずまずといったところでしょうか。
 なお、最適化の結果、「過去4日間のATRの1.1倍だけ、前日の終値より下げたら売り」となりました。仕切りは「過去20日間のATRの1.1倍」が最適地となりました。これを1999年以降のデータに当てはめたのは図9です。成績が悪化しています。
 図10の累積損益曲線を見ると、シミュレーション結果はまずまずですが、1999年以降のフォワード・テストでは右下がりになっており、実用性には疑問があります。
 次は買いのプログラムです。銘柄は同じ東京小豆の先限つなぎ足です。図11では勝率は売りよりも向上していますが、売買回数がかなり減っています。これも1999年以降のフォワード・テストの結果は悪化しています(図12)。累積損益曲線もいい形ではありません(図13)。実践では非常に使いにくい成績です。
 システムではこうして簡単に結果が出ますが、内容を十分に検討して使うことが重要です。穀物の場合は、季節性が出やすいので、「何月は売りのみ、何月は買いのみ」とか、ボラティリティの低いときは売買しないといった工夫で成績はかなり向上する可能性があります。なお、ボラティリティ・ブレークアウトのEasy Languageのソースコードは、売りが図14、買いが図15です。
 ここで掲載しているプログラムはあくまでサンプルであり、売買を推奨しているものではありません。売買の判断は常に自己責任でお願いいたします。