DeepLeraningによる予測ですが、分類方式だと全く上手くいきません。
回答が合わない以前に、損失関数が収束しないのです・・・
そこで試しに簡単なシミュレーションデータを作ってみました。
- 10000件の”ほぼ”同じ時系列データを作成
- 2値分類で、正解は1とする
- ところどころに誤った正解(ゼロ)を挿入する
上記条件で、損失関数の収束を見てみました。
1.誤答率ゼロ%
即座にゼロに収束しています。
2.誤答率10%
ゼロではなく、0.3当たりに収束しています。
3.誤答率20%
20%の時点で、もう殆ど損失関数に変化がありません・・・
以上のデータから、似たようなデータ(今回は時系列データ)に対し、異なる答えの割合が多くなる程学習が進まないのが分かります。
当然ですよねw、Aというデータを渡して、「前回は正解=1」といい、「今回は正解=0」と言っていたならば、正しい答えが導き出せるはずがありません。
ここで実際の為替データを見てみましょう。
これは、EURUSDで現時点からローソク足3本後に20pip以上上昇していたケースの極一部です。(比較のため足10本前を1に固定)
厳密には数えていませんが、かなりの割合で「足10本分ほど下がり基調」から「結果的に足3本後には20pip上昇」となっているのが伺えます。
ちなみに、”20pip下げ”で調べても、ほぼ同じグラフになります。
これは、最初の例で言うならば「学習しようがない(予想しようがない)」というところでしょうか・・・
誤解なきように言い換えると、「過去のチャートからだけでは学習しようがない」となります。このことから、ただちに「FXは所詮丁半博打」と結論づくわけではありません。
このままではFX好きとして面白くないので、もう少し足掻いてみます。
- 損失関数、最適化手法を変えてみる → 使えるものは全部試したがダメだった
- モデルを再構築する → 色々ためしてみたけどだめだった。しかしモデルの組み合わせは無限大なので可能性は残っている・・・
- データに色々と前処理を試してみる → 何か思いつけば実験する予定
- 分類がだめなら、回帰で再挑戦する → とりあえずコレ!
分類方式はいったん諦めて、回帰方式を試してみる予定です。
ただ、回帰で上手くいく保証は全くありません。
そもそも正解がないものを、本当に学習できるのか?という大問題がありますが、そこは目を瞑って再チャレンジです\(^_^)/