Skip to main content

Simple but powerful backtesting framework, that strives to let you focus on modeling financial strategies, portfolio management, and analyzing backtests.

Project description

https://img.shields.io/pypi/v/quantdom.svg?style=flat-square https://img.shields.io/travis/constverum/Quantdom.svg?style=flat-square https://img.shields.io/pypi/wheel/quantdom.svg?style=flat-square https://img.shields.io/pypi/pyversions/quantdom.svg?style=flat-square https://img.shields.io/pypi/l/quantdom.svg?style=flat-square

Quantdom is a simple but powerful backtesting framework written in python, that strives to let you focus on modeling financial strategies, portfolio management, and analyzing backtests. It has been created as a useful and flexible tool to save the systematic trading community from re-inventing the wheel and let them evaluate their trading ideas easier with minimal effort. It’s designed for people who are already comfortable with Python and who want to create, test and explore their own trading strategies.

http://f.cl.ly/items/1z1t1T0A0P161f053i45/quantdom_v0.1a1.gif

Quantdom is in an early alpha state at the moment. So please be patient with possible errors and report them.

Features

  • Free, open-source and cross-platform backtesting framework

  • Multiple data feeds: csv files and online sources such as Google Finance, Yahoo Finance, Quandl and more

  • Investment Analysis (performance and risk analysis of financial portfolio)

  • Charting and reporting that help visualize backtest results

Requirements

Installation

Using the binaries

You can download binary packages for your system (see the Github Releases page for available downloads):

Running from source code

You can install last stable release from pypi:

$ pip install quantdom

And latest development version can be installed directly from GitHub:

$ pip install -U git+https://github.com/constverum/Quantdom.git

After that, to run the application just execute one command:

$ quantdom

Usage

  1. Run Quantdom.

  2. Choose a market instrument (symbol) for backtesting on the Data tab.

  3. Specify a file with your strategies on the Quotes tab, and select one of them.

  4. Run a backtest. Once this is done, you can analyze the results and optimize parameters of the strategy.

Strategy Examples

Three-bar strategy

A simple trading strategy based on the assumption that after three consecutive bullish bars (bar closing occurred higher than its opening) bulls predominate in the market and therefore the price will continue to grow; after 3 consecutive bearish bars (the bar closes lower than its opening), the price will continue to down, since bears predominate in the market.

from quantdom import AbstractStrategy, Order, Portfolio

class ThreeBarStrategy(AbstractStrategy):

    def init(self, high_bars=3, low_bars=3):
        Portfolio.initial_balance = 100000  # default value
        self.seq_low_bars = 0
        self.seq_high_bars = 0
        self.signal = None
        self.last_position = None
        self.volume = 100  # shares
        self.high_bars = high_bars
        self.low_bars = low_bars

    def handle(self, quote):
        if self.signal:
            props = {
                'symbol': self.symbol,  # current selected symbol
                'otype': self.signal,
                'price': quote.open,
                'volume': self.volume,
                'time': quote.time,
            }
            if not self.last_position:
                self.last_position = Order.open(**props)
            elif self.last_position.type != self.signal:
                Order.close(self.last_position, price=quote.open, time=quote.time)
                self.last_position = Order.open(**props)
            self.signal = False
            self.seq_high_bars = self.seq_low_bars = 0

        if quote.close > quote.open:
            self.seq_high_bars += 1
            self.seq_low_bars = 0
        else:
            self.seq_high_bars = 0
            self.seq_low_bars += 1

        if self.seq_high_bars == self.high_bars:
            self.signal = Order.BUY
        elif self.seq_low_bars == self.low_bars:
            self.signal = Order.SELL

Documentation

In progress ;)

TODO

  • Add integration with TA-Lib

  • Add the ability to use TensorFlow/CatBoost/Scikit-Learn and other ML tools to create incredible algorithms and strategies. Just as one of the first tasks is Elliott Wave Theory(Principle) - to recognize of current wave and on the basis of this predict price movement at confidence intervals

  • Add the ability to make a sentiment analysis from different sources (news, tweets, etc)

  • Add ability to create custom screens, ranking functions, reports

Contributing

  • Fork it: https://github.com/constverum/Quantdom/fork

  • Create your feature branch: git checkout -b my-new-feature

  • Commit your changes: git commit -am ‘Add some feature’

  • Push to the branch: git push origin my-new-feature

  • Submit a pull request!

Disclaimer

This software should not be used as a financial advisor, it is for educational use only. Absolutely no warranty is implied with this product. By using this software you release the author(s) from any liability regarding the use of this software. You can lose money because this program probably has some errors in it, so use it at your own risk. And please don’t take risks with money you can’t afford to lose.

Feedback

I’m very interested in your experience with Quantdom. Please feel free to send me any feedback, ideas, enhancement requests or anything else.

License

Licensed under the Apache License, Version 2.0

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

quantdom-0.1.1.tar.gz (35.8 kB view details)

Uploaded Source

Built Distribution

quantdom-0.1.1-py3-none-any.whl (141.6 kB view details)

Uploaded Python 3

File details

Details for the file quantdom-0.1.1.tar.gz.

File metadata

  • Download URL: quantdom-0.1.1.tar.gz
  • Upload date:
  • Size: 35.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.6.3 Linux/4.4.0-101-generic

File hashes

Hashes for quantdom-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4794fce1f2e407b1c60eff8ef04245bd444673e2c536171b82987ad0426cba5d
MD5 f9f599e0bd74d38fd6f77d56e2f6672a
BLAKE2b-256 1db878d5b023e4ddff613cd05f8c852ab30fdee13d43867c1b0e2ec7bae40cf7

See more details on using hashes here.

File details

Details for the file quantdom-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: quantdom-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 141.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.11 CPython/3.6.3 Linux/4.4.0-101-generic

File hashes

Hashes for quantdom-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 222e777cca04af8f3b6f1dbe3ea1e9451f75fb9da76ca044cd71f5321ab5c128
MD5 918ac50d4c6e8fda97bc2e829524c097
BLAKE2b-256 ad8e9eb4356608f019bda1c591b665183f51a7c558bc25d0e01d288dd436a1f7

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