勝てるロジックを自動生成する?!

今日は、もしも、悪徳商材会社が私を雇ったらどうなるか?という星新一にありそうな空想話。。
(この記事はフィクションであり実在の人物・団体とは一切関係ありません。内容は鵜呑みにされない方が賢明です。。それが、あなたの為だから。)



その会社のビジネスモデルはこんな感じ。

(1) 毎年、ダミー会社を立上げ
(2) 過去のデータで(だけ)勝てるロジックを考案
(3) EA化して、華麗な資産増加グラフと共に限定販売
(4) 売れなくなったらダミー会社解散

購買層のメインターゲットは、システムトレードを知らない純真無垢な20代かな。毎年、世界で数億人、日本で100万人が成人となり社会に参入してくるので、その中のわずか 0.05% が興味を持ってくれれば、十分な カモ 金の卵になるのです。EA(ExpertAdvisor)として自動売買にしなくても、裁量トレードのロジックとして売り出しても成り立つと思います。


このビジネスの肝は、毎年更新/蓄積されてゆくヒストリカルデータに対して、直近の過去(だけ)に有効なロジックを如何に効率よく見つけ出せるか?に掛かっています。商品のバリエーションを増やす為には、5分足から日足までいろんな時間足用に異なるシステムを作るのが理想です。現実的には1つのロジックのパラメータフィッティングだけで十分に目的は達成できると思うのですが、それをすると、「B社のEAはA社のパクリだっ!」と、某掲示板で騒ぎ立てる人が出てくるので厄介です。
(A社は去年解散させた会社なので、「それ、パクリじゃなくて、背後でロジック作っている人が同じだから..」なんて書き込みは出来ないですし。。笑



そんな会社の、(インチキ)ロジック量産の仕事を請け負った私が何を行うのか?が今日のお題です…。






(スクロールする前に、あなたならどうするか?思考実験すると味わい深いですよん^^)






























解法はいろいろあると思うのですが、私なら手っ取り早いところで、Adaptrade Builderを使います。このソフトは、過去のヒストリカルデータを与えると、その期間に勝てるロジックを自動生成してしまうのです(!)
原理は、遺伝的アルゴリズム(Genetic Algorithm、GA)の一種になります。GA と言えば、MetaTrader の Genetic Optimization をご存知かと思います。売買ロジックに使われる移動平均等の複数のパラメータを効率良く最適化するのに使われています。パラメータ最適化の仕組みを大雑把に説明すると

(1) パラメータをランダムに振ったグループを用意
(2) そのグループの中で、成績の良いパラメータセットを選択。
(3) 選択したパラメータセットを元に (1)〜(2)を繰り返す。

こんな感じです。ランダムに振る際に、大きくランダムに変えるか、少しだけ変えるかという変化をもたせることもできますし、成績の良いパラメータセットを複数選んで、パラメータの組合せを入替えてみることもできます。(突然変異と、交叉に相当します。)


この GA を、パラメータの枠を超えて ロジックレベルで適用したのが Adaptrade Builder で、この手法を一般に 遺伝的プログラミング(Genetic Programing , GP) と呼びます。
ランダムにインジケータを組み合わせてトレードシステムを生成し、良さそうなシステムが 例えば 移動平均4本を使うシステム であれば、移動平均を1本減らして、RSI に置き換えるとか、さらに移動平均を追加する...といったソースコードの書き換えを延々と繰り返して、優秀なシステムへ進化させてしまうと言えばイメージが掴めるでしょうか。。
(本当はもっと複雑な仕組みで探索をしているはずですが、ここは概念を理解してもらうために簡便に書いてます。



実際に動かしてみたのが下図です。(14日間のデモ版が無償で試せます)

実行前に設定するのは、右側の Settings欄のみで、MT4からExportしたCSVデータを取り込み、優秀なトレードシステムの評価の為のウェイト値を入力します。"優秀なシステム" の定義は人それぞれなので、何を重視するかお好みに指定できるのです。図では、利益と回数を最重要視して、次にPFを重視しています。


ビルドを開始すると、設定条件下でロジックの生成と評価が繰り返されて、そのうちのベスト20システムをリアルタイムに画面で確認できます。左上に、個体番号34のシステムの成績グラフと、自動生成されたTradeStation用ソースコードを表示しています。
トレード回数 570 回で、PF 1.3 ですが、まずまずの右肩上がりなので良い感じです。
(...嘘です。いろんな意味でまだ嘘なんだけど....このソフトは本当に凄い。^^;;;



「海外では、こんな風にプログラミングを知らない人でも、簡単な設定だけで過去に勝てたシステムが量産できるんですよ〜」
...と、その会社の社長に力説したら、翌日、クビになりました。
だって、本当にプログラマを雇っておく必要性が無くなったのですから。笑。 (おわり