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

記事
マネー・副業
(2)システムの構成

KFシステムクリエイターは基準システム、追加システム、合成システムの3種類の基本構成となっていますが、それらは共通のシステム本体に異なったロジックを適用することで、実現されています。
次のシステム構成図に示しますように、システム本体にロジックとフィルタを組み込んだ上で、株価データを設定することでシステムとして機能します。

なお、本構成図につきましては、開発初期における構想図となっています。そのため、現状とは異なっている場合があります。
点線で囲ってある、またはつながっている項目は、今後の検討課題となっており、現時点においては対応できておりません。

システム構成.png

KFシステムクリエイターは単独でも機能しますが、より効率的に機能させるために、KFシステムコントローラの一部として運用することができます。
KFシステムコントローラでは、様々なユーティリティを提供すると共に、各種運用ファイルの処理を自動実行させることができます。

例えば、日々のルーチンワークとして、複数銘柄の株価データ更新後、それらのシステムを更新し、性能やシグナルを一覧表示する、といった処理が可能となります。 
また、複数のシステムを連続セットアップ後、それらの最適化演算を行なう、といった処理を自動化することができます。

なお、KFシステムコントローラにつきましては、別途解説する予定です。
本書では、システムの中心となるKFシステムクリエイターについてのみ、解説いたします。

KFシステムクリエイターの構成は、次図のようになっています。

システム構成03b.png

システムは大きく、[システム]、[サマリー]、[オペレーション]、[テーブル]、[時系列分析]、[チャート]の6ブロックに分けられ、それらのサポートとして[マクロ]を使用しています。
[マクロ]の機能の多くは、[オペレーション]に含まれる各種ボタンで実行することができます。また、チャートの条件設定にも使用しています。

以下、順に各ブロックの内容について、解説いたします。 

(a)システム 

このブロックは、①データ設定②指標演算1③指標演算2④ロジック設定⑤ロジック出力⑥フィルタ設定⑦フィルタ出力⑧売買出力⑨コスト設定⑩性能演算⑪指標演算の各エリアから構成されています。 
各エリア内の項目は、ワークシート上に時系列で表され、設定の変更に応じて瞬時に再計算されます。

0030システム構成エリア.png

①データ設定エリアでは、株価データファイルから取り込んだ日付と株価4本値、そして出来高を時系列で設定します。データの設定は、通常、オペレーションページのセットアップから行ない、日々の更新は、データ更新から行ないます。
このデータが、システムの全ての演算の基準となります。データが異なれば、システムが発する出力もまた異なってきます。

②③指標演算1、2エリアでは、データの2次加工を行ないます。これは、株価データからシグナルを抽出しやすくする処理で、株価推移を解析的に分析したり、あるいは他のシステムの出力やデータを参照したりします。 
指標演算1は指標演算2の前処理であり、指標演算2の計算を高速化するために、各種統計演算の漸化式処理を行なったりします。

④ロジック設定エリアでは、データ設定および指標演算の結果に基づいて、売買シグナルを発生させるための計算式を設定します。 
設定するロジックは、通常、セットアップから指定しますが、ワークシート上で直接設定することも可能です。その際、オペレーションページからロジック抽出を実行することで、設定したロジックをロジックリストに登録することができます。

⑤ロジック出力エリアでは、ロジック設定に基づいた結果を出力します。出力は通常、"1"、"-1"、"0"、そして""(NULL)のいずれかの値となりますが、任意の実数値であっても構いません。 
出力が"1"の時は、1単位の買いポジションを表します。出力が"-1"の時は、1単位の売りポジションを表します。そして、出力が"0"の時は、キャッシュポジションを表します。また、出力が""の時は、ポジションを決定するデータが存在しないことを表します。

ポジションを任意の実数値pとする場合は、pが正ならばp単位の買いポジションを、pが負ならばp単位の売りポジションを持つことを表します。 
実数ポジションを有効にすることで、合成システムやうねり取りシステムを、容易に実現することができるようになります。

⑥フィルタ設定エリアでは、ロジック出力に対するフィルタを指定します。フィルタは、通常、セットアップから指定しますが、ロジック設定同様、ワークシート上から直接設定したり、それをロジックリストに登録したりすることも可能です。 
フィルタはシステム性能を高めることができる反面、システムの堅牢性を低下させる場合があります。そのため、初期状態ではフィルタ設定はオフになっています。

⑦フィルタ出力エリアでは、フィルタ設定に基づいた結果を出力します。出力は通常、"1"か"0"となりますが、任意の実数値であっても構いません。 
フィルタ出力が"1"の時はロジック出力をそのまま通し、"0"の時はロジック出力を"0"とします。
なお、特殊な事例として、フィルタ出力を"-1"とすればロジック出力を反転させ、任意の実数値pとすれば、ロジック出力をp倍します。

⑧売買出力エリアでは、ロジック出力にフィルタ出力を重畳すると共に、逆システムの場合はその出力を反転させます。 
最終的に、売買ポジションを表す出力が得られ、その変化を抽出することで、売買シグナルを発します。その売買シグナルに基づいて、売買価格や建値などを算出します。

⑨コスト設定エリアでは、売買手数料と売買金利を独立して設定し、計算します。これらの設定はサマリーページから行ないます。 
売買手数料は、1株当り手数料と手数料率とを独立して設定でき、それらを併用することができます。そのため、実際の取引に近いコスト設定が可能となります。

⑩性能演算エリアでは、以上の設定に基づいて様々な性能指標の時系列計算を行ないます。また、⑪指標演算エリアでは、性能演算の結果を統計処理するなどして、最終的な各種性能指標値を求めます。 
これらの結果はサマリーページから参照され、一覧表示されます。また、主要な性能指標の時系列データは、チャート表示されます。

システムブロックは、KFシステムクリエイターの心臓部です。基本的にはこのブロックだけで、全ての設定や演算を行なうことが可能ですが、それを効率的に行なったり、演算結果の視認性を高めるために、他のブロックやマクロが存在します。

(b)サマリー

このブロックでは、①パラメータや様々なテスト条件を設定したり、②その結果としての性能指標を確認したり、③運用条件の設定やその管理を行なったりします。 
システムブロックへの各種条件設定や、そこからのフィードバックの確認は、基本的にほとんど全てこのブロックから行なうことができます。

0040サマリーブロック.png

①テスト条件設定エリアでは、システムの様々な条件を設定します。ここでは、システムの起点日や終点日、パラメータやレバレッジを変更できます。また、システムの正逆を設定できます(レイアウトの都合上運用設定エリア内にあります)。
それらを変更する度に、リアルタイムでシステム性能が更新されます。

②性能指標エリアでは、テスト条件で設定されたシステムの性能指標を表示します。性能指標は、買い、売り、ドテンの各システム(運用)毎に表示され、システムの様々な側面の評価に役立ちます。 
PFや勝率などの代表的な指標は元より、年率リターンや最大ドローダウン等、全部で100種類ほどのシステム性能を確認することができます。

③運用設定エリアでは、システムの運用条件を設定します。運用開始日や運用システム(ドテン、買い、売り)、運用形態(単利、複利、単株)、評価形態(時価、簿価)、取引単位(考慮、未考慮)などの設定ができます。 
また、想定元本やレバレッジ、取引コスト(手数料、金利)の設定を行なうことができます。

運用管理エリアでは、売買判定に加え、運用後元利計や運用建玉数、などを確認可能です。日々システムを更新することで、これらの指示に従いトレードを実行することができます。 
また、機能判定やシステム判定を備え、システムの信頼性を客観的に判断することが可能です。

(c)オペレーション

このブロックでは、システム開発や運用に伴う様々な操作を、自動実行することができます。各ボタンはマクロに直結し、対応する動作を実行します。 
システムの基本的な操作は、このブロックだけで行なうことが可能です。

システム構成b.png

データ更新ボタンは、システムを最新の状態に更新します。このボタンを押す前には、株価データやリンク元ファイルの更新を行なっておく必要があります。
立会終了後にデータ更新を行ない、サマリーページの売買判定や運用建玉数を最新状態にすることで、翌日のトレード内容を確認することができます。

最適レバレッジ設定ボタンは、システムの最適レバレッジを、買い、売り、ドテンの各場合について算出します。その結果は、サマリーページの最適レバレッジ欄に表示されます。 
システムの運用レバレッジを決定する際には、この最適レバレッジを超えないことが重要です。また、最適レバレッジの値が小さいシステムは、運用そのものを見合わせる必要があります。

最適化演算ボタンは、システムの最適化演算(最適パラメータの決定)を行ないます。最適化対象指標やテスト期間を設定し、演算方法を決定するだけで、その条件下における最高性能が得られるパラメータを一意的に求めます。 

セットアップボタンは、実行中のシステムとは異なった銘柄やロジック、フィルタを適用して、システムを再設定します。 
これによって、実行中のシステムを閉じて元システムを起動することなく、新たなシステムを作成することが可能となります。

ロジック・フィルタ抽出ボタンは、実行中のシステムのロジックまたはフィルタを抽出し、ロジックリストに追加します。 
オリジナルロジックやフィルタを作成した場合は、この操作によってそれらを保存し、後から他のシステムでセットアップを行なうことによって、そのロジックを適用することができます。

パラメータ抽出ボタンは、システムのパラメータをパラメータファイルとして出力します。パラメータファイルからは、システム復元ボタンを押すことで、元のシステムを復元することができます。そのため、普段見ることはないが記録として残しておきたいシステムなどは、パラメータファイルのみを保存しておくことで、保存容量を大幅に削減することができます。 
また、システム復元の際には最新のシステムにパラメータを戻すため、システムアップデートにも利用することができます。

サマリー保存ボタンは、システムのサマリーページのみを保存します。システムを復元する必要はないものの、結果だけは残しておきたい、といった用途に用います。 
例えば、同一システムにおいて、いくつかの異なった条件の結果を残して、後でそれらを比較する場合などに役立ちます。

システム凍結ボタンは、直近を除く時系列データ(計算式)を計算結果(値)に置き換えることで、ファイル容量を削減すると共に、処理時間を高速化します。 
運用開始したシステムなど、それ以上設定を変更する必要がない場合などに適用することで、日々のシステム更新が高速化されます。

システム解凍ボタンは、凍結したシステムを元の状態に戻します。解凍したシステムは、自由に設定を変更したり、最適化やセットアップなどの処理を行なうことができます。 
凍結と解凍は何度でも実行可能であるため、保存容量の節約のために、パラメータファイルの代わりに用いることができます。

チャート修正ボタンは、チャートの表示期間(X軸)を任意に設定することができます。標準では自動設定となっているため、起点日から終点日までのチャートを表示しますが、これを任意の日付間の表示に一括変換します。 
元に戻す時は、同じくチャート修正ボタンを押して、自動設定を選択します。

システムリセットボタンは、システムをリセットし株価データを更新します。
株式分割などで株価データに変更があった 場合、変更後のデータに修正します。 
システムと異なる銘柄の株価データと入れ替えることは出来ません。


(d)テーブル

このブロックは、最適化演算結果の出力に用います。テーブル1もしくはテーブル2を対象とした最適化演算を実行すると、テーブルに表示されたパラメータ走査範囲の全ての組み合わせに対して、その最適化対象指標の値を出力します。

0060テーブルブロック.png

サマリー上には、最適化演算の結果選択された最適パラメータの値が反映されますが、テーブルには全てのパラメータの組み合わせの結果が残りますので、パラメータに対する最適化対象指標の分布(パラメータ分布)を把握することができます。

パラメータ走査範囲を選択後、3Dグラフ表示をさせれば、視覚的にパラメータ分布を捉えることが可能となります。それにより、システムの堅牢性や次善パラメータの確認など、システム運用上重要な知見を得ることができるかもしれません。

なお、パラメータ分布の確認が不要な場合や、より詳細なパラメータ走査を行う場合は、テーブルを用いずにマクロ演算のみで最適パラメータを決定することが出来ます。


長くなりましたので、今回の説明はここまでとします。次回は、(e)時系列分析、から再開いたします。


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