当前位置: 首页 > 工具软件 > FinRL > 使用案例 >

finRL源解读

胡劲
2023-12-01

finRL源解读

  • required = { ‘yfinance’, ‘pandas’, ‘matplotlib’, ‘stockstats’, ‘stable-baselines’, ‘gym’}

数据处理

  • 获取股票日价格以及加入各种指标作为state,如果是多只股票,排列方式为根据每日每只股票排列。index累加。
  • 分成训练集和测试集

建模

  • state_space:

        state_space = (
                1
                + 2 * stock_dimension
                + len(config.TECHNICAL_INDICATORS_LIST) * stock_dimension
        )
    
  • 建环境

  • 建agent,依赖于环境

    agent = DRLAgent(env=env_train)
    
  • 定义state和action

    action = Box(-1.0, 1.0, (2,), float32)
    state = Box(-inf, inf, (21,), float32)
    
  • 构造数据
    env.step

选策略

  • 加载子policy,有很多可选,底层已封装好,一般选择MlpPolicy,policy有一个step,返回值底层已经算好。用来生成数据,然后在env里跑。

    _policy_registry = {
        ActorCriticPolicy: {
            "CnnPolicy": CnnPolicy,
            "CnnLstmPolicy": CnnLstmPolicy,
            "CnnLnLstmPolicy": CnnLnLstmPolicy,
            "MlpPolicy": MlpPolicy,
            "MlpLstmPolicy": MlpLstmPolicy,
            "MlpLnLstmPolicy": MlpLnLstmPolicy,
        }
    }
    初始化:
    super(MlpPolicy, self).__init__(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse,
    								feature_extraction="mlp", **_kwargs)
    
  • 加载策略模型,agent加载,模型使用的是stable_baselines3原装,可以自定义参数送进去。

      model_ppo = agent.get_model("ppo")
    

    在加载时模型进行初始化:
    input初始化
    model初始化

    # 构建actor函数
    self.deterministic_action, policy_out, logp_pi = self.policy_tf.make_actor(self.processed_obs_ph)
    # 构建critics函数,这是使用双Q
    qf1, qf2, value_fn = self.policy_tf.make_critics(self.processed_obs_ph, self.actions_ph, create_qf=True, create_vf=True)
    
    qf1_pi, qf2_pi, _ =  self.policy_tf.make_critics(self.processed_obs_ph,
    

policy_out,create_qf=True,create_vf=False,reuse=True)
```
target初始化
loss初始化

  • 训练模型,agent训练,使用的是stable_baselines3原装训练

  • 风控:turbulence_threshold

 类似资料: