1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

深層強化学習(IMPALA)を用いたシステムトレーディング

Last updated at Posted at 2021-09-23

はじめに

 近年、人工知能ブームにより、人工知能を使ったトレーディング手法が盛んである。そこで、今回は深層強化学習を用いたシステムトレーディングを実施した。
 まず、基本的な深層強化学習を用いたトレーディングモデルである。agentの行動として、 BUY、HOLD、SELLの三つの内一つを選択する。環境の戻り値として、状態(今現在保有しているポジションの価格、市場価格、手持ちのキャッシュ)、報酬(手持ちのキャッシュの変化値(含む益も含む))、終了(取引の終了か否か)、情報(ターミナルにディスプレイする情報)を返す。

reinforcelearning.png

使用データについて

トレンド傾向の掴みやすさから、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と呼ばれる新しいオフポリシー補正法を組み合わせることで、高ス>>>ループットで安定した学習を実現しています。

Screen Shot 2021-08-22 at 10.45.24.png

impalaの利点として以下の点が挙げられる。
・V-traceと言う奇跡の生成確率を考慮した重点サンプリングを利用して、on-policyの生成タイミングのずれを修正している。
・分散学習が効率化した他、複数タスクの同時学習でも成果が出る。

On-PolicyとOff-Policyの違い

データ収集時の方策 μと学習している方策 πが一致している場合は、On-Policyであり、一致していない場合は、Off-Policyである。

代表的なon-policyはTRPO,PPO,A3C
代表的なoff-policyはDDPG,TD3,IMPALA

off_policy.png

数式モデル

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を参考に以下のモデルを考案した。

impala_model.png

売買ルール

1.空売りは認めない
2.ポジションを持っている場合、追加注文を出せない。
3.最後のステップでポジションを全て売却する。
4.ポジションは全買い、全売り
5.所持金は1000000ドル

実装と結果

ソースコードはこちら

Unknown.png

ソースコードはこちら

  1. L. Espeholt and K. Kavukcuoglu, et al. "IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures"(2018) 2

  2. W. Lu,J. Li,Y. Li, A. Sun, and J. Wang, 'A CNN-LSTM-Based Model to Forecast Stock Prices', (2020), Hindawi Complexity Volume 2020,p.10

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?