はじめに
近年、人工知能ブームにより、人工知能を使ったトレーディング手法が盛んである。そこで、今回は深層強化学習を用いたシステムトレーディングを実施した。
まず、基本的な深層強化学習を用いたトレーディングモデルである。agentの行動として、 BUY、HOLD、SELLの三つの内一つを選択する。環境の戻り値として、状態(今現在保有しているポジションの価格、市場価格、手持ちのキャッシュ)、報酬(手持ちのキャッシュの変化値(含む益も含む))、終了(取引の終了か否か)、情報(ターミナルにディスプレイする情報)を返す。
使用データについて
トレンド傾向の掴みやすさから、yahoo financeからGSPCの日足を使用した。
訓練データの期間:2015/1/1 - 2017/6/30
テストデータの期間:2017/7/1 - 2021/1/1
以下ソースコード
IMPALA1
1より、Deepl翻訳を用いると、以下の機能を持っている。
単一のパラメータセットを持つ単一の強化学習エージェントを使用して、大規模なタスクのコレクションを解>決することを目指しています。主な課題は、データ量の増加と学習時間の延長に対応することです。我々は、>新しい分散エージェントIMPALA(Impor-tance Weighted Actor-Learner Architecture)を開発し>た。このエージェントは、単一マシンでの学習においてリソースをより効率的に使用するだけでなく、データ>効率やリソース利用を犠牲にすることなく、数千台のマシンに拡張することができる。このアーキテクチャで>は、アクターと学習を分離し、V-traceと呼ばれる新しいオフポリシー補正法を組み合わせることで、高ス>>>ループットで安定した学習を実現しています。
impalaの利点として以下の点が挙げられる。
・V-traceと言う奇跡の生成確率を考慮した重点サンプリングを利用して、on-policyの生成タイミングのずれを修正している。
・分散学習が効率化した他、複数タスクの同時学習でも成果が出る。
On-PolicyとOff-Policyの違い
データ収集時の方策 μと学習している方策 πが一致している場合は、On-Policyであり、一致していない場合は、Off-Policyである。
代表的なon-policyはTRPO,PPO,A3C
代表的なoff-policyはDDPG,TD3,IMPALA
数式モデル
V-traceターゲット
V_s := V(x_s) + \mathbb
\sum_{t=s}^{s+n-1} \gamma^{t-s} \biggr(\prod_{i=s}^{t-s} c_i \biggr) \delta_tV
以下の束縛条件がつく。
\delta_tV := \rho_{t}(r_t+ \gamma V(x_{t+1})-V(x_t)) \\
\rho_i = \min(\bar \rho,\frac{\pi(a_i|x_i)}{\mu(a_i|x_i)}) \\
c_i = \min(\bar c, \frac{\pi(a_i|x_i)}{\mu(a_i|x_i)}) \\
\bar \rho \ge \bar c
方策勾配
(V_s - V_\theta(x_s)) \nabla_\theta V_\theta(x_s)
ベースライン勾配
\rho_s \nabla_\omega \log \pi_\omega(a_s|x_s) (
r_s + \gamma \mathcal R^n V(x_{s+1}) - V_\theta(x_s))
エントロピー勾配
また,方策 $\pi_\omega$ が局所解に収束してしまうのを防ぐため,エントロピー損失を加えることも考えられます.
- \nabla_\omega \sum_a \pi_\omega(a|x_s)\log \pi_\omega(a|x_s)
勾配の合計値
勾配の合計値を求める。
勾配の合計 = 方策勾配損失関数 + α ベースライン損失関数 + β エントロピー損失関数
モデル
2を参考に以下のモデルを考案した。
売買ルール
1.空売りは認めない
2.ポジションを持っている場合、追加注文を出せない。
3.最後のステップでポジションを全て売却する。
4.ポジションは全買い、全売り
5.所持金は1000000ドル
実装と結果
ソースコードはこちら
ソースコードはこちら