以下の通りいくつか、システムトレードのプログラムを作ってきましたが、継続的(長期ではなく短中期でも安定して)に勝つには課題があることが分かったので書いておきます。
※コメント欄に画像のリンク張ってたりしてるので、そちらもご覧ください
ディープラーニングでFXのシステムトレーディングをするコードを書いた - Qiita
機械学習を用いたオレオレFXシステムトレーディングプログラムのロジック解説 - Qiita
ディープラーニングでFXのシステムトレーディングをするコードを書いた (2) -RNN/LSTM編- - Qiita
xgboostによる決定木アンサンブル学習でFXのシステムトレードするコードを書いた - Qiita
#課題
- 市場は常に変化しており1つのアルゴでは対応しきれない(ように思えた)
- 当たり前かもしれないが、機械学習でアルゴを作っても勝てる期間と勝てない期間が出てくる(数カ月とかのスパンで)
- 市場はざっくり分けても平均に回帰する平均回帰性の強い期間とそうでない期間がある(らしい)。他にも様々な要因について特性が変化している(と思われる)。
- (すごく賢い機械学習アルゴなら、市場の特性の変化すらカバーできるのかもしれない)
#考えられる対応策は3つ(うまくいくかは不明)
- 機械学習なアルゴであれば、市場の変化に応じて再学習を続けていく
- バックテストしようとすると計算量が膨大になるので試せていない。この点については、全部一から再学習するのではなく、学習期間のウィンドウをスライドさせて追加学習及び過去の学習内容の忘却ができるようなアルゴリズムがあるとよさげ。ただ、実運用では適当なタイミングでまるっと再学習でもさほど問題にはならないだろう。
- 複数のアルゴを市場の状況に応じて切り替える
- 強化学習の一つであるバンディットアルゴリズムで市場に適したアルゴを動的に選択していくようなことができるはず
- ただし、市場の変化に十分な速度で追従できるのかは不明。
- グリッドトレーディングのような市場の特性に左右されないストラテジーを採用する
- グリッドトレード戦略でFXシステムトレード - Qiita
以上、頭の中にあることをメモがてら書いてみました。
追記
続きを書いてみました
http://qiita.com/ryo_grid/items/5f8114c11bd2959ea9a6