人工知能(AI)が発達してきてFXの世界でもAIが使われる事が多くなりました。そのAIが得意とする領域に遺伝的アルゴリズムがあります。
この記事では遺伝的アルゴリズムについて簡単に解説して個人トレーダー、プログラマーがFXに遺伝的アルゴリズムを取り入れた事例を紹介します。
遺伝的アルゴリズムとは?
遺伝的アルゴリズムをできるだけシンプルに言うとAIが与えられた課題に対してもっとも良いとされるものを生物進化のメカニズムを取り入れて取得するアプローチのことです。
遺伝的アルゴリズムはそのアプローチ方法に特徴がありまして、生物進化のメカニズムを取り入れています。つまり遺伝的アルゴリズムは生物進化のメカニズムをコンピュータ計算における最適解の探索に応用した手法のことです。
(知らなくても良いと思いますが)具体的には以下の3点を取り入れたアルゴリズムです。
- 選択(淘汰):より環境に適した特徴をもつ個体が生き残ること
- 交叉:個体の遺伝子が親から子に伝わるときに、その組み換えが起こること
- 突然変異:個体の遺伝子がランダムに変化すること
と思うかもしれませんが後で説明するように1つずつ探すと数百日かかります。
ちなみに、コンピューター(AI)が遺伝的アルゴリズムを使った事例として
- AIがマリオを攻略
- 新幹線の先頭車両の構造決定
などがあります(もちろん他にもあります)。コンピューターが生物学的なアプローチで効率的に最適に物事をこなしていく様子がまさに人工知能という感じがします。
FXで遺伝的アルゴリズムを使う方法(概要)
先ほど、遺伝的アルゴリズムの事を課題に対してもっともよいとされるものを得るアプローチと解説しましたが、これをFXに置き換えると
と考えることができます。実際このようなアプローチをした論文やコンテンツが数多くあります。例えば
- 単純移動平均
- 指数平滑移動平均
- ボリンジャーバンド
- チャンネルブレイクアウト
- 移動平均乖離率
- RSI
などを組み合わせてそれぞれをどのようなパラメーターに設定したら最も利益が上がるかという課題に対して遺伝的アルゴリズムを使うことができます。
FXで遺伝的アルゴリズムを使うことをシンプルに説明すると
- パラメータ(単純移動平均、RSI、ボリバン など)→遺伝子
- パラメータの組み合わせ([移動平均=1,RSI=3,ボリバン=2]など)→個体
- パラメータの組み合わせのセット→世代
となり
- 選択(淘汰)を使ってパフォーマンスの高いパラメータの組み合わせを優先的に選び、次世代にコピーして
- 交叉として、コピーされた2つの個体のパラメータ値をランダムに交換する
- さらに突然変異:コピーされたある個体のパラメータ値をランダムに選び変化させる
というアプローチで最も勝ちやすいパラメーターを探すことになります。
最適なパラメーターを探すのは数百日必要?
このパラメーターの組合せを1つずつ変えていくと大変な時間を要する事が分かります。
例えば3つのパラメーターの上限と下限を400と10とすると、全パターンの計算回数は390の3乗 = 59,319,000回です。
5分足で10年分のバックテストを行うとしてそれが10秒かかるとしてCPU:8コアのパソコンで並列計算すると必要な計算時間は以下になります。
59,319,000 / 8cpu * 10秒 / 3600秒 / 24時間 = 858日
858日。。2年以上かかってパラメーターを計算してそのトレードロジックが良くなかったと分かって別のトレードロジックでまた850日かかって、、となると人生が終わってしまいます。ですので遺伝的アルゴリズムを使うのですね。
MetaTrader4にも遺伝的アルゴリズムがある?
実はMetaTrader4(MT4)の中でもそれと似た形で遺伝的アルゴリズムが使われています。以下の画像を見てください。
これはEAのテスト設定箇所にあるものです。実際に遺伝的アルゴリズムを使うのでしょうが現実的にはパラメーター数や組み合わせ数が多いとMT4の最適化処理能力を越えてしまいMT4が動かなくなるケースが多いです。
FXで遺伝的アルゴリズムを使う時の問題点
実際に個人がFXトレードで遺伝的アルゴリズムを使う場合には数々の問題が発生します。プログラミングに対する知識や経験が必要なのは当然なのですが、それをもってしても
- システムが複雑
- なかなか勝てない(稼げない)
などの課題があります。
システムの複雑さ
すごく簡単にシステムの概要を書いても以下のようなプログラムが必要です。
- 最新の為替レートを取得し続けるプログラム
- AIを稼働させ自動売買するプログラム
- 最新のデータを元に新しいAIを遺伝的アルゴリズムで生成するプログラム
そして遺伝的アルゴリズムにおいては初期集団生成を行って評価(選択)、交叉による次世代の生成、それらをループして最適化を行っていきます。ちなみに最新のデータや過去のデータ、為替レートをどのように取得するかなのですが、例えばOandaという証券会社に登録して使えるAPIというものがあります。APIとはプログラムから何かをリクエストしたら、それに対応した値を返してくれるサービスです。OandaのAPIで
- 発注
- 現在のポジション一覧を取得
- マーケットのレート取得
- 売買注文の発注状況を調べる
などをして自動売買や遺伝的アルゴリズムを進めていきます。
システムの全体像を画像を示すと、例えば以下のようになります(画像は引用しました)。
個人が実践した結果=ダメだった
遺伝的アルゴリズム、AIと聞くと個人トレーダーが裁量でトレードするよりもいい成績が残せそうな印象もあります。実際はどうだったのでしょうか?インターネット上で報告されている画像や感想などを引用して紹介します。
システムを運用し続けた感想として短期では規則性ある相場でも長期では規則性などなく、はるか未来まで見通す汎化能力を持った学習済みモデルを作成することは私にはできないという点です。
最後の画像は遺伝的アルゴリズムを使ってパラメーターを最適化するための学習期間を長くする方がパフォーマンスが下がるという結果を示しています。一方でトレンド系テクニカル指標とオシレーター系テクニカル指標では前者の方が勝ちやすいという結果も示しています。ですが実際のトレードでは手数料やサーバー維持費もかかりますのでグラフほどは勝てなくなります。
そもそも人工知能で自動売買するのがベストなのか?
当サイトでは、人工知能とFXに関連する様々な情報や論文を調べてきたのですが、どれも似たようなアプローチを行っています。それは
というアプローチです。ですが、巷で使えるような人工知能でマーケットの予測ができていたらとっくにみんなやってるでしょう。
そんな人工知能がもしできたとしても、巷には広まらないでしょう。そうすると人工知能を使っても勝てなくなるから。
コメント