/awesome-systematic-trading

A curated list of insanely awesome libraries, packages and resources for systematic trading

Awesome Systematic Trading

or Quantitative Trading

Awesome

Python Java C++ JavaScript Rust Go Jupyter Notebook

A curated list of awesome libraries, packages and resources for Systematic Trading (Quantitative Trading)

How do we pick the projects?

  • Fit in Systematic Trading / Quantitative Trading domain
  • Under active development
  • Good coding style and software architecture
  • (Optional) Reasonable test coverage

Overall, I tend to pick decent or promising libraries that closely related to systematic trading instead of including as many libraries as possible.

Please raise a PR if you found some good fit projects for this repo or remove some outdated projects. Thanks!

Backtest + live trading

General purpose

Event Driven Frameworks

  • aat | Python, C++ | - an asynchronous, event-driven framework for writing algorithmic trading strategies in python with optional acceleration in C++. It is designed to be modular and extensible, with support for a wide variety of instruments and strategies, live trading across (and between) multiple exchanges.
  • backtesting.py | Python | - Backtesting.py is a Python framework for inferring viability of trading strategies on historical (past) data. Improved upon the vision of Backtrader, and by all means surpassingly comparable to other accessible alternatives, Backtesting.py is lightweight, fast, user-friendly, intuitive, interactive, intelligent and, hopefully, future-proof.
  • backtrader | Python | - Event driven Python Backtesting library for trading strategies
  • FinRL | Python | - FinRL is the first open-source framework to demonstrate the great potential of applying deep reinforcement learning in quantitative finance.
  • nautilus_trader | Python, Cython | - A high-performance algorithmic trading platform and event-driven backtester
  • QLib (Microsoft) | Python, Cython | - Qlib is an AI-oriented quantitative investment platform, which aims to realize the potential, empower the research, and create the value of AI technologies in quantitative investment. With Qlib, you can easily try your ideas to create better Quant investment strategies. An increasing number of SOTA Quant research works/papers are released in Qlib.
  • QuantConnect | C#, .NET | - Lean Algorithmic Trading Engine by QuantConnect (Python, C#)
  • QUANTAXIS | Python | - QUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权/港股/虚拟货币 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案
  • Rqalpha | Python | - A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities
  • vnpy | Python, Stock, Futures, Crypto | - Python-based open source quantitative trading system development framework, officially released in January 2015, has grown step by step into a full-featured quantitative trading platform
  • zvt | Python, Stock, Backtest | - Modular quant framework
  • zipline | Python | - Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting.

Vector Based Frameworks

  • bt | Python | - Flexible backtesting for Python based on Algo and Strategy Tree
  • pysystemtrade | Python | - Systematic Trading in python from book by Rob Carver
  • vectorbt | Python, numba | - vectorbt takes a novel approach to backtesting: it operates entirely on pandas and NumPy objects, and is accelerated by Numba to analyze any data at speed and scale. This allows for testing of many thousands of strategies in seconds.

Crypto currency focus

  • Freqtrade | Python | - Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.
  • Hummingbot | Python, Cython | - A client for crypto market making
  • Jesse | Python | - Jesse is an advanced crypto trading framework which aims to simplify researching and defining trading strategies.
  • OctoBot | Python, Cython| - Cryptocurrency trading bot for TA, arbitrage and social trading with an advanced web interface
  • Kelp | Go | - Kelp is a free and open-source trading bot for the Stellar DEX and 100+ centralized exchanges

Basic libraries

Fundamental libraries

  • Cvxpy | Python, C++ | - A Python-embedded modeling language for convex optimization problems.
  • Numpy | Python, C | - The fundamental package for scientific computing with Python
  • Scipy | Python, C | - Fundamental algorithms for scientific computing in Python
  • Pandas | Python, Cython | - Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more
  • Sikit-learn | Python, Cython | - Machine learning in Python
  • Keras | Python | - The most user friendly Deep Learning for humans in Python
  • TensorFlow | Python, C++ | - More low level Deep Learning framework
  • Pytorch | Python | - Tensors and Dynamic neural networks in Python with strong GPU acceleration
  • PyMC | Python | - Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Aesara

Computation Graph

  • Dask | Python | - Parallel computing with task scheduling in Python with a Pandas like API
  • Incremental (JaneStreet) | Ocaml | - Incremental is a library that gives you a way of building complex computations that can update efficiently in response to their inputs changing, inspired by the work of Umut Acar et. al. on self-adjusting computations. Incremental can be useful in a number of applications
  • GraphKit | Python | - A lightweight Python module for creating and running ordered graphs of computations.

Alternative libraries

Numpy Alternatives

  • ndarray | Rust | - ndarray: an N-dimensional array with array views, multidimensional slicing, and efficient operations

Pandas Alternatives

  • Polars | Rust, Python | - Polars is a blazingly fast DataFrames library implemented in Rust using Apache Arrow Columnar Format as memory model.
  • Modin | Python | - Modin: Speed up your Pandas workflows by changing a single line of code
  • Koalas | Python | - Koalas: pandas API on Apache Spark

Analytic tools

Metrics compution

  • ffn | Python | - A financial function library for Python
  • quantstats | Python | - Portfolio analytics for quants, written in Python

Indicators

  • TA-Lib | C | - Perform technical analysis of financial market data
  • finta | Python | - Common financial technical indicators implemented in Pandas
  • pandas-ta | Python | - Pandas Technical Analysis (Pandas TA) is an easy to use library that leverages the Pandas package with more than 130 Indicators and Utility functions and more than 60 TA Lib Candlestick Patterns.

Pricing

  • Quantlib
    • PyQL | Python, Cython | - Python wrapper of the famous pricing library QuantLib
    • QuantLib.jl | Julia | - Quantlib implementation in pure Julia.
  • FinancePy | Python | - A Python Finance Library that focuses on the pricing and risk-management of Financial Derivatives, including fixed-income, equity, FX and credit derivatives.
  • tf-quant-finance - High-performance TensorFlow library for quantitative finance from Google

Risk

  • pyfolio | Python | - Portfolio and risk analytics in Python

Optimization

  • Deepdow | Python | - Python package connecting portfolio optimization and deep learning. Its goal is to facilitate research of networks that perform weight allocation in one forward pass.
  • PyPortfolioOpt | Python | - Financial portfolio optimisation in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity
  • empyrial | Python | - Empyrial is a Python-based open-source quantitative investment library dedicated to financial institutions and retail investors, officially released in March 2021.
  • spectre | Python | - spectre is a GPU-accelerated Parallel quantitative trading library, focused on performance.

TimeSeries Analysis

  • statsmodels - Python module that allows users to explore data, estimate statistical models, and perform statistical tests.
  • tsfresh - Automatic extraction of relevant features from time series.
  • Facebook Prophet - Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.
  • pmdarima - A statistical library designed to fill the void in Python's time series analysis capabilities, including the equivalent of R's auto.arima function.

Visualization

  • D-Tale (Man Group) | JavaScript, Python | - D-Tale is the combination of a Flask back-end and a React front-end to bring you an easy way to view & analyze Pandas data structures.
  • mplfinance | Python | - Financial Markets Data Visualization using Matplotlib

Databases

  • Arctic (Man Group) | Python | - High performance datastore for time series and tick data

Data Source

  • findatapy |Python| - findatapy creates an easy to use Python API to download market data from many sources including Quandl, Bloomberg, Yahoo, Google etc. using a unified high level interface.
  • yfinance |Python| - yfinance offers a threaded and Pythonic way to download market data from Yahoo!Ⓡ finance.
  • pandas-datareader |Python| - Up to date remote data access for pandas, works for multiple versions of pandas.
  • Wallstreet |Python| - Wallstreet: Real time Stock and Option tools
  • TuShare |Python| - TuShare is a utility for crawling historical data of China stocks
  • Investpy - Financial Data Extraction from Investing.com with Python
  • AkShare |Python| - AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库
  • Cryptofeed |Python| - Cryptocurrency Exchange Websocket Data Feed Handler with Asyncio

Resources

Books

Courses

  • Hudson and Thames Quantitative Research - Our mission is to promote the scientific method within investment management by codifying frameworks, algorithms, and best practices.
  • More is coming... (PR welcome)