1033《Qエンジン》操作事典
 [1033] 最適な(パラメータ)や(以上以下)を見つける (ガイド)

目次へ.. 前頁へ.. 次頁へ..

最適化とは?

「最適化」は、すでにある条件表の成績を高めるために、条件表に設定してる(パラメータ)や(以上以下)の数字を変化させて、よい成績がでる数字を見つけることをいいます。

この作業は誰でもしていることですが、思いつきで変更したり、手作業で変更したりするので、限られた銘柄や限らてた時期の最適化しかできません。

《Qエンジン》の最適化は、多くの銘柄や長期間のデータを使って、高速したがって短時間で、よい(パラメータ)や(以上以下)を見つけます。最適化の方法は3つあります。
  1. 各行の(パラメータ)(X日平均とか、X日順位相関のX日の数字をパラメータといいます)を最適にする。

  2. 各行の(以上・以下)(-15以上 +5以下など)を最適にする。

  3. (パラメータ)と(以上・以下)をいっぺんに最適化する。
1031  オートマで日経先物用の条件表を作る で日経先物用の条件表No.246 を作りました。この条件表を 前章1032 売買検証(条件表の評価)をするで検証をしてみると、実に素晴らしい成績になっていました。本章では(買い)の条件の(パラメータ)や(以上以下)の数値を最適化して、成績を向上させる手順を述べます。

条件表No.246は、No.244の(買い)の条件表とNo.245の(売り)の条件表を合成したものです。ここでは、(買い)の条件表の最適化だけを述べますが、同様の手順で(売り)の条件表の成績を向上させることができます。

オートマで作った(買い)の条件表No.244は次のものでした。

  1. 条件表のNo.1〜No.5行が(トリガー)です。
  2. これをオートマにかけたところ、 No.6行〜No.18行の条件を付け加えたのでした。
No.244の(買い)の条件表の過去10年間の成績は、次図のようになっていました。

よい条件表は、
  1. 単独でもそこそこ役に立つトリガー条件表を基にして
  2. トリガー以外のさまざまなチャートを選んで、間違って出る売買マークを制限する
ことでできます。これはオートマが自動的にやってくれます。問題はオートマに与える材料です。@適切なトリガー条件表が用意されているのか? A局面を判断するチャート(計算用の条件表)は十分な種類が用意されているのか? がポイント です。

1031  オートマで日経先物用の条件表を作る では、「5日間で2%の利益を出す」ような条件表を作ることを目的にしたので、トレードの機会が多いと思われる(株価と13日平均線のクロス)をトリガーとして採用しましたが、それでよかったのか?トリガーだけが設定してあるNo.44(13日平均線クロス)の検証をすると、次のような成績でした。

  1. 過去10年間のトレード数は89回です。このトレード数はやや不足です。

    トレード数が100回以上あるときの成績はだいたい信用してよいといえます勝率を例にすると、勝率が60%の条件表があったとき、トレード数が100回ある場合の信頼区間は72%〜47%くらいです。±13%くらいのブレがあります。200回のときは±9%のブレがあります。50回しかないときは±18%もブレている可能性があります。だからトレード数が100回より少ないときの勝率はあてになりません。

  2. 平均利益率は0.20%。
  3. 勝率は64.0%なので、最悪の場合の勝率は50%より小さい可能性があります。
  4. PFは1.20倍
それにしてもこのトリガーの成績は優秀です。オートマは他のチャートから損失がでる局面を制限するチャートを見つけて、トリガーに追加するので、トリガーだけの成績よりもよい成績になる条件表ができます。

日経先物用の(買い)のトリガーはNo.42〜No.58に17本用意されていますが、トリガーだけによってトレードしたときの成績はそれぞれ異なります。この10年の買いの成績は次図のようになっていました。

17本のトリガーのうち@トレード数が100以上で、A勝率が60%以上のものは12本もあります。このトリガーの優秀さがトレードがよい成績を出す基礎になっています。ただNo42〜No.58のトリガーは思いつきでできるものではありません。思いついたトリガーを最適化してNo42〜No.58のトリガーを作ったのです。

(1)トリガーの最適化をする

初めに思いついたのは(5日平均線クロス)です。次の設定内容でした。
このトリガーだけでトレードしたときの10年間の成績は次のものでした。

  1. トレード数は164回。
  2. 平均利益率は0.01%。ほとんど利益は出ていません。
  3. 勝率は59.1%。これはナカナカのものです。
この(5日平均線クロス)を最適化すれば、平均利益や勝率の高いトリガーができます。よいトリガーはオートマをかけることによってさらによい成績を出す条件表を作ることができます。
最適化で利用するのは(パラメータ)と(以上以下)の最適化が一度にできる「最適条件行」の機能です。
  1. 1009「日経先物」を選択し(複数の銘柄を選択してもよい)、

  2. メニューの「最適(T)」→「最適条件行」をクリックするか、ツールバーの「ブロックの絵」をクリック。

  1. 最適化したい条件表No.234をクリックして紺色にし、

    (No.233とNo.234は、はじめにトリガーにしたNo.43(5日平均線クロス)を複写したもの)。

  2. 「検証期間」に、070101〜161231 (2007年1月1日〜2016年12月31日)と入力します。(この期間のデータについて調べ、最適化する)

  3. 「売買条件」は( 買いだけ)を選択。(この例では買い条件の最適化をしたいので)

  4. 「売買ルール」は必ず確認して下さい。売買ルールにもとづいて最適化されるからです。(ここでは前章と同じ売買ルールを使います)
  1. 条件表No.234で最適化できるのは、No.3行目の(5日平均)のパラメータと、No.5行目の(-3以下)の2か所です。

  2. No.5行目の(以上以下)を最適化しようとしています。

  3. @と表示されている行に空白の□欄があるので、これをクリックして「レ」点を入れ、

    その右側の(No.XX線)と表示されている欄をクリックし→背景色を青色にして→条件表の5行目をクリックすると「No.5線」と表示されます。

  4. @の「No.5線」の(以上以下)を変化させる範囲は、(-10から -1まで、1ずつ増加)としました。

    もとは(-3以下)ですが、この(-3)の部分を、-10,-9,-8,-7・・・-1 と変化させ、各数値のときにどのような成績になるのかを調べるわけです。

  5. CではNo.3行目の(パラメータ)を最適化しようとしています。□のチェック欄をクリックして→背景色を青色にし→条件表のNo.3行目をクリックすると。Cは(No.3線)に変わります。

  6. No.3行目の(パラメータ)を変化させる範囲は、(3から40まで、1ずつ増加)としています。

    以上の指定ができたら、「実行(Y)」で「最適条件行」が開始されます。
「最適条件行」を実行させると、図のような表示がされます。
  1. No.3線の(パラメータ)が、3,4,5,6 ・・・39,40 と変化し、

  2. No.5線の(以下)が、-10,-9,-8・・・-2,-1 と変化して行きます。

  3. 1行にその(パラメータ)(以下)の数値での成績がまとめられます。図のcはトレード数。

  4. 平均利益率は-0.55%
    勝率は52.8%
    PF(プロフィット・ファクター) は0.65倍

  5. 現在のところ最も勝率の高いものが画面最下行に表示されます。図ではNo.3線のパラメータが6、No.12線のパラメータが9、No.13線の(パラメータが32)で(-8以下)のときが最高の成績(利益率が0.76%、勝率69.2%、PFが2.86倍 である、となっています。
すべてのパラメータの売買成績がでました。
  1. 総合的に判断して、最も優れているパラメータはNo.3線が(32日)で、No.5線が(-8日以下)の成績が一番よいと表示されています。

  2. そのときの成績は、

    @トレード数は39回
    A平均利益率0.76%
    B勝率69.2%
    CPFは、2.85倍

    となっています。
しかし直ちに、ここれがトリガーにとって最もよい(パラメータ)と(以上以下)であるとは決定できません。
先にいったように、トリガーのトレード数は少なくとも100回は必要です。

そこでトレード数が100回以上のもので、比較的成績がよいものを探してみましょう。
  1. メニューの「ソート」をクリックすると、

  2. 「リストのソート」の画面が現われるので、

    (評価得点Oを選択し、

  3. 「OK」をクリック
  1. 評価得点の高い順にリストが並べ替えられます。

  2. トレード数も表示されているので、トレード数が100回以上のものを見つけます。

  1. スクロールさせてリストを下に下げていきます。

(2)パラメータを記憶する

図の(a)(b)(c)(d)はトレード数が100回以上ありますが平均利益率は高いもので(a)の0.12%です。 トリガーとして採用する条件は
  1. トレード数が100回以上
  2. 平均利益率が0.30%以上

  3. 勝率が55%以上
という基準にしています。

(a)(b)(c)(d)の利益率は低すぎます。そこでトレード数が100回に近いもので、平均利益率が0.3%に近く、勝率が55%以上のものを探すと、(e)があります。 トレード数89回、利益率0.20%、勝率64.0%です。これを最適化したトリガーとします。
  1. トレード数が89回の行を選択して、

  2. 「条件書換」ボタンをクリック。

  3. 書き換えるかどうかの確認をしてきます。図では、

    No.5線を、-99999以上  -4以下に、
    No.3線のパラメータ 5を 13に
    書き換えますか?
    とあります。

    「はい」ボタンで、条件表は書き換えられます。
「最適化」したトリガー条件表No.234は次図のようになりました。

元のトリガー条件表No.243と比べると、トリガーだけでトレードしたときの成績は次のように変わっています。
  1. トレード数は、164回→89回へ減る
  2. 平均利益率は、0.01%→0.20%へ 向上する
  3. 勝率は、59.1%→64.0%へ 向上する
  4. PFは、1.01倍→1.20倍へ 向上する

(3)最適化したトリガーをオートマにかける

最適化したトリガーからオートマに買いを条件表を作らせることは実に簡単です。
  1. 最適化したトリガー条件表No.234を使って、

  2. オートマにかけて条件表No.235を作りました。
できた条件表No.235の内容は次のようになっています。これは(拡張4)No.44の買いのトリガーと同じものです。

よい条件表を作るには、よいトリガー条件表を作ることが必要ですが、難しいことではありません。
  1. 思いついたトリガーを設定し
  2. トリガーでトレードしたときの検証する(多くは成績はよくない)
  3. そこでトリガー条件表を最適化して、@トレード数100回以上、A利益率0.2%以上、B勝率55%以上のものを新しいトリガー条件表とする。
  4. 新しいトリガー条件表をオートマにかければ、条件表が出来上がる。
これだけのことです。


目次へ.. 前頁へ.. 次頁へ..