Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Marcnuth/AutoQuant

Open more actions menu

Repository files navigation

PypI Versions PyPI - Downloads Python Versions Platform

AutoQuant

AutoQuant is an out-of-the-box quantitative investment platform.

It contains the full ML pipeline of data processing, strategy building(includes AI & traditionals), back-testing, and covers the entire chain of quantitative investment: alpha seeking, risk modeling, portfolio optimization, and order execution.

With AutoQuant, users can easily try ideas to create better Quant investment strategies.

Quick Start

Installation

pip install --upgrade autoquant

Data Preparation

from autoquant.collector import Collector
from autoquant import Market
from datetime import date

collector = Collector.default()

data = collector.daily_prices(
    market=Market.SZ, 
    code='002594', 
    start=date(2021, 11, 1), 
    end=date(2021, 11, 5)
)

data = collector.quarter_statement(
    market=Market.SH, 
    code='601318', 
    quarter=date(2021, 9, 30)
)
    

Backtest

from autoquant.collector import Collector
from autoquant.workflow import Workflow
from autoquant.broker import Broker
from autoquant import Market
from datetime import date

from autoquant.workflow import Workflow
from autoquant.strategy import MA_CrossOver


class SmaCross(MA_CrossOver):
    params = dict(fast=5, slow=20)


collector = Collector.default()
broker = Broker.default(kick_start=100000, commission=0.01)

data = collector.daily_prices(market=Market.SZ, code='002594', start=date(2020, 1, 1), end=date(2021, 11, 1))
w = Workflow().with_broker(broker).with_strategy(SmaCross).backtest(data)

w.visualize()

Advanced Topics

Market

AutoQuant support Shanghai, Shenzhen, HongKong and US markets now. Use Market Enum in codes:

from autoquant import Market

Market.SZ
Market.SH
Market.HK
Market.CN
Market.US

Index

AutoQuant support the indexes in multiple markets now.

Use StocksIndex Enum in codes:

from autoquant import StocksIndex

StocksIndex.ZZ500
StocksIndex.HS300
StocksIndex.SZ50

Use FundsIndex Enum in codes:

from autoquant import FundsIndex

FundsIndex.CN_ALL
FundsIndex.CN_ETF
FundsIndex.CN_QDII
FundsIndex.HUAXIA_SECTOR_ETF

Indicators

Specific Indicators

  • ParityIndex
  • AdjustedMomentum

Backtrader Indicators

All the indicators in Backtrader are available in AutoQuant.

For Example, if you were using the indicators of Backtrader like this:

from backtrader.indicators import Momentum

You can simply change the import sentence to use the indicators in AutoQuant. The codes would be:

from autoquant.indicators import Momentum

Metrics

Specific Metrics

  • Gross Rate Of Return
  • CAGR(Compound Annual Growth Rate)

TA-Lib Metrics

All the metrics in TA-Lib are available in AutoQuant.

For Example, if you were using the metrics of TA-Lib like this:

from talib import SMA

close = numpy.random.random(100)
output = MOM(close, timeperiod=5)

You can simply change the import sentence to use the metrics in AutoQuant. The codes would be:

from AutoQuant import SMA

close = numpy.random.random(100)
output = MOM(close, timeperiod=5)

Providers

Price Provider

Provides List

  • BaostockProvider
  • TushareProvider
  • EastmoneyProvider

API

def daily_prices(self, market: Market, code: str, start: date, end: date, **kwargs)

Financial Statement Provider

Provides List

  • SnowballProvider

API

def quarter_statement(self, market: Market, code: str, quarter: date, **kwargs)

def yearly_balance_sheet(self, market: Market, code: str,  years: list, **kwargs)

def yearly_income_sheets(self, market: Market, code: str, years: list, **kwargs)

def yearly_flow_sheets(self, market: Market, code: str, years: list, **kwargs)

Index Provider

Provides List

  • BaostockProvider
  • EastmoneyProvider

API

def stocks_of_index(self, index: StocksIndex, **kwargs)

def funds_of_index(self, index: FundsIndex, **kwargs)

Contribution Guide

Test

Test all

PYTHONPATH=./ pytest

Test specified test

PYTHONPATH=./ pytest tests/<YOUR_DISIRE_FILE>.py -k "<YOUR_DISIRE_TEST_CASE>" -s

Development

Generate Requirements

pipreqs ./ --encoding=utf8 --force

Package Update

python3 -m build 
python3 -m twine upload dist/*

About

AutoQuant is an out-of-the-box quantitative investment platform.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.