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

■シミュレーションのワナ
 TradeStationのようなシミュレーションソフトを手に入れると、誰もが「これで最高のシステムを作って、勝ち続けられる」と考えがちです。しかし、「相場は失敗の続くゲーム」と言われるように、そう簡単にはいきません。相場は過去のパターンをそのまま再現するわけではないから
です。
 ここで考えておくべきポイントがいくつかあります。シミュレーションをする上での「ワナ」と言える点も多々あり、注意が必要です。なお、この「ワナ」は注意すべき点であってこれを克服したからといって、システム売買で勝てるようになるとは限りません。前提条件として注意しておくべきことは次の通りです。


@シミュレーションした期間はどれくらいか
 過去データをシミュレーションするに当たっては、最低5年分のデータでシミュレーションすることが必要と思われます。データが1〜2年程度と短い場合、その期間にだけしか通用しないパラメータを選択してしまうことがあります。その短い期間に最適なパラメータが、以後もずっと最適であり続ければよいのですが、通常短期間でシミュレーションしたパラメータは、あまり適切でないケースが多いので、そのパラメータを実践で使うことはお薦めしません。ただし、長い期間でシミュレーションしたパラメータでも、それ以後の期間で利益を出し続けられるかどうかは、わかりません。
 それでは、実例で見てみましょう。図1は横浜乾繭のシミュレーション結果です。あるプログラムを1995年1月4日〜1996年12月31日の期間でシミュレーションを行いました。この図のピンクの線が累積損益、青は終値の折れ線グラフです。赤の縦線は1996年12月31日時点です。この赤線の右側がシミュレーション期間です。当初は損益が横ばいですが、1996年に入ると右肩上がりの利益を出しています。問題はシミュレーション後の期間です。赤線の右側を見ると、損益曲線はしばらくは好調に利益を出していますが、その後は右下がりの状況が続いています。
 この2年間という短期間でシミュレーションした結果に基づいて、パラメータを計算し最適化を図った結果で1997年以降に売買をしても、一時的には利益になるものの、継続して利益をあげることはでません。短期間でのシミュレーション結果がよくても、それは一時的なものである可能性が高く、継続してよいパフォーマンスが出るとは考えない方が無難です。


Aシミュレーションに使うデータ
 株の場合に比べると、先物は限月制をとっている性格上、発会から納会まで期間が区切られています。商品先物の場合は、金や大豆は発会から納会まで1年ですが、ゴムやガソリンは半年と短いため、一代足だけでシミュレーションを行って、パラメータを設定するのは困難です。株価指数先物や債券先物も中心限月は期近であることが多く、ある限月が期近に回って活発に商いされる期間が短いという難点があります。
 こうした点を解消して、長期のデータでシミュレーションするには、通常つなぎ足が使われます。商品先物の場合、一番活発に取引されるのは先限です。このため、先限をつないだ先限つなぎ足がチャート表示でもシミュレーションでも使われます。一般的に先限を単純につなげたつなぎ足が利用されていますが、この先限のつなぎ足は結構曲者なのです。詳しくは「商品相場の技術」(林輝太郎著、同友館)に譲りますが、先限をつなぐとサヤ分が修正されません。このため、もっともらしい先限つなぎ足とは、実はこの世に存在しない相場データとなってしまいます。
 米国の先物市場では、期近の中心限月や活発限月を修正してつないだデータがデータベンダーより販売されています。シミュレーションを行う人は、こうしたデータを入手してテストするケースが多いようです。ただ、つなぎ足を作成する際のデータの修正方法には、いろいろとやり方があり、使うデータによってはシミュレーション結果がかなり違ってくるケースも出てきます。国内の場合、商品先物では(株式先物・債券先物のことはよく知りません)先限足を修正してつなぐにしてもやり方が難しく、あまりお目にかかったことがありません。私自身、サヤの修正をどうすればよいのか、頭を悩ませているのが実情です。
 結局のところ、先限つなぎ足をシミュレーションに使わざるを得ないため、これでシミュレーションを実施したあと、一代足を使ってそのロジックやパラメータが使えるかどうかを検証するといった手順を取っています。


Bフォワードテスト
 ある期間のデータでシミュレーションを行い、そこで求められたパラメータをシミュレーション以後のデータに当てはめて、本当に使えるかどうかを検証するのがフォワードテストです。
 例えば、2本の移動平均のクロスオーバーのシステムを例に取りましょう。東京小豆の先限つなぎ足の1990円1月4日〜1997年12月31日の8年分のデータでシミュレーションしたとします。
 ここで、2本の移動平均の最適値が3日と12日と出たとします。この3日、12日のパラメータの組合わせが、シミュレーション期間以降のデータ(例えば1998年1月4日〜2000年6月30日)で、利益を出せるかを確認するのがフォワードテストです。
 フォワードテストで良好な結果が出れば、そのプログラムはロジックもパラメータも有効である可能性が高いと判断できます。しかし、もしシミュレーションは申し分無くともフォワードテストの結果がよくなければ、それはプログラムのロジックが悪いか、パラメータが適切でないと言えます。
 過去データのシミュレーションでいい結果が出ると、有頂天になり、相場で稼げそうな気がしてきます。しかし、フォワードテストなどを繰り返すことによって、シミュレーション結果を冷静に見ることができます。相場は過去の動きをそのまま繰り返すわけではないので、フォワードテストでいい結果が出るプログラムを作るのはかなり困難です。具体的な例で見てみましょう。
 図2の「ゴム指数シミュレーション結果」をご覧下さい。これはボラティリティ・ブレークアウトのプログラムでゴム指数の1995年3月10日から1998年12月31日までのデータで最適化したものです。青色の線が終値の折れ線グラフ、ピンクが累積の損益曲線です。縦の赤線の左側がシミュレーション結果です。ピンクの損益曲線はまずます上昇しています。この調子なら実践で使えそうです。このプログラムをパラメータをそのままにして、シミュレーション期間以後に当てはめてみました。それが赤線の右側で、これがフォワードテストに該当します。
 これによると、シミュレーション期間以後は収益が下がっており、それまでの儲けを失っています。これだとちょっと実践で利用する気にはなれません。このフォワードテストで、損益曲線がまずまず右肩上がりでなければ実用上使えるとは言いにくいです。
 実際にプログラムを作成するとわかりますが、シミュレーションでどんなに好成績でもフォワードテストで損益曲線が右肩上がりになるロジックはなかなかできません(賢明な読者諸兄はそのようなことはないかもしれませんが)。右下がりでなければ、フラット(水平)がやっとというのが実情です。


Cカーブ・フィッティング
 カーブ・フィッティングとは、最適化のしすぎによる「こじつけ」のことです。過去のデータに合わせてさまざまな条件を加え、パラメータの最適化を徹底してやると、過去データに関しては完璧か、それに近いシステムができます。ところが、こうしたシステムで運用を始めると過去のシミュレーション通りの結果が得られません。それどころか、負けるケースの方が圧倒的に多いのです。
 なぜかと言うと、先にも述べた通り、相場は過去の動きをそのまま繰り返すわけではないからです。ですので、シミュレーションの際に最適化をしすぎて、過去データに関して完璧なシステムができてもその結果を鵜呑みにしないことが大切です。必ずフォワードテストや他の検証も実施して、システムの内容が実践で利用するに耐えうる場合のみ、利用するべきでしょう。
 それと検証の手段として、最適化して算出されたパラメータのチェックも重要です。例えば、2本の移動平均のクロスオーバーシステムを考えてみましょう。最適化の結果、3日と15日のパラメータが最適な組合わせと出たとします。その周辺のパラメータの売買結果のチェックをします。
 短期の最適値が3日と出た場合、2日や4日に変更して、結果があまりに大きく変わるようでは、そのロジックやパラメータに疑問を持つべきです。極端な話、短期を3日にするとベストだが、2日や4日では損益が損失だったというような場合もあります。たまたま過去のデータのいい局面をタイミングよく、捉えているだけのケースがあります。こうしたパラメータは実践では使えません。
 ですので、最適化した結果の検証の際には、前後のパラメータによる結果もきちんとチェックして、パラメータが多少変わっても安定した成績が残せることを確認するべきです。


Dまだ起きていない結果を使ってしまう
 これはプログラムのロジックを組み立てる際の注意事項です。厳密にはシミュレーションする前段階での問題ですが、ここに挙げておきます。新マーケットの魔術師の中で、ウイリアム・エックハートがトレーディング・システムのデザイン上の注意点に関して ”POST-DICTIVE"(邦訳は「結果資料」)と述べています。
 これは、「事が起こった後にしか入手できない情報を使ってしまう」ことです。どういうことかと言うと、マーケットがまだ引けていないにもかかわらず、その日の終値を使って計算してしまう、高値は引けてからでないと高値と判断できないのに、その日の高値を使ってしまう、といったことです。例をひとつ挙げてみましょう。
 「終値が10日の移動平均(終値)を上抜いたら買い」というプログラムを考えてみます。終値も10日の移動平均も引けてからでないと計算できません。計算ができないので、今日の終値では買えません。こうした条件の場合、買いは翌日にしないとプログラム上の計算はできても実践では使えません。日常生活では、こうしたことはやりませんが、システム作りでは陥りやすい落とし穴なので注意が必要です。


E手数料とスリッページ(値ずれ)
 商品先物取引にしても、株取引にしてもインターネット経由の注文では、手数料がかなり下がり商いがしやすくなりました。とはいえ、ゼロではありません。この手数料の存在はシステムの検証の際に見落としがちですが、しっかり計算に入れないといけません。
 手数料を入れないと勝率、収益ともに良好でも、手数料を計算に入れたとたんに両方ともガタ落ちするケースは珍しくありません。日本の商品先物取引の手数料はかなり高く、システム取引のネックになっていましたが、インターネット取引の発達で手数料が大幅に安くなり、一般投資家が短期売買をしやすくなりました。
 手数料以上に見過ごしてしまうのが、スリッページ(値ずれ)です。スリッページとは、発注した際の値段と実際に約定する値段の差です。例えば、東京小豆が13000円の値をつけ、システムで買いのサインを出したとします。そこで買い注文を出したら、実際の約定値は13080円だった場合、この80円がスリッページです。
 シミュレーションでは、「この価格を付けたら買い」というロジックになっていても、実際には結構値が飛ぶケースがあります。特に板寄せの場合は、節ごとにかなり値が飛ぶケースが多いので、スリッページは大きめに見積もって、シミュレーションと実践でのかい離を少なくすることが重要です。でないと、「シミュレーション上はかなりいい成績なのに、実践では利益が出ない」ということになる可能性があります。一般には、スリッページとはなじみのない概念ですが、これは無視できない重要な要素です。
 これも実例を見てみましょう。図3の「ゴム指数シミュレーション結果(手数料・スリッページなし)」をご覧下さい。このシステムは「(3)フォワードテスト」で使ったのと全く同じプログラムで、パラメータも同じです。「(3)フォワードテスト」のところでは、インターネット取引と仮定して手数料を往復3,800円、スリッページを往復20,000円(すなわち片道10,000円=0.5ポイント)と設定してシミュレーションしています。それがピンクの線ですが、手数料・スリッページをゼロにすると緑の線になります。このシステムは全期間で81回もの売買をしているせいか、手数料とスリッページが重くのしかかってくることがご理解いただけたと思います。
 もし、手数料とスリッページがないとすると、1997年3月から1998年末までは、きれいな右肩上がりの損益曲線になっています。実践でこれだけうまくいくシステムができれば申し分ないのですね。なにしろ、ゴム指数1枚(証拠金は6〜7万円)の売買で5年強で260万円もの利益が出るのですから。


F年間の売買回数
 デイトレード用のプログラムは別として、そのシステムが年間にどれくらい売買するかもシステム作りをする上で考えておきたいポイントです。例えば、過去10年分のデータでシミュレーションを実施して、勝率が90%を超えるようなシステムができたとします。しかし、そのシステムが1年に1回しか売買しないなら、統計的に本当に信頼できる結果かどうかは疑わしいと思います。
 年間の売買回数に関しては、何回がいいといった基準はありません。売買回数はその投資家がポジションをどれくらいの期間持つかによって、その投資家に合うか、合わないかがあるからです。ただ、あまりに売買回数が少ないものは、統計的な信頼性に欠けるので、いくらシミュレーション結果がよくても利用するには注意が必要です。


G勝率へのこだわり
 勝率は高いに越したことはありません。しかし、勝率がいくら高くてもドローダウン(一時的な落ち込み)が大きい場合は、累積の損益は上下のブレが大きく、安定的に収益を上げられません。また、シミュレーション上で極めて高い勝率を出すシステムはカーブ・フィッティングになっている可能性があります。シミュレーション期間のデータでは勝率は高いものの、実際には勝てないということが往々にして起こります。
 「(3)フォワードテスト」と「(6)手数料とスリッページ」の累積損益曲線を見ていただきましたが、これが右肩上がりで上昇するのが理想のシステムです。ちなみに「ゴム指数シミュレーション」の勝率を見ると、手数料・スリッページを設定したものは、シミュレーション期間で47%、全期間で42%となり、手数料・スリッページ無しのものは、シミュレーション期間で67%、全期間で60%となります。勝率47%というと低く感じますが、極端に高いものはなかなか作れません。勝率80%、90%というシステムで実践でも使えるシステムは、世界中を捜せばあるかもしれませんが、そのように高い勝率を出せるシステムを作るのは容易ではありません。
 勝率はほどほどでも、損を小さく抑え、利益を大きく伸ばせるのが、いいシステムと言えます。もっともこの「損小利大」の考え方は、システムだけでなく売買全般に言えることですが。