常见问题解答

Version:

0.3

Date:

2022年5月29日

Contributors:

罗伯托·弗雷·达·席尔瓦,刘晓阳,夏子怡,朱明

本文档包含了与FinRL相关的最常见问题,这些问题基于在slack频道和Github上发布的问题。

大纲

1-输入和数据集

  • 我可以使用FinRL进行加密货币交易吗?

    还没有。我们正在开发这个功能

  • 我可以使用FinRL进行实盘交易吗?

    还没有。我们正在开发这个功能

  • 我可以使用FinRL进行外汇交易吗?

    还没有。我们正在开发这个功能

  • 我可以使用FinRL进行期货交易吗?

    尚未

  • 什么是获取免费每日数据的最佳数据源?

    雅虎财经(通过 yfinance 库)

  • 什么是最佳的分时数据源?

    雅虎财经(仅限最近7天),通过yfinance库。这是除了抓取(或支付服务提供商)之外的唯一选择

  • FinRL 是否支持杠杆交易?

    不,因为这更多是与风险控制相关的执行策略。您可以将其作为系统的一部分,将风险控制部分添加为单独的组件

  • 可以添加情感特征来提高模型的性能吗?

    是的,你可以添加它。记得检查代码,确保这个额外的功能被传递给模型(状态)

  • 有没有好的免费市场情绪来源可以用作特征?

    不,你需要使用付费服务或库/代码来抓取新闻并从中获取情感(通常使用深度学习和自然语言处理)

2-代码和实现

  • FinRL 是否支持 GPU 训练?

    是的,确实如此

  • 该代码适用于每日数据,但在日内频率上表现不佳。

    是的,因为当前参数是为每日数据定义的。您需要为日内交易调整模型

  • 是否有不同的奖励函数可用?

    虽然目前还不多,但我们正在努力提供不同的奖励函数,并简化设置自定义奖励函数的方式

  • 我可以使用预训练模型吗?

    是的,但目前没有可用的。有时在文献中你会发现这被称为迁移学习

  • 模型中最重要的超参数是什么?

    每个模型都有其自己的超参数,但最重要的是total_timesteps(可以将其视为神经网络中的epochs:即使所有其他超参数都是最优的,如果epochs太少,模型的性能也会很差)。一般来说,其他重要的超参数包括:learning_rate、batch_size、ent_coef、buffer_size、policy和reward scaling

  • 我可以使用哪些库来更好地调整模型?

    有几种,例如:Ray Tune 和 Optuna。你可以从我们的教程示例开始

  • 我可以在FinRL中使用哪些DRL算法?

    我们建议使用ElegantRL或Stable Baselines 3。我们成功测试了以下模型:A2C、A3C、DDPG、PPO、SAC、TD3、TRPO。你也可以使用OpenAI Gym风格的市场环境创建自己的算法

  • 模型显示出奇怪的结果或没有在训练。

    请更新到最新版本 (https://github.com/AI4Finance-LLC/FinRL-Library),检查使用的超参数是否在正常范围内(例如:学习率过高),然后再次运行代码。如果问题仍然存在,请查看第2节(遇到问题时的应对措施)

  • raw-html:

    遇到问题时该怎么办?

1. 检查是否已在此FAQ中回答 2. 检查是否已在GitHub仓库中发布 issues。如果没有,欢迎在GitHub上提交问题 3. 使用AI4Finance的slack或微信群中的正确渠道。*

  • raw-html:

    有人知道是否有单只股票的交易环境吗?文档中有一个,但协作链接似乎已损坏。

    我们很长时间没有更新单只股票了。由于状态空间太小,代理从环境中提取的信息很少,因此单只股票的表现不是很好。请使用多股票环境进行训练,训练后仅使用单只股票进行交易。

3-模型评估

  • 模型没有在我的数据上击败买入并持有(BH)。是模型还是代码有问题?

    不完全是这样。根据时间段、资产、选择的模型以及使用的超参数,BH可能非常难以超越(在低波动性和稳定增长的股票/时间段上几乎从未被超越)。不过,请更新库及其依赖项(github仓库有最新版本),并检查特定环境类型(单一、多、投资组合优化)的示例笔记本,以确保代码运行正确

  • 回测在库中是如何工作的?

    我们使用来自Quantopian的Pyfolio回测库(https://github.com/quantopian/pyfolio),特别是简单的tear sheet及其图表。一般来说,最重要的指标是:年化收益、累计收益、年化波动率、夏普比率、卡尔玛比率、稳定性和最大回撤

  • 我应该使用哪些指标来评估模型?

    有几种指标,但我们推荐以下几种,因为它们是市场上最常用的:年回报率、累计回报率、年波动率、夏普比率、卡尔玛比率、稳定性和最大回撤

  • 我应该使用哪些模型作为比较的基准?

    我们建议使用买入并持有(BH)策略,因为这是一种可以在任何市场上遵循的策略,并且长期来看往往能提供良好的结果。您还可以将其与其他DRL模型和交易策略进行比较,例如最小方差投资组合

4-杂项

  • 我很感兴趣,但我一无所知。我该如何开始?

1. 从最开始阅读文档 2. 浏览 * `教程 `_ *3. 阅读我们的论文

  • 这个库的发展路线图是什么?

    这可以在我们的Github仓库中找到 https://github.com/AI4Finance-LLC/FinRL-Library

  • 我如何为开发做出贡献?

    参与Slack频道,查看当前问题和路线图,并以任何你能做到的方式提供帮助(与他人分享库,测试不同市场/模型/策略的库,参与代码开发等)

  • 在我开始使用这个库之前,有哪些好的参考资料?

  • 对于来自金融领域的人来说,有哪些好的强化学习参考资料?对于来自机器学习领域的人来说,有哪些好的金融参考资料?

    请阅读 4-杂项

  • FinRL 将整合哪些新的 SOTA 模型?

    请查看我们在Github仓库中的开发路线图:https://github.com/AI4Finance-LLC/FinRL-Library

  • FinRL 和 FinRL-Meta 的主要区别是什么?

    FinRL 旨在教育和演示,而 FinRL-Meta 旨在构建金融大数据和数据驱动的金融强化学习的元宇宙。

5-常见问题/错误

  • Package trading_calendars reports errors in Windows system:

    Trading_calendars 目前不再维护。在 Windows 系统(python>=3.7)中可能会报告错误。以下是两种可能的解决方案:1). 使用 python=3.6 环境。2). 将 trading_calendars 替换为 exchange_caldenars。