Git Product home page Git Product logo

finrl's Introduction

FinRL: Deep Reinforcement Learning for Quantitative Finance twitter facebook google+ linkedin

Downloads Downloads Python 3.6 PyPI Documentation Status License

Disclaimer: Nothing herein is financial advice, and NOT a recommendation to trade real money. Please use common sense and always first consult a professional before trading or investing.

Our Mission: to efficiently automate trading. We continuously develop and share codes for finance.

Our Vision: AI community has accumulated an open-source code ocean over the past decade. We believe applying these intellectual and engineering properties to finance will initiate a paradigm shift from the conventional trading routine to an automated machine learning approach, even RLOps in finance.

FinRL is the first open-source framework to demonstrate the great potential of applying deep reinforcement learning in quantitative finance. We help practitioners establish the development pipeline of trading strategies using deep reinforcement learning (DRL). A DRL agent learns by continuously interacting with an environment in a trial-and-error manner, making sequential decisions under uncertainty, and achieving a balance between exploration and exploitation.

News: We are maintaining codes for live trading. Let us know your needs.

Join to discuss FinRL: AI4Finance mailing list, AI4Finance Slack channel:

Follow us on WeChat:

The FinRL ecosystem:

FinRL 3.0 (Production): advanced-level for investment banks and hedge funds. A cloud-native solution FinRL-podracer.

FinRL 2.0 (Professional): intermediate-level for full-stack developers and professionals. ElegantRL.

FinRL 1.0 (Proof of concept): entry-level for beginners, with a demonstrative and educational purpose.

FinRL 0.0 (Preparation): a universe of training/testing/trading environments in FinRL-Meta.

FinRL provides a unified framework for various markets, SOTA DRL algorithms, finance tasks (portfolio allocation, cryptocurrency trading, high-frequency trading), live trading support, etc.

Outline

Tutorials

Overview

A video about FinRL library. The AI4Finance Youtube Channel for quantative finance.

Supported Data Sources:

Data Source Type Range and Frequency Request Limits Raw Data Preprocessed Data
Alpaca US Stocks, ETFs 2015-now, 1min Account-specific OHLCV Prices&Indicators
Baostock CN Securities 1990-12-19-now, 5min Account-specific OHLCV Prices&Indicators
Binance Cryptocurrency API-specific, 1s, 1min API-specific Tick-level daily aggegrated trades, OHLCV Prices&Indicators
CCXT Cryptocurrency API-specific, 1min API-specific OHLCV Prices&Indicators
IEXCloud NMS US securities 1970-now, 1 day 100 per second per IP OHLCV Prices&Indicators
JoinQuant CN Securities 2005-now, 1min 3 requests each time OHLCV Prices&Indicators
QuantConnect US Securities 1998-now, 1s NA OHLCV Prices&Indicators
RiceQuant CN Securities 2005-now, 1ms Account-specific OHLCV Prices&Indicators
tusharepro CN Securities, A share -now, 1 min Account-specific OHLCV Prices&Indicators
WRDS.TAQ US Securities 2003-now, 1ms 5 requests each time Intraday Trades Prices&Indicators
Yahoo! Finance US Securities Frequency-specific, 1min 2,000/hour OHLCV Prices&Indicators

OHLCV: open, high, low, and close prices; volume.

adj_close: adjusted close price

Technical indicators users can add: 'macd', 'boll_ub', 'boll_lb', 'rsi_30', 'dx_30', 'close_30_sma', 'close_60_sma' Users also can add their features.

Websites:

Baostock http://baostock.com/baostock/index.php/Python_API%E6%96%87%E6%A1%A3

Binance https://binance-docs.github.io/apidocs/spot/en/#public-api-definitions

CCXT https://docs.ccxt.com/en/latest/manual.html

IEXCloud https://iexcloud.io/docs/api/

JoinQuant https://www.joinquant.com/

RiceQuant https://www.ricequant.com/doc/rqdata/python/

tusharepro https://tushare.pro/document/1?doc_id=131

YahooFinance https://pypi.org/project/yfinance/

File Structure

  • finrl # main folder

    • ./apps # apps for different typles of trading
    • ./drl_agents # DRL agents from ElegantRL, RLlib, Stable-Baseline 3
    • ./finrl_meta # contents of child project finrl-meta
    • train.py # a collection of demos
    • test.py # the evaluator class
    • trade.py # a collection of network architectures
    • plot.py # the buffer class
  • tutorials # tutorials for people to run and learn

  • unit_testing # testing environment and market data

    • ./test_env # testing environment
    • ./test_marketdata # testing market data
  • ready-to-run Google-Colab notebooks

DRL Algorithms

ElegantRL (website) provides finance-oriented optimizations of DRL algorithms using PyTorch.

Status Update

Version History [click to expand]
  • 2021-08-25 0.3.1: pytorch version with a three-layer architecture, apps (financial tasks), drl_agents (drl algorithms), neo_finrl (gym env)
  • 2020-12-14 Upgraded to Pytorch with stable-baselines3; Remove tensorflow 1.0 at this moment, under development to support tensorflow 2.0
  • 2020-11-27 0.1: Beta version with tensorflow 1.5

Installation

Contributions

  • FinRL is the first open-source framework to demonstrate the great potential of applying DRL algorithms in quantitative finance. We build an ecosystem around the FinRL framework, which seeds the rapidly growing AI4Finance community.
  • The application layer provides interfaces for users to customize FinRL to their own trading tasks. Automated backtesting tool and performance metrics are provided to help quantitative traders iterate trading strategies at a high turnover rate. Profitable trading strategies are reproducible and hands-on tutorials are provided in a beginner-friendly fashion. Adjusting the trained models to the rapidly changing markets is also possible.
  • The agent layer provides state-of-the-art DRL algorithms that are adapted to finance with fine-tuned hyperparameters. Users can add new DRL algorithms.
  • The environment layer includes not only a collection of historical data APIs, but also live trading APIs. They are reconfigured into standard OpenAI gym-style environments. Moreover, it incorporates market frictions and allows users to customize the trading time granularity.

Publications

We published FinTech papers, check Google Scholar, resulting in this project:

  • FinRL-Meta: A Universe of Near-Real Market Environments for Data-Driven Deep Reinforcement Learning in Quantitative Finance. Data-Centric AI Workshop, NeurIPS 2021.
  • Explainable deep reinforcement learning for portfolio management: An empirical approach. paper ACM International Conference on AI in Finance, ICAIF 2021.
  • FinRL-Podracer: High performance and scalable deep reinforcement learning for quantitative finance. ACM International Conference on AI in Finance, ICAIF 2021.
  • FinRL: Deep reinforcement learning framework to automate trading in quantitative finance, ACM International Conference on AI in Finance, ICAIF 2021.
  • FinRL: A deep reinforcement learning library for automated stock trading in quantitative finance, Deep RL Workshop, NeurIPS 2020.
  • Deep reinforcement learning for automated stock trading: An ensemble strategy, paper and codes, ACM International Conference on AI in Finance, ICAIF 2020.
  • Multi-agent reinforcement learning for liquidation strategy analysis, paper and codes. Workshop on Applications and Infrastructure for Multi-Agent Learning, ICML 2019.
  • Practical deep reinforcement learning approach for stock trading, paper and codes, Workshop on Challenges and Opportunities for AI in Financial Services, NeurIPS 2018.

News

Citing FinRL

@article{finrl2020,
    author  = {Liu, Xiao-Yang and Yang, Hongyang and Chen, Qian and Zhang, Runjia and Yang, Liuqing and Xiao, Bowen and Wang, Christina Dan},
    title   = {{FinRL}: A deep reinforcement learning library for automated stock trading in quantitative finance},
    journal = {Deep RL Workshop, NeurIPS 2020},
    year    = {2020}
}
@article{liu2021finrl,
    author  = {Liu, Xiao-Yang and Yang, Hongyang and Gao, Jiechao and Wang, Christina Dan},
    title   = {{FinRL}: Deep reinforcement learning framework to automate trading in quantitative finance},
    journal = {ACM International Conference on AI in Finance (ICAIF)},
    year    = {2021}
}

To Contribute

Welcome to the AI4Finance Foundation community!

Please check Contributing Guidances.

Contributors

Thanks!

Sponsorship

We welcome gift fundings to promote the AI4Finance (non-profit and academic) community. Check the links in the right column, or use the following vemo QR codes.

Detailed sponsorship information will be updated at Issue #425

LICENSE

MIT License

Disclaimer: Nothing herein is financial advice, and NOT a recommendation to trade real money. Please use common sense and always first consult a professional before trading or investing.

finrl's People

Contributors

bruceyanghy avatar yangletliu avatar rayrui312 avatar louisowen6 avatar zhumingpassional avatar xiao000l avatar spencerr1992 avatar athe-kunal avatar everssun avatar youbadawy avatar 16gmcn avatar cryptocoinserver avatar ziyixia avatar geekpineapple avatar yonv1943 avatar csbobby avatar carlogrisetti avatar tekprexyz avatar mariko-sawada avatar wac81 avatar supersglzc avatar fredericcheminel avatar zyzhang1130 avatar forrestneo avatar go2git avatar hyqus avatar szho42 avatar m-colley avatar jackwboynton avatar creedgao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.