この記事では、FXのシステムを開発する際の指針について解説します。
システム開発の段階により、注目すべき指標が異なります。
誤った指標を注目して開発を行うと、カーブフィットに繋がります。
効率よく、優位性のあるシステムを作る為に、最適な開発手順と指標について解説します。
Contents
システム開発の手順
FXで儲ける為には、優位性のあるシステムを長期間運用する事です。
ここでは、一旦、前文の『優位性のあるシステム』だけに注目します。
『長期間運用する』為に、考えるべき事は多い(リスク評価、資金管理、運用方針等)ですが、システムを作ってからで間に合います。
色々考えると混乱するので、一つ一つ解決していきましょう。
優位性あるシステム
『優位性のあるシステム』とは、プラスの期待を持っているシステムの事です。
この優位性のあるシステムを開発する際に、最も重要な事は『カーブフィットさせない事』です。
過去検証で稼ぐシステムを作るのではなく、将来、稼いでくれるシステムを作る事が目的です。
カーブフィットをさせた時点で、そのシステムは使い物にならなくなってしまいます。
私が提案する『カーブフィットさせない事に重きを置いたシステム開発』は以下の通りです。
(0)準備
① ヒストリカルデータ
(1)システム開発時のルール
① 収益ドライバの明確化
② シンプルなルール
③ 少数パラメータ
④ フィルタレス
(2)システム開発時のチェック項目
① パラメータ感度
② 複数通貨ペアで機能
③ 複数時間で機能
④ アフトオブサンプルテスト
(3)システム開発時の性能評価
① リカバリーファクター
② ゲインペインレシオ
(0)準備
カーブフィット対策として、十分な検証期間と検証回数が必要となります。
少なくとも10年以上の検証期間のヒストリカルデータを準備しましょう。
ヒストリカルデータの準備は、以下の記事が参考になります。
(1)システム開発時のルール
カーブフィットさせない為のルールを設け、最初の段階でカーブフィットを防止します。
① 収益ドライバの明確化
理屈のないシステムは、カーブフィットの可能性が高いと言われています。
検証する前に、なぜそのシステムで利益がでるのか仮説をたてましょう。
(例)ルール:「〇〇だから、利益がでる」と説明できればOK
② シンプルなルール
主観的な指標ですが、シンプルなルールほど長期間機能します。
(例)ルール:ルールを複雑にしない。(〇〇の時に買う。などシンプルにする)
③ 少数パラメータ
パラメータの数は、少ないほどカーブフィットの可能性を減らす事ができます。
システム開発の際は、制限を設けておきましょう
(例)ルール:パラメータは6個以下にする(エントリ/利確/損切/ロット)。
パラメータの多い指標は、できれば避けましょう
(参考)MACDのパラメータは設定で、パラメータ3つを使います。
調整可能なパラメータを制限するのもありです。
『入力パラメータ数に制限する事(最適化可能なパラメータを1~2)』(参考:システムトレード検証と実践)
④ フィルタレス
フィルタを使うとカーブフィットの可能性が高くなります。
(例)ルール:フィルタを設ける理由(収益ドライバ)がない限り、使わない
(2)システム開発時のチェック項目
システム開発
上記(1)のルールに従い、まずは1つの通貨ペア、1つの時間軸でシステムを開発します。
ある程度の検証回数がないと優位性を判断できないので、短い時間軸(5分足、15分足)から検証を始めるとよいと思います。
短い時間軸はスプレッド負けしやすいので、スプレッドはゼロで検証しても問題ありません。
この時点は優位性を判断する事が中心ですので、スプレッドを除いて、勝つルールかどうかを判断します。
実際にトレードする時間足を決める段階で、スプレッドを考慮すればよいと思います。
プラスの期待値(プロフィットファクターが1.0以上)のルールを開発できれば、以下の検証を行います。
① パラメータ感度
パラメータを振って、システムが安定している事を確認します。
(例)ルール :パラメータを±50%範囲内で変更しても、70%以上で利益が出ていれば合格
以下参考
『変数を±50%を変更して過大な変化がないことを確認する』(参考:トレーディングシステム入門)
『パラメータの振った範囲で70%で利益が出ていれば合格』(参考:世界一簡単なアルゴリズムトレードの構築方法)
パラメータの最適化していいのはここまでにしたいです。
これ以降は、アウトオブサンプルテストも兼ねているので、。
② 複数通貨ペアで機能
私は主要通貨ペア(USDJPY、EURJPY、GBPUSD、EURUSD、GBPUSD)で機能チェックしています。
(例)ルール :主要な5通貨ペアで、プラスの期待値を有すること
1通貨ペアしか機能しない理由があれば、複数通貨ペアで機能する必要はない
③ 複数時間で機能
私は複数時間軸(5分足、15分足、1時間足、4時間足)で機能チェックしています。
(例)ルール :
複数時間軸で、プラスの期待値を有すること
短時間足はスプレッドを無視してもよい
目的はシステムがプラスの期待値を有している事を確認する事であり、使用する時間足以下ではスプレッド耐性まで考慮不要
複数時間軸で機能しない理由があれば、複数時間軸で機能する必要はない
②③を複合的に評価して、7割以上組み合わせでプラスの利益があればよいと思います。
④ アフトオブサンプルテスト
②③がアウトオブサンプルテストの代用になります。
(3)システム開発時の性能評価
(2)までは堅牢性チェックでしたが、ここからは収益性のチェックです。
収益性のチェックは、あれこれとチェックする必要はありません。
以下の項目をチェックすれば十分です。
実際のスプレッドを考慮して、評価するようにしてください。
① リカバリーファクター
システムの性能を測るのは、リターンとリスクの比率です。
リカバリーファクター = 純益 ÷ 最大ドローダウン
目標値:10以上(10年間)
バックテスト結果から評価する事が可能です。
② ゲインペインレシオ
同じく、リターンとリスクの比率です。
ゲインペインレシオ = 平均年間純益 ÷ 平均年間最大ドローダウン
目標値:2.0以上(分母を最大ドローダウンとする場合は、目標値を1.0以上(10年間))
バックテスト結果からは、分かりません。
具体的な方法は、この後の記事で紹介します。
①②のいずれか1つの方法で、チェックすれば十分です。
ここで、目標値をクリアしていなくても問題ありません。
通貨ペア、時間軸でも、機能するシステムである場合は、それらに分散する事が可能です。
それらに分散し、ポートフォリオを組むことによって、上記の指標は改善していきます。
むしろ、この段階で数値を改善するためにパラメータを加えて、カーブフィットの可能性を高めるような事はしないようにしましょう。
まとめ
この記事では、FXのシステムを開発する際の指針について解説します。
ポイントは、『カーブフィットさせない事』です。
カーブフィットさせない事の恩恵は、将来的にシステムが機能するという事だけでなく、この後のポートフォリオで得られます。
カーブフィットさせたシステムは、ポートフォリオ効果を得る事ができません。
是非、参考にしてみて下さい。
ちなみに、自作EA(Lightシリーズは、この手順で開発しました)
次の記事:
目次