/OmegaUI

Backtrader Front End

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Omega UI

Backtesting Front End for backtrader (see: https://www.backtrader.com/). Built with Plotly/Dash.

Important:

  • Before using, please make sure to update the file omega-ui.config at the root of the omega_ui folder. This file contains configuration parameters that are used throughout the application.
  • A Redis instance must be running (this is used to display logs) and the package folder needs to be in PythonPath.

What needs to be updated:

  • Default/Module: This is the module where the class implementing the Backtest class is (make sure that the module is in PythonPath).
  • Default/Class: Name of the class implementing the Backtest class.
  • Default/Redis: IP address of the Redis datastore (Default port: 6379).
  • Logging/Root: Path to where logs will be stored.
  • Backtest/Cash: Default cash value.
  • Backtest/Modules: Modules where the strategies are located (several modules can be implemented using commas as a delimiter).

1. Installation:

From source: Place the omega_ui directory found in the sources inside your project

2. Usage:

  • Before the UI can be used, the Backtest class needs to be implemented. This is done by inheriting the class Backtest from omega_ui.backtest and implementing the following methods:

  • get_symbols: Symbols that will be displayed on the UI and on which we can run a backtest.

  • get_parameters: Default parameters for a given strategy.

  • run: Run a backtest. Please note that this needs to return 2 items: returns and results from backtrader.

  • Before running the UI, the following command has to be running: 'python socket_logging.py flask run'. This is the server which redirects the logs to the UI.

  • To run the UI, run the following command: 'python app.py' and in your browser (tested only on Chrome), navigate to the specified address (should be http://127.0.0.1:8050/).

3. Example:

An example has been included in the tests folder to give an idea on how to use the UI (see test_backtest.py). When using it, please make sure to select the strategy "TestStrategy" in the Strategy dropwdown as selecting ExampleBacktest would not work.

Note:

This project is designed for people already comfortable using and writing python code. I do not have time to provide support but am happy to help if you get in touch regarding the following topics:

  • Error messages
  • Documentation
  • Suggestions for extra features
  • Bugs I will try to reply to messages but can't guarantee it (as long as the message is properly formatted). This is a work in progress and also a project which I use for my research. Offers to contribute will be accepted.

Also, if nothing happens while trying to run a backtest, this might be due to a problem with the Dash React part. I had an issue where I had to roll back Dash to a specific version and haven't tried to use the latest version again. To find out if there's a problem with React, right-click in Chrome and select Inspect, then navigate to the Console tab and look for errors. See below to know which dash packages work with this application:

  • dash==0.21.0
  • dash-auth==0.1.0
  • dash-core-components==0.20.2
  • dash-html-components==0.10.0
  • dash-renderer==0.11.3
  • dash-table-experiments==0.6.0