Tradingene's package for algorithm backtest
Project description
Tradingene: A Package For Backtesting Trading Algorithms
See full documentation here
The Tradingene package turns your computer into a tool for developing and backtesting trading strategies you write in the Python programming language. Having been developed and backtested, these ones can be then easily adapted for live trading at the Tradingene Platform.
Installation
Tradingne can be installed via pip for python3:
pip3 install tradingene
Getting Started
An algorithm performs a trading logic that is implemented in a user defined function. If we want to test profitability of this logic we have to perform a backtest which consists of a series of consecutive calls of this (user defined) function.
Suppose we came up with the following trading logic:
- open a long position if the closing price of a bar is greater than the open price;
- open a short position if the closing price of a bar is less than the open price;
- do not make any changes to the position otherwise.
To start coding we need to define the name and the regime of the algorithm as well as the start_date and the end_date of the backtesting period:
Setting parameters
from datetime import datetime
from tradingene.algorithm_backtest.tng import TNG
from tradingene.backtest_statistics import backtest_statistics as bs
name = "Cornucopia"
regime = "SP"
start_date = datetime(2018, 9, 1)
end_date = datetime(2018, 10, 1)
After that we are ready to create an instance of the TNG
class. The instance named alg
will contain all the methods required for backtesting.
alg = TNG(name, regime, start_date, end_date)
Next we are able to specify an instrument and timeframe (measured in minutes) that we will use in our backtest:
alg.addInstrument("btcusd")
alg.addTimeframe("btcusd", 1440)
See more on adding instruments and timeframes.
Implementing trading logic
In the next step we will code the onBar()
function that will implement our trading logic:
def onBar(instrument):
if instrument.open[1] > instrument.close[1]:
# If the price moved down we take a short position
alg.sell()
elif instrument.open[1] < instrument.close[1]:
# If the price moved up we take a long position
alg.buy()
else:
# If the price did not change then do nothing
pass
The instrument
variable contains price values as well as the values of specified technical indicators.
Now we are ready to run a backtest:
alg.run_backtest(onBar)
Results of backtest
After the backtest is complete we may retrieve the statistics to estimate the performance of our algorithm:
stats = bs.BacktestStatistics(alg)
stats.backtest_results(plot=True, filename="backtest_stats")
With these lines of code we make the backtest statistics formatted into an html page named backtest_stats.html
. This page also shows us a cumulative profit plot, just like the one presented below:
See more on backtest statistics.
Machine learning and loading data
A powerful feature of the Tradingene
package is the ability to load, recalculate and convert data into a form suitable to train machine learning models with. That's why an algotrader can easily create and backtest "learning" trading robots.
With a series of our mini-lessons you'll learn how to use neural networks for solving classification and regression problems (with respect to the challenges of trading) as well as how to engage an SVM etc.
See more on loading data.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file tradingene-0.0.dev35.tar.gz
.
File metadata
- Download URL: tradingene-0.0.dev35.tar.gz
- Upload date:
- Size: 52.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.9.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2251472a59581da5650d0a240db61ba1b6d9bc11b6233e9be4a68100ca31dc2a |
|
MD5 | b5395650d15ce36ecee5135e7d5d6f08 |
|
BLAKE2b-256 | 7c4b7c96088c31e4c4e8ebeba13b8c2df1740c78cb67173997325974e45efc51 |
File details
Details for the file tradingene-0.0.dev35-py3-none-any.whl
.
File metadata
- Download URL: tradingene-0.0.dev35-py3-none-any.whl
- Upload date:
- Size: 69.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.9.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35d54826f0effde638749a91389bffb32aac48346d6ab68f2fc14fb15eda771c |
|
MD5 | 7a8c000ab1603f9b7edd9d959c3829eb |
|
BLAKE2b-256 | 63c51026a06719a979f010d3dff4645ebbdbb8a71054796eb244db38918add38 |