KFシステムクリエイター取扱説明書(15)

記事
マネー・副業
(3)システムの最適化

システムの最適化を行うには、オペレーションページの「最適化演算」ボタンを押します。すると最適化演算ダイアログが開きますので、各項目を確認・設定して「OK」ボタンを押します。 

最適化a.png

「テスト開始日」欄には起点日、「テスト終了日」欄には終点日を設定します。これは初期設定されていますので、変更の必要がある場合のみ日付を直接入力してください。 

「最適化指標」欄には、最適化対象とする性能指標のセル番地を入力します。初期状態では、サマリーページの「テスト対象」に表示されている値が設定されています。 

「最適値」欄では、最適化指標の値が、最大値か最小値かのどちらになったら最適値とするかを決定します。最大値の場合は「MAX」を、最小値の場合は「MIN」を選択してください。 
大抵の指標では最大値が最適値となりますが、標準偏差や標準誤差、標準猶予日数、総損失、負け数、平均損失、等といった指標では、最小値が最適値となります。

「演算テーブル」欄では、最適化演算の方法を選択します。「テーブル1」、「テーブル2」、「テーブル1+2」がテーブル演算、「テーブル0」がマクロによる最適化演算、「時系列演算」が時系列分析です。 

以下に、各演算方法毎に操作方法を説明いたします。 


①テーブル演算

テーブル演算ではテーブル別の演算も可能ですが、通常は全体を走査する「テーブル1」演算と、テーブル1演算で得られた最大値付近を詳細に走査する「テーブル2」演算とを、連続して実行する「テーブル1+2」演算を選択します。 

最適化演算を実行すると、テーブル1シートに移動してテーブル演算が始まります。なお、エクセル2007以降の場合、演算途中で画面が更新されなくなる場合がありますが、演算は継続していますので、オペレーションページに戻るまでお待ちください。 

最適化b.png

テーブル演算に掛かる時間は、6770アルプスアル、順張り回帰システム、演算対象期間:1993年11月1日~2020年6月16日(26年8か月)、最適化指標:KFインデックス(単利)、Windows10Pro+エクセル2003、Core(TM)i5-3570CPU@3.40GHz(TB3.70GHz)、の条件下で5分55秒程度です。 
当然、様々な条件によって演算時間は変わってきますので、ご注意ください。

以下に演算結果を示します。 
上段がテーブル1、下段がテーブル2です。

最適化c.png

最適化d.png

得られた最適パラメータは(144,1.7)で、後述するマクロによる最適化演算の結果と同じです。ただし、銘柄やロジック、期間や最適化指標等の条件によっては、真の最適パラメータを読み違える場合があります。 

テーブル演算の強みは、何と言ってもパラメータ分布のチャート化です。以下に、チャート化の方法について説明いたします。ここではテーブル1で説明しますが、テーブル2でも同様です。 
なお、操作はエクセル2003上で行っていますが、他のバージョンの場合も基本的には同じです。

まず、テーブルの演算結果部分を範囲選択します。C7セルを選択した後、Shiftキーを押しながらZ36セルをクリックすれば、C7:Z36のセル範囲が選択されます。 

最適化g.png

続いて、「挿入(I)」タブを開いて「グラフ(H)...」を選択します。 

最適化h.png

グラフウィザード-1/4-で「等高線」を選び、左上の形式を選択して「次へ(N)>」を押します。 

最適化i.png

グラフウィザード-2/4-で、「データ範囲」タブの「系列:」の「行(R)」にチェックを入れ、「次へ(N)>」を押します。なお、見易さや好みによっては、「列(L)」を選んでも大丈夫です。 

最適化j.png

グラフウィザード-3/4-で、「目盛線」タブの「X/項目軸」の「目盛線(M)」と「Y/系列軸」の「目盛線(O)」、そして「Z/数値軸」の「目盛線(A)」にチェックを入れます。 

最適化k.png

続いて、「タイトルとラベル」タブの「X/項目軸(C)」に「パラメータ2」、「Y/系列軸(S)」に「パラメータ1」、「Z/数値軸(V)」に「KFインデックス単利」と入力し、「次へ(N)>」を押します。 

最適化l.png

グラフウィザード-4/4-で「新しいシート(S)」にチェックを入れ、「完了(F)」を押します。なお、シート名は任意で構いません。 

最適化m.png

すると、次図のようなパラメータ分布図が出来上がります。ただ、このままでは見づらい部分がありますので、チャートの設定を少し変更します。 

最適化n.png

チャートの端で右クリックするとポップアップメニューが開きますので、「3-Dグラフ(V)...」を選択します。 

最適化o.png

「3-Dグラフの設定」ダイアログが開きますので、適宜変更します。例えば、「仰角(E)」を35、「回転(R)」を60、「奥行き(P)」を20、に設定して「OK」ボタンを押します。 

最適化p.png

すると、次のような等高線チャートが得られます。 

最適化e.png

同様に、テーブル2をチャート化したのが次図になります。

最適化f.png

ここで注意が必要なのは、パラメータ1及びパラメータ2の値は、実際のパラメータ値ではない、ということです。これは単なる順序を表しているだけなので、パラメータ1の"S1"を5(テーブル1のA7セル)及び"S30"を150(同A36セル)、パラメータ2の"1"を0.4(同C5セル)及び"24"を5.0(同Z5セル)に、頭の中で置き換えて判断してください。 

これらのチャートを見ると、パラメータ分布の周期構造が確認できます。これは、この銘柄及びロジックに固有の性質であり、「6.最適化(1)最適化とは」における説明の根拠となります。 


②マクロによる最適化演算

「演算テーブル」欄で「テーブル0」を選択すると、マクロによる最適化演算を実行します。「テーブル0」を選択して「OK」を押すと、「演算条件設定」ダイアログが開きますので、各値を設定します。 

最適化q.png

パラメータ1には通常、「開始」に"3"、「終了」に"150"、「ステップ」に"1"を設定します。これは、3~150の範囲を1ずつ走査する、という意味です。 
KFシステムクリエイターでは、現状においてパラメータ1は全てのロジックで日付のファクターになります。そのため、最小ステップは1日、すなわち"1"ということになります。

パラメータ2は、ロジックによって入力値が異なります。ロジック毎にパラメータ1共々各パラメータの設定値をまとめると、次図のようになります。

最適化r.png

回帰順張りと回帰逆張りでは、回帰推定値から標準誤差の何倍離れているかをパラメータ2としています。ステップは0.1としていますが、日付とは異なりこれが最小単位という訳ではありません。 
また、最大値は5としていますが、これは標準誤差の5倍まで見積もれば、ほぼ100%がこの範囲内に入るだろうことに基いています。

累乗平均とブレイクアウト及び同2では、パラメータ2も日付基準ですが、終了値をパラメータ1よりも短くしています。 
これは、パラメータ2が売りシグナルの発生に絡むファクターであり、買いの場合よりも周期が短くなりやすいという理由によります。

RSI順張りとRSI逆張りでは、パラメータ2はパーセント表記となります。ただし、システム上は小数表記としています。これも0.01(1%)が最小単位という訳ではありません。 
終了値は、普通であれば50%で十分なのですが、実際に演算してみるとパラメータ2の最適値が50%を超える事例が少なからずあったため、やや拡大して0.56(56%)としています。 

裏デイトレ改とVWAPでは、パラメータ2も日付基準ですが、こちらは買いと売りとの対称性が高いため、終了値をパラメータと同じ150にしています。 

以上の設定は、あくまでKFシステムクリエイターの推奨値であり、適宜変更しても構いません。例えば、演算時間の短縮のために、最適パラメータの目星を付けた上で、パラメータの走査範囲を絞り込むことも出来ます。 

なお、「演算条件設定」において「絞り込み演算」にチェックを入れると、最初の設定で求めた最適パラメータを中心とした範囲を更に絞りこんで演算します。 
これは、テーブル演算におけるテーブル2の機能と同じですが、最初に十分小さなステップで演算するのであれば、絞り込み演算は不要です。

絞り込み演算を行う場合は、同項目にチェックを入れると共に、パラメータ1とパラメータ2の精査範囲を設定します。これは、最初の演算で求めた最適パラメータを中心として、どれだけの範囲を走査するか、どれくらいのステップで走査するかを、パラメータ毎に決定します。 

絞り込み演算は、演算時間を短縮するために、最初にある程度大きなステップで演算し、続いて範囲を絞り込んでより小さなステップで演算する場合に実行します。 
ただし、範囲やステップの取り方によっては、テーブル演算同様、真の最適パラメータから外れてしまう場合があるのでご注意ください。

「演算条件設定」が完了して「OK」ボタンを押すと、最適化演算がスタートします。演算が始まると、シートが次図のように再表示され、演算経過がモニタ出来ます。 

最適化s.png

なお、エクセル2007以降では、シートが正常に表示されない場合があります。その際は、Escキーを押してコードの実行を中断した後、「継続(C)」ボタンを押すと演算が再開し正常表示されます。 

また、データによっては、演算を実行した途端にエラーが生じて止まってしまう場合があります。その際は、パラメータ1あるいはパラメータ2の「開始」の設定値を、1ステップ分大きくして再実行してください。 

演算には通常、非常に時間が掛かります。「①テーブル演算」の説明で示した条件下で100ステップ当たり33秒、毎秒3ステップほどの演算速度となります。 
マクロによる最適化演算では、同条件下で7,104(148×48)ステップあるため、全体で凡そ2,400秒、すなわち40分程度の時間が掛かります。

単純にステップ数だけで比較すると、RSIではほぼ同等、累乗平均などでは2.5倍、裏デイトレ改などでは3倍程度の時間が掛かることになります。 

演算が終了すると、最適パラメータがサマリーページの「手動設定」欄に設定されて、オペレーションページに戻ります。 
最後にシステムが上書き保存されて、最適化演算は完了します。


③時系列分析

「演算テーブル」欄で「時系列演算」を選択すると、時系列分析を実行します。「時系列演算」を選択して「OK」を押すと、「演算条件設定」ダイアログが開きますので、各値を設定します。 

最適化t.png

「メインピーク演算」とは、通常の最適パラメータを求めるための演算です。これは必ず実行する必要がありますので、同欄にチェックを入れてください。 
パラメータ1とパラメータ2の設定は、「②マクロによる最適化演算」の設定方法と同じです。

「システム」欄は、どのシステムについて時系列分析を行うかを設定します。通常は「ドテン」を選択しますが、買いのみでシステムを運用する場合などは「買い」を選択してください。「売り」を選択した場合は、売りのみでの運用が前提となります。 

「セカンドピーク演算」にチェックを入れると、メインピークの次に大きなピークを持つパラメータを求めます。ただし、最適パラメータから「範囲」で設定した値(ステップ数)以上離れたパラメータの中で、最適化指標を最大(最小)にするものをセカンドピークとしています。 
これは、メインピークの裾野をセカンドピークとして算出してしまうことを、極力避けるためです。

パラメータ分布は離散的なピークを持つ構造を取ることが普通です。時間の経過と共に最適パラメータが変化する時、パラメータが連続的に変化するのは稀であり、通常は離散的に他のパラメータに遷移します。 

その場合、それまでのセカンドピークがメインピークに取って代わることになります。それまでのメインピークは直後にセカンドピークに後退し、やがてそれ以下に落ちていくか、あるいは再びメインピークに返り咲くことになります。

すなわち、メインピークだけでなくセカンドピークも把握し、それらが示す性能指標の値の推移を見ることによって、どの程度の期間、現状のメインピークが続くかを、ある程度判断することが出来ます。 
それは言うならば、この先どれくらいの間、システムが安定に動作するかを知る目安になります。

ただし、現状ではセカンドピーク演算を実行すると、メインピーク演算と合わせて2倍の時間が掛かってしまいます。そのため、セカンドピーク演算はあくまでオプションとしています。 

時系列分析では、通常の最適化演算よりも時間が掛かります。前述の条件で100ステップ当たり55秒、毎秒1.8ステップほどですので、通常の1.65倍ほどの時間が掛かることになります。 
加えて、セカンドピーク演算を行うと、その更に倍の時間が掛かることになります。

なお、最新版のエクセルVer2004では、エクセル2003で処理した場合より2割近く余計に時間が掛かります。エクセル2003が使用可能な環境ならば、そちらを利用すれば処理時間を多少なりとも短縮できます。 

ただし、既にサポートが終了しているアプリケーションですので、セキュリティ上問題があります。少なくとも、定期的に最新版エクセルで当該システムを実行して、セキュリティチェックを行う必要があります。

「演算条件設定」が完了して「OK」ボタンを押すと、最適化演算がスタートします。その後の経過は、「②マクロによる最適化演算」の場合と同様です。 
ただし、セカンドピーク演算を設定すると、メインピーク演算が終了した後、パラメータが開始値に戻ってセカンドピーク演算が始まります。

時系列演算が終了すると、サマリーページの「手動設定」欄に最適パラメータが設定されると共に、オペレーションページに戻ってシステムが上書き保存されます。 

分析結果は、インデックスシートに記載され、INDEXシートにグラフが表示されます。その内容については、「2.システムの概要(2)システムの構成(e)時系列分析」をご確認ください。

Indexシートのチャートでシート上をダブルクリックして「指標選択」ダイアログを開き、「⊿単利KFIndex」を選択して「OK」ボタンを押すと、同指標におけるメインピークとセカンドピークとの差分チャートが表示されます。 

最適化u.png

最適化対象指標である⊿単利KFIndexの直近値が小さすぎて、チャート上に適切に表示されない場合は、Y/数値軸上で右クリックしてポップアップメニューを開き、「軸の書式設定(O)...」を選択して目盛の最大値を手動で変更してください。その際、表示形式も併せて変更する必要があるかもしれません。

最適化v.png

最適化w.png

すると、⊿単利KFIndexの直近推移が拡大表示され、視認しやすくなります。

最適化x.png

メインピークとセカンドピークの定義から明らかなように、両者が入れ替わる際には最適化対象指標の値が等しくなる、すなわちそれらの差分である⊿単利KFIndexの値が0になります。 
そして、新しいメインピークが成長するに従って、⊿単利KFIndexの値は増大します。

逆に言えば、⊿単利KFIndexが増大している間は、そのシステムの最適パラメータは変化せずに安定している、ということです。 
最適パラメータが変化しないということは、そのシステムはその時点で取り得る最適な状態を維持している、と言うことに他なりません。

もしも⊿単利KFIndexが減少に転じ始めたら、それが運用中のシステムであるならば特に、その後のシステム成績の変化に十分注意する必要があります。 
そして、最適パラメータが変化した場合は、それまでのシステム運用の大前提が崩れたわけですから、運用戦略を再考しなければなりません。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す