AnyTrading - 学習済みモデルの作成(ACKTR)

前回作成した学習済みモデルの成績が良くなかったので、新しい学習済みモデルを作成していきます。

アルゴリズムをPPO2から、ACKTRに戻してみます。(PPO2の成績がほんとに悪かったもので・・・)

学習のためのパラメータをまとめると次の一覧のようになります。

パラメータ設定値
参照すべき直前のデータ数(window_size)30
学習データの開始位置(start_idx)100
学習データの終了位置(end_idx)300
訓練ステップ数(timesteps)128000
学習アルゴリズムACKTR

学習済みモデルの作成

学習済みモデルを作成するコードは下記の通りになります。

パラメータの内容は、コメントしていますのでご参照下さい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os, gym
import datetime
import gym_anytrading
import matplotlib.pyplot as plt
from gym_anytrading.envs import TradingEnv, ForexEnv, StocksEnv, Actions, Positions
from gym_anytrading.datasets import FOREX_EURUSD_1H_ASK, STOCKS_GOOGL
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2
from stable_baselines import ACKTR
from stable_baselines.bench import Monitor
from stable_baselines.common import set_global_seeds

def simulation(i, prm):
# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

idx1 = prm['start_idx']
idx2 = prm['end_idx']

# 環境の生成
env = gym.make('forex-v0', frame_bound=(idx1, idx2), window_size=prm['window_size'])
env = Monitor(env, log_dir, allow_early_resets=True)

# シードの指定
env.seed(0)
set_global_seeds(0)

# ベクトル化環境の生成
env = DummyVecEnv([lambda: env])

# モデルの生成
#model = PPO2('MlpPolicy', env, verbose=1)
model = ACKTR('MlpPolicy', env, verbose=1)

# モデルの学習
model.learn(total_timesteps=prm['timesteps'])

# モデルの保存
model.save('model{}'.format(i))

prm = {'window_size': 30, #window_size 参照すべき直前のデータ数
'start_idx' : 100, #start_idx 学習データの開始位置
'end_idx' : 300, #end_idx 学習データの終了位置
'timesteps' :128000 } #timesteps 訓練ステップ数
for i in range(10):
simulation(i, prm)

上記コードを実行すると、model0.zipからmodel9.zipの10種類の学習済みモデルが作成されます。

次回からはこのモデルでどのような投資成績を出すことができるのかを検証していきます。