• Stars
    star
    1,483
  • Rank 31,688 (Top 0.7 %)
  • Language
    HTML
  • License
    MIT License
  • Created almost 3 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of insanely awesome libraries, packages and resources for systematic trading. Crypto, Stock, Futures, Options, CFDs, FX, and more | 量化交易 | 量化投资

Awesome Systematic Trading

or Quantitative Trading + a bit data science infra

Awesome GitHub last commit (branch)

Python Java C++ JavaScript Rust Go Jupyter Notebook

Star History

Star History Chart

希望阅读中文版?点我

Interested in systematic trading? Check QuantBox

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

Open access: all rights granted for use and re-use of any kind, by anyone, at no cost, under your choice of either the free MIT License or Creative Commons CC-BY International Public License.

© 2021 Zhe Wang (知乎 | [email protected])

How do we pick the projects?

  • Fit in Systematic Trading / Quantitative Trading domain
  • Good coding style and software architecture
  • (Optional) Under active development
  • (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!

Search page by languages you are interested in to find related libraries. For example: Ctrl+F, Rust

And I count crypto as whole new category: >> Click ME to Systematic Crypto.

Backtest + live trading

General purpose

Event Driven Frameworks

Note: the one marked as Live Trading has reasonable live trading support for at least 1 broker. Otherwise, backtest function only.

  • aat | Python, C++, Live Trading| - 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.
  • * barter-rs | Rust | - Open-source Rust framework for building event-driven live-trading & backtesting systems. Algorithmic trade with the peace of mind that comes from knowing your strategies have been backtested with a near-identical trading Engine.
  • Better Quant | C++, Live Trading | - Better quant today, best quant tomorrow. 💪
  • Botvana | Rust | - high-performance and event-driven trading system built using Rust
  • backtrader | Python, Live Trading | - Event driven Python Backtesting library for trading strategies
  • 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.
  • FlashFunk | Rust | - High Performance Runtime in Rust
  • gobacktest | Go | - A Go implementation of event-driven backtesting framework
  • Hikyuu | C++, Python| - Hikyuu Quant Framework 基于C++/Python的开源量化交易研究框架
  • lumibot | Python | - A very simple yet useful backtesting and sample based live trading framework (a bit slow to run...)
  • * nautilus_trader | Python, Cython, Rust, Live Trading | - A high-performance algorithmic trading platform and event-driven backtester
  • QuantConnect | C#, .NET, Live Trading | - Lean Algorithmic Trading Engine by QuantConnect (Python, C#)
  • QUANTAXIS | Python, Rust, Live Trading | - QUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权/港股/虚拟货币 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案
  • Rqalpha | Python | - A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities
  • quanttrader | Python | - Backtest and live trading in Python. Event based. Similar to backtesting.py.
  • qf-lib GitHub last commit (branch) | Python | - Modular Python library that provides an advanced event driven backtester and a set of high quality tools for quantitative finance. Integrated with various data vendors and brokers, supports Crypto, Stocks and Futures.
  • sdoosa-algo-trade-python | Python | - This project is mainly for newbies into algo trading who are interested in learning to code their own trading algo using python interpreter.
  • * vnpy | Python, Stock, Futures, Crypto, Live Trading | - 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
  • WonderTrader | C++, Python | - WonderTrader——量化研发交易一站式框架
  • zvt | Python, Stock, Backtest | - Modular quant framework
  • zipline | Python | - Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting.
  • PandoraTrader | C++ | - CTP 高频量化交易平台 C++ Trade Platform for quant developer
  • hftbacktest | Python | - A high-frequency trading and market-making backtesting tool accounts for limit orders, queue positions, and latencies, utilizing full tick data for trades and order books.
  • * bt | Python | - Flexible backtesting for Python based on Algo and Strategy Tree

Vector Based Frameworks

  • pysystemtrade | Python, Live Trading | - Systematic Trading in python from book by Rob Carver
  • finmarketpy | Python | - Python library for backtesting trading strategies & analyzing financial markets (formerly pythalesians)
  • 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.
  • fund-strategy | TypeScript | - 一个简单实用的基金投资策略分析,基金回测工具
  • fastquant | Python | - Backtest and optimize your ML trading strategies with only 3 lines of code

Crypto currency focus

  • triangular-arbitrage2 | TypeScript | - a server side application for perform triangular arbitrage.
  • bTrader | Rust | - Triangle arbitrage trading bot for Binance
  • crypto-crawler-rs | Rust | - Crawl orderbook and trade messages from crypto exchanges
  • cryptotrader-core | Rust | - Simple to use Crypto Exchange REST API client in rust.
  • openlimits | Rust | - A Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers.
  • 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, Live Trading | - 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, Live Trading| - Cryptocurrency trading bot for TA, arbitrage and social trading with an advanced web interface
  • Kelp | Go, Live Trading | - Kelp is a free and open-source trading bot for the Stellar DEX and 100+ centralized exchanges
  • exc | Rust | - The abstraction layer of exchanges.

Machine Learning / Reinforcement Learning Focused

ML, RL

  • FinRL | Python | - FinRL is the first open-source framework to demonstrate the great potential of applying deep reinforcement learning in quantitative finance.
  • * 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.
  • TradingGym | Python, Live Trading | - Trading and Backtesting environment for training reinforcement learning agent or simple rule base algo.
  • Stock Trading Bot using Deep Q-Learning | Python | - Stock Trading Bot using Deep Q-Learning

Alpha Collections

Alpha

Arbitrage (Crypto)

Note: these bots are old and not maintained. I put them here just to show some logic of crypto arbitrage.

  • Blackbird | C++ | - Blackbird Bitcoin Arbitrage: a long/short market-neutral strategy
  • bitcoin-arbitrage | Python | - Bitcoin arbitrage - opportunity detector
  • R2 Bitcoin Arbitrager | TypeScript | - R2 Bitcoin Arbitrager is an automatic arbitrage trading system powered by Node.js + TypeScript.

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
  • Ray | Python, C++ | - An open source framework that provides a simple, universal API for building distributed applications.
  • 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.
  • Man MDF | Python | - Data-flow programming toolkit for Python
  • Tributary | Python | - Streaming reactive and dataflow graphs in Python
  • Hamilton | Python | - A scalable general purpose micro-framework for defining dataflows. You can use it to build dataframes, numpy matrices, python objects, ML models, etc. Embed Hamilton anywhere python runs, e.g. spark, airflow, jupyter, fastapi, python scripts, etc.
  • loman | Python | - Loman is a Python library designed to allow quantitative researchers to control complex live updating calculation processes
  • Anchors - C++ | C++ | - C++ library for incremental computing
  • Anchors - Rust | Rust | - self adjusting computations in rust

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.
  • Vaex | Python, C++ | - Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second
  • 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 computation

  • 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
  • ta-rust | Rust | - Technical analysis library for Rust language
  • 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
  • vollib | Python | - Fundamentally a swig/python wrapper around Peter Jaeckel's lets_be_rational. lets_be_rational focuses exclusively on Black76, while Vollib extends this to add support for Black-Scholes and Black-Scholes-Merton.

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 optimizations in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity
  • Riskfolio-Lib | Python | - Portfolio Optimization and Quantitative Strategic Asset Allocation in Python
  • 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
  • btplotting | Python, bokeh | - btplotting provides plotting for backtests, optimization results and live data from backtrader.

Databases

  • ArcticDB (Man Group) | C++, Python | - ArcticDB is a high performance, serverless DataFrame database built for the Python Data Science ecosystem.
  • Arctic (Man Group) | Python | - High performance datastore for time series and tick data
  • Marketstore | Go | - DataFrame Server for Financial Timeseries Data
  • Tectonicdb | Rust | - Tectonicdb is a fast, highly compressed standalone database and streaming protocol for order book ticks.

Data Source

Stocks and General

  • * OpenBB Terminal | Python | - Investment Research for Everyone, Anywhere.
  • 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! 开源财经数据接口库
  • Fundamental Analysis Data | Python | - Fully-fledged Fundamental Analysis package capable of collecting 20 years of Company Profiles, Financial Statements, Ratios and Stock Data of 20.000+ companies.

Alternative

Crypto

  • Cryptofeed |Python| - Cryptocurrency Exchange Websocket Data Feed Handler with Asyncio

Broker APIs

  • Ib_insync | Python | - Python sync/async framework for Interactive Brokers API
  • PENDAX | JavaScript | - A free Javascript library allowing simplified interaction with trading and data commands on a growing list of cryptocurrency exchanges like FTX, OKX, ByBit, & more.
  • ccxt | Python, JavaScript | - A JavaScript / Python / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchanges
  • Coinnect | Rust | - Coinnect is a Rust library aiming to provide a complete access to main crypto currencies exchanges via REST API.
  • More is coming... (PR welcome)

🔥 Quant Shops Code and Blog

Resources

Books

Blogs

Tutorials

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)

Relevant Projects

More Repositories

1

zhuan-ma

转码路线图 - 这不是计算机自学指南,这也不是Leetcode刷题指南,这是你的转码指南。用最少的课建立计算机框架、掌握转码面试基本技能。全部跟下来大概需要 200 小时, 即 3 - 4 个月时间。
HTML
109
star
2

books

A booklist of : Computer Science | Machine Learning | Math | Systematic Trading | Economics. Format: pdf
41
star
3

systematic-trading-knowledge-collection

Collect knowledge around systematic trading, including software design, trading strategies, statistical skill. 量化交易/系统化交易知识集
Python
29
star
4

pyca

A more general Python Cellular Automata with multi-dimensions and multi-cell type mix
Python
24
star
5

Python-zhifou

Python知否
Python
17
star
6

chanlun

Chanlun
Python
17
star
7

quant-roadmap

进入矿工(Quant)世界的路线图
HTML
11
star
8

rust-learning

Rust学习之路
10
star
9

cs3110

CS3110 Spring 2018 Lab solutions
OCaml
7
star
10

bitcoin-pro

Bitcoin Pro - 比特币网络普及、教育平台
HTML
5
star
11

wangzhe3224.github.io

https://wangzhe3224.github.io/
JavaScript
5
star
12

DRY

Do Repeat Yourself, DRY, code as a skill
Python
4
star
13

react-todo

React-Redux-Saga-*?晕了?一篇文章弄懂的实战指南!的相关代码。
JavaScript
4
star
14

wangzhe3224

4
star
15

pygraph

Python lib to interact with graphs
Python
3
star
16

tidalcycles_tips

TidalCycles Tips and exercise
Python
3
star
17

zhihu-hotlist

知乎热榜
HTML
2
star
18

pysound

Python and sounds!
Jupyter Notebook
2
star
19

python-recipes-300-second

python 速食 300秒
Jupyter Notebook
2
star
20

wangzhe3224.github.io.backup

my Blog
JavaScript
2
star
21

pic_repo

我的博客图床
2
star
22

second_brain

2
star
23

zhihu_artical

我的知乎文章仓库
Python
1
star
24

high_performance_python

Heigh Performance Python
Python
1
star
25

sicp_but_clojure

SICP in clojure with example and exercise
Jupyter Notebook
1
star
26

leetcode_py

Leetcode 归纳刷题
Python
1
star
27

shooting

shooting method for rod model under nonlinear pipe soil interactions
Fortran
1
star
28

python_project_template

Python
1
star
29

giveme

Give me what I want: gitignore and more....
Python
1
star
30

DataStructure_Algorithm_cpp

C++
1
star
31

PrimerCxxPlusAnswers

Answers to the book Primer C++ Plues
C++
1
star
32

rust-in-action

Rust in Action 的练习题 + 注释 + 心得
Rust
1
star
33

cxxPrimer5th

C++
1
star