【不定期更新のとりとめもない話】ゼロからはじめるEA開発日記~(その11)EA設計について再考してみる~

ここで再度EAの設計方法について再考してみたいと思う。以前の記事「ゼロからはじめるEA開発日記~(その5)裁量取引のプログラミング化が想像以上に難しい~」でEA設計の難しさについて述べたのだがその問題は解決できていない。サラリーマン時代にAI関連の仕事もしていた経験があるためAIの機械学習や深層学習(ディープラーニング)が重要なのはわかるがゼロからすべて構築するのはちょっと厳しい。今回は機械学習のエッセンスを取り入れて何とかEA開発を効率化できないか考えてみた。

【不定期更新のとりとめもない話】ゼロからはじめるEA開発日記~(その5)裁量取引のプログラミング化が想像以上に難しい~
注意事項

本記事はFXの自動売買について紹介していますが内容を保証するものではありません。金銭にかかわる内容であるためご注意ください。参考にする場合は自己責任でお願いします。

現状の確認

現在は順張りでラインのライントレードEAをメインで使っており、その微調整(カーブフィッティング)で成績を上げようとしている。

現在の設計手順

手順としては、チャート分析>設計>実装>計測>チューニング、とひとつのアイディアを試すのにかなりの時間がかかっている。特に観点を見つける作業が難しい。チャートを目視で見比べるのだが人力なので限界がある。

出来上がるEAの9割がゴミ

勝敗を左右する観点を見つけるのは非常にまれ。20時間以上かけて実装したシステムがまったくゴミだったといったことが何度もある。目視でかなりポイントを絞って実装するのだが勝率を大きく上げる要因をみつけられることはほとんどない。EA開発で心が折れそうになる一番のポイントはここではないだろうか。

難しすぎる特徴量の「説明変数」選び

AI用語で言うところの「説明変数」選びが非常に困難を極めている。説明変数とはエントリー条件や決済の条件。具体的に言うと「30分以内にロウソクがMAを超えた数」とは「直近でロウソクがBBを超えた数」などである。この説明変数(エントリー条件)はほぼ無限にありどれを選ぶかチャートを目視で判断するのだが大量のチャートを確認しないと安定した結果を出すことができない。人力作業のため非常に時間がかかってしまうのが問題。とにかくこの説明変数選びが大変なのだ。

チャートの偏り

チャートは実際のところランダムウォークではなくなんらかの偏りがある。これは、巨大金融資本などがシステムで自動売買しているからだ。実装された為替売買システムの色がチャートにでてくるのでどうしても偏りがでてくる。プロのFXトレーダーはこの偏りを意識的(無意識も含め)理解しているのである。

ディープラーニングでの説明変数選び

チャートには必ず偏りがあるためこれをディープラーニングによって見つけ出せばかなり強いEAが実装できると筆者は予想している。過去チャートは過去システムが付けた傷跡なので最新とまったく同じとはいかないが傾向(偏り)は継承されているハズである。ディープラーニングを使えば困難であった「説明変数選び」を自動化することができる。システム化すれば人力の何千倍、何万倍のそくどで検証ができるので良い設計ができる可能性が非常に高くなる。

チャートのディープラーニングができるか?

プログラミングやシステム開発は得意分野なのでできる。が、時間がかかる。ディープラーニングのフレームワークがあるのでまったくゼロからの開発ではないと思うが基礎理論から勉強してと数カ月はかかると予想している。まとまった時間が取れない今ディーブラーニングをはじめるかどうか微妙なところ。

簡易的な機械学習で何とかならないか

ひとりプロジェクトでディーブラーニングのシステムを組むのはちょっと辛い。継続的に勉強はするつもりではあるがそこにリソースを100%突っ込むのはちょっと厳しい。説明変数選びの自動化はとてつもなく大きいメリットではあるが道のりが遠い。そこで簡易的な機械学習プログラムを手作りして説明変数選びの土台を作れないかと考えた。これが今回のEA設計最高のポイントである。

説明変数を見つける方法

ここでは筆者の考えを筆者の呼称でまとめる。一般的な用語ではないので注意していただきたい。

A. 可視分析

これはチャートを目視で確認し特徴を見つける作業。例えばMAとロウソク足の位置関係などチャートを見て理解できるもの。あいまいな内容で言えば「キレイなトレンド」や「わかりやすい押目」などの概念もある。これらの裁量で使われる目視情報は数値が難しいものもある。欠点としてはチャート分析者が見ている(注視)しているものからしか答えがでないところ。あと数値のスケールなどシステムにとっては重要となる部分をあいまいにとらえているもの問題。

結論を言うと可視分析だけでは時間がかかり過ぎてまともにEAが設計できない。説明変数の傾向を見つけるために可視分析するのであれば良いが説明変数をピンポイントで見つけ出すのは至難の業。筆者が実際にやった感じ打率は10割以下なのでおすすめできない。

B. 暗黙分析

適当な呼称を付けたがロウソク足のチャートを人が見て見つけられないものを見つけ出す分析方法。ただ、ディープラーニングのように観点となる説明変数を自動で見つけるものではない。これはチャートの状態を数値化してその中から特徴的な値を探す方法。イメージとしては機械学習のような感じ。今まで当てずっぽうであった説明変数探しを的確かつ簡単にできるようになる。

具体的な方法としては簡単な条件のEAを動作させ説明変数に使用したい項目の状態を目的変数(最終的に得られる答え)である損益と一緒にまとめる。これによりエントリーポイントの状態を可視化することができる。これにより損益の高いチャートの特徴や損益の低いチャートの特徴を見つけやすくなる。可視分析のようなあいまいなものでなく数値として扱えるので自動化もできこの時点でシステム化も可能となる。

まとめ

作るEAがことごとく失敗する。20時間かけて作ったEAがゴミだったことが何度かあるのだが本当に虚無。たぶんEA開発のアプローチを大幅に変更しないと改善しないと思う。そもそも、人と同じことをやってたらアルゴリズム対策されるので無理。これでだれも見つけられないような偏りを発見できれば勝機があるかもしれない。

ポイント
  • EA開発にディープラーニングは有効だがコストと期間がかかりすぎる
  • 機械学習を取り入れることで説明変数選びのコストが下がる
  • 候補の説明変数の分析結果出力ができれば機械学習に近い効果がある

たぶん普通の考えでEA開発してたら無理だと思います。