main 1ce1eb2b7752 cached
66 files
519.8 KB
136.3k tokens
625 symbols
1 requests
Download .txt
Showing preview only (546K chars total). Download the full file or copy to clipboard to get everything.
Repository: paperswithbacktest/awesome-systematic-trading
Branch: main
Commit: 1ce1eb2b7752
Files: 66
Total size: 519.8 KB

Directory structure:
gitextract_ocdq6ygj/

├── .gitignore
├── .vscode/
│   ├── launch.json
│   └── settings.json
├── README.md
├── README_zh.md
└── static/
    └── strategies/
        ├── 12-month-cycle-in-cross-section-of-stocks-returns.py
        ├── 52-weeks-high-effect-in-stocks.py
        ├── accrual-anomaly.py
        ├── asset-class-momentum-rotational-system.py
        ├── asset-class-trend-following.py
        ├── asset-growth-effect.py
        ├── betting-against-beta-factor-in-country-equity-indexes.py
        ├── betting-against-beta-factor-in-stocks.py
        ├── combining-fundamental-fscore-and-equity-short-term-reversals.py
        ├── combining-smart-factors-momentum-and-market-portfolio.py
        ├── consistent-momentum-strategy.py
        ├── crude-oil-predicts-equity-returns.py
        ├── currency-momentum-factor.py
        ├── currency-value-factor-ppp-strategy.py
        ├── dispersion-trading.py
        ├── dollar-carry-trade.py
        ├── earnings-announcement-premium.py
        ├── earnings-announcements-combined-with-stock-repurchases.py
        ├── earnings-quality-factor.py
        ├── esg-factor-momentum-strategy.py
        ├── fed-model.py
        ├── fx-carry-trade.py
        ├── how-to-use-lexical-density-of-company-filings.py
        ├── intraday-seasonality-in-bitcoin.py
        ├── january-barometer.py
        ├── low-volatility-factor-effect-in-stocks.py
        ├── market-sentiment-and-an-overnight-anomaly.py
        ├── momentum-and-reversal-combined-with-volatility-effect-in-stocks.py
        ├── momentum-effect-in-commodities.py
        ├── momentum-factor-and-style-rotation-effect.py
        ├── momentum-factor-combined-with-asset-growth-effect.py
        ├── momentum-factor-effect-in-stocks.py
        ├── momentum-in-mutual-fund-returns.py
        ├── option-expiration-week-effect.py
        ├── paired-switching.py
        ├── pairs-trading-with-country-etfs.py
        ├── pairs-trading-with-stocks
        ├── payday-anomaly.py
        ├── rd-expenditures-and-stock-returns.py
        ├── rebalancing-premium-in-cryptocurrencies.py
        ├── residual-momentum-factor.py
        ├── return-asymmetry-effect-in-commodity-futures.py
        ├── reversal-during-earnings-announcements.py
        ├── roa-effect-within-stocks.py
        ├── sector-momentum-rotational-system.py
        ├── short-interest-effect-long-short-version.py
        ├── short-term-reversal-in-stocks.py
        ├── short-term-reversal-with-futures.py
        ├── skewness-effect-in-commodities.py
        ├── small-capitalization-stocks-premium-anomaly.py
        ├── soccer-clubs-stocks-arbitrage.py
        ├── synthetic-lending-rates-predict-subsequent-market-return.py
        ├── term-structure-effect-in-commodities.py
        ├── time-series-momentum-effect.py
        ├── trading-wti-brent-spread.py
        ├── trend-following-effect-in-stocks.py
        ├── turn-of-the-month-in-equity-indexes.py
        ├── value-and-momentum-factors-across-asset-classes.py
        ├── value-book-to-market-factor.py
        ├── value-factor-effect-within-countries.py
        └── volatility-risk-premium-effect.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.DS_Store

================================================
FILE: .vscode/launch.json
================================================
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Current file",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "args": [],
            "console": "integratedTerminal",
            "python": "${env:HOME}/miniconda3/bin/python",
            "justMyCode": false
        }
    ]
}

================================================
FILE: .vscode/settings.json
================================================
{
    "editor.formatOnSave": true,
    "python.defaultInterpreterPath": "${env:HOME}/miniconda3/bin/python",
}

================================================
FILE: README.md
================================================
<div align="center">
  <img src="static/images/awesome-systematic-trading.jpeg" height=200 alt=""/>
  <h1>Awesome Systematic Trading</h1>
</div>
<div align=center><img src="https://awesome.re/badge.svg" /></div>

[希望阅读中文版?点我](./README_zh.md)

We are collecting a list of resources papers, softwares, books, articles for finding, developing, and running systematic trading (quantitative trading) strategies.

<!-- omit in toc -->
### What will you find here?

- [97 libraries and packages](#libraries-and-packages) for research and live trading
- [40+ strategies](#strategies) described by institutionals and academics
- [55 books](#books) for beginners and professionals
- [23 videos](#videos) and interviews
- And also some [blogs](#blogs) and [courses](#courses)

<div align="center" style="margin-bottom: 50px; margin-top: 50px;">
  <div style="border: 2px solid #007bff; border-radius: 10px; padding: 20px; margin-bottom: 20px;">
    <h2>📈 Interested in trading strategies implemented in Python?</h2>
    <p>Visit our comprehensive collection at <a href="https://paperswithbacktest.com" target="_blank">paperswithbacktest.com</a> for exclusive content!</p>
  </div>
</div>


<details>
<summary>Click here to see the full table of content</summary>

- [Libraries and packages](#libraries-and-packages)
  - [Backtesting and Live Trading](#backtesting-and-live-trading)
    - [General - Event Driven Frameworks](#general---event-driven-frameworks)
    - [General - Vector Based Frameworks](#general---vector-based-frameworks)
    - [Cryptocurrencies](#cryptocurrencies)
  - [Trading bots](#trading-bots)
  - [Analytics](#analytics)
    - [Indicators](#indicators)
    - [Metrics computation](#metrics-computation)
    - [Optimization](#optimization)
    - [Pricing](#pricing)
    - [Risk](#risk)
  - [Broker APIs](#broker-apis)
  - [Data Sources](#data-sources)
    - [General](#general)
    - [Cryptocurrencies](#cryptocurrencies-1)
  - [Data Science](#data-science)
  - [Databases](#databases)
  - [Graph Computation](#graph-computation)
  - [Machine Learning](#machine-learning)
  - [TimeSeries Analysis](#timeseries-analysis)
  - [Visualization](#visualization)
- [Strategies](#strategies)
  - [Bonds, commodities, currencies, equities](#bonds-commodities-currencies-equities)
  - [Bonds, commodities, equities, REITs](#bonds-commodities-equities-reits)
  - [Bonds, equities](#bonds-equities)
  - [Bonds, equities, REITs](#bonds-equities-reits)
  - [Commodities](#commodities)
  - [Cryptos](#cryptos)
  - [Currencies](#currencies)
  - [Equities](#equities)
- [Books](#books)
  - [Beginner](#beginner)
  - [Biography](#biography)
  - [Coding](#coding)
  - [Crypto](#crypto)
  - [General](#general-1)
  - [High Frequency Trading](#high-frequency-trading)
  - [Machine Learning](#machine-learning-1)
- [Videos](#videos)
- [Blogs](#blogs)
- [Courses](#courses)
</details>

<!-- omit in toc -->
> ### How can I help?
> You can help by submitting an issue with suggestions and by sharing on Twitter:
>
> [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=A%20free%20and%20comprehensive%20list%20of%20papers%2C%20libraries%2C%20books%2C%20blogs%2C%20tutorials%20for%20quantitative%20traders.&url=https://github.com/paperswithbacktest/awesome-systematic-trading)


# Libraries and packages

*List of **97 libraries and packages** implementing trading bots, backtesters, indicators, pricers, etc. Each library is categorized by its programming language and ordered by descending populatrity (number of stars).*


## Backtesting and Live Trading

### General - Event Driven Frameworks


| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [vnpy](https://github.com/vnpy/vnpy) | 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 | ![GitHub stars](https://badgen.net/github/stars/vnpy/vnpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [zipline](https://github.com/quantopian/zipline) | Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. | ![GitHub stars](https://badgen.net/github/stars/quantopian/zipline) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [backtrader](https://github.com/mementum/backtrader) | Event driven Python Backtesting library for trading strategies | ![GitHub stars](https://badgen.net/github/stars/mementum/backtrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [QUANTAXIS](https://github.com/QUANTAXIS/QUANTAXIS) | QUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权/港股/虚拟货币 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案 | ![GitHub stars](https://badgen.net/github/stars/QUANTAXIS/QUANTAXIS) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [QuantConnect](https://github.com/QuantConnect/Lean) | Lean Algorithmic Trading Engine by QuantConnect (Python, C#) | ![GitHub stars](https://badgen.net/github/stars/QuantConnect/Lean) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Rqalpha](https://github.com/ricequant/rqalpha) | A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities | ![GitHub stars](https://badgen.net/github/stars/ricequant/rqalpha) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [finmarketpy](https://github.com/cuemacro/finmarketpy) | Python library for backtesting trading strategies & analyzing financial markets (formerly pythalesians) | ![GitHub stars](https://badgen.net/github/stars/cuemacro/finmarketpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [backtesting.py](https://github.com/kernc/backtesting.py) | 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. | ![GitHub stars](https://badgen.net/github/stars/kernc/backtesting.py) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [zvt](https://github.com/zvtvz/zvt) | Modular quant framework | ![GitHub stars](https://badgen.net/github/stars/zvtvz/zvt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [WonderTrader](https://github.com/wondertrader/wondertrader) | WonderTrader——量化研发交易一站式框架  | ![GitHub stars](https://badgen.net/github/stars/wondertrader/wondertrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [nautilus_trader](https://github.com/nautechsystems/nautilus_trader) | A high-performance algorithmic trading platform and event-driven backtester | ![GitHub stars](https://badgen.net/github/stars/nautechsystems/nautilus_trader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PandoraTrader](https://github.com/pegasusTrader/PandoraTrader) | High-frequency quantitative trading platform based on c++ development, supporting multiple trading APIs and cross-platform | ![GitHub stars](https://badgen.net/github/stars/pegasusTrader/PandoraTrader) | ![made-with-c++](https://img.shields.io/badge/Made%20with-c++-1f425f.svg) |
| [HFTBacktest](https://github.com/nkaz001/hftbacktest) | Highly precise backtest on HFT data in Python+Numba | ![GitHub stars](https://badgen.net/github/stars/nkaz001/hftbacktest) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [aat](https://github.com/AsyncAlgoTrading/aat) | 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. | ![GitHub stars](https://badgen.net/github/stars/AsyncAlgoTrading/aat) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [sdoosa-algo-trade-python](https://github.com/sreenivasdoosa/sdoosa-algo-trade-python) | This project is mainly for newbies into algo trading who are interested in learning to code their own trading algo using python interpreter. | ![GitHub stars](https://badgen.net/github/stars/sreenivasdoosa/sdoosa-algo-trade-python) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [lumibot](https://github.com/Lumiwealth/lumibot) | A very simple yet useful backtesting and sample based live trading framework (a bit slow to run...) | ![GitHub stars](https://badgen.net/github/stars/Lumiwealth/lumibot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [quanttrader](https://github.com/letianzj/quanttrader) | Backtest and live trading in Python. Event based. Similar to backtesting.py. | ![GitHub stars](https://badgen.net/github/stars/letianzj/quanttrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [gobacktest](https://github.com/gobacktest/gobacktest) | A Go implementation of event-driven backtesting framework | ![GitHub stars](https://badgen.net/github/stars/gobacktest/gobacktest) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [FlashFunk](https://github.com/HFQR/FlashFunk) | High Performance Runtime in Rust | ![GitHub stars](https://badgen.net/github/stars/HFQR/FlashFunk) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |


### General - Vector Based Frameworks

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [vectorbt](https://github.com/polakowo/vectorbt) | 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. | ![GitHub stars](https://badgen.net/github/stars/polakowo/vectorbt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pysystemtrade](https://github.com/robcarver17/pysystemtrade) | Systematic Trading in python from book Systematic Trading by Rob Carver | ![GitHub stars](https://badgen.net/github/stars/robcarver17/pysystemtrade) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [bt](https://github.com/pmorissette/bt) | Flexible backtesting for Python based on Algo and Strategy Tree | ![GitHub stars](https://badgen.net/github/stars/pmorissette/bt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


### Cryptocurrencies

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Freqtrade](https://github.com/freqtrade/freqtrade) | 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. | ![GitHub stars](https://badgen.net/github/stars/freqtrade/freqtrade) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Jesse](https://github.com/jesse-ai/jesse) | Jesse is an advanced crypto trading framework which aims to simplify researching and defining trading strategies. | ![GitHub stars](https://badgen.net/github/stars/jesse-ai/jesse) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [OctoBot](https://github.com/Drakkar-Software/OctoBot) | Cryptocurrency trading bot for TA, arbitrage and social trading with an advanced web interface | ![GitHub stars](https://badgen.net/github/stars/Drakkar-Software/OctoBot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Kelp](https://github.com/stellar/kelp) | Kelp is a free and open-source trading bot for the Stellar DEX and 100+ centralized exchanges | ![GitHub stars](https://badgen.net/github/stars/stellar/kelp) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [openlimits](https://github.com/nash-io/openlimits) | A Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers. | ![GitHub stars](https://badgen.net/github/stars/nash-io/openlimits) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [bTrader](https://github.com/gabriel-milan/btrader) | Triangle arbitrage trading bot for Binance | ![GitHub stars](https://badgen.net/github/stars/gabriel-milan/btrader) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [crypto-crawler-rs](https://github.com/crypto-crawler/crypto-crawler-rs) | Crawl orderbook and trade messages from crypto exchanges | ![GitHub stars](https://badgen.net/github/stars/crypto-crawler/crypto-crawler-rs) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [Hummingbot](https://github.com/CoinAlpha/hummingbot) | A client for crypto market making | ![GitHub stars](https://badgen.net/github/stars/CoinAlpha/hummingbot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [cryptotrader-core](https://github.com/monomadic/cryptotrader-core) | Simple to use Crypto Exchange REST API client in rust. | ![GitHub stars](https://badgen.net/github/stars/monomadic/cryptotrader-core) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |

## Trading bots

*Trading bots and alpha models. Some of them are old and not maintained.*

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Blackbird](https://github.com/butor/blackbird) | Blackbird Bitcoin Arbitrage: a long/short market-neutral strategy | ![GitHub stars](https://badgen.net/github/stars/butor/blackbird) | ![made-with-c++](https://img.shields.io/badge/Made%20with-c++-1f425f.svg) |
| [bitcoin-arbitrage](https://github.com/maxme/bitcoin-arbitrage) | Bitcoin arbitrage - opportunity detector | ![GitHub stars](https://badgen.net/github/stars/maxme/bitcoin-arbitrage) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ThetaGang](https://github.com/brndnmtthws/thetagang) | ThetaGang is an IBKR bot for collecting money | ![GitHub stars](https://badgen.net/github/stars/brndnmtthws/thetagang) | ![made-with-typescript](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [czsc](https://github.com/waditu/czsc) | 缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易 | ![GitHub stars](https://badgen.net/github/stars/waditu/czsc) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [R2 Bitcoin Arbitrager](https://github.com/bitrinjani/r2) | R2 Bitcoin Arbitrager is an automatic arbitrage trading system powered by Node.js + TypeScript | ![GitHub stars](https://badgen.net/github/stars/bitrinjani/r2) | ![made-with-typescript](https://img.shields.io/badge/Made%20with-TypeScript-1f425f.svg) |
| [analyzingalpha](https://github.com/leosmigel/analyzingalpha) | Implementation of simple strategies | ![GitHub stars](https://badgen.net/github/stars/leosmigel/analyzingalpha) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyTrendFollow](https://github.com/chrism2671/PyTrendFollow) | PyTrendFollow - systematic futures trading using trend following | ![GitHub stars](https://badgen.net/github/stars/chrism2671/PyTrendFollow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

## Analytics

### Indicators

*Libraries of indicators to predict future price movements.*

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [ta-lib](https://github.com/mrjbq7/ta-lib) | Perform technical analysis of financial market data | ![GitHub stars](https://badgen.net/github/stars/mrjbq7/ta-lib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [go-tart](https://github.com/iamjinlei/go-tart) | A Go implementation of the [ta-lib]((https://github.com/mrjbq7/ta-lib) with streaming update support | ![GitHub stars](https://badgen.net/github/stars/iamjinlei/go-tart) | ![made-with-go](https://img.shields.io/badge/Made%20with-go-1f425f.svg) |
| [pandas-ta](https://github.com/twopirllc/pandas-ta) | 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 | ![GitHub stars](https://badgen.net/github/stars/twopirllc/pandas-ta) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [finta](https://github.com/peerchemist/finta) | Common financial technical indicators implemented in Pandas | ![GitHub stars](https://badgen.net/github/stars/peerchemist/finta) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ta-rust](https://github.com/greyblake/ta-rs) | Technical analysis library for Rust language | ![GitHub stars](https://badgen.net/github/stars/greyblake/ta-rs) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |

### Metrics computation

*Librairies of financial metrics.*

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [quantstats](https://github.com/ranaroussi/quantstats) | Portfolio analytics for quants, written in Python | ![GitHub stars](https://badgen.net/github/stars/ranaroussi/quantstats) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ffn](https://github.com/pmorissette/ffn) | A financial function library for Python | ![GitHub stars](https://badgen.net/github/stars/pmorissette/ffn) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### Optimization

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [PyPortfolioOpt](https://github.com/robertmartin8/PyPortfolioOpt) | Financial portfolio optimizations in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity | ![GitHub stars](https://badgen.net/github/stars/robertmartin8/PyPortfolioOpt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Riskfolio-Lib](https://github.com/dcajasn/Riskfolio-Lib) | Portfolio Optimization and Quantitative Strategic Asset Allocation in Python | ![GitHub stars](https://badgen.net/github/stars/dcajasn/Riskfolio-Lib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [empyrial](https://github.com/ssantoshp/Empyrial) | Empyrial is a Python-based open-source quantitative investment library dedicated to financial institutions and retail investors, officially released in March 2021 | ![GitHub stars](https://badgen.net/github/stars/ssantoshp/Empyrial) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Deepdow](https://github.com/jankrepl/deepdow) | Python package connecting portfolio optimization and deep learning. Its goal is to facilitate research of networks that perform weight allocation in one forward pass. | ![GitHub stars](https://badgen.net/github/stars/jankrepl/deepdow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [spectre](https://github.com/Heerozh/spectre) | Portfolio Optimization and Quantitative Strategic Asset Allocation in Python | ![GitHub stars](https://badgen.net/github/stars/Heerozh/spectre) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### Pricing

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [tf-quant-finance](https://github.com/google/tf-quant-finance) | High-performance TensorFlow library for quantitative finance from Google | ![GitHub stars](https://badgen.net/github/stars/google/tf-quant-finance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [FinancePy](https://github.com/domokane/FinancePy) | A Python Finance Library that focuses on the pricing and risk-management of Financial Derivatives, including fixed-income, equity, FX and credit derivatives | ![GitHub stars](https://badgen.net/github/stars/domokane/FinancePy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyQL](https://github.com/enthought/pyql) | Python wrapper of the famous pricing library QuantLib | ![GitHub stars](https://badgen.net/github/stars/enthought/pyql) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### Risk

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [pyfolio](https://github.com/quantopian/pyfolio) | Portfolio and risk analytics in Python | ![GitHub stars](https://badgen.net/github/stars/quantopian/pyfolio) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |



## Broker APIs

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [ccxt](https://github.com/ccxt/ccxt) | A JavaScript / Python / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchanges | ![GitHub stars](https://badgen.net/github/stars/ccxt/ccxt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Ib_insync](https://github.com/erdewit/ib_insync) | Python sync/async framework for Interactive Brokers. | ![GitHub stars](https://badgen.net/github/stars/erdewit/ib_insync) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Coinnect](https://github.com/hugues31/coinnect) | Coinnect is a Rust library aiming to provide a complete access to main crypto currencies exchanges via REST API. | ![GitHub stars](https://badgen.net/github/stars/hugues31/coinnect) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [PENDAX](https://github.com/CompendiumFi/PENDAX-SDK) | Javascript SDK for Trading, Data, and Websockets for FTX, FTXUS, OKX, Bybit, & More. | ![GitHub stars](https://badgen.net/github/stars/CompendiumFi/PENDAX-SDK) | ![made-with-javascript](https://img.shields.io/badge/Made%20with-Javascript-1f425f.svg) |


## Data Sources

### General

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [OpenBB Terminal](https://github.com/OpenBB-finance/OpenBBTerminal) | Investment Research for Everyone, Anywhere. | ![GitHub stars](https://badgen.net/github/stars/OpenBB-finance/OpenBBTerminal) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [TuShare](https://github.com/waditu/tushare) | TuShare is a utility for crawling historical data of China stocks | ![GitHub stars](https://badgen.net/github/stars/waditu/tushare) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [yfinance](https://github.com/ranaroussi/yfinance) | yfinance offers a threaded and Pythonic way to download market data from Yahoo!Ⓡ finance. | ![GitHub stars](https://badgen.net/github/stars/ranaroussi/yfinance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [AkShare](https://github.com/akfamily/akshare) | AKShare is an elegant and simple financial data interface library for Python, built for human beings! | ![GitHub stars](https://badgen.net/github/stars/akfamily/akshare) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pandas-datareader](https://github.com/pydata/pandas-datareader) | Up to date remote data access for pandas, works for multiple versions of pandas. | ![GitHub stars](https://badgen.net/github/stars/pydata/pandas-datareader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Quandl](https://github.com/quandl/quandl-python) | Get millions of financial and economic dataset from hundreds of publishers via a single free API. | ![GitHub stars](https://badgen.net/github/stars/quandl/quandl-python) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [findatapy](https://github.com/cuemacro/findatapy) | 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. | ![GitHub stars](https://badgen.net/github/stars/cuemacro/findatapy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Investpy](https://github.com/alvarobartt/investpy) | Financial Data Extraction from Investing.com with Python | ![GitHub stars](https://badgen.net/github/stars/alvarobartt/investpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Fundamental Analysis Data](https://github.com/JerBouma/FundamentalAnalysis) | Fully-fledged Fundamental Analysis package capable of collecting 20 years of Company Profiles, Financial Statements, Ratios and Stock Data of 20.000+ companies. | ![GitHub stars](https://badgen.net/github/stars/JerBouma/FundamentalAnalysis) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Wallstreet](https://github.com/mcdallas/wallstreet) | Wallstreet: Real time Stock and Option tools | ![GitHub stars](https://badgen.net/github/stars/mcdallas/wallstreet) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


### Cryptocurrencies

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Cryptofeed](https://github.com/bmoscon/cryptofeed) | Cryptocurrency Exchange Websocket Data Feed Handler with Asyncio | ![GitHub stars](https://badgen.net/github/stars/bmoscon/cryptofeed) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Gekko-Datasets](https://github.com/xFFFFF/Gekko-Datasets) | Gekko trading bot dataset dumps. Download and use history files in SQLite format. | ![GitHub stars](https://badgen.net/github/stars/xFFFFF/Gekko-Datasets) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [CryptoInscriber](https://github.com/Optixal/CryptoInscriber) | A live crypto currency historical trade data blotter. Download live historical trade data from any crypto exchange. | ![GitHub stars](https://badgen.net/github/stars/Optixal/CryptoInscriber) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Crypto Lake](https://github.com/crypto-lake/lake-api) | High frequency order book & trade data for crypto | ![GitHub stars](https://badgen.net/github/stars/crypto-lake/lake-api) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## Data Science

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [TensorFlow](https://github.com/tensorflow/tensorflow) | Fundamental algorithms for scientific computing in Python | ![GitHub stars](https://badgen.net/github/stars/tensorflow/tensorflow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Pytorch](https://github.com/pytorch/pytorch) | Tensors and Dynamic neural networks in Python with strong GPU acceleration | ![GitHub stars](https://badgen.net/github/stars/pytorch/pytorch) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Keras](https://github.com/keras-team/keras) | The most user friendly Deep Learning for humans in Python | ![GitHub stars](https://badgen.net/github/stars/keras-team/keras) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Scikit-learn](https://github.com/scikit-learn/scikit-learn) | Machine learning in Python | ![GitHub stars](https://badgen.net/github/stars/scikit-learn/scikit-learn) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Pandas](https://github.com/pandas-dev/pandas) | Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more | ![GitHub stars](https://badgen.net/github/stars/pandas-dev/pandas) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Numpy](https://github.com/numpy/numpy) | The fundamental package for scientific computing with Python | ![GitHub stars](https://badgen.net/github/stars/numpy/numpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Scipy](https://github.com/scipy/scipy) | Fundamental algorithms for scientific computing in Python | ![GitHub stars](https://badgen.net/github/stars/scipy/scipy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyMC](https://github.com/pymc-devs/pymc) | Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Aesara | ![GitHub stars](https://badgen.net/github/stars/pymc-devs/pymc) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Cvxpy](https://github.com/cvxpy/cvxpy) | A Python-embedded modeling language for convex optimization problems. | ![GitHub stars](https://badgen.net/github/stars/cvxpy/cvxpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## Databases

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Marketstore](https://github.com/alpacahq/marketstore) | DataFrame Server for Financial Timeseries Data | ![GitHub stars](https://badgen.net/github/stars/alpacahq/marketstore) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [Tectonicdb](https://github.com/0b01/tectonicdb) | Tectonicdb is a fast, highly compressed standalone database and streaming protocol for order book ticks. | ![GitHub stars](https://badgen.net/github/stars/0b01/tectonicdb) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [ArcticDB (Man Group)](https://github.com/man-group/arcticdb) | High performance datastore for time series and tick data | ![GitHub stars](https://badgen.net/github/stars/man-group/ArcticDB) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

## Graph Computation

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Ray](https://github.com/ray-project/ray) | An open source framework that provides a simple, universal API for building distributed applications. | ![GitHub stars](https://badgen.net/github/stars/ray-project/ray) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Dask](https://github.com/dask/dask) | Parallel computing with task scheduling in Python with a Pandas like API | ![GitHub stars](https://badgen.net/github/stars/dask/dask) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Incremental (JaneStreet)](https://github.com/janestreet/incremental) | 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 | ![GitHub stars](https://badgen.net/github/stars/janestreet/incremental) | ![made-with-ocaml](https://img.shields.io/badge/Made%20with-Ocaml-1f425f.svg) |
| [Man MDF](https://github.com/man-group/mdf) | Data-flow programming toolkit for Python | ![GitHub stars](https://badgen.net/github/stars/man-group/mdf) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [GraphKit](https://github.com/yahoo/graphkit) | A lightweight Python module for creating and running ordered graphs of computations. | ![GitHub stars](https://badgen.net/github/stars/yahoo/graphkit) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Tributary](https://github.com/timkpaine/tributary) | Streaming reactive and dataflow graphs in Python | ![GitHub stars](https://badgen.net/github/stars/timkpaine/tributary) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## Machine Learning

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [QLib (Microsoft)](https://github.com/microsoft/qlib) | 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. | ![GitHub stars](https://badgen.net/github/stars/microsoft/qlib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [FinRL](https://github.com/AI4Finance-Foundation/FinRL) | FinRL is the first open-source framework to demonstrate the great potential of applying deep reinforcement learning in quantitative finance. | ![GitHub stars](https://badgen.net/github/stars/AI4Finance-Foundation/FinRL) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [MlFinLab (Hudson & Thames)](https://github.com/hudson-and-thames/mlfinlab) | MlFinLab helps portfolio managers and traders who want to leverage the power of machine learning by providing reproducible, interpretable, and easy to use tools. | ![GitHub stars](https://badgen.net/github/stars/hudson-and-thames/mlfinlab) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [TradingGym](https://github.com/Yvictor/TradingGym) | Trading and Backtesting environment for training reinforcement learning agent or simple rule base algo. | ![GitHub stars](https://badgen.net/github/stars/Yvictor/TradingGym) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Stock Trading Bot using Deep Q-Learning](https://github.com/pskrunner14/trading-bot) | Stock Trading Bot using Deep Q-Learning | ![GitHub stars](https://badgen.net/github/stars/pskrunner14/trading-bot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## TimeSeries Analysis

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [Facebook Prophet](https://github.com/facebook/prophet) | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. | ![GitHub stars](https://badgen.net/github/stars/facebook/prophet) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [statsmodels](https://github.com/statsmodels/statsmodels) | Python module that allows users to explore data, estimate statistical models, and perform statistical tests. | ![GitHub stars](https://badgen.net/github/stars/statsmodels/statsmodels) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [tsfresh](https://github.com/blue-yonder/tsfresh) | Automatic extraction of relevant features from time series. | ![GitHub stars](https://badgen.net/github/stars/blue-yonder/tsfresh) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pmdarima](https://github.com/alkaline-ml/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. | ![GitHub stars](https://badgen.net/github/stars/alkaline-ml/pmdarima) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## Visualization

| Repository | Description | Stars | Made with |
|------------|-------------|-------|-----------|
| [D-Tale (Man Group)](https://github.com/man-group/dtale) | 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. | ![GitHub stars](https://badgen.net/github/stars/man-group/dtale) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [mplfinance](https://github.com/matplotlib/mplfinance) | Financial Markets Data Visualization using Matplotlib | ![GitHub stars](https://badgen.net/github/stars/matplotlib/mplfinance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [btplotting](https://github.com/happydasch/btplotting) | btplotting provides plotting for backtests, optimization results and live data from backtrader. | ![GitHub stars](https://badgen.net/github/stars/happydasch/btplotting) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


# Strategies

*List of **40+ academic papers** describing original systematic trading strategies. Each strategy is categorized by its asset class and ordered by descending Sharpe ratio.*

👉 Strategies are now hosted [here](https://paperswithbacktest.com).


Previous list of strategies:

## Bonds, commodities, currencies, equities

| Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|-------------|--------------|------------|-------------|----------------|--------|
| Time Series Momentum Effect | `0.576` | `20.5%` | `Monthly` | [QuantConnect](./static/strategies/time-series-momentum-effect.py) | [Paper](https://pages.stern.nyu.edu/~lpederse/papers/TimeSeriesMomentum.pdf) |
| Short Term Reversal with Futures | `-0.05` | `12.3%` | `Weekly` | [QuantConnect](./static/strategies/asset-class-momentum-rotational-system.py) | [Paper](https://ideas.repec.org/a/eee/jbfina/v28y2004i6p1337-1361.html) |

## Bonds, commodities, equities, REITs

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Asset Class Trend-Following | `0.502` | `10.4%` | `Monthly` | [QuantConnect](./static/strategies/asset-class-trend-following.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=962461) |
| Momentum Asset Allocation Strategy | `0.321` | `11%` | `Monthly` | [QuantConnect](./static/strategies/asset-class-trend-following.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1585517) |

## Bonds, equities

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Paired Switching | `0.691` | `9.5%` | `Quarterly` | [QuantConnect](./static/strategies/paired-switching.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1917044) |
| FED Model | `0.369` | `14.3%` | `Monthly` | [QuantConnect](./static/strategies/fed-model.py) | [Paper](https://www.researchgate.net/publication/228267011_The_FED_Model_and_Expected_Asset_Returns) |

## Bonds, equities, REITs

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Value and Momentum Factors across Asset Classes | `0.155` | `9.8%` | `Monthly` | [QuantConnect](./static/strategies/value-and-momentum-factors-across-asset-classes.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1079975) |

## Commodities

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Skewness Effect in Commodities | `0.482` | `17.7%` | `Monthly` | [QuantConnect](./static/strategies/skewness-effect-in-commodities.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2671165) |
| Return Asymmetry Effect in Commodity Futures | `0.239` | `13.4%` | `Monthly` | [QuantConnect](./static/strategies/return-asymmetry-effect-in-commodity-futures.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3918896) |
| Momentum Effect in Commodities | `0.14` | `20.3%` | `Monthly` | [QuantConnect](./static/strategies/momentum-effect-in-commodities.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=702281) |
| Term Structure Effect in Commodities | `0.128` | `23.1%` | `Monthly` | [QuantConnect](./static/strategies/term-structure-effect-in-commodities.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1127213) |
| Trading WTI/BRENT Spread | `-0.199` | `11.6%` | `Daily` | [QuantConnect](./static/strategies/trading-wti-brent-spread.py) | [Paper](https://link.springer.com/article/10.1057/jdhf.2009.24) |

## Cryptos

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Overnight Seasonality in Bitcoin | `0.892` | `20.8%` | `Intraday` | [QuantConnect](./static/strategies/intraday-seasonality-in-bitcoin.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4081000) |
| Rebalancing Premium in Cryptocurrencies | `0.698` | `27.5%` | `Daily` | [QuantConnect](./static/strategies/rebalancing-premium-in-cryptocurrencies.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3982120) |

## Currencies

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| FX Carry Trade | `0.254` | `7.8%` | `Monthly` | [QuantConnect](./static/strategies/fx-carry-trade.py) | [Paper](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |
| Dollar Carry Trade | `0.113` | `5.8%` | `Monthly` | [QuantConnect](./static/strategies/dollar-carry-trade.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1541230) |
| Currency Momentum Factor | `-0.01` | `6.7%` | `Monthly` | [QuantConnect](./static/strategies/currency-momentum-factor.py) | [Paper](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |
| Currency Value Factor – PPP Strategy | `-0.103` | `5%` | `Quarterly` | [QuantConnect](./static/strategies/currency-value-factor-ppp-strategy.py) | [Paper](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |

## Equities

|  Title       | Sharpe Ratio | Volatility | Rebalancing | Implementation | Source |
|--------------|--------------|------------|-------------|----------------|--------|
| Asset Growth Effect | `0.835` | `10.2%` | `Yearly` | [QuantConnect](./static/strategies/asset-growth-effect.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1335524) |
| Short Term Reversal Effect in Stocks | `0.816` | `21.4%` | `Weekly` | [QuantConnect](./static/strategies/short-term-reversal-in-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1605049) |
| Reversal During Earnings-Announcements | `0.785` | `25.7%` | `Daily` | [QuantConnect](./static/strategies/reversal-during-earnings-announcements.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2275982) |
| Size Factor – Small Capitalization Stocks Premium | `0.747` | `11.1%` | `Yearly` | [QuantConnect](./static/strategies/small-capitalization-stocks-premium-anomaly.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3177539) |
| Low Volatility Factor Effect in Stocks | `0.717` | `11.5%` | `Monthly` | [QuantConnect](./static/strategies/low-volatility-factor-effect-in-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=980865) |
| How to Use Lexical Density of Company Filings | `0.688` | `10.4%` | `Monthly` | [QuantConnect](./static/strategies/how-to-use-lexical-density-of-company-filings.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3921091) |
| Volatility Risk Premium Effect | `0.637` | `13.2%` | `Monthly` | [QuantConnect](./static/strategies/volatility-risk-premium-effect.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=189840) |
| Pairs Trading with Stocks | `0.634` | `8.5%` | `Daily` | [QuantConnect](./static/strategies/pairs-trading-with-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=141615) |
| Crude Oil Predicts Equity Returns | `0.599` | `11.5%` | `Monthly` | [QuantConnect](./static/strategies/crude-oil-predicts-equity-returns.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=460500) |
| Betting Against Beta Factor in Stocks | `0.594` | `18.9%` | `Monthly` | [QuantConnect](./static/strategies/betting-against-beta-factor-in-stocks.py) | [Paper](https://pages.stern.nyu.edu/~lpederse/papers/BettingAgainstBeta.pdf) |
| Trend-following Effect in Stocks | `0.569` | `15.2%` | `Daily` | [QuantConnect](./static/strategies/trend-following-effect-in-stocks.py) | [Paper](https://www.cis.upenn.edu/~mkearns/finread/trend.pdf) |
| ESG Factor Momentum Strategy | `0.559` | `21.8%` | `Monthly` | [QuantConnect](./static/strategies/esg-factor-momentum-strategy.py) | [Paper](https://www.semanticscholar.org/paper/Can-ESG-Add-Alpha-An-Analysis-of-ESG-Tilt-and-Nagy-Kassam/64f77da4f8ce5906a73ffe4e9eec7c49c0960acc) |
| Value (Book-to-Market) Factor | `0.526` | `11.9%` | `Monthly` | [QuantConnect](./static/strategies/value-book-to-market-factor.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2595747) |
| Soccer Clubs’ Stocks Arbitrage | `0.515` | `14.2%` | `Daily` | [QuantConnect](./static/strategies/soccer-clubs-stocks-arbitrage.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1343685) |
| Synthetic Lending Rates Predict Subsequent Market Return | `0.494` | `13.7%` | `Daily` | [QuantConnect](./static/strategies/synthetic-lending-rates-predict-subsequent-market-return.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3976307) |
| Option-Expiration Week Effect | `0.452` | `5%` | `Weekly` | [QuantConnect](./static/strategies/option-expiration-week-effect.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1571786) |
| Dispersion Trading | `0.432` | `8.1%` | `Monthly` | [QuantConnect](./static/strategies/dispersion-trading.py) | [Paper](https://www.academia.edu/16327015/EQUILIBRIUM_INDEX_AND_SINGLE_STOCK_VOLATILITY_RISK_PREMIA) |
| Momentum in Mutual Fund Returns | `0.414` | `13.6%` | `Quarterly` | [QuantConnect](./static/strategies/momentum-in-mutual-fund-returns.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1462408) |
| Sector Momentum – Rotational System | `0.401` | `14.1%` | `Monthly` | [QuantConnect](./static/strategies/sector-momentum-rotational-system.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1585517) |
| Combining Smart Factors Momentum and Market Portfolio | `0.388` | `8.2%` | `Monthly` | [QuantConnect](./static/strategies/combining-smart-factors-momentum-and-market-portfolio.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3745517) |
| Momentum and Reversal Combined with Volatility Effect in Stocks | `0.375` | `17%` | `Monthly` | [QuantConnect](./static/strategies/momentum-and-reversal-combined-with-volatility-effect-in-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1679464) |
| Market Sentiment and an Overnight Anomaly | `0.369` | `3.6%` | `Daily` | [QuantConnect](./static/strategies/market-sentiment-and-an-overnight-anomaly.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3829582) |
| January Barometer | `0.365` | `7.4%` | `Monthly` | [QuantConnect](./static/strategies/january-barometer.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1436516) |
| R&D Expenditures and Stock Returns | `0.354` | `8.1%` | `Yearly` | [QuantConnect](./static/strategies/rd-expenditures-and-stock-returns.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=227564) |
| Value Factor – CAPE Effect within Countries | `0.351` | `20.2%` | `Yearly` | [QuantConnect](./static/strategies/value-factor-effect-within-countries.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2129474) |
| 12 Month Cycle in Cross-Section of Stocks Returns | `0.34` | `43.7%` | `Monthly` | [QuantConnect](./static/strategies/12-month-cycle-in-cross-section-of-stocks-returns.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=687022) |
| Turn of the Month in Equity Indexes | `0.305` | `7.2%` | `Daily` | [QuantConnect](./static/strategies/turn-of-the-month-in-equity-indexes.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=917884) |
| Payday Anomaly | `0.269` | `3.8%` | `Daily` | [QuantConnect](./static/strategies/payday-anomaly.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3257064) |
| Pairs Trading with Country ETFs | `0.257` | `5.7%` | `Daily` | [QuantConnect](./static/strategies/pairs-trading-with-country-etfs.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1958546) |
| Residual Momentum Factor | `0.24` | `9.7%` | `Monthly` | [QuantConnect](./static/strategies/residual-momentum-factor.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2319861) |
| Earnings Announcement Premium | `0.192` | `3.7%` | `Monthly` | [QuantConnect](./static/strategies/earnings-announcement-premium.py) | [Paper](https://www.nber.org/system/files/working_papers/w13090/w13090.pdf) |
| ROA Effect within Stocks | `0.155` | `8.7%` | `Monthly` | [QuantConnect](./static/strategies/roa-effect-within-stocks.py) | [Paper](https://static1.squarespace.com/static/5e6033a4ea02d801f37e15bb/t/5f61583e88f43b7d5b7196b5/1600215105801/Chen_Zhang_JF.pdf) |
| 52-Weeks High Effect in Stocks | `0.153` | `19%` | `Monthly` | [QuantConnect](./static/strategies/52-weeks-high-effect-in-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1787378) |
| Combining Fundamental FSCORE and Equity Short-Term Reversals | `0.153` | `17.6%` | `Monthly` | [QuantConnect](./static/strategies/combining-fundamental-fscore-and-equity-short-term-reversals.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3097420) |
| Betting Against Beta Factor in International Equities | `0.142` | `9.1%` | `Monthly` | [QuantConnect](./static/strategies/betting-against-beta-factor-in-country-equity-indexes.py) | [Paper](https://pages.stern.nyu.edu/~lpederse/papers/BettingAgainstBeta.pdf) |
| Consistent Momentum Strategy | `0.128` | `28.8%` | `6 Months` | [QuantConnect](./static/strategies/consistent-momentum-strategy.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2652592) |
| Short Interest Effect – Long-Short Version | `0.079` | `6.6%` | `Monthly` | [QuantConnect](./static/strategies/short-interest-effect-long-short-version.py) | [Paper](https://www.semanticscholar.org/paper/Why-Do-Short-Interest-Levels-Predict-Stock-Returns-Boehmer-Erturk/06418ef437dc7156229532a97d0f8392373eb297?p2df) |
| Momentum Factor Combined with Asset Growth Effect | `0.058` | `25.1%` | `Monthly` | [QuantConnect](./static/strategies/momentum-factor-combined-with-asset-growth-effect.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1684767) |
| Momentum Factor Effect in Stocks | `-0.008` | `21.8%` | `Monthly` | [QuantConnect](./static/strategies/momentum-factor-effect-in-stocks.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2435323) |
| Momentum Factor and Style Rotation Effect | `-0.056` | `10%` | `Monthly` | [QuantConnect](./static/strategies/momentum-factor-and-style-rotation-effect.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1276815) |
| Earnings Announcements Combined with Stock Repurchases | `-0.16` | `0.1%` | `Daily` | [QuantConnect](./static/strategies/earnings-announcements-combined-with-stock-repurchases.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2589966) |
| Earnings Quality Factor | `-0.18` | `28.7%` | `Yearly` | [QuantConnect](./static/strategies/earnings-quality-factor.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2179247) |
| Accrual Anomaly | `-0.272` | `13.7%` | `Yearly` | [QuantConnect](./static/strategies/accrual-anomaly.py) | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=546108) |
| ESG, Price Momentum and Stochastic Optimization | `N/A` | `N/A` | `Monthly` |  | [Paper](https://quantpedia.com/strategies/esg-price-momentum-and-stochastic-optimization/) |
| The Positive Similarity of Company Filings and Stock Returns | `N/A` | `N/A` | `Monthly` |  | [Paper](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3690461) |

# Books

A comprehensive list of **55 books** for quantitative traders.


## Beginner

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [A Beginner’s Guide to the Stock Market: Everything You Need to Start Making Money Today - Matthew R. Kratter](https://amzn.to/3QN2VdU) | ![](https://badgen.net/badge/reviews/14%20161/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [How to Day Trade for a Living: A Beginner’s Guide to Trading Tools and Tactics, Money Management, Discipline and Trading Psychology - Andrew Aziz](https://amzn.to/3bmehFv) | ![](https://badgen.net/badge/reviews/12%20278/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [The Little Book of Common Sense Investing: The Only Way to Guarantee Your Fair Share of Stock Market Returns - John C. Bogle](https://amzn.to/3A4mgkR) | ![](https://badgen.net/badge/reviews/6%20969/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Investing QuickStart Guide: The Simplified Beginner’s Guide to Successfully Navigating the Stock Market, Growing Your Wealth & Creating a Secure Financial Future - Ted D. Snow](https://amzn.to/3A5aRkX) | ![](https://badgen.net/badge/reviews/2%20537/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Day Trading QuickStart Guide: The Simplified Beginner’s Guide to Winning Trade Plans, Conquering the Markets, and Becoming a Successful Day Trader - Troy Noonan](https://amzn.to/3HPZijw) | ![](https://badgen.net/badge/reviews/1%20229/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Introduction To Algo Trading: How Retail Traders Can Successfully Compete With Professional Traders - Kevin J Davey](https://amzn.to/39Tf7JC) | ![](https://badgen.net/badge/reviews/131/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Algorithmic Trading and DMA: An introduction to direct access trading strategies - Barry Johnson](https://amzn.to/3xYb0UN) | ![](https://badgen.net/badge/reviews/69/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |


## Biography

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [My Life as a Quant: Reflections on Physics and Finance - Emanuel Derman](https://amzn.to/3A8KudR) | ![](https://badgen.net/badge/reviews/192/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [How I Became a Quant: Insights from 25 of Wall Street’s Elite: - Barry Schachter](https://amzn.to/3Alf8kz) | ![](https://badgen.net/badge/reviews/27/blue) | ![](https://badgen.net/badge/rating/3.7/blue) |



## Coding

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [Python for Finance: Mastering Data-Driven Finance - Yves Hilpisch](https://amzn.to/3NhkTlP) | ![](https://badgen.net/badge/reviews/249/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Trading Evolved: Anyone can Build Killer Trading Strategies in Python - Andreas F. Clenow](https://amzn.to/3A0jcGB) | ![](https://badgen.net/badge/reviews/173/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Python for Algorithmic Trading: From Idea to Cloud Deployment - Yves Hilpisch](https://amzn.to/3bpkd0C) | ![](https://badgen.net/badge/reviews/90/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Algorithmic Trading with Python: Quantitative Methods and Strategy Development - Chris Conlan](https://amzn.to/3u3cxYo) | ![](https://badgen.net/badge/reviews/48/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Learn Algorithmic Trading: Build and deploy algorithmic trading systems and strategies using Python and advanced data analysis - Sebastien Donadio](https://amzn.to/3NqNghA) | ![](https://badgen.net/badge/reviews/46/blue) | ![](https://badgen.net/badge/rating/4.1/blue) |


## Crypto

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [The Bitcoin Standard: The Decentralized Alternative to Central Banking - Saifedean Ammous](https://amzn.to/3QMJgec) | ![](https://badgen.net/badge/reviews/5%20136/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Bitcoin Billionaires: A True Story of Genius, Betrayal, and Redemption - Ben Mezrich](https://amzn.to/39SkdWt) | ![](https://badgen.net/badge/reviews/1%20787/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Mastering Bitcoin: Programming the Open Blockchain - Andreas M. Antonopoulos](https://amzn.to/3NniZ3p) | ![](https://badgen.net/badge/reviews/955/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Why Buy Bitcoin: Investing Today in the Money of Tomorrow - Andy Edstrom](https://amzn.to/3OMcKqZ) | ![](https://badgen.net/badge/reviews/192/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |


## General

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [The Intelligent Investor: The Definitive Book on Value Investing - Benjamin Graham, Jason Zweig](https://www.amazon.fr/gp/product/0060555661/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0060555661&linkId=aba73910e4e3873b6cc8364487662bd6) | ![](https://badgen.net/badge/reviews/38%20087/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [How I Invest My Money: Finance experts reveal how they save, spend, and invest - Joshua Brown, Brian Portnoy](https://amzn.to/3A4rsoU) | ![](https://badgen.net/badge/reviews/892/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Naked Forex: High-Probability Techniques for Trading Without Indicators - Alex Nekritin](https://amzn.to/3NkrAUj) | ![](https://badgen.net/badge/reviews/720/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [The Four Pillars of Investing: Lessons for Building a Winning Portfolio - William J. Bernstein](https://www.amazon.fr/gp/product/B0041842TW/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=B0041842TW&linkId=d9bc2fec4f3faa41ca4f24aed3c72122) | ![](https://badgen.net/badge/reviews/441/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Option Volatility and Pricing: Advanced Trading Strategies and Techniques, 2nd Edition - Sheldon Natenberg](https://amzn.to/3btOxXL) | ![](https://badgen.net/badge/reviews/388/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [The Art and Science of Technical Analysis: Market Structure, Price Action, and Trading Strategies - Adam Grimes](https://www.amazon.fr/gp/product/1118115120/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118115120&linkId=d5dc1f0e6727b2663d2186a110a31ad0) | ![](https://badgen.net/badge/reviews/305/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [The New Trading for a Living: Psychology, Discipline, Trading Tools and Systems, Risk Control, Trade Management (Wiley Trading) - Alexander Elder](https://www.amazon.fr/gp/product/1118467450/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118467450&linkId=67ee502653bc52a5240ced9fc88eb76d) | ![](https://badgen.net/badge/reviews/242/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Building Winning Algorithmic Trading Systems: A Trader’s Journey From Data Mining to Monte Carlo Simulation to Live Trading (Wiley Trading) - Kevin J Davey](https://amzn.to/39QnsxA) | ![](https://badgen.net/badge/reviews/163/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Systematic Trading: A unique new method for designing trading and investing systems - Robert Carver](https://www.amazon.fr/gp/product/0857194453/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0857194453&linkId=32d8bffc32c01041cde066bacab76c04) | ![](https://badgen.net/badge/reviews/123/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Quantitative Momentum: A Practitioner’s Guide to Building a Momentum-Based Stock Selection System (Wiley Finance) - Wesley R. Gray, Jack R. Vogel](https://www.amazon.fr/gp/product/111923719X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=111923719X&linkId=b825cb65462a4a9254af3b7dc5328131) | ![](https://badgen.net/badge/reviews/105/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading: Winning Strategies and Their Rationale - Ernest P. Chan](https://amzn.to/3xWi8kd) | ![](https://badgen.net/badge/reviews/100/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Leveraged Trading: A professional approach to trading FX, stocks on margin, CFDs, spread bets and futures for all traders - Robert Carver](https://amzn.to/3Nhl6p7) | ![](https://badgen.net/badge/reviews/98/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Trading Systems: A New Approach to System Development and Portfolio Optimisation - Emilio Tomasini, Urban Jaekle](https://www.amazon.fr/gp/product/1905641796/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1905641796&linkId=61e6634242c497498338f73641ce0a80) | ![](https://badgen.net/badge/reviews/67/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Trading and Exchanges: Market Microstructure for Practitioners - Larry Harris](https://www.amazon.fr/gp/product/0195144708/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0195144708&linkId=e47e596fc0696cbd624726cce05b4500) | ![](https://badgen.net/badge/reviews/61/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Trading Systems 2nd edition: A new approach to system development and portfolio optimisation - Emilio Tomasini, Urban Jaekle](https://www.amazon.fr/gp/product/085719755X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=085719755X&linkId=97aa558484a8dc2bf57a5296e7f38cad) | ![](https://badgen.net/badge/reviews/42/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Machine Trading: Deploying Computer Algorithms to Conquer the Markets - Ernest P. Chan](https://amzn.to/3OIBe4o) | ![](https://badgen.net/badge/reviews/53/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Quantitative Equity Portfolio Management: An Active Approach to Portfolio Construction and Management (McGraw-Hill Library of Investment and Finance) - Ludwig B Chincarini, Daehwan Kim](https://amzn.to/3yl9u0c) | ![](https://badgen.net/badge/reviews/51/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Active Portfolio Management: A Quantitative Approach for Producing Superior Returns and Controlling Risk - Richard Grinold, Ronald Kahn](https://amzn.to/3xMKaic) | ![](https://badgen.net/badge/reviews/46/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Quantitative Technical Analysis: An integrated approach to trading system development and trading management - Dr Howard B Bandy](https://www.amazon.fr/gp/product/0979183855/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0979183855&linkId=8ef7bda69477bdccf90f5ac02ee495b0) | ![](https://badgen.net/badge/reviews/37/blue) | ![](https://badgen.net/badge/rating/3.8/blue) |
| [Advances in Active Portfolio Management: New Developments in Quantitative Investing - Richard Grinold, Ronald Kahn](https://amzn.to/3xUTK2z) | ![](https://badgen.net/badge/reviews/19/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Professional Automated Trading: Theory and Practice - Eugene A. Durenard](https://amzn.to/3yhfOpw) | ![](https://badgen.net/badge/reviews/15/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading and Quantitative Strategies (Chapman and Hall/CRC Financial Mathematics Series) - Raja Velu, Maxence Hardy, Daniel Nehren](https://amzn.to/3xUTQXZ) | ![](https://badgen.net/badge/reviews/11/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Quantitative Trading: Algorithms, Analytics, Data, Models, Optimization - Xin Guo, Tze Leung Lai, Howard Shek, Samuel Po-Shing Wong](https://www.amazon.fr/gp/product/0367871815/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0367871815&linkId=3f2ba1cbc0e1fe02e255da740423b2fb) | ![](https://badgen.net/badge/reviews/2/blue) | ![](https://badgen.net/badge/rating/3/blue) |


## High Frequency Trading

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading - Rishi K. Narang](https://www.amazon.fr/gp/product/1118362411/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118362411&linkId=35e02d4e636350366531a5033597a541) | ![](https://badgen.net/badge/reviews/76/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic and High-Frequency Trading (Mathematics, Finance and Risk) - Álvaro Cartea, Sebastian Jaimungal, José Penalva](https://www.amazon.fr/gp/product/1107091144/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1107091144&linkId=64e3ceb66482d8db6827830964b85613) | ![](https://badgen.net/badge/reviews/52/blue) | ![](https://badgen.net/badge/rating/4.1/blue) |
| [The Problem of HFT – Collected Writings on High Frequency Trading & Stock Market Structure Reform - Haim Bodek](https://www.amazon.fr/gp/product/1481978357/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1481978357&linkId=2f3acf998de645990b681e2ac9f0217c) | ![](https://badgen.net/badge/reviews/38/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [An Introduction to High-Frequency Finance - Ramazan Gençay, Michel Dacorogna, Ulrich A. Muller, Olivier Pictet, Richard Olsen](https://www.amazon.fr/gp/product/0122796713/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0122796713&linkId=7e6c098026204f399e45d7fbb803dcca) | ![](https://badgen.net/badge/reviews/11/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Market Microstructure in Practice - Charles-Albert Lehalle, Sophie Laruelle](https://www.amazon.fr/Market-Microstructure-Practice-Sophie-Laruelle/dp/9813231122) | ![](https://badgen.net/badge/reviews/8/blue) | ![](https://badgen.net/badge/rating/3.9/blue) |
| [The Financial Mathematics of Market Liquidity - Olivier Gueant](https://www.amazon.com/Financial-Mathematics-Market-Liquidity-Execution/dp/1498725473) | ![](https://badgen.net/badge/reviews/6/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [High-Frequency Trading - Maureen O’Hara, David Easley, Marcos M López de Prado](https://www.amazon.fr/gp/product/178272009X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=178272009X&linkId=082f861ff6bbe4cca4ef7ccbe620a2c4) | ![](https://badgen.net/badge/reviews/1/blue) | ![](https://badgen.net/badge/rating/3/blue) |


## Machine Learning

|  Title   | Reviews | Rating |
|----------|---------|--------|
| [Dark Pools: The rise of A.I. trading machines and the looming threat to Wall Street - Scott Patterson](https://www.amazon.fr/gp/product/0307887189/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0307887189&linkId=2572cae24ed7de0b279580312daf0f03) | ![](https://badgen.net/badge/reviews/532/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Advances in Financial Machine Learning - Marcos Lopez de Prado](https://www.amazon.fr/gp/product/1119482089/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1119482089&linkId=7eff4d3f3d9f2d00d05032f726386e53) | ![](https://badgen.net/badge/reviews/446/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Machine Learning for Algorithmic Trading: Predictive models to extract signals from market and alternative data for systematic trading strategies with Python, 2nd Edition - Stefan Jansen](https://www.amazon.fr/gp/product/1839217715/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1839217715&linkId=80e3e93e1b6027596858ed0f1fbf10c2) | ![](https://badgen.net/badge/reviews/229/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Machine Learning for Asset Managers (Elements in Quantitative Finance) - Marcos M López de Prado](https://www.amazon.fr/gp/product/1108792898/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1108792898&linkId=8eb7e3c369d38b36df8dfecf05a622db) | ![](https://badgen.net/badge/reviews/96/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Machine Learning in Finance: From Theory to Practice - Matthew F. Dixon, Igor Halperin, Paul Bilokon](https://www.amazon.fr/gp/product/3030410676/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=3030410676&linkId=5f5f1df6be62ae96ef7a0c536c3ecdb4) | ![](https://badgen.net/badge/reviews/76/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Artificial Intelligence in Finance: A Python-Based Guide - Yves Hilpisch](https://www.amazon.fr/gp/product/1492055433/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1492055433&linkId=7c20249be4d35badb127d6a5423fc495) | ![](https://badgen.net/badge/reviews/38/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading Methods: Applications Using Advanced Statistics, Optimization, and Machine Learning Techniques - Robert Kissell](https://www.amazon.fr/gp/product/0128156309/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0128156309&linkId=0a197c0b547a0ee63ccd19389bb42edd) | ![](https://badgen.net/badge/reviews/15/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |


# Videos

| Title                                                              | Likes |
|--------------------------------------------------------------------|-------|
| [Krish Naik - Machine learning tutorials and their Application in Stock Prediction](https://www.youtube.com/watch?v=H6du_pfuznE) | ![](https://badgen.net/badge/likes/6.3k/blue) |
| [QuantInsti Youtube - webinars about Machine Learning for trading](https://www.youtube.com/user/quantinsti/search?query=machine+learning) | ![](https://badgen.net/badge/likes/6.1k/blue) |
| [Siraj Raval - Videos about stock market prediction using Deep Learning](https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A/search?query=trading) | ![](https://badgen.net/badge/likes/1.7k/blue) |
| [Quantopian - Webinars about Machine Learning for trading](https://www.youtube.com/channel/UC606MUq45P3zFLa4VGKbxsg/search?query=machine+learning) | ![](https://badgen.net/badge/likes/1.5k/blue) |
| [Sentdex - Machine Learning for Forex and Stock analysis and algorithmic trading](https://www.youtube.com/watch?v=v_L9jR8P-54&list=PLQVvvaa0QuDe6ZBtkCNWNUbdaBo2vA4RO) | ![](https://badgen.net/badge/likes/1.5k/blue) |
| [QuantNews - Machine Learning for Algorithmic Trading 3 part series](https://www.youtube.com/playlist?list=PLHJACfjILJ-91qkw5YC83S6COKGscctzz) | ![](https://badgen.net/badge/likes/806/blue) |
| [Sentdex - Python programming for Finance (a few videos including Machine Learning)](https://www.youtube.com/watch?v=Z-5wNWgRJpk&index=9&list=PLQVvvaa0QuDcOdF96TBtRtuQksErCEBYZ) | ![](https://badgen.net/badge/likes/735/blue) |
| [Chat with Traders EP042 - Machine learning for algorithmic trading with Bert Mouler](https://www.youtube.com/watch?v=i8FNO8r7PaE) | ![](https://badgen.net/badge/likes/687/blue) |
| [Tucker Balch - Applying Deep Reinforcement Learning to Trading](https://www.youtube.com/watch?v=Pka0DC_P17k) | ![](https://badgen.net/badge/likes/487/blue) |
| [Ernie Chan - Machine Learning for Quantitative Trading Webinar](https://www.youtube.com/watch?v=72aEDjwGMr8&t=1023s) | ![](https://badgen.net/badge/likes/436/blue) |
| [Chat with Traders EP147 - Detective work leading to viable trading strategies with Tom Starke](https://www.youtube.com/watch?v=JjXw9Mda7eY) | ![](https://badgen.net/badge/likes/407/blue) |
| [Chat with Traders EP142 - Algo trader using automation to bypass human flaws with Bert Mouler](https://www.youtube.com/watch?v=ofL66mh6Tw0) | ![](https://badgen.net/badge/likes/316/blue) |
| [Master Thesis presentation, Uni of Essex - Analyzing the Limit Order Book, A Deep Learning Approach](https://www.youtube.com/watch?v=qxSh2VFmRGw) | ![](https://badgen.net/badge/likes/264/blue) |
| [Howard Bandy - Machine Learning Trading System Development Webinar](https://www.youtube.com/watch?v=v729evhMpYk&t=1s) | ![](https://badgen.net/badge/likes/253/blue) |
| [Chat With Traders EP131 - Trading strategies, powered by machine learning with Morgan Slade](https://www.youtube.com/watch?v=EbWbeYu8zwg) | ![](https://badgen.net/badge/likes/229/blue) |
| [Chat with Traders Quantopian 5 - Good Uses of Machine Learning in Finance with Max Margenot](https://www.youtube.com/watch?v=Zj5sXWv9SDM) | ![](https://badgen.net/badge/likes/198/blue) |
| [Hitoshi Harada, CTO at Alpaca - Deep Learning in Finance Talk](https://www.youtube.com/watch?v=FoQKCeDuPiY) | ![](https://badgen.net/badge/likes/147/blue) |
| [Better System Trader EP028 - David Aronson shares research into indicators that identify Bull and Bear markets.](https://www.youtube.com/watch?v=Q4rV0Y9NokI) | ![](https://badgen.net/badge/likes/97/blue) |
| [Prediction Machines - Deep Learning with Python in Finance Talk](https://www.youtube.com/watch?v=xvm-M-R2fZY) | ![](https://badgen.net/badge/likes/87/blue) |
| [Better System Trader EP064 - Cryptocurrencies and Machine Learning with Bert Mouler](https://www.youtube.com/watch?v=YgRTd4nLJoU) | ![](https://badgen.net/badge/likes/35/blue) |
| [Better System Trader EP023 - Portfolio manager Michael Himmel talks AI and machine learning in trading](https://www.youtube.com/watch?v=9tZjeyhfG0g) | ![](https://badgen.net/badge/likes/29/blue) |
| [Better System Trader EP082 - Machine Learning With Kris Longmore](https://www.youtube.com/watch?v=0syNgsd635M) | ![](https://badgen.net/badge/likes/18/blue) |



# Blogs

| Title                                                              |
|--------------------------------------------------------------------|
| [AAA Quants, Tom Starke Blog](http://aaaquants.com/category/blog/) |
| [AI & Systematic Trading](https://blog.paperswithbacktest.com/)          |
| [Blackarbs blog](http://www.blackarbs.com/blog/)                   |
| [Hardikp, Hardik Patel blog](https://www.hardikp.com/)             |
| [Max Dama on Automated Trading](https://bit.ly/3wVZbh9)            |
| [Medallion.Club on Systematic Trading (FR)](https://medallion.club/trading-algorithmique-quantitatif-systematique/)            |
| [Proof Engineering: The Algorithmic Trading Platform](https://bit.ly/3lX7zYN) |
| [Quantsportal, Jacques Joubert's Blog](http://www.quantsportal.com/blog-page/) |
| [Quantstart - Machine Learning for Trading articles](https://www.quantstart.com/articles) |
| [RobotWealth, Kris Longmore Blog](https://robotwealth.com/blog/) |


# Courses

| Title                                                              |
|--------------------------------------------------------------------|
| [AI in Finance](https://cfte.education/)                           |
| [AI & Systematic Trading](https://paperswithbacktest.com/course)               |
| [Algorithmic Trading for Cryptocurrencies in Python](https://github.com/tudorelu/tudorials/tree/master/trading) |
| [Coursera, NYU - Guided Tour of Machine Learning in Finance](https://www.coursera.org/learn/guided-tour-machine-learning-finance) |
| [Coursera, NYU - Fundamentals of Machine Learning in Finance](https://www.coursera.org/learn/fundamentals-machine-learning-in-finance) |
| [Coursera, NYU - Reinforcement Learning in Finance](https://www.coursera.org/learn/reinforcement-learning-in-finance) |
| [Coursera, NYU - Overview of Advanced Methods for Reinforcement Learning in Finance](https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance) |
| [Hudson and Thames Quantitative Research](https://github.com/hudson-and-thames) |
| [NYU: Overview of Advanced Methods of Reinforcement Learning in Finance](https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance/home/welcome) |
| [Udacity: Artificial Intelligence for Trading](https://www.udacity.com/course/ai-for-trading--nd880) |
| [Udacity, Georgia Tech - Machine Learning for Trading](https://www.udacity.com/course/machine-learning-for-trading--ud501) |


================================================
FILE: README_zh.md
================================================
<div align="center">
  <img src="static/images/awesome-systematic-trading.jpeg" height=200 alt=""/>
  <h1>令人敬畏的系统化交易</h1>
</div>
<div align=center><img src="https://awesome.re/badge.svg" /></div>

我们正在收集一份关于寻找、开发和运行系统性交易(量化交易)策略的资源论文、软件、书籍、文章清单。

<!-- omit in toc -->
### 你在这里会发现什么?

- [97个](#库和包)用于研究和实际交易的[库和包](#库和包)
- 机构和学术界描述的[40+项战略](#战略)
- [55本](#书籍)适合初学者和专业人士的[书籍](#书籍)
- [23个视频](#视频)和采访
- 还有一些[博客](#博客)和[课程](#课程)

<details>
<summary>点击这里查看完整的内容表</summary>

- [库和包](#库和包)
  - [回溯测试和真实交易](#回溯测试和真实交易)
    - [一般 - 事件驱动框架](#一般---事件驱动框架)
    - [一般 - 基于矢量的框架](#一般---基于矢量的框架)
    - [加密货币](#加密货币)
  - [交易机器人](#交易机器人)
  - [分析](#分析)
    - [指标](#指标)
    - [度量衡计算](#度量衡计算)
    - [优化](#优化)
    - [定价](#定价)
    - [风险](#风险)
  - [经纪人API](#经纪人api)
  - [数据来源](#数据来源)
    - [一般](#一般)
    - [加密货币](#加密货币-1)
  - [数据科学](#数据科学)
  - [数据库](#数据库)
  - [图形计算](#图形计算)
  - [机器学习](#机器学习)
  - [时间序列分析](#时间序列分析)
  - [视觉化](#视觉化)
- [战略](#战略)
  - [债券、商品、货币、股票](#债券商品货币股票)
  - [债券、商品、股票、REITs](#债券商品股票reits)
  - [债券、股票](#债券股票)
  - [债券、股票、REITs](#债券股票reits)
  - [商品](#商品)
  - [加密货币](#加密货币-2)
  - [货币](#货币)
  - [股票](#股票)
- [书籍](#书籍)
  - [初学者](#初学者)
  - [传记](#传记)
  - [编码](#编码)
  - [隐蔽性](#隐蔽性)
  - [一般](#一般-1)
  - [高频交易](#高频交易)
  - [机器学习](#机器学习-1)
- [视频](#视频)
- [博客](#博客)
- [课程](#课程)
</details>

<!-- omit in toc -->
> ### 我怎样才能提供帮助?
> 你可以通过提交带有建议的问题和在Twitter上分享来帮助。
>
> [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=A%20free%20and%20comprehensive%20list%20of%20papers%2C%20libraries%2C%20books%2C%20blogs%2C%20tutorials%20for%20quantitative%20traders.&url=https://github.com/paperswithbacktest/awesome-systematic-trading)


# 库和包

*97个实现交易机器人、回溯测试器、指标、定价器等的库和包列表。每个库都按其编程语言分类,并按人口降序排列(星星的数量)。*


## 回溯测试和真实交易

### 一般 - 事件驱动框架


| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [vnpy](https://github.com/vnpy/vnpy) | 基于Python的开源量化交易系统开发框架,于2015年1月正式发布,已经一步步成长为一个全功能的量化交易平台。 | ![GitHub stars](https://badgen.net/github/stars/vnpy/vnpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [zipline](https://github.com/quantopian/zipline) | Zipline是一个Pythonic算法交易库。它是一个事件驱动的系统,用于回溯测试。 | ![GitHub stars](https://badgen.net/github/stars/quantopian/zipline) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [backtrader](https://github.com/mementum/backtrader) | 事件驱动的Python交易策略回测库 | ![GitHub stars](https://badgen.net/github/stars/mementum/backtrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [QUANTAXIS](https://github.com/QUANTAXIS/QUANTAXIS) | QUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权/港股/虚拟货币 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案 | ![GitHub stars](https://badgen.net/github/stars/QUANTAXIS/QUANTAXIS) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [QuantConnect](https://github.com/QuantConnect/Lean) | QuantConnect的精益算法交易引擎(Python,C#)。 | ![GitHub stars](https://badgen.net/github/stars/QuantConnect/Lean) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Rqalpha](https://github.com/ricequant/rqalpha) | 一个可扩展、可替换的Python算法回测和交易框架,支持多种证券 | ![GitHub stars](https://badgen.net/github/stars/ricequant/rqalpha) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [finmarketpy](https://github.com/cuemacro/finmarketpy) | 用于回测交易策略和分析金融市场的Python库(前身为pythalesians)。 | ![GitHub stars](https://badgen.net/github/stars/cuemacro/finmarketpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [backtesting.py](https://github.com/kernc/backtesting.py) | Backtesting.py是一个Python框架,用于根据历史(过去)数据推断交易策略的可行性。Backtesting.py在Backtrader的基础上进行了改进,并以各种方式超越了其他可获得的替代方案,Backtesting.py是轻量级的、快速的、用户友好的、直观的、互动的、智能的,并希望是面向未来的。 | ![GitHub stars](https://badgen.net/github/stars/kernc/backtesting.py) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [zvt](https://github.com/zvtvz/zvt) | 模块化的量化框架 | ![GitHub stars](https://badgen.net/github/stars/zvtvz/zvt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [WonderTrader](https://github.com/wondertrader/wondertrader) | WonderTrader——量化研发交易一站式框架  | ![GitHub stars](https://badgen.net/github/stars/wondertrader/wondertrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [nautilus_trader](https://github.com/nautechsystems/nautilus_trader) | 一个高性能的算法交易平台和事件驱动的回测器 | ![GitHub stars](https://badgen.net/github/stars/nautechsystems/nautilus_trader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PandoraTrader](https://github.com/pegasusTrader/PandoraTrader) | 基于c++开发,支持多种交易API,跨平台的高频量化交易平台 | ![GitHub stars](https://badgen.net/github/stars/pegasusTrader/PandoraTrader) | ![made-with-c++](https://img.shields.io/badge/Made%20with-c++-1f425f.svg) |
[HFTBacktest](https://github.com/nkaz001/hftbacktest) | Python+Numba 对高频交易数据进行高精度回测 | ![GitHub stars](https://badgen.net/github/stars/nkaz001/hftbacktest) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [aat](https://github.com/AsyncAlgoTrading/aat) | 一个异步的、事件驱动的框架,用于用python编写算法交易策略,并可选择用C++进行加速。它的设计是模块化和可扩展的,支持各种工具和策略,在多个交易所之间进行实时交易。 | ![GitHub stars](https://badgen.net/github/stars/AsyncAlgoTrading/aat) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [sdoosa-algo-trade-python](https://github.com/sreenivasdoosa/sdoosa-algo-trade-python) | 这个项目主要是为那些有兴趣学习使用python解释器编写自己的交易算法的algo交易新手准备的。 | ![GitHub stars](https://badgen.net/github/stars/sreenivasdoosa/sdoosa-algo-trade-python) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [lumibot](https://github.com/Lumiwealth/lumibot) | 一个非常简单而有用的回溯测试和基于样本的实时交易框架(运行速度有点慢......)。 | ![GitHub stars](https://badgen.net/github/stars/Lumiwealth/lumibot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [quanttrader](https://github.com/letianzj/quanttrader) | 在Python中进行回测和实时交易。基于事件。类似于backtesting.py。 | ![GitHub stars](https://badgen.net/github/stars/letianzj/quanttrader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [gobacktest](https://github.com/gobacktest/gobacktest) | 事件驱动的回溯测试框架的Go实现 | ![GitHub stars](https://badgen.net/github/stars/gobacktest/gobacktest) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [FlashFunk](https://github.com/HFQR/FlashFunk) | Rust中的高性能运行时 | ![GitHub stars](https://badgen.net/github/stars/HFQR/FlashFunk) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |


### 一般 - 基于矢量的框架

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [vectorbt](https://github.com/polakowo/vectorbt) | vectorbt采取了一种新颖的回测方法:它完全在pandas和NumPy对象上运行,并由Numba加速,以速度和规模分析任何数据。这允许在几秒钟内对成千上万的策略进行测试。 | ![GitHub stars](https://badgen.net/github/stars/polakowo/vectorbt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pysystemtrade](https://github.com/robcarver17/pysystemtrade) | 罗布-卡弗的《系统交易》一书中的python系统交易 | ![GitHub stars](https://badgen.net/github/stars/robcarver17/pysystemtrade) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [bt](https://github.com/pmorissette/bt) | 基于Algo和策略树的Python的灵活回测 | ![GitHub stars](https://badgen.net/github/stars/pmorissette/bt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


### 加密货币

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Freqtrade](https://github.com/freqtrade/freqtrade) | Freqtrade是一个用Python编写的免费和开源的加密货币交易机器人。它被设计为支持所有主要交易所,并通过Telegram进行控制。它包含回测、绘图和资金管理工具,以及通过机器学习进行策略优化。 | ![GitHub stars](https://badgen.net/github/stars/freqtrade/freqtrade) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Jesse](https://github.com/jesse-ai/jesse) | Jesse是一个先进的加密货币交易框架,旨在简化研究和定义交易策略。 | ![GitHub stars](https://badgen.net/github/stars/jesse-ai/jesse) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [OctoBot](https://github.com/Drakkar-Software/OctoBot) | 用于TA、套利和社会交易的加密货币交易机器人,具有先进的网络界面 | ![GitHub stars](https://badgen.net/github/stars/Drakkar-Software/OctoBot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Kelp](https://github.com/stellar/kelp) | Kelp是一个免费和开源的交易机器人,适用于Stellar DEX和100多个集中式交易所 | ![GitHub stars](https://badgen.net/github/stars/stellar/kelp) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [openlimits](https://github.com/nash-io/openlimits) | 一个Rust高性能的加密货币交易API,支持多个交易所和语言封装器。 | ![GitHub stars](https://badgen.net/github/stars/nash-io/openlimits) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [bTrader](https://github.com/gabriel-milan/btrader) | Binance的三角套利交易机器人 | ![GitHub stars](https://badgen.net/github/stars/gabriel-milan/btrader) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [crypto-crawler-rs](https://github.com/crypto-crawler/crypto-crawler-rs) | 抓取加密货币交易所的订单簿和交易信息 | ![GitHub stars](https://badgen.net/github/stars/crypto-crawler/crypto-crawler-rs) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [Hummingbot](https://github.com/CoinAlpha/hummingbot) | 一个用于加密货币做市的客户 | ![GitHub stars](https://badgen.net/github/stars/CoinAlpha/hummingbot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [cryptotrader-core](https://github.com/monomadic/cryptotrader-core) | 简单的使用Rust中的加密货币交易所REST API客户端。 | ![GitHub stars](https://badgen.net/github/stars/monomadic/cryptotrader-core) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |

## 交易机器人

*交易机器人和阿尔法模型。其中一些是旧的,没有维护。*

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Blackbird](https://github.com/butor/blackbird) | 黑鸟比特币套利:市场中立的多/空策略 | ![GitHub stars](https://badgen.net/github/stars/butor/blackbird) | ![made-with-c++](https://img.shields.io/badge/Made%20with-c++-1f425f.svg) |
| [bitcoin-arbitrage](https://github.com/maxme/bitcoin-arbitrage) | 比特币套利 - 机会检测器 | ![GitHub stars](https://badgen.net/github/stars/maxme/bitcoin-arbitrage) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ThetaGang](https://github.com/brndnmtthws/thetagang) | ThetaGang是一个用于收集资金的IBKR机器人 | ![GitHub stars](https://badgen.net/github/stars/brndnmtthws/thetagang) | ![made-with-typescript](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [czsc](https://github.com/waditu/czsc) | 缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易 | ![GitHub stars](https://badgen.net/github/stars/waditu/czsc) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [R2 Bitcoin Arbitrager](https://github.com/bitrinjani/r2) | R2 Bitcoin Arbitrager是一个由Node.js + TypeScript驱动的自动套利交易系统。 | ![GitHub stars](https://badgen.net/github/stars/bitrinjani/r2) | ![made-with-typescript](https://img.shields.io/badge/Made%20with-TypeScript-1f425f.svg) |
| [analyzingalpha](https://github.com/leosmigel/analyzingalpha) | 实施简单的战略 | ![GitHub stars](https://badgen.net/github/stars/leosmigel/analyzingalpha) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyTrendFollow](https://github.com/chrism2671/PyTrendFollow) | PyTrendFollow - 使用趋势跟踪的系统性期货交易 | ![GitHub stars](https://badgen.net/github/stars/chrism2671/PyTrendFollow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

## 分析

### 指标

*预测未来价格走势的指标库。*

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [ta-lib](https://github.com/mrjbq7/ta-lib) | 对金融市场数据进行技术分析 | ![GitHub stars](https://badgen.net/github/stars/mrjbq7/ta-lib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [go-tart](https://github.com/iamjinlei/go-tart) | 用Go实现的[ta-lib]((https://github.com/mrjbq7/ta-lib),支持增量更新 | ![GitHub stars](https://badgen.net/github/stars/iamjinlei/go-tart) | ![made-with-go](https://img.shields.io/badge/Made%20with-go-1f425f.svg) |
| [pandas-ta](https://github.com/twopirllc/pandas-ta) | 潘达斯技术分析(Pandas TA)是一个易于使用的库,它利用潘达斯软件包的130多个指标和实用功能以及60多个TA Lib蜡烛图。 | ![GitHub stars](https://badgen.net/github/stars/twopirllc/pandas-ta) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [finta](https://github.com/peerchemist/finta) | 在Pandas中实施的共同财务技术指标 | ![GitHub stars](https://badgen.net/github/stars/peerchemist/finta) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ta-rust](https://github.com/greyblake/ta-rs) | Rust语言的技术分析库 | ![GitHub stars](https://badgen.net/github/stars/greyblake/ta-rs) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |

### 度量衡计算

*财务衡量标准。*

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [quantstats](https://github.com/ranaroussi/quantstats) | 用Python编写的面向量化投资人的投资组合分析方法 | ![GitHub stars](https://badgen.net/github/stars/ranaroussi/quantstats) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [ffn](https://github.com/pmorissette/ffn) | 一个用于Python的金融函数库 | ![GitHub stars](https://badgen.net/github/stars/pmorissette/ffn) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### 优化

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [PyPortfolioOpt](https://github.com/robertmartin8/PyPortfolioOpt) | 在python中进行金融投资组合优化,包括经典的有效边界、Black-Litterman、分级风险平价等。 | ![GitHub stars](https://badgen.net/github/stars/robertmartin8/PyPortfolioOpt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Riskfolio-Lib](https://github.com/dcajasn/Riskfolio-Lib) | Python中的投资组合优化和定量战略资产配置 | ![GitHub stars](https://badgen.net/github/stars/dcajasn/Riskfolio-Lib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [empyrial](https://github.com/ssantoshp/Empyrial) | Empyrial是一个基于Python的开源量化投资库,专门为金融机构和零售投资者服务,于2021年3月正式发布。 | ![GitHub stars](https://badgen.net/github/stars/ssantoshp/Empyrial) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Deepdow](https://github.com/jankrepl/deepdow) | 连接组合优化和深度学习的Python包。它的目标是促进研究在一次前进过程中进行权重分配的网络。 | ![GitHub stars](https://badgen.net/github/stars/jankrepl/deepdow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [spectre](https://github.com/Heerozh/spectre) | Python中的投资组合优化和定量战略资产配置 | ![GitHub stars](https://badgen.net/github/stars/Heerozh/spectre) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### 定价

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [tf-quant-finance](https://github.com/google/tf-quant-finance) | 谷歌为量化金融提供的高性能TensorFlow库 | ![GitHub stars](https://badgen.net/github/stars/google/tf-quant-finance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [FinancePy](https://github.com/domokane/FinancePy) | 一个Python金融库,专注于金融衍生品的定价和风险管理,包括固定收益、股票、外汇和信用衍生品。 | ![GitHub stars](https://badgen.net/github/stars/domokane/FinancePy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyQL](https://github.com/enthought/pyql) | 著名定价库QuantLib的Python封装器 | ![GitHub stars](https://badgen.net/github/stars/enthought/pyql) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

### 风险

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [pyfolio](https://github.com/quantopian/pyfolio) | Python中的投资组合和风险分析 | ![GitHub stars](https://badgen.net/github/stars/quantopian/pyfolio) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |



## 经纪人API

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [ccxt](https://github.com/ccxt/ccxt) | 一个JavaScript / Python / PHP加密货币交易API,支持100多个比特币/altcoin交易所 | ![GitHub stars](https://badgen.net/github/stars/ccxt/ccxt) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Ib_insync](https://github.com/erdewit/ib_insync) | 用于交互式经纪人的Python同步/async框架。 | ![GitHub stars](https://badgen.net/github/stars/erdewit/ib_insync) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Coinnect](https://github.com/hugues31/coinnect) | Coinnect是一个Rust库,旨在通过REST API提供对主要加密货币交易所的完整访问。 | ![GitHub stars](https://badgen.net/github/stars/hugues31/coinnect) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |


## 数据来源

### 一般

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [OpenBB Terminal](https://github.com/OpenBB-finance/OpenBBTerminal) | 为每个人、在任何地方进行投资研究。 | ![GitHub stars](https://badgen.net/github/stars/OpenBB-finance/OpenBBTerminal) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [TuShare](https://github.com/waditu/tushare) | TuShare是一个用于抓取中国股票历史数据的工具。 | ![GitHub stars](https://badgen.net/github/stars/waditu/tushare) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [yfinance](https://github.com/ranaroussi/yfinance) | yfinance提供了一个线程和Pythonic方式,从雅虎金融下载市场数据。 | ![GitHub stars](https://badgen.net/github/stars/ranaroussi/yfinance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [AkShare](https://github.com/akfamily/akshare) | AKShare是一个优雅而简单的Python金融数据接口库,它是为人类而建的!它是为人类服务的。 | ![GitHub stars](https://badgen.net/github/stars/akfamily/akshare) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pandas-datareader](https://github.com/pydata/pandas-datareader) | 为pandas提供最新的远程数据访问,适用于多个版本的pandas。 | ![GitHub stars](https://badgen.net/github/stars/pydata/pandas-datareader) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Quandl](https://github.com/quandl/quandl-python) | 通过一个免费的API,从数百个出版商那里获得数以百万计的金融和经济数据集。 | ![GitHub stars](https://badgen.net/github/stars/quandl/quandl-python) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [findatapy](https://github.com/cuemacro/findatapy) | findatapy创建了一个易于使用的Python API,使用统一的高级接口从许多来源下载市场数据,包括Quandl、彭博、雅虎、谷歌等。 | ![GitHub stars](https://badgen.net/github/stars/cuemacro/findatapy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Investpy](https://github.com/alvarobartt/investpy) | 用Python从Investing.com提取金融数据 | ![GitHub stars](https://badgen.net/github/stars/alvarobartt/investpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Fundamental Analysis Data](https://github.com/JerBouma/FundamentalAnalysis) | 完整的基本面分析软件包能够收集20年的公司简介、财务报表、比率和20,000多家公司的股票数据。 | ![GitHub stars](https://badgen.net/github/stars/JerBouma/FundamentalAnalysis) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Wallstreet](https://github.com/mcdallas/wallstreet) | 华尔街。实时股票和期权工具 | ![GitHub stars](https://badgen.net/github/stars/mcdallas/wallstreet) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |



### 加密货币

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Cryptofeed](https://github.com/bmoscon/cryptofeed) | 使用Asyncio的加密货币交易所Websocket数据源处理程序 | ![GitHub stars](https://badgen.net/github/stars/bmoscon/cryptofeed) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Gekko-Datasets](https://github.com/xFFFFF/Gekko-Datasets) | Gekko交易机器人数据集转储。下载和使用SQLite格式的历史文件。 | ![GitHub stars](https://badgen.net/github/stars/xFFFFF/Gekko-Datasets) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [CryptoInscriber](https://github.com/Optixal/CryptoInscriber) | 一个实时的加密货币历史交易数据图谱。从任何加密货币交易所下载实时历史交易数据。 | ![GitHub stars](https://badgen.net/github/stars/Optixal/CryptoInscriber) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
[Crypto Lake](https://github.com/crypto-lake/lake-api) | 加密货币的高频订单簿和交易数据
 | ![GitHub stars](https://badgen.net/github/stars/crypto-lake/lake-api) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

## 数据科学

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [TensorFlow](https://github.com/tensorflow/tensorflow) | Python中科学计算的基本算法 | ![GitHub stars](https://badgen.net/github/stars/tensorflow/tensorflow) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Pytorch](https://github.com/pytorch/pytorch) | Python中的张量和动态神经网络具有强大的GPU加速功能 | ![GitHub stars](https://badgen.net/github/stars/pytorch/pytorch) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Keras](https://github.com/keras-team/keras) | 最具用户友好性的Python中的人类深度学习 | ![GitHub stars](https://badgen.net/github/stars/keras-team/keras) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Scikit-learn](https://github.com/scikit-learn/scikit-learn) | Python中的机器学习 | ![GitHub stars](https://badgen.net/github/stars/scikit-learn/scikit-learn) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Pandas](https://github.com/pandas-dev/pandas) | 灵活而强大的Python数据分析/操作库,提供类似于R data.frame对象的标记数据结构、统计函数以及更多。 | ![GitHub stars](https://badgen.net/github/stars/pandas-dev/pandas) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Numpy](https://github.com/numpy/numpy) | 用Python进行科学计算的基本包 | ![GitHub stars](https://badgen.net/github/stars/numpy/numpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Scipy](https://github.com/scipy/scipy) | Python中科学计算的基本算法 | ![GitHub stars](https://badgen.net/github/stars/scipy/scipy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [PyMC](https://github.com/pymc-devs/pymc) | Python中的概率编程。用Aesara进行贝叶斯建模和概率机器学习 | ![GitHub stars](https://badgen.net/github/stars/pymc-devs/pymc) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Cvxpy](https://github.com/cvxpy/cvxpy) | 一种用于凸优化问题的Python嵌入式建模语言。 | ![GitHub stars](https://badgen.net/github/stars/cvxpy/cvxpy) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## 数据库

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Marketstore](https://github.com/alpacahq/marketstore) | 金融时序数据的DataFrame服务器 | ![GitHub stars](https://badgen.net/github/stars/alpacahq/marketstore) | ![made-with-go](https://img.shields.io/badge/Made%20with-Go-1f425f.svg) |
| [Tectonicdb](https://github.com/0b01/tectonicdb) | Tectonicdb是一个快速、高度压缩的独立数据库和流媒体协议,用于订单簿上的点子。 | ![GitHub stars](https://badgen.net/github/stars/0b01/tectonicdb) | ![made-with-rust](https://img.shields.io/badge/Made%20with-Rust-1f425f.svg) |
| [ArcticDB (Man Group)](https://github.com/man-group/arcticdb) | 用于时间序列和tick数据的高性能数据存储 | ![GitHub stars](https://badgen.net/github/stars/man-group/ArcticDB) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |

## 图形计算

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Ray](https://github.com/ray-project/ray) | 一个开源框架,为构建分布式应用提供了一个简单、通用的API。 | ![GitHub stars](https://badgen.net/github/stars/ray-project/ray) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Dask](https://github.com/dask/dask) | 在Python中使用类似Pandas的API进行任务调度的并行计算 | ![GitHub stars](https://badgen.net/github/stars/dask/dask) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Incremental (JaneStreet)](https://github.com/janestreet/incremental) | Incremental是一个库,它为你提供了一种建立复杂计算的方法,可以根据输入的变化进行有效的更新,其灵感来自Umut Acar等人关于自我调整计算的工作。Incremental在许多应用中都很有用 | ![GitHub stars](https://badgen.net/github/stars/janestreet/incremental) | ![made-with-ocaml](https://img.shields.io/badge/Made%20with-Ocaml-1f425f.svg) |
| [Man MDF](https://github.com/man-group/mdf) | 用于Python的数据流编程工具包 | ![GitHub stars](https://badgen.net/github/stars/man-group/mdf) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [GraphKit](https://github.com/yahoo/graphkit) | 一个轻量级的Python模块,用于创建和运行计算的有序图。 | ![GitHub stars](https://badgen.net/github/stars/yahoo/graphkit) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Tributary](https://github.com/timkpaine/tributary) | 在Python中流化反应式和数据流图 | ![GitHub stars](https://badgen.net/github/stars/timkpaine/tributary) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## 机器学习

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [QLib (Microsoft)](https://github.com/microsoft/qlib) | Qlib是一个以人工智能为导向的量化投资平台,旨在实现人工智能技术在量化投资中的潜力,授权研究,并创造价值。通过Qlib,你可以轻松尝试你的想法,创造更好的量化投资策略。越来越多的SOTA量化研究作品/论文在Qlib中发布。 | ![GitHub stars](https://badgen.net/github/stars/microsoft/qlib) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [FinRL](https://github.com/AI4Finance-Foundation/FinRL) | FinRL是第一个开源框架,展示了在量化金融中应用深度强化学习的巨大潜力。 | ![GitHub stars](https://badgen.net/github/stars/AI4Finance-Foundation/FinRL) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [MlFinLab (Hudson & Thames)](https://github.com/hudson-and-thames/mlfinlab) | MlFinLab通过提供可重复的、可解释的和易于使用的工具,帮助那些希望利用机器学习的力量的投资组合经理和交易者。 | ![GitHub stars](https://badgen.net/github/stars/hudson-and-thames/mlfinlab) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [TradingGym](https://github.com/Yvictor/TradingGym) | 交易和回测环境,用于训练强化学习代理或简单的规则基础算法。 | ![GitHub stars](https://badgen.net/github/stars/Yvictor/TradingGym) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [Stock Trading Bot using Deep Q-Learning](https://github.com/pskrunner14/trading-bot) | 使用深度Q-学习的股票交易机器人 | ![GitHub stars](https://badgen.net/github/stars/pskrunner14/trading-bot) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## 时间序列分析

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [Facebook Prophet](https://github.com/facebook/prophet) | 对具有线性或非线性增长的多季节性的时间序列数据产生高质量的预测的工具。 | ![GitHub stars](https://badgen.net/github/stars/facebook/prophet) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [statsmodels](https://github.com/statsmodels/statsmodels) | Python模块,允许用户探索数据,估计统计模型,并进行统计测试。 | ![GitHub stars](https://badgen.net/github/stars/statsmodels/statsmodels) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [tsfresh](https://github.com/blue-yonder/tsfresh) | 从时间序列中自动提取相关特征。 | ![GitHub stars](https://badgen.net/github/stars/blue-yonder/tsfresh) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [pmdarima](https://github.com/alkaline-ml/pmdarima) | 一个统计库,旨在填补Python时间序列分析能力的空白,包括相当于R的auto.arima函数。 | ![GitHub stars](https://badgen.net/github/stars/alkaline-ml/pmdarima) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


## 视觉化

| 存储库 | 描述 | 明星 | 使用方法 |
|------------|-------------|-------|-----------|
| [D-Tale (Man Group)](https://github.com/man-group/dtale) | D-Tale是Flask后端和React前端的结合,为你带来查看和分析Pandas数据结构的简单方法。 | ![GitHub stars](https://badgen.net/github/stars/man-group/dtale) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [mplfinance](https://github.com/matplotlib/mplfinance) | 使用Matplotlib实现金融市场数据可视化 | ![GitHub stars](https://badgen.net/github/stars/matplotlib/mplfinance) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |
| [btplotting](https://github.com/happydasch/btplotting) | btplotting为回测、优化结果和backtrader的实时数据提供绘图。 | ![GitHub stars](https://badgen.net/github/stars/happydasch/btplotting) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) |


# 战略

*40+篇描述原始系统交易策略的学术论文列表。每种策略按其资产类别分类,并按夏普比率降序排列。*

👉策略现在托管在 [这里](https://paperswithbacktest.com).


上一个策略列表:

## 债券、商品、货币、股票

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|-------------|--------------|------------|-------------|----------------|--------|
| 时间序列动量效应 | `0.576` | `20.5%` | `月度` | [QuantConnect](./static/strategies/time-series-momentum-effect.py) | [纸张](https://pages.stern.nyu.edu/~lpederse/papers/TimeSeriesMomentum.pdf) |
| 利用期货进行短期反转 | `-0.05` | `12.3%` | `每周` | [QuantConnect](./static/strategies/asset-class-momentum-rotational-system.py) | [纸张](https://ideas.repec.org/a/eee/jbfina/v28y2004i6p1337-1361.html) |

## 债券、商品、股票、REITs

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 资产类别的趋势跟踪 | `0.502` | `10.4%` | `月度` | [QuantConnect](./static/strategies/asset-class-trend-following.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=962461) |
| 动量资产配置策略 | `0.321` | `11%` | `月度` | [QuantConnect](./static/strategies/asset-class-trend-following.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1585517) |

## 债券、股票

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 成对切换 | `0.691` | `9.5%` | `季度` | [QuantConnect](./static/strategies/paired-switching.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1917044) |
| FED模式 | `0.369` | `14.3%` | `月度` | [QuantConnect](./static/strategies/fed-model.py) | [纸张](https://www.researchgate.net/publication/228267011_The_FED_Model_and_Expected_Asset_Returns) |

## 债券、股票、REITs

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 各类资产的价值和动量因素 | `0.155` | `9.8%` | `月度` | [QuantConnect](./static/strategies/value-and-momentum-factors-across-asset-classes.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1079975) |

## 商品

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 商品中的偏度效应 | `0.482` | `17.7%` | `月度` | [QuantConnect](./static/strategies/skewness-effect-in-commodities.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2671165) |
| 商品期货的收益不对称效应 | `0.239` | `13.4%` | `月度` | [QuantConnect](./static/strategies/return-asymmetry-effect-in-commodity-futures.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3918896) |
| 商品的动量效应 | `0.14` | `20.3%` | `月度` | [QuantConnect](./static/strategies/momentum-effect-in-commodities.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=702281) |
| 商品的期限结构效应 | `0.128` | `23.1%` | `月度` | [QuantConnect](./static/strategies/term-structure-effect-in-commodities.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1127213) |
| 交易WTI/BRENT价差 | `-0.199` | `11.6%` | `每日` | [QuantConnect](./static/strategies/trading-wti-brent-spread.py) | [纸张](https://link.springer.com/article/10.1057/jdhf.2009.24) |

## 加密货币

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 比特币的隔夜季节性 | `0.892` | `20.8%` | `日内交易` | [QuantConnect](./static/strategies/intraday-seasonality-in-bitcoin.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4081000) |
| 加密货币的再平衡溢价 | `0.698` | `27.5%` | `每日` | [QuantConnect](./static/strategies/rebalancing-premium-in-cryptocurrencies.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3982120) |

## 货币

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 外汇套利交易 | `0.254` | `7.8%` | `月度` | [QuantConnect](./static/strategies/fx-carry-trade.py) | [纸张](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |
| 美元套利交易 | `0.113` | `5.8%` | `月度` | [QuantConnect](./static/strategies/dollar-carry-trade.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1541230) |
| 货币动量因素 | `-0.01` | `6.7%` | `月度` | [QuantConnect](./static/strategies/currency-momentum-factor.py) | [纸张](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |
| 货币价值因素--PPP战略 | `-0.103` | `5%` | `季度` | [QuantConnect](./static/strategies/currency-value-factor-ppp-strategy.py) | [纸张](http://globalmarkets.db.com/new/docs/dbCurrencyReturns_March2009.pdf) |

## 股票

| 标题       | 夏普比率 | 挥发性 | 重新平衡 | 实施 | 来源 |
|--------------|--------------|------------|-------------|----------------|--------|
| 资产增长效应 | `0.835` | `10.2%` | `每年一次` | [QuantConnect](./static/strategies/asset-growth-effect.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1335524) |
| 股票的短期反转效应 | `0.816` | `21.4%` | `每周` | [QuantConnect](./static/strategies/short-term-reversal-in-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1605049) |
| 盈利期间的逆转-公告 | `0.785` | `25.7%` | `每日` | [QuantConnect](./static/strategies/reversal-during-earnings-announcements.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2275982) |
| 规模因素--小市值股票溢价 | `0.747` | `11.1%` | `每年一次` | [QuantConnect](./static/strategies/small-capitalization-stocks-premium-anomaly.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3177539) |
| 股票中的低波动因素效应 | `0.717` | `11.5%` | `月度` | [QuantConnect](./static/strategies/low-volatility-factor-effect-in-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=980865) |
| 如何使用公司文件的词汇密度 | `0.688` | `10.4%` | `月度` | [QuantConnect](./static/strategies/how-to-use-lexical-density-of-company-filings.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3921091) |
| 波动性风险溢价效应 | `0.637` | `13.2%` | `月度` | [QuantConnect](./static/strategies/volatility-risk-premium-effect.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=189840) |
| 与股票的配对交易 | `0.634` | `8.5%` | `每日` | [QuantConnect](./static/strategies/pairs-trading-with-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=141615) |
| 原油预示着股票收益 | `0.599` | `11.5%` | `月度` | [QuantConnect](./static/strategies/crude-oil-predicts-equity-returns.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=460500) |
| 对赌股票中的贝塔系数 | `0.594` | `18.9%` | `月度` | [QuantConnect](./static/strategies/betting-against-beta-factor-in-stocks.py) | [纸张](https://pages.stern.nyu.edu/~lpederse/papers/BettingAgainstBeta.pdf) |
| 股票中的趋势跟踪效应 | `0.569` | `15.2%` | `每日` | [QuantConnect](./static/strategies/trend-following-effect-in-stocks.py) | [纸张](https://www.cis.upenn.edu/~mkearns/finread/trend.pdf) |
| ESG因子动量策略 | `0.559` | `21.8%` | `月度` | [QuantConnect](./static/strategies/esg-factor-momentum-strategy.py) | [纸张](https://www.semanticscholar.org/paper/Can-ESG-Add-Alpha-An-Analysis-of-ESG-Tilt-and-Nagy-Kassam/64f77da4f8ce5906a73ffe4e9eec7c49c0960acc) |
| 价值(账面价值)因素 | `0.526` | `11.9%` | `月度` | [QuantConnect](./static/strategies/value-book-to-market-factor.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2595747) |
| 足球俱乐部的股票套利 | `0.515` | `14.2%` | `每日` | [QuantConnect](./static/strategies/soccer-clubs-stocks-arbitrage.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1343685) |
| 合成贷款利率预示着随后的市场回报 | `0.494` | `13.7%` | `每日` | [QuantConnect](./static/strategies/synthetic-lending-rates-predict-subsequent-market-return.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3976307) |
| 期权到期周效应 | `0.452` | `5%` | `每周` | [QuantConnect](./static/strategies/option-expiration-week-effect.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1571786) |
| 分散交易 | `0.432` | `8.1%` | `月度` | [QuantConnect](./static/strategies/dispersion-trading.py) | [纸张](https://www.academia.edu/16327015/EQUILIBRIUM_INDEX_AND_SINGLE_STOCK_VOLATILITY_RISK_PREMIA) |
| 共同基金回报的势头 | `0.414` | `13.6%` | `季度` | [QuantConnect](./static/strategies/momentum-in-mutual-fund-returns.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1462408) |
| 扇形动量--旋转系统 | `0.401` | `14.1%` | `月度` | [QuantConnect](./static/strategies/sector-momentum-rotational-system.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1585517) |
| 结合智能因素的势头和市场组合 | `0.388` | `8.2%` | `月度` | [QuantConnect](./static/strategies/combining-smart-factors-momentum-and-market-portfolio.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3745517) |
| 股票的动量和反转与波动效应的结合 | `0.375` | `17%` | `月度` | [QuantConnect](./static/strategies/momentum-and-reversal-combined-with-volatility-effect-in-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1679464) |
| 市场情绪和一夜之间的反常现象 | `0.369` | `3.6%` | `每日` | [QuantConnect](./static/strategies/market-sentiment-and-an-overnight-anomaly.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3829582) |
| 一月的晴雨表 | `0.365` | `7.4%` | `月度` | [QuantConnect](./static/strategies/january-barometer.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1436516) |
| 研发支出和股票收益 | `0.354` | `8.1%` | `每年一次` | [QuantConnect](./static/strategies/rd-expenditures-and-stock-returns.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=227564) |
| 价值因素 - 国家内部的CAPE效应 | `0.351` | `20.2%` | `每年一次` | [QuantConnect](./static/strategies/value-factor-effect-within-countries.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2129474) |
| 股票收益横截面的12个月周期 | `0.34` | `43.7%` | `月度` | [QuantConnect](./static/strategies/12-month-cycle-in-cross-section-of-stocks-returns.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=687022) |
| 股票指数的月度转折 | `0.305` | `7.2%` | `每日` | [QuantConnect](./static/strategies/turn-of-the-month-in-equity-indexes.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=917884) |
| 发薪日反常现象 | `0.269` | `3.8%` | `每日` | [QuantConnect](./static/strategies/payday-anomaly.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3257064) |
| 利用国家ETF进行对价交易 | `0.257` | `5.7%` | `每日` | [QuantConnect](./static/strategies/pairs-trading-with-country-etfs.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1958546) |
| 剩余动量系数 | `0.24` | `9.7%` | `月度` | [QuantConnect](./static/strategies/residual-momentum-factor.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2319861) |
| 盈利公告溢价 | `0.192` | `3.7%` | `月度` | [QuantConnect](./static/strategies/earnings-announcement-premium.py) | [纸张](https://www.nber.org/system/files/working_papers/w13090/w13090.pdf) |
| 股票内部的ROA效应 | `0.155` | `8.7%` | `月度` | [QuantConnect](./static/strategies/roa-effect-within-stocks.py) | [纸张](https://static1.squarespace.com/static/5e6033a4ea02d801f37e15bb/t/5f61583e88f43b7d5b7196b5/1600215105801/Chen_Zhang_JF.pdf) |
| 股票的52周高点效应 | `0.153` | `19%` | `月度` | [QuantConnect](./static/strategies/52-weeks-high-effect-in-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1787378) |
| 结合基本面FSCORE和股票短期逆转的情况 | `0.153` | `17.6%` | `月度` | [QuantConnect](./static/strategies/combining-fundamental-fscore-and-equity-short-term-reversals.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3097420) |
| 对抗国际股票中的贝塔系数的赌注 | `0.142` | `9.1%` | `月度` | [QuantConnect](./static/strategies/betting-against-beta-factor-in-country-equity-indexes.py) | [纸张](https://pages.stern.nyu.edu/~lpederse/papers/BettingAgainstBeta.pdf) |
| 一贯的动力策略 | `0.128` | `28.8%` | `6个月` | [QuantConnect](./static/strategies/consistent-momentum-strategy.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2652592) |
| 空头利息效应--多空版本 | `0.079` | `6.6%` | `月度` | [QuantConnect](./static/strategies/short-interest-effect-long-short-version.py) | [纸张](https://www.semanticscholar.org/paper/Why-Do-Short-Interest-Levels-Predict-Stock-Returns-Boehmer-Erturk/06418ef437dc7156229532a97d0f8392373eb297?p2df) |
| 动量因素与资产增长效应相结合 | `0.058` | `25.1%` | `月度` | [QuantConnect](./static/strategies/momentum-factor-combined-with-asset-growth-effect.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1684767) |
| 股票中的动量因素效应 | `-0.008` | `21.8%` | `月度` | [QuantConnect](./static/strategies/momentum-factor-effect-in-stocks.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2435323) |
| 动量因素和风格轮换效应 | `-0.056` | `10%` | `月度` | [QuantConnect](./static/strategies/momentum-factor-and-style-rotation-effect.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1276815) |
| 盈利公告与股票回购的结合 | `-0.16` | `0.1%` | `每日` | [QuantConnect](./static/strategies/earnings-announcements-combined-with-stock-repurchases.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2589966) |
| 盈利质量因素 | `-0.18` | `28.7%` | `每年一次` | [QuantConnect](./static/strategies/earnings-quality-factor.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2179247) |
| 应计项目的异常情况 | `-0.272` | `13.7%` | `每年一次` | [QuantConnect](./static/strategies/accrual-anomaly.py) | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=546108) |
| ESG、价格动量和随机优化 | `N/A` | `N/A` | `月度` |  | [纸张](https://quantpedia.com/strategies/esg-price-momentum-and-stochastic-optimization/) |
| 公司申报和股票回报的正相似性 | `N/A` | `N/A` | `月度` |  | [纸张](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3690461) |

# 书籍

为量化交易者提供的55本书的综合清单。


## 初学者

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [A Beginner’s Guide to the Stock Market: Everything You Need to Start Making Money Today - Matthew R. Kratter](https://amzn.to/3QN2VdU) | ![](https://badgen.net/badge/reviews/14%20161/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [How to Day Trade for a Living: A Beginner’s Guide to Trading Tools and Tactics, Money Management, Discipline and Trading Psychology - Andrew Aziz](https://amzn.to/3bmehFv) | ![](https://badgen.net/badge/reviews/12%20278/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [The Little Book of Common Sense Investing: The Only Way to Guarantee Your Fair Share of Stock Market Returns - John C. Bogle](https://amzn.to/3A4mgkR) | ![](https://badgen.net/badge/reviews/6%20969/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Investing QuickStart Guide: The Simplified Beginner’s Guide to Successfully Navigating the Stock Market, Growing Your Wealth & Creating a Secure Financial Future - Ted D. Snow](https://amzn.to/3A5aRkX) | ![](https://badgen.net/badge/reviews/2%20537/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Day Trading QuickStart Guide: The Simplified Beginner’s Guide to Winning Trade Plans, Conquering the Markets, and Becoming a Successful Day Trader - Troy Noonan](https://amzn.to/3HPZijw) | ![](https://badgen.net/badge/reviews/1%20229/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Introduction To Algo Trading: How Retail Traders Can Successfully Compete With Professional Traders - Kevin J Davey](https://amzn.to/39Tf7JC) | ![](https://badgen.net/badge/reviews/131/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Algorithmic Trading and DMA: An introduction to direct access trading strategies - Barry Johnson](https://amzn.to/3xYb0UN) | ![](https://badgen.net/badge/reviews/69/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |


## 传记

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [My Life as a Quant: Reflections on Physics and Finance - Emanuel Derman](https://amzn.to/3A8KudR) | ![](https://badgen.net/badge/reviews/192/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [How I Became a Quant: Insights from 25 of Wall Street’s Elite: - Barry Schachter](https://amzn.to/3Alf8kz) | ![](https://badgen.net/badge/reviews/27/blue) | ![](https://badgen.net/badge/rating/3.7/blue) |



## 编码

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [Python for Finance: Mastering Data-Driven Finance - Yves Hilpisch](https://amzn.to/3NhkTlP) | ![](https://badgen.net/badge/reviews/249/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Trading Evolved: Anyone can Build Killer Trading Strategies in Python - Andreas F. Clenow](https://amzn.to/3A0jcGB) | ![](https://badgen.net/badge/reviews/173/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Python for Algorithmic Trading: From Idea to Cloud Deployment - Yves Hilpisch](https://amzn.to/3bpkd0C) | ![](https://badgen.net/badge/reviews/90/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Algorithmic Trading with Python: Quantitative Methods and Strategy Development - Chris Conlan](https://amzn.to/3u3cxYo) | ![](https://badgen.net/badge/reviews/48/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Learn Algorithmic Trading: Build and deploy algorithmic trading systems and strategies using Python and advanced data analysis - Sebastien Donadio](https://amzn.to/3NqNghA) | ![](https://badgen.net/badge/reviews/46/blue) | ![](https://badgen.net/badge/rating/4.1/blue) |


## 隐蔽性

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [The Bitcoin Standard: The Decentralized Alternative to Central Banking - Saifedean Ammous](https://amzn.to/3QMJgec) | ![](https://badgen.net/badge/reviews/5%20136/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Bitcoin Billionaires: A True Story of Genius, Betrayal, and Redemption - Ben Mezrich](https://amzn.to/39SkdWt) | ![](https://badgen.net/badge/reviews/1%20787/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Mastering Bitcoin: Programming the Open Blockchain - Andreas M. Antonopoulos](https://amzn.to/3NniZ3p) | ![](https://badgen.net/badge/reviews/955/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Why Buy Bitcoin: Investing Today in the Money of Tomorrow - Andy Edstrom](https://amzn.to/3OMcKqZ) | ![](https://badgen.net/badge/reviews/192/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |


## 一般

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [The Intelligent Investor: The Definitive Book on Value Investing - Benjamin Graham, Jason Zweig](https://www.amazon.fr/gp/product/0060555661/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0060555661&linkId=aba73910e4e3873b6cc8364487662bd6) | ![](https://badgen.net/badge/reviews/38%20087/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [How I Invest My Money: Finance experts reveal how they save, spend, and invest - Joshua Brown, Brian Portnoy](https://amzn.to/3A4rsoU) | ![](https://badgen.net/badge/reviews/892/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Naked Forex: High-Probability Techniques for Trading Without Indicators - Alex Nekritin](https://amzn.to/3NkrAUj) | ![](https://badgen.net/badge/reviews/720/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [The Four Pillars of Investing: Lessons for Building a Winning Portfolio - William J. Bernstein](https://www.amazon.fr/gp/product/B0041842TW/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=B0041842TW&linkId=d9bc2fec4f3faa41ca4f24aed3c72122) | ![](https://badgen.net/badge/reviews/441/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Option Volatility and Pricing: Advanced Trading Strategies and Techniques, 2nd Edition - Sheldon Natenberg](https://amzn.to/3btOxXL) | ![](https://badgen.net/badge/reviews/388/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [The Art and Science of Technical Analysis: Market Structure, Price Action, and Trading Strategies - Adam Grimes](https://www.amazon.fr/gp/product/1118115120/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118115120&linkId=d5dc1f0e6727b2663d2186a110a31ad0) | ![](https://badgen.net/badge/reviews/305/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [The New Trading for a Living: Psychology, Discipline, Trading Tools and Systems, Risk Control, Trade Management (Wiley Trading) - Alexander Elder](https://www.amazon.fr/gp/product/1118467450/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118467450&linkId=67ee502653bc52a5240ced9fc88eb76d) | ![](https://badgen.net/badge/reviews/242/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Building Winning Algorithmic Trading Systems: A Trader’s Journey From Data Mining to Monte Carlo Simulation to Live Trading (Wiley Trading) - Kevin J Davey](https://amzn.to/39QnsxA) | ![](https://badgen.net/badge/reviews/163/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Systematic Trading: A unique new method for designing trading and investing systems - Robert Carver](https://www.amazon.fr/gp/product/0857194453/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0857194453&linkId=32d8bffc32c01041cde066bacab76c04) | ![](https://badgen.net/badge/reviews/123/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Quantitative Momentum: A Practitioner’s Guide to Building a Momentum-Based Stock Selection System (Wiley Finance) - Wesley R. Gray, Jack R. Vogel](https://www.amazon.fr/gp/product/111923719X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=111923719X&linkId=b825cb65462a4a9254af3b7dc5328131) | ![](https://badgen.net/badge/reviews/105/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading: Winning Strategies and Their Rationale - Ernest P. Chan](https://amzn.to/3xWi8kd) | ![](https://badgen.net/badge/reviews/100/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Leveraged Trading: A professional approach to trading FX, stocks on margin, CFDs, spread bets and futures for all traders - Robert Carver](https://amzn.to/3Nhl6p7) | ![](https://badgen.net/badge/reviews/98/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Trading Systems: A New Approach to System Development and Portfolio Optimisation - Emilio Tomasini, Urban Jaekle](https://www.amazon.fr/gp/product/1905641796/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1905641796&linkId=61e6634242c497498338f73641ce0a80) | ![](https://badgen.net/badge/reviews/67/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Trading and Exchanges: Market Microstructure for Practitioners - Larry Harris](https://www.amazon.fr/gp/product/0195144708/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0195144708&linkId=e47e596fc0696cbd624726cce05b4500) | ![](https://badgen.net/badge/reviews/61/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Trading Systems 2nd edition: A new approach to system development and portfolio optimisation - Emilio Tomasini, Urban Jaekle](https://www.amazon.fr/gp/product/085719755X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=085719755X&linkId=97aa558484a8dc2bf57a5296e7f38cad) | ![](https://badgen.net/badge/reviews/42/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Machine Trading: Deploying Computer Algorithms to Conquer the Markets - Ernest P. Chan](https://amzn.to/3OIBe4o) | ![](https://badgen.net/badge/reviews/53/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Quantitative Equity Portfolio Management: An Active Approach to Portfolio Construction and Management (McGraw-Hill Library of Investment and Finance) - Ludwig B Chincarini, Daehwan Kim](https://amzn.to/3yl9u0c) | ![](https://badgen.net/badge/reviews/51/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Active Portfolio Management: A Quantitative Approach for Producing Superior Returns and Controlling Risk - Richard Grinold, Ronald Kahn](https://amzn.to/3xMKaic) | ![](https://badgen.net/badge/reviews/46/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [Quantitative Technical Analysis: An integrated approach to trading system development and trading management - Dr Howard B Bandy](https://www.amazon.fr/gp/product/0979183855/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0979183855&linkId=8ef7bda69477bdccf90f5ac02ee495b0) | ![](https://badgen.net/badge/reviews/37/blue) | ![](https://badgen.net/badge/rating/3.8/blue) |
| [Advances in Active Portfolio Management: New Developments in Quantitative Investing - Richard Grinold, Ronald Kahn](https://amzn.to/3xUTK2z) | ![](https://badgen.net/badge/reviews/19/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |
| [Professional Automated Trading: Theory and Practice - Eugene A. Durenard](https://amzn.to/3yhfOpw) | ![](https://badgen.net/badge/reviews/15/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading and Quantitative Strategies (Chapman and Hall/CRC Financial Mathematics Series) - Raja Velu, Maxence Hardy, Daniel Nehren](https://amzn.to/3xUTQXZ) | ![](https://badgen.net/badge/reviews/11/blue) | ![](https://badgen.net/badge/rating/4.2/blue) |
| [Quantitative Trading: Algorithms, Analytics, Data, Models, Optimization - Xin Guo, Tze Leung Lai, Howard Shek, Samuel Po-Shing Wong](https://www.amazon.fr/gp/product/0367871815/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0367871815&linkId=3f2ba1cbc0e1fe02e255da740423b2fb) | ![](https://badgen.net/badge/reviews/2/blue) | ![](https://badgen.net/badge/rating/3/blue) |


## 高频交易

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [Inside the Black Box: A Simple Guide to Quantitative and High Frequency Trading - Rishi K. Narang](https://www.amazon.fr/gp/product/1118362411/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1118362411&linkId=35e02d4e636350366531a5033597a541) | ![](https://badgen.net/badge/reviews/76/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic and High-Frequency Trading (Mathematics, Finance and Risk) - Álvaro Cartea, Sebastian Jaimungal, José Penalva](https://www.amazon.fr/gp/product/1107091144/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1107091144&linkId=64e3ceb66482d8db6827830964b85613) | ![](https://badgen.net/badge/reviews/52/blue) | ![](https://badgen.net/badge/rating/4.1/blue) |
| [The Problem of HFT – Collected Writings on High Frequency Trading & Stock Market Structure Reform - Haim Bodek](https://www.amazon.fr/gp/product/1481978357/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1481978357&linkId=2f3acf998de645990b681e2ac9f0217c) | ![](https://badgen.net/badge/reviews/38/blue) | ![](https://badgen.net/badge/rating/4/blue) |
| [An Introduction to High-Frequency Finance - Ramazan Gençay, Michel Dacorogna, Ulrich A. Muller, Olivier Pictet, Richard Olsen](https://www.amazon.fr/gp/product/0122796713/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0122796713&linkId=7e6c098026204f399e45d7fbb803dcca) | ![](https://badgen.net/badge/reviews/11/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Market Microstructure in Practice - Charles-Albert Lehalle, Sophie Laruelle](https://www.amazon.fr/Market-Microstructure-Practice-Sophie-Laruelle/dp/9813231122) | ![](https://badgen.net/badge/reviews/8/blue) | ![](https://badgen.net/badge/rating/3.9/blue) |
| [The Financial Mathematics of Market Liquidity - Olivier Gueant](https://www.amazon.com/Financial-Mathematics-Market-Liquidity-Execution/dp/1498725473) | ![](https://badgen.net/badge/reviews/6/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [High-Frequency Trading - Maureen O’Hara, David Easley, Marcos M López de Prado](https://www.amazon.fr/gp/product/178272009X/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=178272009X&linkId=082f861ff6bbe4cca4ef7ccbe620a2c4) | ![](https://badgen.net/badge/reviews/1/blue) | ![](https://badgen.net/badge/rating/3/blue) |


## 机器学习

|  标题   | 评论 | 评价 |
|----------|---------|--------|
| [Dark Pools: The rise of A.I. trading machines and the looming threat to Wall Street - Scott Patterson](https://www.amazon.fr/gp/product/0307887189/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0307887189&linkId=2572cae24ed7de0b279580312daf0f03) | ![](https://badgen.net/badge/reviews/532/blue) | ![](https://badgen.net/badge/rating/4.5/blue) |
| [Advances in Financial Machine Learning - Marcos Lopez de Prado](https://www.amazon.fr/gp/product/1119482089/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1119482089&linkId=7eff4d3f3d9f2d00d05032f726386e53) | ![](https://badgen.net/badge/reviews/446/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Machine Learning for Algorithmic Trading: Predictive models to extract signals from market and alternative data for systematic trading strategies with Python, 2nd Edition - Stefan Jansen](https://www.amazon.fr/gp/product/1839217715/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1839217715&linkId=80e3e93e1b6027596858ed0f1fbf10c2) | ![](https://badgen.net/badge/reviews/229/blue) | ![](https://badgen.net/badge/rating/4.4/blue) |
| [Machine Learning for Asset Managers (Elements in Quantitative Finance) - Marcos M López de Prado](https://www.amazon.fr/gp/product/1108792898/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1108792898&linkId=8eb7e3c369d38b36df8dfecf05a622db) | ![](https://badgen.net/badge/reviews/96/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Machine Learning in Finance: From Theory to Practice - Matthew F. Dixon, Igor Halperin, Paul Bilokon](https://www.amazon.fr/gp/product/3030410676/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=3030410676&linkId=5f5f1df6be62ae96ef7a0c536c3ecdb4) | ![](https://badgen.net/badge/reviews/76/blue) | ![](https://badgen.net/badge/rating/4.6/blue) |
| [Artificial Intelligence in Finance: A Python-Based Guide - Yves Hilpisch](https://www.amazon.fr/gp/product/1492055433/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=1492055433&linkId=7c20249be4d35badb127d6a5423fc495) | ![](https://badgen.net/badge/reviews/38/blue) | ![](https://badgen.net/badge/rating/4.3/blue) |
| [Algorithmic Trading Methods: Applications Using Advanced Statistics, Optimization, and Machine Learning Techniques - Robert Kissell](https://www.amazon.fr/gp/product/0128156309/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=darchimbaud-21&creative=6746&linkCode=as2&creativeASIN=0128156309&linkId=0a197c0b547a0ee63ccd19389bb42edd) | ![](https://badgen.net/badge/reviews/15/blue) | ![](https://badgen.net/badge/rating/4.7/blue) |


# 视频

| 标题                                                              | 喜欢 |
|--------------------------------------------------------------------|-------|
| [Krish Naik - Machine learning tutorials and their Application in Stock Prediction](https://www.youtube.com/watch?v=H6du_pfuznE) | ![](https://badgen.net/badge/likes/6.3k/blue) |
| [QuantInsti Youtube - webinars about Machine Learning for trading](https://www.youtube.com/user/quantinsti/search?query=machine+learning) | ![](https://badgen.net/badge/likes/6.1k/blue) |
| [Siraj Raval - Videos about stock market prediction using Deep Learning](https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A/search?query=trading) | ![](https://badgen.net/badge/likes/1.7k/blue) |
| [Quantopian - Webinars about Machine Learning for trading](https://www.youtube.com/channel/UC606MUq45P3zFLa4VGKbxsg/search?query=machine+learning) | ![](https://badgen.net/badge/likes/1.5k/blue) |
| [Sentdex - Machine Learning for Forex and Stock analysis and algorithmic trading](https://www.youtube.com/watch?v=v_L9jR8P-54&list=PLQVvvaa0QuDe6ZBtkCNWNUbdaBo2vA4RO) | ![](https://badgen.net/badge/likes/1.5k/blue) |
| [QuantNews - Machine Learning for Algorithmic Trading 3 part series](https://www.youtube.com/playlist?list=PLHJACfjILJ-91qkw5YC83S6COKGscctzz) | ![](https://badgen.net/badge/likes/806/blue) |
| [Sentdex - Python programming for Finance (a few videos including Machine Learning)](https://www.youtube.com/watch?v=Z-5wNWgRJpk&index=9&list=PLQVvvaa0QuDcOdF96TBtRtuQksErCEBYZ) | ![](https://badgen.net/badge/likes/735/blue) |
| [Chat with Traders EP042 - Machine learning for algorithmic trading with Bert Mouler](https://www.youtube.com/watch?v=i8FNO8r7PaE) | ![](https://badgen.net/badge/likes/687/blue) |
| [Tucker Balch - Applying Deep Reinforcement Learning to Trading](https://www.youtube.com/watch?v=Pka0DC_P17k) | ![](https://badgen.net/badge/likes/487/blue) |
| [Ernie Chan - Machine Learning for Quantitative Trading Webinar](https://www.youtube.com/watch?v=72aEDjwGMr8&t=1023s) | ![](https://badgen.net/badge/likes/436/blue) |
| [Chat with Traders EP147 - Detective work leading to viable trading strategies with Tom Starke](https://www.youtube.com/watch?v=JjXw9Mda7eY) | ![](https://badgen.net/badge/likes/407/blue) |
| [Chat with Traders EP142 - Algo trader using automation to bypass human flaws with Bert Mouler](https://www.youtube.com/watch?v=ofL66mh6Tw0) | ![](https://badgen.net/badge/likes/316/blue) |
| [Master Thesis presentation, Uni of Essex - Analyzing the Limit Order Book, A Deep Learning Approach](https://www.youtube.com/watch?v=qxSh2VFmRGw) | ![](https://badgen.net/badge/likes/264/blue) |
| [Howard Bandy - Machine Learning Trading System Development Webinar](https://www.youtube.com/watch?v=v729evhMpYk&t=1s) | ![](https://badgen.net/badge/likes/253/blue) |
| [Chat With Traders EP131 - Trading strategies, powered by machine learning with Morgan Slade](https://www.youtube.com/watch?v=EbWbeYu8zwg) | ![](https://badgen.net/badge/likes/229/blue) |
| [Chat with Traders Quantopian 5 - Good Uses of Machine Learning in Finance with Max Margenot](https://www.youtube.com/watch?v=Zj5sXWv9SDM) | ![](https://badgen.net/badge/likes/198/blue) |
| [Hitoshi Harada, CTO at Alpaca - Deep Learning in Finance Talk](https://www.youtube.com/watch?v=FoQKCeDuPiY) | ![](https://badgen.net/badge/likes/147/blue) |
| [Better System Trader EP028 - David Aronson shares research into indicators that identify Bull and Bear markets.](https://www.youtube.com/watch?v=Q4rV0Y9NokI) | ![](https://badgen.net/badge/likes/97/blue) |
| [Prediction Machines - Deep Learning with Python in Finance Talk](https://www.youtube.com/watch?v=xvm-M-R2fZY) | ![](https://badgen.net/badge/likes/87/blue) |
| [Better System Trader EP064 - Cryptocurrencies and Machine Learning with Bert Mouler](https://www.youtube.com/watch?v=YgRTd4nLJoU) | ![](https://badgen.net/badge/likes/35/blue) |
| [Better System Trader EP023 - Portfolio manager Michael Himmel talks AI and machine learning in trading](https://www.youtube.com/watch?v=9tZjeyhfG0g) | ![](https://badgen.net/badge/likes/29/blue) |
| [Better System Trader EP082 - Machine Learning With Kris Longmore](https://www.youtube.com/watch?v=0syNgsd635M) | ![](https://badgen.net/badge/likes/18/blue) |



# 博客

| 标题                                                              |
|--------------------------------------------------------------------|
| [AAA Quants, Tom Starke Blog](http://aaaquants.com/category/blog/) |
| [AI & Systematic Trading](https://blog.paperswithbacktest.com/)          |
| [Blackarbs blog](http://www.blackarbs.com/blog/)                   |
| [Hardikp, Hardik Patel blog](https://www.hardikp.com/)             |
| [Max Dama on Automated Trading](https://bit.ly/3wVZbh9)            |
| [Medallion.Club on Systematic Trading (FR)](https://medallion.club/trading-algorithmique-quantitatif-systematique/)            |
| [Proof Engineering: The Algorithmic Trading Platform](https://bit.ly/3lX7zYN) |
| [Quantsportal, Jacques Joubert's Blog](http://www.quantsportal.com/blog-page/) |
| [Quantstart - Machine Learning for Trading articles](https://www.quantstart.com/articles) |
| [RobotWealth, Kris Longmore Blog](https://robotwealth.com/blog/) |


# 课程

| 标题                                                              |
|--------------------------------------------------------------------|
| [AI in Finance](https://cfte.education/)                           |
| [AI & Systematic Trading](https://paperswithbacktest.com/course)               |
| [Algorithmic Trading for Cryptocurrencies in Python](https://github.com/tudorelu/tudorials/tree/master/trading) |
| [Coursera, NYU - Guided Tour of Machine Learning in Finance](https://www.coursera.org/learn/guided-tour-machine-learning-finance) |
| [Coursera, NYU - Fundamentals of Machine Learning in Finance](https://www.coursera.org/learn/fundamentals-machine-learning-in-finance) |
| [Coursera, NYU - Reinforcement Learning in Finance](https://www.coursera.org/learn/reinforcement-learning-in-finance) |
| [Coursera, NYU - Overview of Advanced Methods for Reinforcement Learning in Finance](https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance) |
| [Hudson and Thames Quantitative Research](https://github.com/hudson-and-thames) |
| [NYU: Overview of Advanced Methods of Reinforcement Learning in Finance](https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance/home/welcome) |
| [Udacity: Artificial Intelligence for Trading](https://www.udacity.com/course/ai-for-trading--nd880) |
| [Udacity, Georgia Tech - Machine Learning for Trading](https://www.udacity.com/course/machine-learning-for-trading--ud501) |


================================================
FILE: static/strategies/12-month-cycle-in-cross-section-of-stocks-returns.py
================================================
# https://quantpedia.com/strategies/12-month-cycle-in-cross-section-of-stocks-returns/
#
# The top 30% of firms based on their market cap from NYSE and AMEX are part of the investment universe. Every month, stocks are grouped 
# into ten portfolios (with an equal number of stocks in each portfolio) according to their performance in one month one year ago. Investors
# go long in stocks from the winner decile and shorts stocks from the loser decile. The portfolio is equally weighted and rebalanced every month.
#
# QC implementation changes:
#   - Universe consists of top 3000 US stock by market cap from NYSE, AMEX and NASDAQ.
#   - Portfolio is value weighted.

from AlgorithmImports import *

class Month12CycleinCrossSectionofStocksReturns(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)  
        self.SetCash(100000)

        self.symbol = self.AddEquity('SPY', Resolution.Daily).Symbol
        
        self.coarse_count = 500
        
        # Monthly close data.
        self.data = {}
        self.period = 13
        
        self.weight = {}

        self.selection_flag = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        
        self.Schedule.On(self.DateRules.MonthEnd(self.symbol), self.TimeRules.BeforeMarketClose(self.symbol), self.Selection)

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(10)
            
    def CoarseSelectionFunction(self, coarse):
        if not self.selection_flag:
            return Universe.Unchanged

        # Update the rolling window every month.
        for stock in coarse:
            symbol = stock.Symbol

            # Store monthly price.
            if symbol in self.data:
                self.data[symbol].update(stock.AdjustedPrice)

        # selected = [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa']
        selected = [x.Symbol
            for x in sorted([x for x in coarse if x.HasFundamentalData and x.Market == 'usa'],
                key = lambda x: x.DollarVolume, reverse = True)[:self.coarse_count]]
        
        # Warmup price rolling windows.
        for symbol in selected:
            if symbol in self.data:
                continue
            
            self.data[symbol] = SymbolData(symbol, self.period)
            history = self.History(symbol, self.period*30, Resolution.Daily)
            if history.empty:
                self.Log(f"Not enough data for {symbol} yet.")
                continue
            closes = history.loc[symbol].close
            
            closes_len = len(closes.keys())
            # Find monthly closes.
            for index, time_close in enumerate(closes.iteritems()):
                # index out of bounds check.
                if index + 1 < closes_len:
                    date_month = time_close[0].date().month
                    next_date_month = closes.keys()[index + 1].month
                
                    # Found last day of month.
                    if date_month != next_date_month:
                        self.data[symbol].update(time_close[1])
            
        return [x for x in selected if self.data[x].is_ready()]    
        
    def FineSelectionFunction(self, fine):
        fine = [x for x in fine if x.MarketCap != 0 and x.CompanyReference.IsREIT != 1 and  \
                    ((x.SecurityReference.ExchangeId == "NYS") or (x.SecurityReference.ExchangeId == "NAS") or (x.SecurityReference.ExchangeId == "ASE"))]
                    
        if len(fine) > self.coarse_count:
            sorted_by_market_cap = sorted(fine, key = lambda x: x.MarketCap, reverse=True)
            top_by_market_cap = sorted_by_market_cap[:self.coarse_count]
        else:
            top_by_market_cap = fine

        # Performance sorting. One month performance, one year ago with market cap data.
        performance_market_cap = { x.Symbol : (self.data[x.Symbol].performance(), x.MarketCap) for x in top_by_market_cap if x.Symbol in self.data and self.data[x.Symbol].is_ready()}
        
        long = []
        short = []
        if len(performance_market_cap) >= 10:
            sorted_by_perf = sorted(performance_market_cap.items(), key = lambda x:x[1][0], reverse = True)
            decile = int(len(sorted_by_perf) / 10)
            long = [x for x in sorted_by_perf[:decile]]
            short = [x for x in sorted_by_perf[-decile:]]
        
        total_market_cap_long = sum([x[1][1] for x in long])
        for symbol, perf_market_cap in long:
            self.weight[symbol] = perf_market_cap[1] / total_market_cap_long

        total_market_cap_short = sum([x[1][1] for x in short])
        for symbol, perf_market_cap in short:
            self.weight[symbol] = perf_market_cap[1] / total_market_cap_short
        
        return [x[0] for x in self.weight.items()]

    def OnData(self, data):
        if not self.selection_flag:
            return
        self.selection_flag = False
        
        # Trade execution.
        stocks_invested = [x.Key for x in self.Portfolio if x.Value.Invested]
        for symbol in stocks_invested:
            if symbol not in self.weight:
                self.Liquidate(symbol)
        
        for symbol, w in self.weight.items():
            self.SetHoldings(symbol, w)

        self.weight.clear()
    
    def Selection(self):
        self.selection_flag = True

class SymbolData():
    def __init__(self, symbol, period):
        self.Symbol = symbol
        self.Window = RollingWindow[float](period)
    
    def update(self, value):
        self.Window.Add(value)
    
    def is_ready(self):
        return self.Window.IsReady
        
    # One month performance, one year ago.
    def performance(self):
        values = [x for x in self.Window]
        return (values[-2] / values[-1] - 1)
        
# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/52-weeks-high-effect-in-stocks.py
================================================
# https://quantpedia.com/strategies/52-weeks-high-effect-in-stocks/
#
# The investment universe consists of all stocks from NYSE, AMEX and NASDAQ (the research paper used the CRSP 
# database for backtesting). The ratio between the current price and 52-week high is calculated for each stock 
# at the end of each month (PRILAG i,t = Price i,t / 52-Week High i,t). Every month, the investor then calculates
# the weighted average of ratios (PRILAG i,t) from all firms in each industry (20 industries are used), where the
# weight is the market capitalization of the stock at the end of month t. The winners (losers) are stocks in the
# six industries with the highest (lowest) weighted averages of PRILAGi,t. The investor buys stocks in the winner
# portfolio and shorts stocks in the loser portfolio and holds them for three months. Stocks are weighted equally
# and the portfolio is rebalanced monthly (which means that 1/3 of the portfolio is rebalanced each month).
#
# QC implementation changes:
#   - Universe consists of 500 most liquid stocks traded on NYSE, AMEX, or NASDAQ.

from numpy import floor
from AlgorithmImports import *

class Weeks52HighEffectinStocks(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)

        self.SetSecurityInitializer(lambda x: x.SetMarketPrice(self.GetLastKnownPrice(x)))
        
        self.period = 12 * 21

        # Tranching.
        self.holding_period = 3
        self.managed_queue = []

        # Daily 'high' data.
        self.data = {}
        
        self.symbol = self.AddEquity('SPY', Resolution.Daily).Symbol
        
        self.coarse_count = 500
        self.selection_flag = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        self.Schedule.On(self.DateRules.MonthEnd(self.symbol), self.TimeRules.AfterMarketOpen(self.symbol), self.Selection)

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(10)
            
    def CoarseSelectionFunction(self, coarse):
        # Update the rolling window every day.
        for stock in coarse:
            symbol = stock.Symbol

            if symbol in self.data:
                # Store daily price.
                self.data[symbol].update(stock.AdjustedPrice)
            
        if not self.selection_flag:
            return Universe.Unchanged
        
        selected = [x.Symbol
            for x in sorted([x for x in coarse if x.HasFundamentalData and x.Market == 'usa'],
                key = lambda x: x.DollarVolume, reverse = True)[:self.coarse_count]]
        
        # Warmup price rolling windows.
        for symbol in selected:
            if symbol in self.data:
                continue
            
            self.data[symbol] = SymbolData(symbol, self.period)
            history = self.History(symbol, self.period, Resolution.Daily)
            if history.empty:
                self.Log(f"Not enough data for {symbol} yet")
                continue
            closes = history.loc[symbol].close
            for time, close in closes.iteritems():
                self.data[symbol].update(close)
                
        return [x for x in selected if self.data[x].is_ready()]

    def FineSelectionFunction(self, fine):
        fine = [x for x in fine if x.MarketCap != 0 and \
                ((x.SecurityReference.ExchangeId == "NYS") or (x.SecurityReference.ExchangeId == "NAS") or (x.SecurityReference.ExchangeId == "ASE"))]
        
        group = {}
        for stock in fine:
            symbol = stock.Symbol
            
            industry_group_code = stock.AssetClassification.MorningstarIndustryGroupCode
            if industry_group_code == 0: continue
            
            # Adding stocks in groups.
            if not industry_group_code in group:
                group[industry_group_code] = []
            
            max_high = self.data[symbol].maximum()
            price = self.data[symbol].get_latest_price()
            
            stock_prilag = (stock, price / max_high)
            group[industry_group_code].append(stock_prilag)
        
        top_industries = []
        low_industries = []
        
        if len(group) != 0: 
            # Weighted average of ratios calc.
            industry_prilag_weighted_avg = {}
            for industry_code in group:
                total_market_cap = sum([stock_prilag_data[0].MarketCap for stock_prilag_data in group[industry_code]])
                if total_market_cap == 0: continue
                industry_prilag_weighted_avg[industry_code] = sum([stock_prilag_data[1] * (stock_prilag_data[0].MarketCap / total_market_cap) for stock_prilag_data in group[industry_code]])
            
            if len(industry_prilag_weighted_avg) != 0:
                # Weighted average industry sorting.
                sorted_by_weighted_avg = sorted(industry_prilag_weighted_avg.items(), key=lambda x: x[1], reverse = True)
                top_industries = [x[0] for x in sorted_by_weighted_avg[:6]]
                low_industries = [x[0] for x in sorted_by_weighted_avg[-6:]]
        
        long = []
        short = []
        for industry_code in top_industries:
            for stock_prilag_data in group[industry_code]:
                symbol = stock_prilag_data[0].Symbol
                long.append(symbol)
        
        for industry_code in low_industries:
            for stock_prilag_data in group[industry_code]:
                symbol = stock_prilag_data[0].Symbol
                short.append(symbol)
                
        long_w = self.Portfolio.TotalPortfolioValue / self.holding_period / len(long)
        short_w = self.Portfolio.TotalPortfolioValue / self.holding_period / len(short)
        
        # symbol/quantity collection
        long_symbol_q = [(x, floor(long_w / self.data[x].get_latest_price())) for x in long]
        short_symbol_q = [(x, -floor(short_w / self.data[x].get_latest_price())) for x in short]
        
        self.managed_queue.append(RebalanceQueueItem(long_symbol_q + short_symbol_q))
        
        return long + short

    def OnData(self, data):
        if not self.selection_flag:
            return
        self.selection_flag = False

        remove_item = None
        
        # Rebalance portfolio
        for item in self.managed_queue:
            if item.holding_period == self.holding_period:
                # Liquidate
                for symbol, quantity in item.symbol_q:
                    self.MarketOrder(symbol, -quantity)
                remove_item = item
            
            # Trade execution    
            if item.holding_period == 0:
                open_symbol_q = []
                
                for symbol, quantity in item.symbol_q:
                    if self.Securities.ContainsKey(symbol) and self.Securities[symbol].IsTradable:
                        self.MarketOrder(symbol, quantity)
                        open_symbol_q.append((symbol, quantity))
                            
                # Only opened orders will be closed        
                item.symbol_q = open_symbol_q
                
            item.holding_period += 1
            
        # We need to remove closed part of portfolio after loop. Otherwise it will miss one item in self.managed_queue.
        if remove_item:
            self.managed_queue.remove(remove_item)

    def Selection(self):
        self.selection_flag = True

class RebalanceQueueItem():
    def __init__(self, symbol_q):
        # symbol/quantity collections
        self.symbol_q = symbol_q  
        self.holding_period = 0

class SymbolData():
    def __init__(self, symbol, period):
        self.Symbol = symbol
        self.Price = RollingWindow[float](period)
    
    def update(self, value):
        self.Price.Add(value)
    
    def is_ready(self):
        return self.Price.IsReady
     
    def maximum(self):
        return max([x for x in self.Price])
        
    def get_latest_price(self):
        return [x for x in self.Price][0]

# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/accrual-anomaly.py
================================================
# https://quantpedia.com/strategies/accrual-anomaly/
#
# The investment universe consists of all stocks on NYSE, AMEX, and NASDAQ. Balance sheet based accruals (the non-cash component of
# earnings) are calculated as: BS_ACC = ( ∆CA – ∆Cash) – ( ∆CL – ∆STD – ∆ITP) – Dep
# Where:
# ∆CA = annual change in current assets
# ∆Cash = change in cash and cash equivalents
# ∆CL = change in current liabilities
# ∆STD = change in debt included in current liabilities
# ∆ITP = change in income taxes payable
# Dep = annual depreciation and amortization expense
# Stocks are then sorted into deciles and investor goes long stocks with the lowest accruals and short stocks with the highest accruals. 
# The portfolio is rebalanced yearly during May (after all companies publish their earnings).

from AlgorithmImports import *

class AccrualAnomaly(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2006, 1, 1)
        self.SetCash(100000)
        
        self.symbol = self.AddEquity("SPY", Resolution.Daily).Symbol

        self.coarse_count = 1000
        
        self.long = []
        self.short = []
        
        # Latest accruals data.
        self.accrual_data = {}
        
        self.selection_flag = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        self.Schedule.On(self.DateRules.MonthEnd(self.symbol), self.TimeRules.AfterMarketOpen(self.symbol), self.Selection)

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(5)

        for security in changes.RemovedSecurities:
            symbol = security.Symbol
            if symbol in self.accrual_data:
                del self.accrual_data[symbol]
                
    def CoarseSelectionFunction(self, coarse):
        if not self.selection_flag:
            return Universe.Unchanged
        
        # selected = [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa']
        selected = [x.Symbol
            for x in sorted([x for x in coarse if x.HasFundamentalData and x.Market == 'usa'],
                key = lambda x: x.DollarVolume, reverse = True)[:self.coarse_count]]
        
        return selected
    
    def FineSelectionFunction(self, fine):
        fine = [x for x in fine if (float(x.FinancialStatements.BalanceSheet.CurrentAssets.TwelveMonths) != 0) 
                                and (float(x.FinancialStatements.BalanceSheet.CashAndCashEquivalents.TwelveMonths) != 0)
                                and (float(x.FinancialStatements.BalanceSheet.CurrentLiabilities.TwelveMonths) != 0)
                                and (float(x.FinancialStatements.BalanceSheet.CurrentDebt.TwelveMonths) != 0)
                                and (float(x.FinancialStatements.BalanceSheet.IncomeTaxPayable.TwelveMonths) != 0)
                                and (float(x.FinancialStatements.IncomeStatement.DepreciationAndAmortization.TwelveMonths) != 0)]

        if len(fine) > self.coarse_count:
            sorted_by_market_cap = sorted(fine, key = lambda x: x.MarketCap, reverse=True)
            top_by_market_cap = sorted_by_market_cap[:self.coarse_count]
        else:
            top_by_market_cap = fine
            
        accruals = {}
        for stock in top_by_market_cap:
            symbol = stock.Symbol
            
            if symbol not in self.accrual_data:
                self.accrual_data[symbol] = None
                
            # Accrual calc.
            current_accruals_data = AccrualsData(stock.FinancialStatements.BalanceSheet.CurrentAssets.TwelveMonths, stock.FinancialStatements.BalanceSheet.CashAndCashEquivalents.TwelveMonths,
                                                stock.FinancialStatements.BalanceSheet.CurrentLiabilities.TwelveMonths, stock.FinancialStatements.BalanceSheet.CurrentDebt.TwelveMonths, stock.FinancialStatements.BalanceSheet.IncomeTaxPayable.TwelveMonths,
                                                stock.FinancialStatements.IncomeStatement.DepreciationAndAmortization.TwelveMonths, stock.FinancialStatements.BalanceSheet.TotalAssets.TwelveMonths)
            
            # There is not previous accrual data.
            if not self.accrual_data[symbol]:
                self.accrual_data[symbol] = current_accruals_data
                continue
            
            # Accruals and market cap calc.
            acc = self.CalculateAccruals(current_accruals_data, self.accrual_data[symbol])
            accruals[symbol] = acc
            
            # Update accruals data.
            self.accrual_data[symbol] = current_accruals_data
        
        # Accruals sorting.
        sorted_by_accruals = sorted(accruals.items(), key = lambda x: x[1], reverse = True)
        decile = int(len(sorted_by_accruals) / 10)
        self.long = [x[0] for x in sorted_by_accruals[-decile:]]
        self.short = [x[0] for x in sorted_by_accruals[:decile]]
        
        return self.long + self.short
        
    def OnData(self, data):
        if not self.selection_flag:
            return
        self.selection_flag = False
        
        # Trade execution.
        stocks_invested = [x.Key for x in self.Portfolio if x.Value.Invested]
        for symbol in stocks_invested:
            if symbol not in self.long:
                self.Liquidate(symbol)

        for symbol in self.long:
            self.SetHoldings(symbol, 1 / len(self.long))
        for symbol in self.short:
            self.SetHoldings(symbol, -1 / len(self.short))

        self.long.clear()
        self.short.clear()
            
    def Selection(self):
        if self.Time.month == 4:
            self.selection_flag = True
            
    def CalculateAccruals(self, current_accrual_data, prev_accrual_data):
        delta_assets = current_accrual_data.CurrentAssets - prev_accrual_data.CurrentAssets
        delta_cash = current_accrual_data.CashAndCashEquivalents - prev_accrual_data.CashAndCashEquivalents
        delta_liabilities = current_accrual_data.CurrentLiabilities - prev_accrual_data.CurrentLiabilities
        delta_debt = current_accrual_data.CurrentDebt - prev_accrual_data.CurrentDebt
        delta_tax = current_accrual_data.IncomeTaxPayable - prev_accrual_data.IncomeTaxPayable
        dep = current_accrual_data.DepreciationAndAmortization
        avg_total = (current_accrual_data.TotalAssets + prev_accrual_data.TotalAssets) / 2
        
        bs_acc = ((delta_assets - delta_cash) - (delta_liabilities - delta_debt - delta_tax) - dep) / avg_total
        return bs_acc

class AccrualsData():
    def __init__(self, current_assets, cash_and_cash_equivalents, current_liabilities, current_debt, income_tax_payable, depreciation_and_amortization, total_assets):
        self.CurrentAssets = current_assets
        self.CashAndCashEquivalents = cash_and_cash_equivalents
        self.CurrentLiabilities = current_liabilities
        self.CurrentDebt = current_debt
        self.IncomeTaxPayable = income_tax_payable
        self.DepreciationAndAmortization = depreciation_and_amortization
        self.TotalAssets = total_assets
        
# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/asset-class-momentum-rotational-system.py
================================================
# region imports
from AlgorithmImports import *

# endregion
# https://quantpedia.com/strategies/asset-class-momentum-rotational-system/
#
# Use 5 ETFs (SPY - US stocks, EFA - foreign stocks, IEF - bonds, VNQ - REITs, GSG - commodities).
# Pick 3 ETFs with strongest 12 month momentum into your portfolio and weight them equally.
# Hold for 1 month and then rebalance.


class MomentumAssetAllocationStrategy(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)

        self.data = {}
        period = 12 * 21
        self.SetWarmUp(period)
        self.symbols = ["SPY", "EFA", "IEF", "VNQ", "GSG"]

        for symbol in self.symbols:
            self.AddEquity(symbol, Resolution.Daily)
            self.data[symbol] = self.ROC(symbol, period, Resolution.Daily)

        self.recent_month = -1

    def OnData(self, data):
        if self.IsWarmingUp:
            return

        # monthly rebalance
        if self.Time.month == self.recent_month:
            return
        self.recent_month = self.Time.month

        sorted_by_momentum = sorted(
            [
                x
                for x in self.data.items()
                if x[1].IsReady and x[0] in data and data[x[0]]
            ],
            key=lambda x: x[1].Current.Value,
            reverse=True,
        )
        count = 3
        long = [x[0] for x in sorted_by_momentum][:count]

        invested = [x.Key.Value for x in self.Portfolio if x.Value.Invested]
        for symbol in invested:
            if symbol not in long:
                self.Liquidate(symbol)

        for symbol in long:
            self.SetHoldings(symbol, 1 / len(long))


================================================
FILE: static/strategies/asset-class-trend-following.py
================================================
# region imports
from AlgorithmImports import *

# endregion
# https://quantpedia.com/strategies/asset-class-trend-following/
#
# Use 5 ETFs (SPY - US stocks, EFA - foreign stocks, IEF - bonds, VNQ - REITs,
# GSG - commodities), equal weight the portfolio. Hold asset class ETF only when
# it is over its 10 month Simple Moving Average, otherwise stay in cash.
#
# QC implementation:
#   - SMA with period of 210 days is used.


class AssetClassTrendFollowing(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)

        self.sma = {}
        period = 10 * 21
        self.SetWarmUp(period, Resolution.Daily)

        self.symbols = ["SPY", "EFA", "IEF", "VNQ", "GSG"]
        self.rebalance_flag = False

        self.tracked_symbol = None
        for symbol in self.symbols:
            self.AddEquity(symbol, Resolution.Minute)
            self.sma[symbol] = self.SMA(symbol, period, Resolution.Daily)

        self.recent_month = -1

    def OnData(self, data):
        # rebalance once a month
        if self.Time.month == self.recent_month:
            return
        if self.Time.hour != 9 and self.Time.minute != 31:
            return
        self.recent_month = self.Time.month

        long = [
            symbol
            for symbol in self.symbols
            if symbol in data
            and data[symbol]
            and self.sma[symbol].IsReady
            and data[symbol].Value > self.sma[symbol].Current.Value
        ]

        # trade execution
        invested = [x.Key.Value for x in self.Portfolio if x.Value.Invested]
        for symbol in invested:
            if symbol not in long:
                self.Liquidate(symbol)

        for symbol in long:
            self.SetHoldings(symbol, 1 / len(long))


================================================
FILE: static/strategies/asset-growth-effect.py
================================================
#region imports
from AlgorithmImports import *
#endregion
# https://quantpedia.com/strategies/asset-growth-effect/
#
# The investment universe consists of all non-financial U.S. stocks listed on NYSE, AMEX, and NASDAQ. Stocks are then sorted each year at the end 
# of June into ten equal groups based on the percentage change in total assets for the previous year. The investor goes long decile with low asset
# growth firms and short decile with high asset growth firms. The portfolio is weighted equally and rebalanced every year.
#
# QC implementation changes:
#   - Top 3000 stocks by market cap are selected from QC stock universe.

class AssetGrowthEffect(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)
        
        self.symbol:Symbol = self.AddEquity("SPY", Resolution.Daily).Symbol

        self.long:list[Symbol] = []
        self.short:list[Symbol] = []
        
        self.coarse_count:int = 3000
        self.quantile:int = 10
        
        # Latest assets data.
        self.total_assets:dict[Symbol, float] = {}
        
        self.selection_flag:bool = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        self.Schedule.On(self.DateRules.MonthEnd(self.symbol), self.TimeRules.AfterMarketOpen(self.symbol), self.Selection)

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(5)
            
    def CoarseSelectionFunction(self, coarse):
        if not self.selection_flag:
            return Universe.Unchanged
        
        # Select all stocks in universe.
        return [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa']
    
    def FineSelectionFunction(self, fine):
        fine = [x for x in fine if x.FinancialStatements.BalanceSheet.TotalAssets.TwelveMonths > 0 and
                ((x.SecurityReference.ExchangeId == "NYS") or (x.SecurityReference.ExchangeId == "NAS") or (x.SecurityReference.ExchangeId == "ASE"))]
                
        if len(fine) > self.coarse_count:
            sorted_by_market_cap = sorted(fine, key = lambda x: x.MarketCap, reverse=True)
            fine = sorted_by_market_cap[:self.coarse_count]
            
        assets_growth:dict[Symbol, float] = {}
        for stock in fine:
            symbol = stock.Symbol
            
            if symbol not in self.total_assets:
                self.total_assets[symbol] = None
                
            current_assets = stock.FinancialStatements.BalanceSheet.TotalAssets.TwelveMonths
            
            # There is not previous assets data.
            if not self.total_assets[symbol]:
                self.total_assets[symbol] = current_assets
                continue
            
            # Assets growth calc.
            assets_growth[symbol] = (current_assets - self.total_assets[symbol]) / self.total_assets[symbol]
            
            # Update data.
            self.total_assets[symbol] = current_assets
        
        # Asset growth sorting.
        if len(assets_growth) >= self.quantile:
            sorted_by_assets_growth = sorted(assets_growth.items(), key = lambda x: x[1], reverse = True)
            decile = int(len(sorted_by_assets_growth) / self.quantile)
            self.long = [x[0] for x in sorted_by_assets_growth[-decile:]]
            self.short = [x[0] for x in sorted_by_assets_growth[:decile]]
        
        return self.long + self.short
        
    def OnData(self, data):
        if not self.selection_flag:
            return
        self.selection_flag = False
        
        # Trade execution.
        stocks_invested = [x.Key for x in self.Portfolio if x.Value.Invested]
        for symbol in stocks_invested:
            if symbol not in self.long:
                self.Liquidate(symbol)

        for symbol in self.long:
            if symbol in data and data[symbol]:
                self.SetHoldings(symbol, 1 / len(self.long))

        for symbol in self.short:
            if symbol in data and data[symbol]:
                self.SetHoldings(symbol, -1 / len(self.short))

        self.long.clear()
        self.short.clear()
            
    def Selection(self):
        if self.Time.month == 6:
            self.selection_flag = True
            
# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/betting-against-beta-factor-in-country-equity-indexes.py
================================================
# https://quantpedia.com/strategies/betting-against-beta-factor-in-country-equity-indexes/
# 
# The investment universe consists of all country ETFs. The beta for each country is calculated with respect to the MSCI US 
# Equity Index using a 1-year rolling window. ETFs are then ranked in ascending order based on their estimated beta. The ranked 
# ETFs are assigned to one of two portfolios: low beta and high beta. Securities are weighted by the ranked betas, and the portfolios 
# are rebalanced every calendar month. Both portfolios are rescaled to have a beta of one at portfolio formation. The “Betting-Against-Beta” 
# is the zero-cost zero-beta portfolio that is long on the low-beta portfolio and that shorts the high-beta portfolio. There are a lot of 
# simple modifications (like going long on the bottom beta decile and short on the top beta decile), which could probably improve the strategy’s performance.

import numpy as np
from AlgorithmImports import *
from collections import deque

class BettingAgainstBetaFactorinInternationalEquities(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2002, 2, 1)
        self.SetCash(100000)

        self.countries = [
                        "EWA",  # iShares MSCI Australia Index ETF
                        "EWO",  # iShares MSCI Austria Investable Mkt Index ETF
                        "EWK",  # iShares MSCI Belgium Investable Market Index ETF
                        "EWZ",  # iShares MSCI Brazil Index ETF
                        "EWC",  # iShares MSCI Canada Index ETF
                        "FXI",  # iShares China Large-Cap ETF
                        "EWQ",  # iShares MSCI France Index ETF
                        "EWG",  # iShares MSCI Germany ETF 
                        "EWH",  # iShares MSCI Hong Kong Index ETF
                        "EWI",  # iShares MSCI Italy Index ETF
                        "EWJ",  # iShares MSCI Japan Index ETF
                        "EWM",  # iShares MSCI Malaysia Index ETF
                        "EWW",  # iShares MSCI Mexico Inv. Mt. Idx
                        "EWN",  # iShares MSCI Netherlands Index ETF
                        "EWS",  # iShares MSCI Singapore Index ETF
                        "EZA",  # iShares MSCI South Africe Index ETF
                        "EWY",  # iShares MSCI South Korea ETF
                        "EWP",  # iShares MSCI Spain Index ETF
                        "EWD",  # iShares MSCI Sweden Index ETF
                        "EWL",  # iShares MSCI Switzerland Index ETF
                        "EWT",  # iShares MSCI Taiwan Index ETF
                        "THD",  # iShares MSCI Thailand Index ETF
                        "EWU",  # iShares MSCI United Kingdom Index ETF
            ]
        
        self.leverage_cap = 5
        
        # Daily price data.
        self.data = {}
        self.period = 12 * 21
        
        self.symbol = 'SPY'
        
        for symbol in self.countries + [self.symbol]:
            data = self.AddEquity(symbol, Resolution.Daily)
            data.SetFeeModel(CustomFeeModel())
            data.SetLeverage(15)
            
            self.data[symbol] = RollingWindow[float](self.period)
        
        self.recent_month = -1

    def OnData(self, data):
        for symbol in self.data:
            symbol_obj = self.Symbol(symbol)
            if symbol_obj in data.Keys:
                if data[symbol_obj]:
                    price = data[symbol_obj].Value
                    if price != 0:
                        self.data[symbol].Add(price)
        
        if self.recent_month == self.Time.month:
            return
        self.recent_month = self.Time.month
        
        beta = {}
        for symbol in self.countries:
            # Data is ready.
            if self.data[self.symbol].IsReady and self.data[symbol].IsReady and self.symbol in data and symbol in data:
                market_closes = np.array([x for x in self.data[self.symbol]])
                asset_closes = np.array([x for x in self.data[symbol]])
                    
                market_returns = (market_closes[1:] - market_closes[:-1]) / market_closes[:-1]
                asset_returns = (asset_closes[1:] - asset_closes[:-1]) / asset_closes[:-1]
                
                cov = np.cov(asset_returns, market_returns)[0][1]
                market_variance = np.var(market_returns)
                beta[symbol] = cov / market_variance
                    
        weight = {}
        if len(beta) != 0: 
            # Beta diff calc.
            beta_median = np.median([x[1] for x in beta.items()])
            
            long_diff = [(x[0], abs(beta_median - x[1])) for x in beta.items() if x[1] < beta_median]
            short_diff = [(x[0], abs(beta_median - x[1])) for x in beta.items() if x[1] > beta_median]
            
            # Beta rescale.
            long_portfolio_beta = np.mean([beta[x[0]] for x in long_diff])
            long_leverage = 1 / long_portfolio_beta

            short_portfolio_beta = np.mean([beta[x[0]] for x in short_diff])
            short_leverage = 1 / short_portfolio_beta
            
            # Cap long and short leverage.
            long_leverage = min(self.leverage_cap, long_leverage)
            long_leverage = max(-self.leverage_cap, long_leverage)
            short_leverage = min(self.leverage_cap, short_leverage)
            short_leverage = max(-self.leverage_cap, short_leverage)
            
            # self.Log(f"long: {long_leverage}; short: {short_leverage}")
            
            total_long_diff = sum([x[1] for x in long_diff])
            total_short_diff = sum([x[1] for x in short_diff])
            
            # Beta diff weighting.
            weight = {}
            for symbol, diff in long_diff:
                weight[symbol] = (diff / total_long_diff) * long_leverage
            for symbol, diff in short_diff:
                weight[symbol] = - (diff / total_short_diff) * short_leverage
        
        # Trade execution.
        invested = [x.Key for x in self.Portfolio if x.Value.Invested]
        for symbol in invested:
            if symbol not in weight:
                self.Liquidate(symbol)
        
        for symbol, w in weight.items():
            self.SetHoldings(symbol, w)
                
# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/betting-against-beta-factor-in-stocks.py
================================================
# https://quantpedia.com/strategies/betting-against-beta-factor-in-stocks/
# 
# The investment universe consists of all stocks from the CRSP database. The beta for each stock is calculated with respect to the MSCI US Equity Index using a 1-year 
# rolling window. Stocks are then ranked in ascending order on the basis of their estimated beta. The ranked stocks are assigned to one of two portfolios: low beta and
# high beta. Securities are weighted by the ranked betas, and portfolios are rebalanced every calendar month. Both portfolios are rescaled to have a beta of one at portfolio
# formation. The “Betting-Against-Beta” is the zero-cost zero-beta portfolio that is long on the low-beta portfolio and short on the high-beta portfolio. There are a lot of 
# simple modifications (like going long on the bottom beta decile and short on the top beta decile), which could probably improve the strategy’s performance.
#
# QC implementation changes:
#   - The investment universe consists of 1000 most liquid US stocks with price > 5$.

from scipy import stats
from AlgorithmImports import *
import numpy as np

class  BettingAgainstBetaFactorinStocks(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)

        # Daily price data.
        self.data = {}
        self.period = 12 * 21

        self.symbol = self.AddEquity('SPY', Resolution.Daily).Symbol
        self.data[self.symbol] = RollingWindow[float](self.period)
        
        self.weight = {}
        self.long = []
        self.short = []
        self.long_lvg = 1   # leverage for long portfolio calculated from average beta
        self.short_lvg = 1  # leverage for short portfolio calculated from average beta
        self.leverage_cap = 2
        
        self.coarse_count = 1000
        
        self.selection_flag = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        self.Schedule.On(self.DateRules.MonthStart(self.symbol), self.TimeRules.AfterMarketOpen(self.symbol), self.Selection)
        
    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(self.leverage_cap*3)
            
    def CoarseSelectionFunction(self, coarse):
        # Update the rolling window every day.
        for stock in coarse:
            symbol = stock.Symbol

            if symbol in self.data:
                # Store daily price.
                self.data[symbol].Add(stock.AdjustedPrice)
        
        # Selection once a month.
        if not self.selection_flag:
            return Universe.Unchanged
        
        # selected = [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa' and x.Price > 5]
        selected = [x.Symbol
            for x in sorted([x for x in coarse if x.HasFundamentalData and x.Market == 'usa' and x.Price > 5],
                key = lambda x: x.DollarVolume, reverse = True)[:self.coarse_count]]
                
        # Warmup price rolling windows.
        for symbol in selected:
            if symbol in self.data:
                continue
            
            self.data[symbol] = RollingWindow[float](self.period)
            history = self.History(symbol, self.period, Resolution.Daily)
            if history.empty:
                self.Log(f"Not enough data for {symbol} yet")
                continue
            closes = history.loc[symbol].close
            for time, close in closes.iteritems():
                self.data[symbol].Add(close)
                
        return [x for x in selected if self.data[x].IsReady]
    
    def FineSelectionFunction(self, fine):
        fine = [x for x in fine if x.MarketCap != 0]
                    
        # if len(fine) > self.coarse_count:
        #     sorted_by_market_cap = sorted(fine, key = lambda x: x.MarketCap, reverse=True)
        #     top_by_market_cap = sorted_by_market_cap[:self.coarse_count]
        # else:
        #     top_by_market_cap = fine
            
        beta = {}
        
        if not self.data[self.symbol].IsReady: return []
        
        for stock in fine:
            symbol = stock.Symbol
            market_closes = np.array([x for x in self.data[self.symbol]])
            stock_closes = np.array([x for x in self.data[symbol]])
              
            market_returns = (market_closes[:-1] - market_closes[1:]) / market_closes[1:]
            stock_returns = (stock_closes[:-1] - stock_closes[1:]) / stock_closes[1:]
            
            cov = np.cov(stock_returns[::-1], market_returns[::-1])[0][1]
            market_variance = np.var(market_returns)
            beta[symbol] = cov / market_variance
            
            # beta_, intercept, r_value, p_value, std_err = stats.linregress(market_returns[::-1], stock_returns[::-1])
            # beta[symbol] = beta_
        
        if len(beta) >= 10:
            # sort by beta
            sorted_by_beta = sorted(beta.items(), key = lambda x:x[1], reverse=True)
            decile = int(len(sorted_by_beta) / 10)
            self.long = [x for x in sorted_by_beta[-decile:]]
            self.short = [x for x in sorted_by_beta[:decile]]
            
            # create zero-beta portfolio
            long_mean_beta = np.mean([x[1] for x in self.long])
            short_mean_beta = np.mean([x[1] for x in self.short])
            
            self.long = [x[0] for x in self.long]
            self.short = [x[0] for x in self.short]
            
            self.long_lvg = 1/long_mean_beta
            self.short_lvg = 1/short_mean_beta
            
            # cap leverage
            if self.long_lvg <= 0:
                self.long_lvg = self.leverage_cap
            else:
                self.long_lvg = min(self.leverage_cap, self.long_lvg)
                
            if self.short_lvg <= 0:
                self.short_lvg = self.leverage_cap
            else:
                self.short_lvg = min(self.leverage_cap, self.short_lvg)
        
        return self.long + self.short
        
    def OnData(self, data):
        if not self.selection_flag:
            return
        self.selection_flag = False
        
        # Trade execution.
        stocks_invested = [x.Key for x in self.Portfolio if x.Value.Invested]
        for symbol in stocks_invested:
            if symbol not in self.long + self.short:
                self.Liquidate(symbol)
        
        long_len = len(self.long)
        short_len = len(self.short)
        
        for symbol in self.long:
            self.SetHoldings(symbol, (1/long_len)*self.long_lvg)
        for symbol in self.short:
            self.SetHoldings(symbol, -(1/short_len)*self.short_lvg)
        
        self.long.clear()
        self.short.clear()
        self.long_lvg = 1
        self.short_lvg = 1
        
    def Selection(self):
        self.selection_flag = True
            
# Custom fee model.
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))

================================================
FILE: static/strategies/combining-fundamental-fscore-and-equity-short-term-reversals.py
================================================
from AlgorithmImports import *

import numpy as np


def Return(values):
    return (values[-1] - values[0]) / values[0]


def Volatility(values):
    values = np.array(values)
    returns = (values[1:] - values[:-1]) / values[:-1]
    return np.std(returns)


# Custom fee model
class CustomFeeModel(FeeModel):
    def GetOrderFee(self, parameters):
        fee = parameters.Security.Price * parameters.Order.AbsoluteQuantity * 0.00005
        return OrderFee(CashAmount(fee, "USD"))


# Quandl free data
class QuandlFutures(PythonQuandl):
    def __init__(self):
        self.ValueColumnName = "settle"


# Quantpedia data
# NOTE: IMPORTANT: Data order must be ascending (datewise)
class QuantpediaFutures(PythonData):
    def GetSource(self, config, date, isLiveMode):
        return SubscriptionDataSource(
            "data.quantpedia.com/backtesting_data/futures/{0}.csv".format(
                config.Symbol.Value
            ),
            SubscriptionTransportMedium.RemoteFile,
            FileFormat.Csv,
        )

    def Reader(self, config, line, date, isLiveMode):
        data = QuantpediaFutures()
        data.Symbol = config.Symbol

        if not line[0].isdigit():
            return None
        split = line.split(";")

        data.Time = datetime.strptime(split[0], "%d.%m.%Y") + timedelta(days=1)
        data["settle"] = float(split[1])
        data.Value = float(split[1])

        return data


# https://quantpedia.com/strategies/combining-fundamental-fscore-and-equity-short-term-reversals/
#
# The investment universe consists of common stocks (share code 10 or 11) listed in NYSE, AMEX, and NASDAQ exchanges.
# Stocks with prices less than $5 at the end of the formation period are excluded.
# The range of FSCORE is from zero to nine points. Each signal is equal to one (zero) point if the signal indicates a positive
# (negative) financial performance. A firm scores one point if it has realized a positive return-on-assets (ROA), a positive
# cash flow from operations, a positive change in ROA, a positive difference between net income from operations (Accrual),
# a decrease in the ratio of long-term debt to total assets, a positive change in the current ratio, no-issuance of new common
# equity, a positive change in gross margin ratio and lastly a positive change in asset turnover ratio. Firstly, construct a quarterly
# FSCORE using the most recently available quarterly financial statement information.
from AlgorithmImports import *

# Monthly reversal data are matched each month with a most recently available quarterly FSCORE. The firm is classified as a fundamentally
# strong firm if the firm’s FSCORE is greater than or equal to seven (7-9), fundamentally middle firm (4-6) and fundamentally weak firm (0-3).
# Secondly, identify the large stocks subset – those in the top 40% of all sample stocks in terms of market capitalization
# at the end of formation month t. After that, stocks are sorted on the past 1-month returns and firm’s most recently available quarterly FSCORE.
# Take a long position in past losers with favorable fundamentals (7-9) and simultaneously a short position in past winners with unfavorable
# fundamentals (0-3). The strategy is equally weighted and rebalanced monthly.
#
# QC implementation changes:
#   - Instead of all listed stock, we select 500 most liquid stocks traded on NYSE, AMEX, or NASDAQ.


class CombiningFSCOREShortTermReversals(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(100000)

        self.SetSecurityInitializer(
            lambda x: x.SetMarketPrice(self.GetLastKnownPrice(x))
        )

        self.coarse_count = 500

        self.long = []
        self.short = []

        self.stock_data = {}
        self.data = {}
        self.period = 21
        self.symbol = self.AddEquity("SPY", Resolution.Daily).Symbol

        self.selection_flag = False
        self.UniverseSettings.Resolution = Resolution.Daily
        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)
        self.Schedule.On(
            self.DateRules.MonthEnd(self.symbol),
            self.TimeRules.AfterMarketOpen(self.symbol),
            self.Selection,
        )

    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            security.SetFeeModel(CustomFeeModel())
            security.SetLeverage(10)

    def CoarseSelectionFunction(self, coarse):
        # Update the rolling window every day.
        for stock in coarse:
            symbol = stock.Symbol

            # Store monthly price.
            if symbol in self.data:
                self.data[symbol].update(stock.AdjustedPrice)

        if not self.selection_flag:
            return Universe.Unchanged

        # selected = [x.Symbol for x in coarse if x.HasFundamentalData and x.Market == 'usa' and x.Price > 5]
        selected = [
            x.Symbol
            for x in sorted(
                [
                    x
                    for x in coarse
                    if x.HasFundamentalData and x.Market == "usa" and x.Price > 5
                ],
                key=lambda x: x.DollarVolume,
                reverse=True,
            )[: self.coarse_count]
        ]

        # Warmup price rolling windows.
        for symbol in selected:
            if symbol in self.data:
                continue

            self.data[symbol] = SymbolData(symbol, self.period)
            history = self.History(symbol, self.period, Resolution.Daily)
            if history.empty:
                self.Log(f"Not enough data for {symbol} yet.")
                continue
            closes = history.loc[symbol].close
            for time, close in closes.iteritems():
                self.data[symbol].update(close)

        return [x for x in selected if self.data[x].is_ready()]

    def FineSelectionFunction(self, fine):
        fine = [
            x
            for x in fine
            if (x.EarningReports.BasicAverageShares.ThreeMonths != 0)
            and (x.EarningReports.BasicEPS.TwelveMonths != 0)
            and (x.ValuationRatios.PERatio != 0)
            and (x.OperationRatios.ROA.ThreeMonths != 0)
            and (
                x.FinancialStatements.CashFlowStatement.CashFlowFromContinuingOperatingActivities.ThreeMonths
                != 0
            )
            and (
                x.FinancialStatements.IncomeStatement.NormalizedIncome.ThreeMonths != 0
            )
            and (x.FinancialStatements.BalanceSheet.LongTermDebt.ThreeMonths != 0)
            and (x.FinancialStatements.BalanceSheet.TotalAssets.ThreeMonths != 0)
            and (x.OperationRatios.CurrentRatio.ThreeMonths != 0)
            and (
                x.FinancialStatements.BalanceSheet.OrdinarySharesNumber.ThreeMonths != 0
            )
            and (x.OperationRatios.GrossMargin.ThreeMonths != 0)
            and (
                x.FinancialStatements.IncomeStatement.TotalRevenueAsReported.ThreeMonths
                != 0
            )
            and (
                (x.SecurityReference.ExchangeId == "NYS")
                or (x.SecurityReference.ExchangeId == "NAS")
                or (x.SecurityReference.ExchangeId == "ASE")
            )
        ]

        # BM sorting
        sorted_by_market_cap = sorted(fine, key=lambda x: x.MarketCap, reverse=True)
        length = int((len(sorted_by_market_cap) / 100) * 40)
        top_by_market_cap = [x for x in sorted_by_market_cap[:length]]

        fine_symbols = [x.Symbol for x in top_by_market_cap]

        score_performance = {}

        for stock in top_by_market_cap:
            symbol = stock.Symbol

            if symbol not in self.stock_data:
                self.stock_data[symbol] = StockData()  # Contains latest data.

            roa = stock.OperationRatios.ROA.ThreeMonths
            cfo = (
                stock.FinancialStatements.CashFlowStatement.CashFlowFromContinuingOperatingActivities.ThreeMonths
            )
            leverage = (
                stock.FinancialStatements.BalanceSheet.LongTermDebt.ThreeMonths
                / stock.FinancialStatements.BalanceSheet.TotalAssets.ThreeMonths
            )
            liquidity = stock.OperationRatios.CurrentRatio.ThreeMonths
            equity_offering = (
                stock.FinancialStatements.BalanceSheet.OrdinarySharesNumber.ThreeMonths
            )
            gross_margin = stock.OperationRatios.GrossMargin.ThreeMonths
            turnover = (
                stock.FinancialStatements.IncomeStatement.TotalRevenueAsReported.ThreeMonths
                / stock.FinancialStatements.BalanceSheet.TotalAssets.ThreeMonths
            )

            # Check if data has previous year's data ready.
            stock_data = self.stock_data[symbol]
            if (
                (stock_data.ROA == 0)
                or (stock_data.Leverage == 0)
                or (stock_data.Liquidity == 0)
                or (stock_data.Equity_offering == 0)
                or (stock_data.Gross_margin == 0)
                or (stock_data.Turnover == 0)
            ):
                stock_data.Update(
                    roa, leverage, liquidity, equity_offering, gross_margin, turnover
                )
                continue

            score = 0

            if roa > 0:
                score += 1
            if cfo > 0:
                score += 1
            if roa > stock_data.ROA:  # ROA change is positive
                score += 1
            if cfo > roa:
                score += 1
            if leverage < stock_data.Leverage:
                score += 1
            if liquidity > stock_data.Liquidity:
                score += 1
            if equity_offering < stock_data.Equity_offering:
                score += 1
            if gross_margin > stock_data.Gross_margin:
                score += 1
            if turnover > stock_data.Turnover:
                score += 1

            score_performance[symbol] = (score, self.data[symbol].performance())

            # Update new (this year's) data.
            stock_data.Update(
                roa, leverage, liquidity, equity_offering, gross_margin, turnover
            )

        # Clear out not updated data.
        for symbol in self.stock_data:
            if symbol not in fine_symbols:
                self.stock_data[symbol] = StockData()

        # Performance sorting and F score sorting.
        self.long = [
            x[0] for x in score_performance.items() if x[1][0] >= 7 and x[1][1] < 0
        ]
        self.shor
Download .txt
gitextract_ocdq6ygj/

├── .gitignore
├── .vscode/
│   ├── launch.json
│   └── settings.json
├── README.md
├── README_zh.md
└── static/
    └── strategies/
        ├── 12-month-cycle-in-cross-section-of-stocks-returns.py
        ├── 52-weeks-high-effect-in-stocks.py
        ├── accrual-anomaly.py
        ├── asset-class-momentum-rotational-system.py
        ├── asset-class-trend-following.py
        ├── asset-growth-effect.py
        ├── betting-against-beta-factor-in-country-equity-indexes.py
        ├── betting-against-beta-factor-in-stocks.py
        ├── combining-fundamental-fscore-and-equity-short-term-reversals.py
        ├── combining-smart-factors-momentum-and-market-portfolio.py
        ├── consistent-momentum-strategy.py
        ├── crude-oil-predicts-equity-returns.py
        ├── currency-momentum-factor.py
        ├── currency-value-factor-ppp-strategy.py
        ├── dispersion-trading.py
        ├── dollar-carry-trade.py
        ├── earnings-announcement-premium.py
        ├── earnings-announcements-combined-with-stock-repurchases.py
        ├── earnings-quality-factor.py
        ├── esg-factor-momentum-strategy.py
        ├── fed-model.py
        ├── fx-carry-trade.py
        ├── how-to-use-lexical-density-of-company-filings.py
        ├── intraday-seasonality-in-bitcoin.py
        ├── january-barometer.py
        ├── low-volatility-factor-effect-in-stocks.py
        ├── market-sentiment-and-an-overnight-anomaly.py
        ├── momentum-and-reversal-combined-with-volatility-effect-in-stocks.py
        ├── momentum-effect-in-commodities.py
        ├── momentum-factor-and-style-rotation-effect.py
        ├── momentum-factor-combined-with-asset-growth-effect.py
        ├── momentum-factor-effect-in-stocks.py
        ├── momentum-in-mutual-fund-returns.py
        ├── option-expiration-week-effect.py
        ├── paired-switching.py
        ├── pairs-trading-with-country-etfs.py
        ├── pairs-trading-with-stocks
        ├── payday-anomaly.py
        ├── rd-expenditures-and-stock-returns.py
        ├── rebalancing-premium-in-cryptocurrencies.py
        ├── residual-momentum-factor.py
        ├── return-asymmetry-effect-in-commodity-futures.py
        ├── reversal-during-earnings-announcements.py
        ├── roa-effect-within-stocks.py
        ├── sector-momentum-rotational-system.py
        ├── short-interest-effect-long-short-version.py
        ├── short-term-reversal-in-stocks.py
        ├── short-term-reversal-with-futures.py
        ├── skewness-effect-in-commodities.py
        ├── small-capitalization-stocks-premium-anomaly.py
        ├── soccer-clubs-stocks-arbitrage.py
        ├── synthetic-lending-rates-predict-subsequent-market-return.py
        ├── term-structure-effect-in-commodities.py
        ├── time-series-momentum-effect.py
        ├── trading-wti-brent-spread.py
        ├── trend-following-effect-in-stocks.py
        ├── turn-of-the-month-in-equity-indexes.py
        ├── value-and-momentum-factors-across-asset-classes.py
        ├── value-book-to-market-factor.py
        ├── value-factor-effect-within-countries.py
        └── volatility-risk-premium-effect.py
Download .txt
SYMBOL INDEX (625 symbols across 60 files)

FILE: static/strategies/12-month-cycle-in-cross-section-of-stocks-returns.py
  class Month12CycleinCrossSectionofStocksReturns (line 13) | class Month12CycleinCrossSectionofStocksReturns(QCAlgorithm):
    method Initialize (line 15) | def Initialize(self):
    method OnSecuritiesChanged (line 35) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 40) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 83) | def FineSelectionFunction(self, fine):
    method OnData (line 114) | def OnData(self, data):
    method Selection (line 130) | def Selection(self):
  class SymbolData (line 133) | class SymbolData():
    method __init__ (line 134) | def __init__(self, symbol, period):
    method update (line 138) | def update(self, value):
    method is_ready (line 141) | def is_ready(self):
    method performance (line 145) | def performance(self):
  class CustomFeeModel (line 150) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 151) | def GetOrderFee(self, parameters):

FILE: static/strategies/52-weeks-high-effect-in-stocks.py
  class Weeks52HighEffectinStocks (line 18) | class Weeks52HighEffectinStocks(QCAlgorithm):
    method Initialize (line 20) | def Initialize(self):
    method OnSecuritiesChanged (line 43) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 48) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 80) | def FineSelectionFunction(self, fine):
    method OnData (line 141) | def OnData(self, data):
    method Selection (line 174) | def Selection(self):
  class RebalanceQueueItem (line 177) | class RebalanceQueueItem():
    method __init__ (line 178) | def __init__(self, symbol_q):
  class SymbolData (line 183) | class SymbolData():
    method __init__ (line 184) | def __init__(self, symbol, period):
    method update (line 188) | def update(self, value):
    method is_ready (line 191) | def is_ready(self):
    method maximum (line 194) | def maximum(self):
    method get_latest_price (line 197) | def get_latest_price(self):
  class CustomFeeModel (line 201) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 202) | def GetOrderFee(self, parameters):

FILE: static/strategies/accrual-anomaly.py
  class AccrualAnomaly (line 17) | class AccrualAnomaly(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnSecuritiesChanged (line 38) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 48) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 59) | def FineSelectionFunction(self, fine):
    method OnData (line 105) | def OnData(self, data):
    method Selection (line 124) | def Selection(self):
    method CalculateAccruals (line 128) | def CalculateAccruals(self, current_accrual_data, prev_accrual_data):
  class AccrualsData (line 140) | class AccrualsData():
    method __init__ (line 141) | def __init__(self, current_assets, cash_and_cash_equivalents, current_...
  class CustomFeeModel (line 151) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 152) | def GetOrderFee(self, parameters):

FILE: static/strategies/asset-class-momentum-rotational-system.py
  class MomentumAssetAllocationStrategy (line 12) | class MomentumAssetAllocationStrategy(QCAlgorithm):
    method Initialize (line 13) | def Initialize(self):
    method OnData (line 28) | def OnData(self, data):

FILE: static/strategies/asset-class-trend-following.py
  class AssetClassTrendFollowing (line 15) | class AssetClassTrendFollowing(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnData (line 34) | def OnData(self, data):

FILE: static/strategies/asset-growth-effect.py
  class AssetGrowthEffect (line 13) | class AssetGrowthEffect(QCAlgorithm):
    method Initialize (line 15) | def Initialize(self):
    method OnSecuritiesChanged (line 35) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 40) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 47) | def FineSelectionFunction(self, fine):
    method OnData (line 84) | def OnData(self, data):
    method Selection (line 106) | def Selection(self):
  class CustomFeeModel (line 111) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 112) | def GetOrderFee(self, parameters):

FILE: static/strategies/betting-against-beta-factor-in-country-equity-indexes.py
  class BettingAgainstBetaFactorinInternationalEquities (line 14) | class BettingAgainstBetaFactorinInternationalEquities(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnData (line 63) | def OnData(self, data):
  class CustomFeeModel (line 133) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 134) | def GetOrderFee(self, parameters):

FILE: static/strategies/betting-against-beta-factor-in-stocks.py
  class BettingAgainstBetaFactorinStocks (line 16) | class  BettingAgainstBetaFactorinStocks(QCAlgorithm):
    method Initialize (line 18) | def Initialize(self):
    method OnSecuritiesChanged (line 43) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 48) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 82) | def FineSelectionFunction(self, fine):
    method OnData (line 140) | def OnData(self, data):
    method Selection (line 164) | def Selection(self):
  class CustomFeeModel (line 168) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 169) | def GetOrderFee(self, parameters):

FILE: static/strategies/combining-fundamental-fscore-and-equity-short-term-reversals.py
  function Return (line 6) | def Return(values):
  function Volatility (line 10) | def Volatility(values):
  class CustomFeeModel (line 17) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 18) | def GetOrderFee(self, parameters):
    method GetOrderFee (line 340) | def GetOrderFee(self, parameters):
  class QuandlFutures (line 24) | class QuandlFutures(PythonQuandl):
    method __init__ (line 25) | def __init__(self):
  class QuantpediaFutures (line 31) | class QuantpediaFutures(PythonData):
    method GetSource (line 32) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 41) | def Reader(self, config, line, date, isLiveMode):
  class CombiningFSCOREShortTermReversals (line 79) | class CombiningFSCOREShortTermReversals(QCAlgorithm):
    method Initialize (line 80) | def Initialize(self):
    method OnSecuritiesChanged (line 107) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 112) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 154) | def FineSelectionFunction(self, fine):
    method OnData (line 278) | def OnData(self, data):
    method Selection (line 300) | def Selection(self):
  class StockData (line 304) | class StockData:
    method __init__ (line 305) | def __init__(self):
    method Update (line 313) | def Update(self, ROA, leverage, liquidity, eq_offering, gross_margin, ...
  class SymbolData (line 322) | class SymbolData:
    method __init__ (line 323) | def __init__(self, symbol, period):
    method update (line 327) | def update(self, value):
    method is_ready (line 330) | def is_ready(self) -> bool:
    method performance (line 333) | def performance(self, values_to_skip=0) -> float:
  class CustomFeeModel (line 339) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 18) | def GetOrderFee(self, parameters):
    method GetOrderFee (line 340) | def GetOrderFee(self, parameters):

FILE: static/strategies/combining-smart-factors-momentum-and-market-portfolio.py
  class CombiningSmartFactorsMomentumandMarketPortfolio (line 22) | class CombiningSmartFactorsMomentumandMarketPortfolio(QCAlgorithm):
    method Initialize (line 23) | def Initialize(self):
    method OnSecuritiesChanged (line 66) | def OnSecuritiesChanged(self, changes):
    method OnData (line 71) | def OnData(self, data):
    method Rebalance (line 83) | def Rebalance(self):
  class USEquity (line 186) | class USEquity(PythonData):
    method GetSource (line 187) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 199) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 215) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 216) | def GetOrderFee(self, parameters):

FILE: static/strategies/consistent-momentum-strategy.py
  class ConsistentMomentumStrategy (line 14) | class ConsistentMomentumStrategy(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnSecuritiesChanged (line 38) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 45) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 78) | def FineSelectionFunction(self, fine):
    method Rebalance (line 110) | def Rebalance(self):
  class SymbolData (line 136) | class SymbolData():
    method __init__ (line 137) | def __init__(self, symbol, period):
    method update (line 141) | def update(self, value):
    method is_ready (line 144) | def is_ready(self):
    method performance_t7t1 (line 147) | def performance_t7t1(self):
    method performance_t6t0 (line 151) | def performance_t6t0(self):
  class CustomFeeModel (line 156) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 157) | def GetOrderFee(self, parameters):

FILE: static/strategies/crude-oil-predicts-equity-returns.py
  function MonthDiff (line 9) | def MonthDiff(d1, d2):
  function Return (line 12) | def Return(values):
  function Volatility (line 15) | def Volatility(values):
  function MultipleLinearRegression (line 20) | def MultipleLinearRegression(x, y):
  class CustomFeeModel (line 27) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 28) | def GetOrderFee(self, parameters):
  class QuandlFutures (line 33) | class QuandlFutures(PythonQuandl):
    method __init__ (line 34) | def __init__(self):
  class QuandlValue (line 38) | class QuandlValue(PythonQuandl):
    method __init__ (line 39) | def __init__(self):
  class QuandlFINRA_ShortVolume (line 43) | class QuandlFINRA_ShortVolume(PythonQuandl):
    method __init__ (line 44) | def __init__(self):
  class CommitmentsOfTraders (line 51) | class CommitmentsOfTraders(PythonData):
    method GetSource (line 52) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 60) | def Reader(self, config, line, date, isLiveMode):
    method GetSource (line 144) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 152) | def Reader(self, config, line, date, isLiveMode):
  class QuantpediaIndices (line 83) | class QuantpediaIndices(PythonData):
    method GetSource (line 84) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 87) | def Reader(self, config, line, date, isLiveMode):
  class QuantpediaBondYield (line 102) | class QuantpediaBondYield(PythonData):
    method GetSource (line 103) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 106) | def Reader(self, config, line, date, isLiveMode):
  class QuantpediaFutures (line 121) | class QuantpediaFutures(PythonData):
    method GetSource (line 122) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 125) | def Reader(self, config, line, date, isLiveMode):
  class CommitmentsOfTraders (line 143) | class CommitmentsOfTraders(PythonData):
    method GetSource (line 52) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 60) | def Reader(self, config, line, date, isLiveMode):
    method GetSource (line 144) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 152) | def Reader(self, config, line, date, isLiveMode):
  class TradeManager (line 175) | class TradeManager():
    method __init__ (line 176) | def __init__(self, algorithm, long_size, short_size, holding_period):
    method Add (line 191) | def Add(self, symbol, long_flag):
    method TryLiquidate (line 215) | def TryLiquidate(self):
    method LiquidateTicker (line 232) | def LiquidateTicker(self, ticker):
  class ManagedSymbol (line 246) | class ManagedSymbol():
    method __init__ (line 247) | def __init__(self, symbol, days_to_liquidate, long_flag):
  class PortfolioOptimization (line 252) | class PortfolioOptimization(object):
    method __init__ (line 253) | def __init__(self, df_return, risk_free_rate, num_assets):
    method annual_port_return (line 259) | def annual_port_return(self, weights):
    method annual_port_vol (line 263) | def annual_port_vol(self, weights):
    method min_func (line 267) | def min_func(self, weights):
    method opt_portfolio (line 274) | def opt_portfolio(self):
  class CrudeOilPredictsEquityReturns (line 305) | class CrudeOilPredictsEquityReturns(QCAlgorithm):
    method Initialize (line 307) | def Initialize(self):
    method OnData (line 333) | def OnData(self, data):

FILE: static/strategies/currency-momentum-factor.py
  class CustomFeeModel (line 6) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 7) | def GetOrderFee(self, parameters):
  class QuandlValue (line 13) | class QuandlValue(PythonQuandl):
    method __init__ (line 14) | def __init__(self):
  class QuantpediaFutures (line 20) | class QuantpediaFutures(PythonData):
    method GetSource (line 21) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 30) | def Reader(self, config, line, date, isLiveMode):
  class CurrencyMomentumFactor (line 55) | class CurrencyMomentumFactor(QCAlgorithm):
    method Initialize (line 56) | def Initialize(self):
    method OnData (line 83) | def OnData(self, data):

FILE: static/strategies/currency-value-factor-ppp-strategy.py
  class CustomFeeModel (line 6) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 7) | def GetOrderFee(self, parameters):
  class QuandlValue (line 13) | class QuandlValue(PythonQuandl):
    method __init__ (line 14) | def __init__(self):
  class QuantpediaFutures (line 20) | class QuantpediaFutures(PythonData):
    method GetSource (line 21) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 30) | def Reader(self, config, line, date, isLiveMode):
  class CurrencyValueFactorPPPStrategy (line 61) | class CurrencyValueFactorPPPStrategy(QCAlgorithm):
    method Initialize (line 62) | def Initialize(self):
    method OnData (line 89) | def OnData(self, data):

FILE: static/strategies/dispersion-trading.py
  class DispersionTrading (line 18) | class DispersionTrading(QCAlgorithm):
    method Initialize (line 20) | def Initialize(self):
    method OnSecuritiesChanged (line 40) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 45) | def CoarseSelectionFunction(self, coarse):
    method OnData (line 58) | def OnData(self, data):
  class CustomFeeModel (line 138) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 139) | def GetOrderFee(self, parameters):

FILE: static/strategies/dollar-carry-trade.py
  class DollarCarryTrade (line 13) | class DollarCarryTrade(QCAlgorithm):
    method Initialize (line 14) | def Initialize(self):
    method OnData (line 42) | def OnData(self, data):
  class QuantpediaFutures (line 86) | class QuantpediaFutures(PythonData):
    method GetSource (line 87) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 96) | def Reader(self, config, line, date, isLiveMode):
  class QuandlValue (line 113) | class QuandlValue(PythonQuandl):
    method __init__ (line 114) | def __init__(self):
  class CustomFeeModel (line 119) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 120) | def GetOrderFee(self, parameters):

FILE: static/strategies/earnings-announcement-premium.py
  class EarningsAnnouncementPremium (line 17) | class EarningsAnnouncementPremium(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnSecuritiesChanged (line 42) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 47) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 80) | def FineSelectionFunction(self, fine):
    method OnData (line 161) | def OnData(self, data):
    method Selection (line 178) | def Selection(self):
  class VolumeData (line 182) | class VolumeData():
    method __init__ (line 183) | def __init__(self, date, monthly_volume, was_announcement_month):
  class CustomFeeModel (line 189) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 190) | def GetOrderFee(self, parameters):

FILE: static/strategies/earnings-announcements-combined-with-stock-repurchases.py
  class EarningsAnnouncementsCombinedWithStockRepurchases (line 17) | class EarningsAnnouncementsCombinedWithStockRepurchases(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnSecuritiesChanged (line 79) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 84) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 103) | def FineSelectionFunction(self, fine):
    method OnData (line 120) | def OnData(self, data:Slice) -> None:
    method Selection (line 178) | def Selection(self):
  class ManagedSymbol (line 184) | class ManagedSymbol():
    method __init__ (line 185) | def __init__(self, symbol, earnings_date, quantity):
  class CustomFeeModel (line 191) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 192) | def GetOrderFee(self, parameters):

FILE: static/strategies/earnings-quality-factor.py
  class EarningsQualityFactor (line 21) | class EarningsQualityFactor(QCAlgorithm):
    method Initialize (line 22) | def Initialize(self):
    method OnSecuritiesChanged (line 47) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 52) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 62) | def FineSelectionFunction(self, fine):
    method OnData (line 150) | def OnData(self, data):
    method CalculateAccruals (line 209) | def CalculateAccruals(self, current_accrual_data, prev_accrual_data):
    method Selection (line 230) | def Selection(self):
  class AcrrualsData (line 235) | class AcrrualsData:
    method __init__ (line 236) | def __init__(
  class StockData (line 258) | class StockData:
    method __init__ (line 259) | def __init__(self, accruals, cfa, da, roe):
  function MultipleLinearRegression (line 266) | def MultipleLinearRegression(x, y):
  class CustomFeeModel (line 274) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 275) | def GetOrderFee(self, parameters):

FILE: static/strategies/esg-factor-momentum-strategy.py
  class ESGFactorMomentumStrategy (line 18) | class ESGFactorMomentumStrategy(QCAlgorithm):
    method Initialize (line 20) | def Initialize(self):
    method OnSecuritiesChanged (line 48) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 53) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 67) | def FineSelectionFunction(self, fine):
    method OnData (line 128) | def OnData(self, data):
  class RebalanceQueueItem (line 187) | class RebalanceQueueItem():
    method __init__ (line 188) | def __init__(self, symbol_q):
  class ESGData (line 194) | class ESGData(PythonData):
    method __init__ (line 195) | def __init__(self):
    method GetSource (line 198) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 201) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 222) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 223) | def GetOrderFee(self, parameters):

FILE: static/strategies/fed-model.py
  class FEDModel (line 14) | class FEDModel(QCAlgorithm):
    method Initialize (line 15) | def Initialize(self):
    method OnData (line 49) | def OnData(self, data):
  class QuantpediaBondYield (line 131) | class QuantpediaBondYield(PythonData):
    method GetSource (line 132) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 141) | def Reader(self, config, line, date, isLiveMode):
  class QuandlValue (line 157) | class QuandlValue(PythonQuandl):
    method __init__ (line 158) | def __init__(self):

FILE: static/strategies/fx-carry-trade.py
  class QuandlValue (line 6) | class QuandlValue(PythonQuandl):
    method __init__ (line 7) | def __init__(self):
  class QuantpediaFutures (line 13) | class QuantpediaFutures(PythonData):
    method GetSource (line 14) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 23) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 40) | class CustomFeeModel:
    method GetOrderFee (line 41) | def GetOrderFee(self, parameters):
  class ForexCarryTrade (line 59) | class ForexCarryTrade(QCAlgorithm):
    method Initialize (line 60) | def Initialize(self):
    method OnData (line 85) | def OnData(self, data):

FILE: static/strategies/how-to-use-lexical-density-of-company-filings.py
  class BrainLanguageMetrics (line 5) | class BrainLanguageMetrics(QCAlgorithm):
    method Initialize (line 7) | def Initialize(self):
    method PrintBenchmark (line 66) | def PrintBenchmark(self):
    method OnSecuritiesChanged (line 72) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 83) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 137) | def FineSelectionFunction(self, fine):
    method OnData (line 186) | def OnData(self, data):
    method Selection (line 228) | def Selection(self):
  class CustomFeeModel (line 243) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 244) | def GetOrderFee(self, parameters):
  class QuandlShortVolume (line 249) | class QuandlShortVolume(PythonQuandl):
    method __init__ (line 250) | def __init__(self):

FILE: static/strategies/intraday-seasonality-in-bitcoin.py
  class OvernightSeasonalityinBitcoin (line 12) | class OvernightSeasonalityinBitcoin(QCAlgorithm):
    method Initialize (line 14) | def Initialize(self):
    method OnData (line 27) | def OnData(self, data):
  class CustomFeeModel (line 40) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 41) | def GetOrderFee(self, parameters):

FILE: static/strategies/january-barometer.py
  class JanuaryBarometer (line 8) | class JanuaryBarometer(QCAlgorithm):
    method Initialize (line 9) | def Initialize(self):
    method OnData (line 24) | def OnData(self, data):

FILE: static/strategies/low-volatility-factor-effect-in-stocks.py
  class LowVolatilityFactorEffectStocks (line 15) | class LowVolatilityFactorEffectStocks(QCAlgorithm):
    method Initialize (line 17) | def Initialize(self):
    method OnSecuritiesChanged (line 36) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 41) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 74) | def FineSelectionFunction(self, fine):
    method OnData (line 91) | def OnData(self, data):
    method Selection (line 108) | def Selection(self):
  class SymbolData (line 111) | class SymbolData():
    method __init__ (line 112) | def __init__(self, period):
    method update (line 115) | def update(self, value):
    method is_ready (line 118) | def is_ready(self) -> bool:
    method volatility (line 121) | def volatility(self) -> float:
  class CustomFeeModel (line 130) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 131) | def GetOrderFee(self, parameters):

FILE: static/strategies/market-sentiment-and-an-overnight-anomaly.py
  class MarketSentimentAndAnOvernightAnomaly (line 16) | class MarketSentimentAndAnOvernightAnomaly(QCAlgorithm):
    method Initialize (line 17) | def Initialize(self):
    method OnData (line 37) | def OnData(self, data: Slice):
    method GetSignal (line 76) | def GetSignal(
  class QuantpediaBMS (line 93) | class QuantpediaBMS(PythonData):
    method GetSource (line 94) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 103) | def Reader(self, config, line, date, isLiveMode):
  class QuandlVix (line 118) | class QuandlVix(PythonQuandl):
    method __init__ (line 119) | def __init__(self):

FILE: static/strategies/momentum-and-reversal-combined-with-volatility-effect-in-stocks.py
  class MomentumReversalCombinedWithVolatilityEffectinStocks (line 17) | class MomentumReversalCombinedWithVolatilityEffectinStocks(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnSecuritiesChanged (line 39) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 44) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 79) | def FineSelectionFunction(self, fine):
    method OnData (line 134) | def OnData(self, data):
    method Selection (line 168) | def Selection(self):
  class RebalanceQueueItem (line 171) | class RebalanceQueueItem():
    method __init__ (line 172) | def __init__(self, symbol_q):
  class SymbolData (line 177) | class SymbolData():
    method __init__ (line 178) | def __init__(self, symbol, period):
    method update (line 183) | def update(self, value):
    method is_ready (line 186) | def is_ready(self):
    method update (line 189) | def update(self, close):
    method volatility (line 192) | def volatility(self):
    method performance (line 197) | def performance(self):
  class CustomFeeModel (line 202) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 203) | def GetOrderFee(self, parameters):

FILE: static/strategies/momentum-effect-in-commodities.py
  class MomentumEffectCommodities (line 9) | class MomentumEffectCommodities(QCAlgorithm):
    method Initialize (line 11) | def Initialize(self):
    method OnData (line 61) | def OnData(self, data):
  class QuantpediaFutures (line 93) | class QuantpediaFutures(PythonData):
    method GetSource (line 94) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 97) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 112) | class CustomFeeModel():
    method GetOrderFee (line 113) | def GetOrderFee(self, parameters):

FILE: static/strategies/momentum-factor-and-style-rotation-effect.py
  class MomentumFactorAndStyleRotationEffect (line 14) | class MomentumFactorAndStyleRotationEffect(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnData (line 43) | def OnData(self, data):
  class CustomFeeModel (line 72) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 73) | def GetOrderFee(self, parameters):

FILE: static/strategies/momentum-factor-combined-with-asset-growth-effect.py
  class MomentumFactorAssetGrowthEffect (line 18) | class MomentumFactorAssetGrowthEffect(QCAlgorithm):
    method Initialize (line 20) | def Initialize(self):
    method CustomHandler (line 61) | def CustomHandler(self, sender, consolidated):
    method OnSecuritiesChanged (line 64) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 69) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 112) | def FineSelectionFunction(self, fine):
    method OnData (line 146) | def OnData(self, data):
    method Selection (line 165) | def Selection(self):
  class SymbolData (line 172) | class SymbolData():
    method __init__ (line 173) | def __init__(self, symbol, period, total_assets_history_period):
    method update (line 178) | def update(self, value):
    method update_assets (line 181) | def update_assets(self, assets_value):
    method asset_data_is_ready (line 184) | def asset_data_is_ready(self) -> bool:
    method asset_growth (line 187) | def asset_growth(self) -> float:
    method is_ready (line 191) | def is_ready(self) -> bool:
    method performance (line 195) | def performance(self, values_to_skip = 0) -> float:
  class CustomFeeModel (line 200) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 201) | def GetOrderFee(self, parameters):

FILE: static/strategies/momentum-factor-effect-in-stocks.py
  class MomentumFactorEffectinStocks (line 12) | class MomentumFactorEffectinStocks(QCAlgorithm):
    method Initialize (line 14) | def Initialize(self):
    method OnSecuritiesChanged (line 31) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 36) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 69) | def FineSelectionFunction(self, fine):
    method OnData (line 97) | def OnData(self, data):
    method Selection (line 114) | def Selection(self):
  class CustomFeeModel (line 118) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 119) | def GetOrderFee(self, parameters):

FILE: static/strategies/momentum-in-mutual-fund-returns.py
  class MomentuminMutualFundReturns (line 17) | class MomentuminMutualFundReturns(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnData (line 48) | def OnData(self, data):
  class QuantpediaETF (line 95) | class QuantpediaETF(PythonData):
    method GetSource (line 96) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 99) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 113) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 114) | def GetOrderFee(self, parameters):

FILE: static/strategies/option-expiration-week-effect.py
  class OptionExpirationWeekEffect (line 8) | class OptionExpirationWeekEffect(QCAlgorithm):
    method Initialize (line 10) | def Initialize(self):
    method OnData (line 24) | def OnData(self, slice):
    method Rebalance (line 28) | def Rebalance(self):

FILE: static/strategies/paired-switching.py
  class PairedSwitching (line 12) | class PairedSwitching(QCAlgorithm):
    method Initialize (line 13) | def Initialize(self):
    method OnData (line 21) | def OnData(self, data):

FILE: static/strategies/pairs-trading-with-country-etfs.py
  class PairsTradingwithCountryETFs (line 17) | class PairsTradingwithCountryETFs(QCAlgorithm):
    method Initialize (line 19) | def Initialize(self):
    method OnData (line 78) | def OnData(self, data):
    method Distance (line 172) | def Distance(self, price_a, price_b):
  class CustomFeeModel (line 179) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 180) | def GetOrderFee(self, parameters):

FILE: static/strategies/payday-anomaly.py
  class PayDayAnomaly (line 8) | class PayDayAnomaly(QCAlgorithm):
    method Initialize (line 10) | def Initialize(self):
    method Purchase (line 19) | def Purchase(self):
    method PaydayDate (line 35) | def PaydayDate(self, date_time):

FILE: static/strategies/rd-expenditures-and-stock-returns.py
  class RDExpendituresandStockReturns (line 15) | class RDExpendituresandStockReturns(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnSecuritiesChanged (line 45) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 50) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 58) | def FineSelectionFunction(self, fine):
    method Selection (line 144) | def Selection(self):
    method OnData (line 148) | def OnData(self, data):
  class SymbolData (line 180) | class SymbolData:
    method __init__ (line 181) | def __init__(self, tested_growth, period):
    method update (line 185) | def update(self, window_value):
    method is_ready (line 188) | def is_ready(self):
  class CustomFeeModel (line 192) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 193) | def GetOrderFee(self, parameters):

FILE: static/strategies/rebalancing-premium-in-cryptocurrencies.py
  class RebalancingPremiumInCryptocurrencies (line 16) | class RebalancingPremiumInCryptocurrencies(QCAlgorithm):
    method Initialize (line 18) | def Initialize(self):
    method OnData (line 57) | def OnData(self, data):
  class SymbolData (line 114) | class SymbolData():
    method __init__ (line 115) | def __init__(self):
  class CustomFeeModel (line 120) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 121) | def GetOrderFee(self, parameters):

FILE: static/strategies/residual-momentum-factor.py
  class ResidualMomentumFactor (line 19) | class ResidualMomentumFactor(QCAlgorithm):
    method Initialize (line 21) | def Initialize(self):
    method OnSecuritiesChanged (line 71) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 76) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 123) | def FineSelectionFunction(self, fine):
    method OnData (line 202) | def OnData(self, data):
    method CalculateFactorPerformance (line 226) | def CalculateFactorPerformance(self, data, factor_symbols):
    method MultipleLinearRegression (line 239) | def MultipleLinearRegression(self, x, y):
  class CustomFeeModel (line 246) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 247) | def GetOrderFee(self, parameters):

FILE: static/strategies/return-asymmetry-effect-in-commodity-futures.py
  class ReturnAsymmetryEffectInCommodityFutures (line 20) | class ReturnAsymmetryEffectInCommodityFutures(QCAlgorithm):
    method Initialize (line 22) | def Initialize(self):
    method OnData (line 78) | def OnData(self, data):
    method Rebalance (line 126) | def Rebalance(self):
  class SymbolData (line 129) | class SymbolData():
    method __init__ (line 130) | def __init__(self, period):
    method update_closes (line 133) | def update_closes(self, close):
    method is_ready (line 136) | def is_ready(self):
    method calculate_IE (line 139) | def calculate_IE(self):
  class QuantpediaFutures (line 164) | class QuantpediaFutures(PythonData):
    method GetSource (line 165) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 168) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 183) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 184) | def GetOrderFee(self, parameters):

FILE: static/strategies/reversal-during-earnings-announcements.py
  class CustomFeeModel (line 7) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 8) | def GetOrderFee(self, parameters):
  class TradeManager (line 15) | class TradeManager:
    method __init__ (line 16) | def __init__(self, algorithm, long_size, short_size, holding_period):
    method Add (line 31) | def Add(self, symbol, long_flag):
    method TryLiquidate (line 55) | def TryLiquidate(self):
    method LiquidateTicker (line 74) | def LiquidateTicker(self, ticker):
  class ManagedSymbol (line 93) | class ManagedSymbol:
    method __init__ (line 94) | def __init__(self, symbol, days_to_liquidate, long_flag):
  class ReversalDuringEarningsAnnouncements (line 119) | class ReversalDuringEarningsAnnouncements(QCAlgorithm):
    method Initialize (line 120) | def Initialize(self):
    method OnSecuritiesChanged (line 174) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 179) | def CoarseSelectionFunction(self, coarse):
    method OnData (line 209) | def OnData(self, data):
    method Selection (line 258) | def Selection(self):

FILE: static/strategies/roa-effect-within-stocks.py
  class ROAEffectWithinStocks (line 15) | class ROAEffectWithinStocks(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnSecuritiesChanged (line 36) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 41) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 57) | def FineSelectionFunction(self, fine):
    method OnData (line 100) | def OnData(self, data):
    method Selection (line 122) | def Selection(self):
  class CustomFeeModel (line 127) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 128) | def GetOrderFee(self, parameters):

FILE: static/strategies/sector-momentum-rotational-system.py
  class SectorMomentumAlgorithm (line 10) | class SectorMomentumAlgorithm(QCAlgorithm):
    method Initialize (line 11) | def Initialize(self):
    method OnROCUpdated (line 45) | def OnROCUpdated(self, sender, updated):
    method OnData (line 51) | def OnData(self, data):
  class CustomFeeModel (line 81) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 82) | def GetOrderFee(self, parameters):

FILE: static/strategies/short-interest-effect-long-short-version.py
  class ShortInterestEffect (line 10) | class ShortInterestEffect(QCAlgorithm):
    method Initialize (line 11) | def Initialize(self):
    method OnData (line 129) | def OnData(self, data):
  class QuandlFINRA_ShortVolume (line 167) | class QuandlFINRA_ShortVolume(PythonQuandl):
    method __init__ (line 168) | def __init__(self):
  class CustomFeeModel (line 173) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 174) | def GetOrderFee(self, parameters):

FILE: static/strategies/short-term-reversal-in-stocks.py
  class ShortTermReversalEffectinStocks (line 16) | class ShortTermReversalEffectinStocks(QCAlgorithm):
    method Initialize (line 17) | def Initialize(self):
    method OnSecuritiesChanged (line 45) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 50) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 89) | def FineSelectionFunction(self, fine):
    method OnData (line 125) | def OnData(self, data):
    method Selection (line 153) | def Selection(self):
  class SymbolData (line 162) | class SymbolData:
    method __init__ (line 163) | def __init__(self, period):
    method update (line 167) | def update(self, close):
    method is_ready (line 170) | def is_ready(self) -> bool:
    method weekly_return (line 173) | def weekly_return(self) -> float:
    method monthly_return (line 176) | def monthly_return(self) -> float:
  class CustomFeeModel (line 181) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 182) | def GetOrderFee(self, parameters):

FILE: static/strategies/short-term-reversal-with-futures.py
  class ShortTermReversal (line 22) | class ShortTermReversal(QCAlgorithm):
    method Initialize (line 23) | def Initialize(self):
    method find_and_update_contracts (line 86) | def find_and_update_contracts(self, futures_chain, symbol) -> None:
    method OnData (line 104) | def OnData(self, data):
  class FuturesInfo (line 239) | class FuturesInfo:
    method __init__ (line 240) | def __init__(self, quantpedia_future: Symbol) -> None:
    method update_contracts (line 244) | def update_contracts(self, near_contract: FuturesContract) -> None:
    method is_initialized (line 247) | def is_initialized(self) -> bool:
  class CustomFeeModel (line 252) | class CustomFeeModel:
    method GetOrderFee (line 253) | def GetOrderFee(self, parameters):
  class QuantpediaFutures (line 260) | class QuantpediaFutures(PythonData):
    method GetSource (line 261) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 270) | def Reader(self, config, line, date, isLiveMode):

FILE: static/strategies/skewness-effect-in-commodities.py
  class SkewnessEffect (line 13) | class SkewnessEffect(QCAlgorithm):
    method Initialize (line 14) | def Initialize(self):
    method OnData (line 69) | def OnData(self, data):
    method Rebalance (line 77) | def Rebalance(self):
  class QuantpediaFutures (line 127) | class QuantpediaFutures(PythonData):
    method GetSource (line 128) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 137) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 154) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 155) | def GetOrderFee(self, parameters):

FILE: static/strategies/small-capitalization-stocks-premium-anomaly.py
  class ValueBooktoMarketFactor (line 11) | class ValueBooktoMarketFactor(QCAlgorithm):
    method Initialize (line 13) | def Initialize(self):
    method OnSecuritiesChanged (line 31) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 36) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 43) | def FineSelectionFunction(self, fine):
    method OnData (line 55) | def OnData(self, data):
    method Selection (line 79) | def Selection(self):
  class CustomFeeModel (line 88) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 89) | def GetOrderFee(self, parameters):

FILE: static/strategies/soccer-clubs-stocks-arbitrage.py
  class SoccerClubsStocksArbitrage (line 14) | class SoccerClubsStocksArbitrage(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnData (line 52) | def OnData(self, data):
  class QuantpediaSoccer (line 70) | class QuantpediaSoccer(PythonData):
    method GetSource (line 71) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 74) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 88) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 89) | def GetOrderFee(self, parameters):

FILE: static/strategies/synthetic-lending-rates-predict-subsequent-market-return.py
  class SyntheticLendingRatesPredictSubsequentMarketReturn (line 15) | class SyntheticLendingRatesPredictSubsequentMarketReturn(QCAlgorithm):
    method Initialize (line 16) | def Initialize(self):
    method OnData (line 29) | def OnData(self, data: Slice):
  class QuantpediaLendingRates (line 53) | class QuantpediaLendingRates(PythonData):
    method GetSource (line 54) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 57) | def Reader(self, config, line, date, isLiveMode):

FILE: static/strategies/term-structure-effect-in-commodities.py
  class TermStructure (line 13) | class TermStructure(QCAlgorithm):
    method Initialize (line 15) | def Initialize(self):
    method find_and_update_contracts (line 68) | def find_and_update_contracts(self, futures_chain, symbol) -> None:
    method OnData (line 82) | def OnData(self, data):
  class FuturesInfo (line 143) | class FuturesInfo():
    method __init__ (line 144) | def __init__(self, quantpedia_future:Symbol) -> None:
    method update_contracts (line 149) | def update_contracts(self, near_contract:FuturesContract, distant_cont...
    method is_initialized (line 153) | def is_initialized(self) -> bool:
  class CustomFeeModel (line 157) | class CustomFeeModel():
    method GetOrderFee (line 158) | def GetOrderFee(self, parameters):
  class QuantpediaFutures (line 164) | class QuantpediaFutures(PythonData):
    method GetSource (line 165) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 168) | def Reader(self, config, line, date, isLiveMode):

FILE: static/strategies/time-series-momentum-effect.py
  class TimeSeriesMomentum (line 19) | class TimeSeriesMomentum(QCAlgorithm):
    method Initialize (line 20) | def Initialize(self):
    method OnData (line 110) | def OnData(self, data):
  class QuantpediaFutures (line 206) | class QuantpediaFutures(PythonData):
    method GetSource (line 207) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 216) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 233) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 234) | def GetOrderFee(self, parameters):

FILE: static/strategies/trading-wti-brent-spread.py
  class WTIBRENTSpread (line 11) | class WTIBRENTSpread(QCAlgorithm):
    method Initialize (line 13) | def Initialize(self):
    method OnData (line 29) | def OnData(self, data):
  class QuantpediaFutures (line 60) | class QuantpediaFutures(PythonData):
    method GetSource (line 61) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 64) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 79) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 80) | def GetOrderFee(self, parameters):

FILE: static/strategies/trend-following-effect-in-stocks.py
  class TrendFollowingStocks (line 15) | class TrendFollowingStocks(QCAlgorithm):
    method Initialize (line 17) | def Initialize(self):
    method OnSecuritiesChanged (line 38) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 52) | def CoarseSelectionFunction(self, coarse):
    method OnData (line 62) | def OnData(self, data):
  class CustomFeeModel (line 122) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 123) | def GetOrderFee(self, parameters):

FILE: static/strategies/turn-of-the-month-in-equity-indexes.py
  class TurnoftheMonthinEquityIndexes (line 7) | class TurnoftheMonthinEquityIndexes(QCAlgorithm):
    method Initialize (line 9) | def Initialize(self):
    method Purchase (line 21) | def Purchase(self):
    method Rebalance (line 24) | def Rebalance(self):
    method OnData (line 27) | def OnData(self, data):

FILE: static/strategies/value-and-momentum-factors-across-asset-classes.py
  class QuandlAAAYield (line 6) | class QuandlAAAYield(PythonQuandl):
    method __init__ (line 7) | def __init__(self):
  class QuandlHighYield (line 11) | class QuandlHighYield(PythonQuandl):
    method __init__ (line 12) | def __init__(self):
  class QuantpediaBondYield (line 18) | class QuantpediaBondYield(PythonData):
    method GetSource (line 19) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 28) | def Reader(self, config, line, date, isLiveMode):
    method GetSource (line 150) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 159) | def Reader(self, config, line, date, isLiveMode):
  class CountryPE (line 48) | class CountryPE(PythonData):
    method GetSource (line 49) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 56) | def Reader(self, config, line, date, isLiveMode):
  class QuandlValue (line 115) | class QuandlValue(PythonQuandl):
    method __init__ (line 116) | def __init__(self):
  class QuantpediaPERatio (line 122) | class QuantpediaPERatio(PythonData):
    method GetSource (line 123) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 132) | def Reader(self, config, line, date, isLiveMode):
  class QuantpediaBondYield (line 149) | class QuantpediaBondYield(PythonData):
    method GetSource (line 19) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 28) | def Reader(self, config, line, date, isLiveMode):
    method GetSource (line 150) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 159) | def Reader(self, config, line, date, isLiveMode):
  class QuantpediaFutures (line 176) | class QuantpediaFutures(PythonData):
    method GetSource (line 177) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 186) | def Reader(self, config, line, date, isLiveMode):
  class ValueandMomentumFactorsacrossAssetClasses (line 221) | class ValueandMomentumFactorsacrossAssetClasses(QCAlgorithm):
    method Initialize (line 222) | def Initialize(self):
    method OnData (line 329) | def OnData(self, data):
  class CustomFeeModel (line 437) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 438) | def GetOrderFee(self, parameters):

FILE: static/strategies/value-book-to-market-factor.py
  class Value (line 13) | class Value(QCAlgorithm):
    method Initialize (line 15) | def Initialize(self):
    method OnSecuritiesChanged (line 33) | def OnSecuritiesChanged(self, changes):
    method CoarseSelectionFunction (line 38) | def CoarseSelectionFunction(self, coarse):
    method FineSelectionFunction (line 45) | def FineSelectionFunction(self, fine):
    method OnData (line 59) | def OnData(self, data):
    method Selection (line 80) | def Selection(self):
  class CustomFeeModel (line 89) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 90) | def GetOrderFee(self, parameters):

FILE: static/strategies/value-factor-effect-within-countries.py
  class ValueFactorCAPEEffectwithinCountries (line 15) | class ValueFactorCAPEEffectwithinCountries(QCAlgorithm):
    method Initialize (line 17) | def Initialize(self):
    method OnData (line 62) | def OnData(self, data:Slice) -> None:
  class CAPE (line 99) | class CAPE(PythonData):
    method GetSource (line 100) | def GetSource(self, config, date, isLiveMode):
    method Reader (line 103) | def Reader(self, config, line, date, isLiveMode):
  class CustomFeeModel (line 143) | class CustomFeeModel(FeeModel):
    method GetOrderFee (line 144) | def GetOrderFee(self, parameters):

FILE: static/strategies/volatility-risk-premium-effect.py
  class VolatilityRiskPremiumEffect (line 10) | class VolatilityRiskPremiumEffect(QCAlgorithm):
    method Initialize (line 11) | def Initialize(self):
    method OnData (line 24) | def OnData(self, slice):
Condensed preview — 66 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (550K chars).
[
  {
    "path": ".gitignore",
    "chars": 9,
    "preview": ".DS_Store"
  },
  {
    "path": ".vscode/launch.json",
    "chars": 371,
    "preview": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Current file\",\n            \"type\": \"deb"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 110,
    "preview": "{\n    \"editor.formatOnSave\": true,\n    \"python.defaultInterpreterPath\": \"${env:HOME}/miniconda3/bin/python\",\n}"
  },
  {
    "path": "README.md",
    "chars": 77232,
    "preview": "<div align=\"center\">\n  <img src=\"static/images/awesome-systematic-trading.jpeg\" height=200 alt=\"\"/>\n  <h1>Awesome System"
  },
  {
    "path": "README_zh.md",
    "chars": 65556,
    "preview": "<div align=\"center\">\n  <img src=\"static/images/awesome-systematic-trading.jpeg\" height=200 alt=\"\"/>\n  <h1>令人敬畏的系统化交易</h1"
  },
  {
    "path": "static/strategies/12-month-cycle-in-cross-section-of-stocks-returns.py",
    "chars": 6242,
    "preview": "# https://quantpedia.com/strategies/12-month-cycle-in-cross-section-of-stocks-returns/\n#\n# The top 30% of firms based on"
  },
  {
    "path": "static/strategies/52-weeks-high-effect-in-stocks.py",
    "chars": 8438,
    "preview": "# https://quantpedia.com/strategies/52-weeks-high-effect-in-stocks/\n#\n# The investment universe consists of all stocks f"
  },
  {
    "path": "static/strategies/accrual-anomaly.py",
    "chars": 7481,
    "preview": "# https://quantpedia.com/strategies/accrual-anomaly/\n#\n# The investment universe consists of all stocks on NYSE, AMEX, a"
  },
  {
    "path": "static/strategies/asset-class-momentum-rotational-system.py",
    "chars": 1685,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/asset-class-momentum-ro"
  },
  {
    "path": "static/strategies/asset-class-trend-following.py",
    "chars": 1789,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/asset-class-trend-follo"
  },
  {
    "path": "static/strategies/asset-growth-effect.py",
    "chars": 4674,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/asset-growth-effect/\n#\n# T"
  },
  {
    "path": "static/strategies/betting-against-beta-factor-in-country-equity-indexes.py",
    "chars": 6531,
    "preview": "# https://quantpedia.com/strategies/betting-against-beta-factor-in-country-equity-indexes/\n# \n# The investment universe "
  },
  {
    "path": "static/strategies/betting-against-beta-factor-in-stocks.py",
    "chars": 7244,
    "preview": "# https://quantpedia.com/strategies/betting-against-beta-factor-in-stocks/\n# \n# The investment universe consists of all "
  },
  {
    "path": "static/strategies/combining-fundamental-fscore-and-equity-short-term-reversals.py",
    "chars": 12564,
    "preview": "from AlgorithmImports import *\n\nimport numpy as np\n\n\ndef Return(values):\n    return (values[-1] - values[0]) / values[0]"
  },
  {
    "path": "static/strategies/combining-smart-factors-momentum-and-market-portfolio.py",
    "chars": 9275,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/combining-smart-factors"
  },
  {
    "path": "static/strategies/consistent-momentum-strategy.py",
    "chars": 6510,
    "preview": "# https://quantpedia.com/strategies/consistent-momentum-strategy/\n#\n# The investment universe consists of stocks listed "
  },
  {
    "path": "static/strategies/crude-oil-predicts-equity-returns.py",
    "chars": 16378,
    "preview": "from AlgorithmImports import *\n\nimport numpy as np\nfrom scipy.optimize import minimize\nimport statsmodels.api as sm\n\nsp1"
  },
  {
    "path": "static/strategies/currency-momentum-factor.py",
    "chars": 3956,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# Custom fee model\nclass CustomFeeModel(FeeModel):\n    def "
  },
  {
    "path": "static/strategies/currency-value-factor-ppp-strategy.py",
    "chars": 5086,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# Custom fee model\nclass CustomFeeModel(FeeModel):\n    def "
  },
  {
    "path": "static/strategies/dispersion-trading.py",
    "chars": 7359,
    "preview": "# https://quantpedia.com/strategies/dispersion-trading/\n#\n# The investment universe consists of stocks from the S&P 100 "
  },
  {
    "path": "static/strategies/dollar-carry-trade.py",
    "chars": 5073,
    "preview": "# https://quantpedia.com/strategies/dollar-carry-trade/\n#\n# The investment universe consists of currencies from develope"
  },
  {
    "path": "static/strategies/earnings-announcement-premium.py",
    "chars": 8486,
    "preview": "# https://quantpedia.com/strategies/earnings-announcement-premium/\n#\n# The investment universe consists of all stocks fr"
  },
  {
    "path": "static/strategies/earnings-announcements-combined-with-stock-repurchases.py",
    "chars": 8417,
    "preview": "# https://quantpedia.com/strategies/earnings-announcements-combined-with-stock-repurchases/\n#\n# The investment universe "
  },
  {
    "path": "static/strategies/earnings-quality-factor.py",
    "chars": 11482,
    "preview": "# https://quantpedia.com/strategies/earnings-quality-factor/\n#\n# The investment universe consists of all non-financial s"
  },
  {
    "path": "static/strategies/esg-factor-momentum-strategy.py",
    "chars": 8808,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/esg-factor-momentum-strate"
  },
  {
    "path": "static/strategies/fed-model.py",
    "chars": 5494,
    "preview": "# https://quantpedia.com/strategies/fed-model/\n#\n# Each month, the investor conducts a one-month predictive regression ("
  },
  {
    "path": "static/strategies/fx-carry-trade.py",
    "chars": 4776,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# Quandl \"value\" data\nclass QuandlValue(PythonQuandl):\n    "
  },
  {
    "path": "static/strategies/how-to-use-lexical-density-of-company-filings.py",
    "chars": 10467,
    "preview": "from QuantConnect.DataSource import *\nimport numpy as np\nfrom enum import Enum\n\nclass BrainLanguageMetrics(QCAlgorithm):"
  },
  {
    "path": "static/strategies/intraday-seasonality-in-bitcoin.py",
    "chars": 1788,
    "preview": "# https://quantpedia.com/strategies/intraday-seasonality-in-bitcoin/\n#\n# The investment universe consists of Bitcoin and"
  },
  {
    "path": "static/strategies/january-barometer.py",
    "chars": 2076,
    "preview": "# https://quantpedia.com/strategies/january-barometer/\n#\n# Invest in the equity market in each January. Stay invested in"
  },
  {
    "path": "static/strategies/low-volatility-factor-effect-in-stocks.py",
    "chars": 4866,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/low-volatility-factor-effe"
  },
  {
    "path": "static/strategies/market-sentiment-and-an-overnight-anomaly.py",
    "chars": 4367,
    "preview": "# https://quantpedia.com/strategies/market-sentiment-and-an-overnight-anomaly/\n#\n# The investment universe consists of S"
  },
  {
    "path": "static/strategies/momentum-and-reversal-combined-with-volatility-effect-in-stocks.py",
    "chars": 8902,
    "preview": "# https://quantpedia.com/strategies/momentum-and-reversal-combined-with-volatility-effect-in-stocks/\n#\n# The investment "
  },
  {
    "path": "static/strategies/momentum-effect-in-commodities.py",
    "chars": 5491,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/1-month-momentum-in-commod"
  },
  {
    "path": "static/strategies/momentum-factor-and-style-rotation-effect.py",
    "chars": 2986,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/momentum-factor-and-style-"
  },
  {
    "path": "static/strategies/momentum-factor-combined-with-asset-growth-effect.py",
    "chars": 8959,
    "preview": "# https://quantpedia.com/strategies/momentum-factor-combined-with-asset-growth-effect/\n#\n# The investment universe consi"
  },
  {
    "path": "static/strategies/momentum-factor-effect-in-stocks.py",
    "chars": 4880,
    "preview": "# https://quantpedia.com/strategies/momentum-factor-effect-in-stocks/\n#\n# The investment universe consists of NYSE, AMEX"
  },
  {
    "path": "static/strategies/momentum-in-mutual-fund-returns.py",
    "chars": 4755,
    "preview": "# https://quantpedia.com/strategies/momentum-in-mutual-fund-returns/\n#\n# The investment universe consists of equity fund"
  },
  {
    "path": "static/strategies/option-expiration-week-effect.py",
    "chars": 1387,
    "preview": "# https://quantpedia.com/strategies/option-expiration-week-effect/\n#\n# Investors choose stocks from the S&P 100 index as"
  },
  {
    "path": "static/strategies/paired-switching.py",
    "chars": 2898,
    "preview": "# https://quantpedia.com/strategies/paired-switching/\n#\n# This strategy is very flexible. Investors could use stocks, fu"
  },
  {
    "path": "static/strategies/pairs-trading-with-country-etfs.py",
    "chars": 9678,
    "preview": "# https://quantpedia.com/strategies/pairs-trading-with-country-etfs/\n#\n# The investment universe consists of 22 internat"
  },
  {
    "path": "static/strategies/pairs-trading-with-stocks",
    "chars": 8920,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/pairs-trading-with-stocks/"
  },
  {
    "path": "static/strategies/payday-anomaly.py",
    "chars": 1591,
    "preview": "# https://quantpedia.com/strategies/payday-anomaly/\n#\n# The investment universe consists of the S&P500 index. Simply, bu"
  },
  {
    "path": "static/strategies/rd-expenditures-and-stock-returns.py",
    "chars": 6832,
    "preview": "# https://quantpedia.com/strategies/rd-expenditures-and-stock-returns/\n#\n# The investment universe consists of stocks th"
  },
  {
    "path": "static/strategies/rebalancing-premium-in-cryptocurrencies.py",
    "chars": 5508,
    "preview": "# https://quantpedia.com/strategies/rebalancing-premium-in-cryptocurrencies/\n#\n# The investment universe consists of 27 "
  },
  {
    "path": "static/strategies/residual-momentum-factor.py",
    "chars": 11702,
    "preview": "# https://quantpedia.com/strategies/residual-momentum-factor/\n#\n# The investment universe consists of all domestic, prim"
  },
  {
    "path": "static/strategies/return-asymmetry-effect-in-commodity-futures.py",
    "chars": 8388,
    "preview": "# https://quantpedia.com/strategies/return-asymmetry-effect-in-commodity-futures/\n#\n# The investment universe consists o"
  },
  {
    "path": "static/strategies/reversal-during-earnings-announcements.py",
    "chars": 9702,
    "preview": "from AlgorithmImports import *\n\nimport numpy as np\nimport statsmodels.api as sm\n\n# Custom fee model\nclass CustomFeeModel"
  },
  {
    "path": "static/strategies/roa-effect-within-stocks.py",
    "chars": 4831,
    "preview": "# https://quantpedia.com/strategies/roa-effect-within-stocks/\n#\n# The investment universe contains all stocks on NYSE an"
  },
  {
    "path": "static/strategies/sector-momentum-rotational-system.py",
    "chars": 2858,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/sector-momentum-rotatio"
  },
  {
    "path": "static/strategies/short-interest-effect-long-short-version.py",
    "chars": 4827,
    "preview": "# https://quantpedia.com/strategies/short-interest-effect-long-short-version/\n#\n# All stocks from NYSE, AMEX, and NASDAQ"
  },
  {
    "path": "static/strategies/short-term-reversal-in-stocks.py",
    "chars": 5944,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/short-term-reversal-in-"
  },
  {
    "path": "static/strategies/short-term-reversal-with-futures.py",
    "chars": 12450,
    "preview": "# region imports\nfrom AlgorithmImports import *\n\n# endregion\n# https://quantpedia.com/strategies/short-term-reversal-wit"
  },
  {
    "path": "static/strategies/skewness-effect-in-commodities.py",
    "chars": 6608,
    "preview": "# https://quantpedia.com/strategies/skewness-effect-in-commodities/\n#\n# The investment universe consists of 27 futures c"
  },
  {
    "path": "static/strategies/small-capitalization-stocks-premium-anomaly.py",
    "chars": 3448,
    "preview": "# https://quantpedia.com/strategies/small-capitalization-stocks-premium-anomaly/\n#\n# The investment universe contains al"
  },
  {
    "path": "static/strategies/soccer-clubs-stocks-arbitrage.py",
    "chars": 3390,
    "preview": "# https://quantpedia.com/strategies/soccer-clubs-stocks-arbitrage/\n#\n# The investment universe consists of liquid soccer"
  },
  {
    "path": "static/strategies/synthetic-lending-rates-predict-subsequent-market-return.py",
    "chars": 3298,
    "preview": "# https://quantpedia.com/strategies/synthetic-lending-rates-predict-subsequent-market-return/\n#\n# The investment univers"
  },
  {
    "path": "static/strategies/term-structure-effect-in-commodities.py",
    "chars": 8320,
    "preview": "# https://quantpedia.com/strategies/term-structure-effect-in-commodities/\n#\n# This simple strategy buys each month the 2"
  },
  {
    "path": "static/strategies/time-series-momentum-effect.py",
    "chars": 10848,
    "preview": "# https://quantpedia.com/strategies/time-series-momentum-effect/\n#\n# The investment universe consists of 24 commodity fu"
  },
  {
    "path": "static/strategies/trading-wti-brent-spread.py",
    "chars": 3508,
    "preview": "#region imports\nfrom AlgorithmImports import *\n#endregion\n# https://quantpedia.com/strategies/trading-wti-brent-spread/\n"
  },
  {
    "path": "static/strategies/trend-following-effect-in-stocks.py",
    "chars": 5118,
    "preview": "# https://quantpedia.com/strategies/trend-following-effect-in-stocks/\n#\n# The investment universe consists of US-listed "
  },
  {
    "path": "static/strategies/turn-of-the-month-in-equity-indexes.py",
    "chars": 1147,
    "preview": "# https://quantpedia.com/strategies/turn-of-the-month-in-equity-indexes/\n#\n# Buy SPY ETF 1 day (some papers say 4 days) "
  },
  {
    "path": "static/strategies/value-and-momentum-factors-across-asset-classes.py",
    "chars": 14383,
    "preview": "\"\"\"\ndata_tools.py\n\"\"\"\n\n# Bond yields\nclass QuandlAAAYield(PythonQuandl):\n    def __init__(self):\n        self.ValueColum"
  },
  {
    "path": "static/strategies/value-book-to-market-factor.py",
    "chars": 3719,
    "preview": "# https://quantpedia.com/strategies/value-book-to-market-factor/\n#\n# The investment universe contains all NYSE, AMEX, an"
  },
  {
    "path": "static/strategies/value-factor-effect-within-countries.py",
    "chars": 6867,
    "preview": "# https://quantpedia.com/strategies/value-factor-effect-within-countries/\n#\n# The investment universe consists of 32 cou"
  },
  {
    "path": "static/strategies/volatility-risk-premium-effect.py",
    "chars": 3569,
    "preview": "# https://quantpedia.com/strategies/volatility-risk-premium-effect/\n#\n# Each month, at-the-money straddle, with one mont"
  }
]

About this extraction

This page contains the full source code of the paperswithbacktest/awesome-systematic-trading GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 66 files (519.8 KB), approximately 136.3k tokens, and a symbol index with 625 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!