Model or dataset
AI4Finance-Foundation/FinRL-Meta avatar
AI4Finance-Foundation/FinRL-Meta

FinRL-Meta: Market Environments and Benchmarks for Financial Reinforcement Learning

FinRL­®-Meta: Dynamic datasets and market environments for FinRL.

1,940 stars751 forksPythonMIT

At a glance

What is it?
FinRL-Meta is the data and environment layer of the FinRL ecosystem, packaging market data pipelines and gym-style trading environments so agents can be compared on the same datasets. It is a research and benchmarking tool, not a production trading stack.
Who is it for?
Adopt FinRL-Meta if you are a researcher or quant who needs reproducible market environments and shared datasets for comparing DRL trading agents, and you are comfortable working from notebooks and example scripts rather than a packaged CLI. Do not adopt it as a production execution or order-routing system: the README points to FinRL-X / FinRL-Trading for that.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 64 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Data Preparation Tax That FinRL-Meta Tries to Remove

Anyone who has trained a reinforcement learning agent on financial data knows where the time goes. It is not the agent. It is downloading prices, aligning calendars across exchanges, filling gaps, computing technical indicators, and then doing it again for the next experiment because the previous cleaning script was ad hoc. The README states the goal directly: to reduce the data pre-processing burden so that quants can focus on developing and optimizing strategies.

The second stated goal is comparison. If every paper cleans its own data and builds its own environment, two agents that report similar Sharpe ratios may not be comparable at all. FinRL-Meta's answer is a shared universe of market environments and benchmarks, so different strategies can be evaluated on the same dataset. The project also names the simulation-reality gap as a target: backtesting on historical data often diverges from live results, and the Training-Testing-Trading pipeline is the proposed bridge.

The intended audience is therefore narrow and specific. It is researchers and quant developers who already know reinforcement learning and want the market plumbing handled. It is not aimed at discretionary traders looking for signals, and it is not a brokerage integration.

Three Layers, and Which Two FinRL-Meta Owns

The architecture is described as three layers: data, environment, and agent. Each layer is independent, and they interact through end-to-end interfaces. The README is explicit that FinRL-Meta focuses on the data layer and the environment layer, which means the agent layer is where you bring your own algorithm, or borrow one from the sibling projects in the ecosystem such as ElegantRL.

The data layer follows a DataOps pattern. The README argues that DataOps practices have not been applied to financial reinforcement learning research, and that most researchers access, clean, and featurize data case by case. FinRL-Meta's data layer consolidates sources and automates accessing, cleaning, analysis, and visualization. The environment layer wraps that cleaned data in gym-style market environments, which is why the repository's topics include openai-gym-environments.

The design principles list Plug-and-Play modularity, support for different market conventions such as T0 versus T+1, and extensibility through inheritance. That last point matters in practice: extending a base environment class is the intended customization path, not editing the library. Efficiency is also a stated principle, with multi-processing between CPU and GPU called out as the mechanism for faster data sampling, an idea the README attributes to the ElegantRL project.

Installing finrl_meta and Running a First Environment

The package is published as finrl_meta, and setup.py declares the distribution name finrl-meta with python_requires of 3.6 or later. A pip install from PyPI is the shortest path:

bash
pip install finrl_meta

If you want the repository itself, including the examples and the tests, clone it and install from the source tree. setup.py reads requirements.txt at build time and raises an exception if that file is missing, so install from the repository root rather than copying setup.py elsewhere:

bash
git clone https://github.com/AI4Finance-Foundation/FinRL-Meta.git
cd FinRL-Meta
pip install -e .

Before you run anything, look at what requirements.txt pulls in. It is a long list, and several entries are not free data sources. jqdatasdk is the JoinQuant SDK, and wrds is the Wharton Research Data Services client. Both require accounts. yfinance and ccxt are the more accessible entries. The requirements file also pins gym with a comment showing a newer alternative, gym>=0.17 #gym>=0.24.1, which tells you the environment code was written against the older gym API.

The practical first step is not to write code but to open the examples directory. It contains notebooks such as Stock_NeurIPS2018_SB3.ipynb, which pairs the environment with Stable-Baselines3, and FinRL_PaperTrading_Demo.ipynb. The repository root also ships train.py, test.py, and trade.py, matching the Training-Testing-Trading pipeline named in the README. Running an existing notebook end to end is the fastest way to confirm that your data credentials work before you build a custom environment.

Where the Dependency List Becomes a Real Constraint

The most concrete limitation is visible in requirements.txt rather than in any design discussion. The library is only as useful as the data you can feed it. If you do not have JoinQuant or WRDS access, a meaningful part of the documented data layer is unavailable to you, and you are effectively working with the yfinance and ccxt paths plus whatever you write yourself.

The second constraint is version drift. The README badge advertises Python 3.6, setup.py lists classifiers up to 3.10, and the gym pin sits at an older API generation. The most recent release listed is v0.3.6 from 2022-06-26, while setup.py in the repository declares version 0.3.7. That gap between the published release and the source tree is worth checking before you pin a version in a shared environment.

A third limitation is scope confusion. FinRL-Meta is a benchmarking and research layer. The README repeatedly directs readers who want production-oriented deployment to FinRL-X / FinRL-Trading. If your actual goal is to route orders, manage positions, and monitor live risk, you are looking at the wrong repository, and no amount of environment customization will change that.

FinRL-Meta Versus a General Backtesting Library

The natural comparison is with a backtesting engine such as vectorbt, which appears in requirements.txt as vectorbt[full]>=0.23.3. The difference in approach is fundamental. A backtesting library evaluates a strategy you have already specified: you write the rules, it replays history, and it reports performance. FinRL-Meta instead exposes the market as an environment with observations, actions, and rewards, so an agent can learn a policy through interaction rather than being handed one.

That distinction drives everything else. Backtesting libraries are strong on execution realism, transaction cost modeling, and reporting. FinRL-Meta is strong on standardizing the state and action space across markets so that two learning algorithms face the same problem. If your question is "how would this rule-based strategy have performed," a backtester answers it directly. If your question is "can an agent learn a policy that generalizes across a set of market environments," you need the environment abstraction, which is what this project provides.

The two are not mutually exclusive, and the presence of vectorbt in the dependency list suggests the maintainers see them as complementary.

Maintenance, Licensing, and What Upgrades Cost

The repository is not archived, and the last push was on 2026-07-13. The most recent tagged release in the list is v0.3.6 from 2022-06-26, so the release cadence and the commit activity are clearly not in step. Plan for tracking the master branch or a specific commit rather than expecting a fresh PyPI version to match the source tree.

The licence is MIT, declared both in the LICENSE file at the repository root and in setup.py's license field and classifier. MIT is permissive: it allows commercial use and modification with attribution and no warranty. That is a statement about the licence text, not legal advice, and the data you pull through the library carries its own terms. The README does not document rollback or downgrade procedures, so if an upgrade breaks an environment, you are on your own to pin a previous commit.

The upgrade cost is dominated by the dependency list, not by the FinRL-Meta code. A change in the gym API, in stable-baselines3, or in vectorbt can ripple through the environment layer. Anyone running this in a shared research environment should pin the full requirements.txt rather than floating versions.

Editorial conclusion

Adopt FinRL-Meta if you are a researcher or quant who needs reproducible market environments and shared datasets for comparing DRL trading agents, and you are comfortable working from notebooks and example scripts rather than a packaged CLI. Do not adopt it as a production execution or order-routing system: the README points to FinRL-X / FinRL-Trading for that. Before committing, verify which data sources in requirements.txt you can actually authenticate against, since jqdatasdk and wrds are not open feeds, and check the examples/ directory for a notebook that matches your asset class.

Frequently asked questions

What is FinRL-Meta and how does it relate to FinRL?

FinRL-Meta is the market environment and benchmark layer of the FinRL ecosystem, focused on the data layer and environment layer for financial reinforcement learning. The original FinRL project is the end-to-end framework, and FinRL-X / FinRL-Trading is described as the next-generation production-oriented stack.

How do I install FinRL-Meta?

The package is published on PyPI as finrl_meta, so pip install finrl_meta is the shortest path. To get the examples and tests as well, clone the repository and run pip install -e . from the repository root, because setup.py reads requirements.txt at build time.

Does FinRL-Meta work without paid data subscriptions?

Partly. requirements.txt includes yfinance and ccxt, which are accessible without institutional accounts, but it also includes jqdatasdk and wrds, which require their own credentials. Without those accounts, a portion of the documented data layer is out of reach.

Which Python version does FinRL-Meta require?

setup.py declares python_requires of 3.6 or later and lists classifiers through Python 3.10, while the README badge shows Python 3.6. The requirements file pins gym at an older API generation, so newer Python environments may need dependency adjustments.

Is FinRL-Meta suitable for live trading?

The README positions it as a research and benchmarking layer and directs readers who want production-oriented deployment to FinRL-X / FinRL-Trading. It does include a Training-Testing-Trading pipeline and a paper trading demo notebook, but live execution is not its stated focus.

What licence does FinRL-Meta use?

It is MIT licensed, declared in the LICENSE file and in setup.py. The licence covers the code; the market data you retrieve through the library is governed by the terms of each individual data provider.

Official sources

  1. AI4Finance-Foundation/FinRL-Meta on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes