Contra

ga_for_bt_eye

バックテストアプリにおける遺伝的アルゴリズムの適用理由について徹底解説

2021年02月03日

どうしてFXに遺伝的アルゴリズム?

なぜFXに遺伝的アルゴリズムを活用しようと考えたのか。それは良いFXの戦略を見つけ出すためです。具体的な実装方法も考えました。

まずはQ/A方式で端的に説明します。

つまり遺伝的アルゴリズムを一言でまとめると、

難しい問題に対し、良い答えを探し出すアルゴリズム

そして、

つまりシンプルに、良い戦略を見つけ出したいから、使う。

具体的な適用方法

遺伝子

遺伝的アルゴリズムで一番重要なのは『遺伝子』です、なぜなら、

『遺伝子』を比較し・混ぜ・たまに突然変異させるから。

じゃあ具体的に『遺伝子』とは何か。

遺伝子

遺伝子の中身は0,1にしています。
(実数とすることもできますが、整数を扱うこともあり、0,1の2進数の方が今回は都合が良いため)

0,1で表現できることとしたら、2進数ですね。

なので上の図のように、ここからここまでは移動平均を表す2進数部分、ここはボリンジャーバンドのシグマを2進数で表す部分、みたいになります。

比較し・混ぜ・たまに突然変異

比較(し選択すること)・混ぜる(厳密には交叉)・突然変異させる方法は一般的な方法を用いています。
この際重要なのが、

のパラメータです。これは正解はなく、試行錯誤する部分です。

このパラメータの調整がうまく進化するかどうかを左右する重要な調整です。

こういったところに人間が試行錯誤するパラメータがあるので、完全自動のAIにはなれません。

ただ、パラメータフリー遺伝的アルゴリズムという応用版も研究されています。

現状は試行錯誤でなんとかなっているのですが、将来的にはこちらを実装するのも良いかもしれません。

(具体的な比較し・混ぜ・突然変異させる方法についてはここではまとめません)

得られた結果

では、実際に遺伝的アルゴリズムを用いてどのような結果が得られたのか。

まずはどのような探索でどの変数を最適化かを記述する

このようなルールで遺伝的アルゴリズムを使用してみた。

異伝的アルゴリズム進化図

多少のガタつきと20世代で既にある程度の探索が終了した感はあるが、世代が進むほどに利益をあげる優秀な戦略が残っている。

遺伝的アルゴリズムによる最適ボリンジャーバンド
遺伝的アルゴリズムによる最適ボリンジャーバンドの結果

今後の展望

今後は遺伝的アルゴリズムによる結果を

『今週の遺伝的アルゴリズムによる戦略』

というような形で公開して行き、サービス化していこうと思います。

今回は3通貨の利益だけを評価し進化させましたが、現在実装中の『スコア』を使い、総合力(ドローダウンや勝率などトータルの戦略の評価)を使い、進化させることも考えています。

むしろ、遺伝的アルゴリズムでの評価もスコア実装の1つの理由でした。

お楽しみに。

コントラは最高のFXアプリを
目指して誠意開発を続けております。

機能の要望や、不具合などありましたらご遠慮なくヘッダーの問い合わせ、フィードバックからご連絡ください。またツイッターからでも大丈夫です!

皆様のFXトレードのお力になるFXアプリを目指しますので、これからもよろしくお願いいたします。

プログラミング知識不要。

FX戦略アプリ

アプリ版のダウンロードはこちら

人気の記事