(11-4-02)基于深度强化学习的量化交易Agent(1):Agent交易模型(2) 基于DDPG算法+基于SAC算法

10.5.3  交易模型3: 基于DDPG算法

DDPG(Deep Deterministic Policy Gradient)是一种用于连续动作空间的深度强化学习算法。在这个上下文中,它用于训练股票交易的智能体。DDPG是一种基于策略梯度的算法,它同时学习动作策略和值函数。这使得DDPG在处理具有高维、连续动作空间的问题时非常有效。

(1)在库FinRL中,通过调用agent.get_model("ddpg", model_kwargs=DDPG_PARAMS)创建DDPG模型。

agent = DRLAgent(env = env_train)
DDPG_PARAMS = {"batch_size": 128, "buffer_size": 50000, "learning_rate": 0.001}

model_ddpg = agent.get_model("ddpg",model_kwargs = DDPG_PARAMS)

执行后会输出:

{'batch_size': 128, 'buffer_size': 50000, 'learning_rate': 0.001}

Using cuda device

(2)在下面的代码中,使用agent.train_model方法对DDPG模型进行了训练。具体来说,model=model_ddpg表示使用之前创建的DDPG模型,tb_log_name='ddpg'表示TensorBoard日志的名称,total_timesteps=50000表示总的训练步数。

trained_ddpg = agent.train_model(model=model_ddpg, 
                             tb_log_name='ddpg',
                             total_timesteps=50000)

上述代码将执行DDPG算法的训练过程,并将训练好的模型保存在trained_ddpg中。执行后会输出:

=================================
begin_total_asset:1000000
end_total_asset:4369306.145455855
Sharpe:  0.8034072979350758
=================================
=================================
begin_total_asset:1000000
end_total_asset:4365995.854896107
Sharpe:  0.8200827579868865
=================================
#####省略部分输出结果
----------------------------------
| time/              |           |
|    episodes        | 16        |
|    fps             | 124       |
|    time_elapsed    | 373       |
|    total_timesteps | 46288     |
| train/             |           |
|    actor_loss      | -2.24e+08 |
|    critic_loss     | 1.41e+13  |
|    learning_rate   | 0.001     |
|    n_updates       | 43395     |
|    reward          | 4365996.0 |
----------------------------------
=================================
begin_total_asset:1000000
end_total_asset:4365995.854896107
Sharpe:  0.8200827579868865
=================================
=================================
begin_total_asset:1000000
end_total_asset:4365995.854896107
Sharpe:  0.8200827579868865
=================================

(3)将训练好的DDPG模型保存到指定的目录'/content/trained_models/trained_ddpg.zip'中,以便在后续可以加载和使用该模型。

trained_ddpg.save('/content/trained_models/trained_ddpg.zip')

10.5.4  交易模型4: 基于SAC算法

SAC(Soft Actor-Critic)是一种强化学习算法,专门用于解决连续动作空间中的问题。SAC采用了深度学习神经网络来近似值函数和策略,并通过最大化期望累积奖励来进行训练。

(1)在下面的的代码中,通过类DRLAgent创建了一个 Soft Actor-Critic(SAC)模型。SAC_PARAMS 包含了 SAC 模型的关键参数设置,这个模型使用了 FinRL 库中的 get_model 方法,并指定模型类型为 "sac",同时传递了 SAC 模型的参数。该模型在环境 env_train 中进行训练,以学习股票交易策略。

agent = DRLAgent(env = env_train)
SAC_PARAMS = {
    "batch_size": 128,
    "buffer_size": 100000,
    "learning_rate": 0.0003,
    "learning_starts": 100,
    "ent_coef": "auto_0.1",
}

model_sac = agent.get_model("sac",model_kwargs = SAC_PARAMS)

执行后会输出:

{'batch_size': 128, 'buffer_size': 100000, 'learning_rate': 0.0003, 'learning_starts': 100, 'ent_coef': 'auto_0.1'}

Using cuda device

(2)通过 agent 对象对 SAC 模型进行训练,使用环境 env_train训练生成数据。trained_sac 包含了训练完毕的 SAC 模型,该模型已经学习了在给定环境下执行股票交易策略的参数。这个模型的训练过程产生的日志也被记录在TensorBoard 中,日志命名为 'sac'。

trained_sac = agent.train_model(model=model_sac,
                             tb_log_name='sac',
                             total_timesteps=50000)

执行后会输出:

=================================
begin_total_asset:1000000
end_total_asset:4774375.224598323
Sharpe:  0.8157447898211176
=================================
=================================
begin_total_asset:1000000
end_total_asset:4851457.312329918
Sharpe:  0.817397961885012
=================================
=================================
begin_total_asset:1000000
end_total_asset:4851717.33279626
Sharpe:  0.8174262460980435
=================================
=================================
begin_total_asset:1000000
end_total_asset:4851205.14751689
Sharpe:  0.8173829155723342
=================================
----------------------------------
| time/              |           |
|    episodes        | 4         |
|    fps             | 77        |
|    time_elapsed    | 150       |
####省略部分输出结果
----------------------------------
| time/              |           |
|    episodes        | 16        |
|    fps             | 76        |
|    time_elapsed    | 606       |
|    total_timesteps | 46288     |
| train/             |           |
|    actor_loss      | -2.65e+08 |
|    critic_loss     | 1.16e+13  |
|    ent_coef        | 977       |
|    ent_coef_loss   | -2.8      |
|    learning_rate   | 0.0003    |
|    n_updates       | 46187     |
|    reward          | 4837676.5 |
----------------------------------
=================================
begin_total_asset:1000000
end_total_asset:4804962.823019405
Sharpe:  0.8165128039174648
=================================

(3)将经过训练的 SAC 模型保存为ZIP 文件'/content/trained_models/trained_sac.zip',该文件存储了训练好的模型参数以及相关信息。

trained_sac.save('/content/trained_models/trained_sac.zip')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值