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

記事
マネー・副業
10.より深くご利用いただくために

(1)オリジナルロジックの作成

KFシステムクリエイターでは、予め用意されたロジックだけではなく、ご自身で新たなロジックを開発し運用することが出来ます。
それにより、より高効率で安定性の高いシステムを作成できるかもしれません。

ロジックの作成には、基本的なエクセルの知識は必要ですが、マクロなどの知識は必要ありません。また、INPUTとOUTPUTの書式さえ揃っていれば、システムの動作やその結果得られる各種性能指標等の算出は、KFシステムクリエイターが行いますので、ロジック開発のみに注力することが出来ます。

以下に簡単に、オリジナルロジックの作成方法について説明いたします。

オリジナルロジックの開発は、既存システムをベースにして、判定基準指標やその判定式を作り替え、動作確認を行った後に、ロジックリストに追加する、という手順を踏みます。
そのため、ロジックリストに記載されないセルへの設定は無効となります。

オリジナルロジックを作成するには、まず最初にベースとなるシステムを選択し、別名保存しておきます。その後、システムページを開き、V6セルおよびW6セルに、新たなロジック番号とロジック名を入力します。

オリジナルa.png

作成するロジックが基準システムの場合は「S+数字」、追加システムの場合は「A+数字」、合成システムの場合は「C+数字」を新たなロジック番号として設定します。 
ロジック番号は、ロジックリストに記載された番号と重複しないよう、注意する必要があります。

ロジック作成可能なエリアは、H~AG列となります。ロジックの計算式は18行目以降に記述し、1~17行目には各種条件や項目名等を入力します。
入力可能なエリアは、項目名がAG列を除く15~16行目、各種条件が以降の図にて赤枠で指定されたセルとなります。各セルには、それぞれのエリア毎に意味があります。その範囲内で条件を記述することになります。

オリジナルb.png

まず、A7セルにはシステム名、A9セルにはシステム種別(寄付or寄引)を入力します。これらはサマリーページのシステム欄に反映されると共に、システム種別はA6セルやT10セルで数値化され、ロジック設計に反映されます。 

H3~P13セルはフリーエリアとなっています。ここには主に、ロジック設計の前提条件となる判定基準指標の準備演算の初期値等を設定します。
実際の判定基準指標の準備演算は、同列の18行目以降で計算します。

オリジナルc.png

R6~S12セルでは、主にパラメータを設定します。 

R7~S8セルは、サマリーページの基準システムパラメータに反映されます。システムが追加システムの場合は、基準システムの同セルを参照するようにします。

R9~S10セルは、それぞれ他のセルを参照しますので、基本的には設定を変えません。特にS9~10セルはサマリーページの設定パラメータを参照しますので、手を加えないようにしてください。

R11~S12セルは、設計するロジックに特徴的なファクターを設定します。通常は、リスク管理を行う上で重要な項目を設定します。
例えば、回帰順張りシステムでは平均誤差や直近誤差、累乗平均システムでは買平均乖離や売平均乖離を設定しています。新たなロジックでは、それに最も適したファクターを設定するようにします。

T6~9セルは、システムの固定パラメータを設定します。これは通常、最適化対象にはなりませんが、システムの性能を大きく左右する場合があります。この指標は設定しなくても構いません。
なお、T9セルは固定パラメータを集約して記号化したものであり、サマリーページのシステム欄に反映されます。

T12セルは反転フラグを設定します。これはサマリーページの運用システム欄(正システムor逆システム)を参照しますので、通常は手を加えないようにしてください。
システム開発当初はこの項目はサマリーページと独立していたのですが、その後の改定により現在の形式となりました。この項目がロジックリストに残っているのは、その時の名残です。

オリジナルd.png

D4~G9セルでは、最適化演算におけるテーブル演算の各種条件を設定します。実際に設定するのは赤枠で囲った部分で、それ以外の個所は自動的に設定されます。 
D4~G5セルはテーブル1、D6~G7セルはテーブル2に関する設定です。

テーブル1は30×24の大きさがあり、初期値とステップを設定することで、自動的に最端値(最大値)が決まります。パラメータ欄には、テーブル演算1の結果得られる最適パラメータが設定されます。

テーブル2は20×15の大きさがあり、最端値(最小値)とステップを設定することで、テーブル1の演算結果を元に初期値を決定します。パラメータ欄には、テーブル演算2の結果得られる最適パラメータが設定されます。

表示形式では、パラメータの表示形式を設定します。設定値は、システムのセットアップ時にマクロから参照され、システムに反映されます。
表示形式欄の数値が"1"の時は"標準"、"2"の時は"0.0"、"3"の時は"0.0%"となります。

オリジナルe.png

AB10~AF13セルでは、全体チャート及び直近チャートにおける追加系列の設定を行います。追加系列は、標準でQ~U列において計算される各指標を参照します。 
そのため、同列においては通常、売買シグナルの判定材料となる判定基準指標の計算結果を表示します。

各チャートには全部で5つの系列を追加でき、それらを表示するかどうかを各列10行の指標設定欄で設定します。同欄に"0"を設定すると、対応する系列のチャートを表示します。何も設定しないと表示しません。
なお、特殊な使い方になりますが、"0"以外の整数を設定すると、対応する判定基準指標から設定値分右にずれた列の値をチャートに表示します。

10行目の系列名では、チャートに表示される系列名を設定します。もちろん、指標設定が空欄の場合は、系列名欄も空欄にします。

11行目のY軸では、これらの指標を全体チャートの主軸に表示するか、第2軸に表示するかを設定します。主軸に表示する場合は"1"を、第2軸に表示する場合は"2"を設定します。
通常、その指標が株価と同程度の値の場合は"1"を、RSIのように株価とは大きく異なる値の場合は"2"を設定します。

12行目の軸書式では、Y軸を"2"に設定した場合の第2軸の書式を設定します。設定値は、テーブル設定における表示形式の場合と同じです。

V~AG列18行目以降は通常、シグナル判定演算に用います。これらは基本的に"1"、"0"、もしくは"-1"の出力を持つようにします。
一番重要なのはAG列で、ここが最終シグナルに直結するOUTPUTとなります。AG列では、買いHOLDを"1"、売りHOLDを"-1"、キャッシュポジションを"0"で表します。

ただし、合成システムやうねり取りシステムなどの場合は、必ずしもこれらの値に限定されません。例えば、シグナルが"3"となった場合は3単位の買いHOLDを示し、"-0.5"となった場合は0.5単位の売りHOLDを示します。

基本的には、買いHOLDから売りHOLDに変われば「売りドテン」、売りHOLDから買いHOLDに変われば「買いドテン」、キャッシュポジションから各HOLDに変われば「新規建て」、各HOLDからキャッシュポジションに変われば「手仕舞い」となります。

このOUTPUTの基準さえ満たせば、続くフィルタ列との組み合わせで最終シグナルが確定し、売買シグナルの点灯や各種性能指標の演算、運用結果の導出等が実行されます。

システムが完成したら、作成したロジックをロジックリストに登録します。ロジック番号を確認した後、オペレーションページを開き、「ロジック抽出」ボタンを押します。

もしもロジック番号が重複している場合は、「このロジックは登録済みです。続けますか?」というメッセージが出ますので、「いいえ」を選択してロジック番号を再確認してください。

なお、ロジックの抽出では、実演算部分として各列の18行目のみを抽出します。そのため、演算を行う列に関しては、必ず18行目に数式が入力されていると共に、それを全ての行にコピーした時に、正常に機能しなければなりません。
18行目は空白となる場合が少なからずありますが、その場合はIF構文を用いるなどして対処してください。

ロジックの抽出が完了したら、それが実際に機能するかどうかを確認します。新たなシステムファイルを開いてセットアップを実行し、作成したロジックを組み込みます。

それがロジック抽出元の開発済みシステムと同じになるか確認します。もしも性能指標等に相違がみられる場合は、ロジックリスト上の各セルをシステムと比較してください。

なお、ロジックリストでは各セルの書式は管理できません。そのため、システムによっては一部の列などで書式が合わず、表示が乱れる場合があります。
その場合は、お手数ですがセットアップ後に適宜修正するようにしてください。


(2)オリジナルフィルタの作成

KFシステムクリエイターでは、各種フィルタを作成し、システムに組み込むことが出来ます。フィルタの出力は AG列のOUTPUT(基準HOLD)と演算した上で運用システムを適用し、AL列に元HOLDとして出力されます。 
その後、AM列で正システムか逆システムかの演算を行い、最終シグナルに引き継ぎます。

フィルタを開発するには、ロジック同様、最初にベースとなるシステムを選択し、別名保存しておきます。その後、システムページを開き、V7セルおよびW7セルに、新たなフィルタ番号とフィルタ名を入力します。
フィルタ番号は、「F+数字」で記述します。フィルタ番号は、ロジックリストに記載された番号と重複しないよう、注意する必要があります。

オリジナルf.png

フィルタはAH~AK列で設定します。ロジック同様、15~16行目は項目名として使用し、18行目以降に時系列でのフィルタ指標演算、3~13行目にその集計値や初期値等を記述します。 

オリジナルg.png

なお、AM列には必ず執行株価を記述します。これは、売買の基準となる株価で、通常は当日の始値となります。ただし、フィルタやロジックによっては、それ以外の値(例えば高値や安値)を取る場合があるかもしれません。 
そのため、本項目はシステム埋め込みではなく、フィルタに包含させることによって、システム全体の自由度を高めています。

また、AK列はフィルタのOUTPUTを記述します。基本的には、基準HOLDシグナルを通す時は"1"、通さない時は"0"、そして稀な用法として、基準HOLDシグナルを反転する時は"-1"を出力するようにします。
フィルタの実体部分は、AI~AJ列で演算します。わずか2列しかありませんが、工夫して収めるようにしてください。

なお、単にシグナルの一部をカットするだけのフィルタは、一般的に期待効率向上に寄与することは少なく、本来は適用を控えた方が良い場合が多々あります。
フィルタ非適用フラグを設定しておくことにより、その切り替えでフィルタの効果を容易に確認することが出来るようになります。

フィルタが完成したら、作成したフィルタをロジックリストに登録します。フィルタ番号を確認した後、オペレーションページを開き、「フィルタ抽出」ボタンを押します。

もしもフィルタ番号が重複している場合は、「このフィルタは登録済みです。続けますか?」というメッセージが出ますので、「いいえ」を選択してフィルタ番号を再確認してください。

なお、フィルタの抽出では、実演算部分として各列の18行目のみを抽出します。そのため、演算を行う列に関しては、必ず18行目に数式が入力されていると共に、それを全ての行にコピーした時に、正常に機能しなければなりません。
18行目は空白となる場合が少なからずありますが、その場合はIF構文を用いるなどして対処してください。

フィルタの抽出が完了したら、それが実際に機能するかどうかを確認します。新たなシステムファイルを開いてセットアップを実行し、元ロジックと作成したフィルタを組み込みます。

それがフィルタ抽出元の開発済みシステムと同じになるか確認します。もしも性能指標等に相違がみられる場合は、ロジックリスト上の各セルをシステムと比較してください。

なお、システムのフィルタ機能では対処しきれない複雑な制御を行う場合は、追加システムを利用します。その場合、フィルタを設定した状態で基準システムの最適パラメータを求めることは出来なくなりますが、フィルタのパラメータを最適化することが可能となります。
どちらを用いるかは、フィルタの規模や目的により決定します。


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