finRL源解读

本文介绍了如何使用FinRL框架进行金融投资建模。首先,通过引入yfinance、pandas等库处理股票数据并计算技术指标。接着,定义环境状态和动作空间,构建基于gym的交易环境。然后,选用稳定基线库(stable-baselines3)中的MlpPolicy策略,并进行初始化。在训练过程中,利用ppo策略进行模型训练,并设置风控阈值。整个过程展示了深度学习在股票交易决策中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

<think>好的,我现在需要回答用户关于FinRL使用方法和教程的问题。首先,用户提到了几个引用,我需要确保在回答中正确引用这些资。 用户的问题集中在FinRL的使用教程和示例代码上。根据提供的引用,有三个主要的资:[^1]是FinRL-Tutorials项目,[^2]提到ElegantRL的教程,而[^3]是FinRL-Trading项目的克隆和运行步骤。 首先,我应该分步骤介绍如何获取和运行FinRL的教程。需要检查用户提供的引用内容,确保每一步都正确引用对应的来。例如,克隆仓库的步骤来自引用[^3],而示例代码的运行可能涉及引用[^1]和。 接下来,用户可能需要示例代码的具体说明,比如如何修改参数或应用不同的强化学习算法。这里需要参考引用中的示例,并指出如何调整环境参数或策略,引用对应的教程部分。 然后,关于ElegantRL的部分,根据引用,需要说明如何结合ElegantRL进行实际应用,并引导用户查看官方文档。这部分需要自然过渡,确保用户知道不同项目之间的关系。 最后,生成的相关问题需要围绕FinRL的安装、核心概念、与其他工具的比较以及常见问题。这些问题应该覆盖用户可能进一步询问的方向,帮助他们深入理解。 需要注意的是,所有代码块要使用正确的格式,行内数学公式用$...$,独立公式用$$...$$。但在这个回答中可能不需要数学公式,所以主要关注代码块和引用格式。同时,确保使用中文,结构清晰,步骤明确,引用标记正确放置在相关步骤的末尾。 现在,整理这些思路,按照用户提供的结构,分步骤回答,并添加相关问题。需要确保每个引用只在相关的地方出现,例如克隆仓库时引用,提到教程时引用和。</think>以下是FinRL框架的使用方法及教程整理,分步骤指导快速入门: ### 一、环境搭建与项目获取 1. 克隆FinRL-Trading仓库到本地: ```bash git clone https://github.com/AI4Finance-Foundation/FinRL-Trading.git cd FinRL-Trading ``` 建议使用Python 3.8+环境,安装依赖时执行:`pip install -r requirements.txt`[^3] 2. 获取FinRL-Tutorials教程库: ```bash git clone https://gitcode.com/gh_mirrors/fi/FinRL-Tutorials ``` 该库包含股票交易、投资组合优化等场景的Jupyter Notebook教程 ### 二、运行示例代码 1. 基础股票交易示例: ```python from finrl import config from finrl.finrl_meta.env_stock_trading import StockTradingEnv from stable_baselines3 import PPO # 初始化交易环境 env = StockTradingEnv(df=processed_data, **env_config) # 创建PPO智能体 model = PPO('MlpPolicy', env, verbose=1) # 训练模型 model.learn(total_timesteps=10000) ``` 可通过修改`env_config`参数调整交易手续费、初始资金等设置[^1] ### 三、核心功能实践 1. 数据预处理模块: ```python from finrl import config_tickers from finrl.finrl_meta.data_processor import DataProcessor dp = DataProcessor(data_source='yahoofinance') data = dp.download_data( ticker_list=config_tickers.DOW_30_TICKER, start_date='2010-01-01', end_date='2023-12-31' ) ``` 支持Yahoo Finance、Quandl等多种数据[^3] 2. 强化学习训练流程: ```python from finrl.test import test from finrl.plot import backtest_stats # 回测评估 account_value = test(start_date='2021-01-01', end_date='2022-12-31') backtest_stats(account_value) ``` ### 四、结合ElegantRL扩展 FinRL可集成ElegantRL库实现分布式训练: ```python from elegantrl.run import train_and_evaluate from elegantrl.agent import AgentPPO args = Arguments(env=env, agent=AgentPPO()) train_and_evaluate(args) ``` 支持PPO、DDPG、TD3等多种算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值