Skip to main content

Quant Invest Lab is a python package to help you to do some quantitative experiments, while trying to learn or build quantitative investment solutions. This project was initially my own set of functionnalities but I decided to build a package for that and sharing it as open source project.

Project description

Quant Invest Lab

PyPI commit update Code style: black Code Climate GitHub Actions CI

contributions welcome

Quant Invest Lab is a project aimed to provide a set of basic tools for quantitative experiments. By quantitative experiment I mean trying to build you own set of investments solution. The project is still in its early stage, but I hope it will grow in the future.

Initially this project was aimed to be a set of tools for my own experiments, but I decided to make it open source. Of courses it already exists some awesome packages, more detailed, better suited for some use cases. But I hope it will be useful for someone else (learn, practice, understand and create). Feel free to use it, modify it and contribute to it. This package is basically the package I wanted to find when I started to learn quantitative finance.

Main features

  • Data: download data from external data provider without restriction on candle stick, the main provider is kucoin for now (currently only crypto data are supported).
  • Backtesting: backtest your trading strategy (Long only for now but soon short and leverage) on historical data for different timeframe. Optimize you take profit, stop loss. Access full metrics of your strategy.
  • Indicators: a set of indicators to help you build your strategy.
  • Portfolio: a set of portfolio optimization tools to help you build your portfolio.
  • Simulation: simulate your data based on real data using statistics to get a better understanding of its behavior during backtesting.
  • Metrics: a set of metrics to help you evaluate your strategy through performances and risks.

Installation

To install Quant Invest Lab through pip, run the following command:

pip install quant-invest-lab --upgrade

You can install it using poetry the same way :

poetry add quant-invest-lab

Basic examples

Backtest a basic EMA crossover strategy

import pandas as pd

from quant_invest_lab.backtest import ohlc_long_only_backtester
from quant_invest_lab.data_provider import download_crypto_historical_data

symbol = "BTC-USDT"
timeframe = "4hour"
df_BTC = download_crypto_historical_data(symbol, timeframe)

# Define your indicators
df_BTC["EMA20"] = df_BTC.Close.ewm(20).mean()
df_BTC["EMA60"] = df_BTC.Close.ewm(60).mean()

df_BTC = df_BTC.dropna()

# Define your strategy entry and exit functions
def buy_func(row: pd.Series, prev_row: pd.Series) -> bool:
    return True if row.EMA20 > row.EMA60 else False

def sell_func(row: pd.Series, prev_row: pd.Series, trading_days: pd.Series) -> bool:
    return True if row.EMA20 < row.EMA60 else False

# Backtest your strategy
ohlc_long_only_backtester(
    df=df_BTC,
    long_entry_function=buy_func,
    long_exit_function=sell_func,
    timeframe=timeframe,
    initial_equity=1000,
)

Optimize a portfolio (mean-variance)

from quant_invest_lab.portfolio import MonteCarloPortfolio, ConvexPortfolio, RiskParityPortfolio
from quant_invest_lab.data_provider import build_multi_crypto_dataframe

symbols = set(
    [
        "BNB-USDT",
        "BTC-USDT",
        "NEAR-USDT",
        "ETH-USDT",
        "SOL-USDT",
        "EGLD-USDT",
        "ALGO-USDT",
        "FTM-USDT",
        "ADA-USDT",
    ]
)

closes = build_multi_crypto_dataframe(symbols)
returns = closes.pct_change().dropna()

cvx_ptf = ConvexPortfolio(returns)

cvx_ptf.fit("sharpe", "max", max_asset_weight=0.2) # maximize sharpe ratio with a max weight of 20% per asset

cvx_ptf.get_allocation()

# or
mc_ptf = MonteCarloPortfolio(returns)

mc_ptf.fit(n_portfolios=20000, plot=True)

mc_ptf.get_allocation("sharpe", "max") # maximize sharpe ratio

Next steps

  • Create official docs and add more examples
  • Short, leverage and margin backtesting
  • Add more data provider (Stock, bonds...)
  • Make montecarlo candle data generation process more realistic

Disclaimer

This package is only for educational purpose or experimentation it is not intended to be used in production. I am not responsible for any loss of money you may have using this package. Use it at your own risk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quant_invest_lab-0.2.6.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

quant_invest_lab-0.2.6-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file quant_invest_lab-0.2.6.tar.gz.

File metadata

  • Download URL: quant_invest_lab-0.2.6.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for quant_invest_lab-0.2.6.tar.gz
Algorithm Hash digest
SHA256 26cde197638cc5b2c4aaca080fa13ab0403b19d9bce51c1352b03e17b48c9fe9
MD5 4ea8213450720d15c17b60ed62503f9c
BLAKE2b-256 cec14c5f85fec071621af7debe93be0bc78794a74784efbbec78ece81bcc0ea6

See more details on using hashes here.

File details

Details for the file quant_invest_lab-0.2.6-py3-none-any.whl.

File metadata

File hashes

Hashes for quant_invest_lab-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 47a3f96ba09c548fe7400dd9d20201c1f378102e3e017268238b080e00ddb54a
MD5 bc41ab0e41c37ca37a2f865b5f0d4dc6
BLAKE2b-256 f3eb36142500e3b41783e6df08bb166d4c424aba137728706650bdb62c3a2fa0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page