Skip to main content

A small backtesting utility.

image

PyTest

Install

pip install --upgrade bktest

Usage

bktest [OPTIONS]

Options

Option Value Default Format Description
--start <start date> orders' first date date (ISO-8601) The starting date of the backtesting. If the value is before the first ordering day, the value will be discarded.
--end <end date> orders' last date date (ISO-8601) The ending date of the backtesting. If the value is after today, the value will be discarded.
--offset-before-trading <days> 1 int Number of day to offset to push each date of the portfolio before trading it.
--offset-before-ending <days> 0 int Number of day to continue the backtest after every orders.
--order-file <file> path The single order file to use. The file must contain symbol, quantity and date information.
--single-file-provider-column-date <column> date string Change the date column name to use.
--single-file-provider-column-symbol <column> symbol string Change the symbol column name to use.
--single-file-provider-column-quantity <column> quantity string Change the quantity column name to use.
--order-files <directory> path The directory of order file to use. The filename must be a date. The file must contain symbol and quantity information.
--order-files-extension <extension> csv [csv, parquet, json] Change the file extension to use when listing for order files.
--initial-cash <amount> 100_000 number Change the initial cash to use for the backtesting.
--quantity-mode <mode> percent [percent, share] If the mode is share, all quantities will be interpreted as integers. If the mode is percent, all values will be multiplied by the current cash value.
--weekends false Enable ordering on weekends.
--holidays false Enable ordering on holidays.
--symbol-mapping <mapping> path (.json) Specify a custom symbol mapping file enabling vendor-id translation.
--no-caching false Disable prices caching.
--fee-model <model> expression or constant Specify a fee model to use. The value can be a constant. Or an expression that allow the usage of the price and quantity variable.
Example: abs(price * quantity) * 0.1
--holiday-provider <name> nyse [legacy, nyse] Specify which holiday provider to use.
--rfr-file <directory> path The directory of rfr file to use. The file must contain a column with date information and a column with the rfr information in %.
--rfr-file-column-date <column> date string Change the date column name to use.

Exporters

Multiple exporters can be enabled at one time.

Console

The console exporter allows a quick look at the backtest.

Option Value Default Format Description
--console false Enable the console exporter.
--console-format <format> text [text, json] Change the output format.
--console-file <file> out [out, err] Change the output file.
--console-hide-skips false Do not the skipped days.
--console-text-no-color false Disable colors in the output. (only if the format is text)

Dump

The dump exporter generate a dump of the portfolio at each day.

Option Value Default Format Description
--dump false Enable the dump exporter.
--dump-output-file <file> dump.csv path Specify the output file.
--dump-auto-delete false Automatically delete the previous dump file if it is present.

QuantStats

Generate a tearsheet from the backtest data.

Option Value Default Format Description
--quantstats false Enable the quantstats exporter.
--quantstats-output-file-html <file> report.html path Specify the output file containing the tearsheet.
--quantstats-output-file-csv <file> report.csv path Specify the output file containing raw returns.
--quantstats-benchmark-ticker <ticker> SPY symbol Specify the ticker to use as a benchmark in the tearsheet.
--quantstats-auto-delete false Automatically delete the previous report files if they are present.

PDF

Generate a tearsheet from a custom template.

Option Value Default Format Description
--pdf false Enable the pdf exporter.
--pdf-template <file> tearsheet.sketch path Specify the template file.
--pdf-output-file <file> report.pdf path Specify the output file.
--pdf-auto-delete false Automatically delete the previous report file if present.
--pdf-debug false Enable the pdf renderer's debugging tools.
--pdf-variable [<key> <value>] [] string string Add a custom variable.
--pdf-user-script [<file>] [] path Add a user script.

Specific Return

Generate a tearsheet from the specific return backtest data.

Option Value Default Format Description
--specific-return <file> path Enable the specific return exporter by proving a file.
--specific-return-column-date <column> date string Specify the name of column containing the dates informations.
--specific-return-column-symbol <column> symbol string Specify the name of column containing the symbols informations.
--specific-return-column-value <column> specific_return string Specify the name of column containing the value informations.
--specific-return-output-file-html <file> sr-report.html path Specify the output file containing the tearsheet.
--specific-return-output-file-csv <file> sr-report.csv path Specify the output file containing raw returns.
--specific-return-auto-delete false Automatically delete the previous report files if they are present.

Data Sources

Only one data source can be used at once.

Yahoo

Option Value Default Format Description
--yahoo false Enable yahoo as the data source.

CoinMarketCap

Option Value Default Format Description
--coinmarketcap false Enable coinmarketcap as the data source.
--coinmarketcap-force-mapping-refresh false Force a mapping refresh. This is usually only done automatically the first time of using this data source.
--coinmarketcap-page-size <size> 10_000 number Specify the page size while building the mapping.

FactSet

Option Value Default Format Description
--factset false Enable factset as the data source.
--factset-username-serial $FACTSET_USERNAME_SERIAL Specify the factset's username serial to use.
--factset-api-key $FACTSET_API_KEY Specify the factset's api key to use.

File

Use a static file as a price data source.

If another data source is specified, files sources will be used first in a delegated data source. Meaning that if the data are not available in the file, the next data source will be used.

.parquet
Option Value Default Format Description
--file-parquet <file> path Use a static .parquet file as a the data source.
--file-parquet-column-date <column> date string Specify the name of column containing the dates informations.
--file-parquet-column-symbol <column> symbol string Specify the name of column containing the symbols informations.
--file-parquet-column-price <column> price string Specify the name of column containing the prices informations.

Metadata

Release files for bktest 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bktest 2.1.0
File Size Uploaded
bktest-2.1.0.tar.gz 37.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bktest 2.1.0
File Interpreter ABI Platform
bktest-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 85.1 kB

Release files / bktest-2.1.0.tar.gz

Download URL bktest-2.1.0.tar.gz
Size 37.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6a07bd06926b604bdfc3e50f7cc24e89add06beee44a27a5eb5f59bc8a850cd2
BLAKE2b-256 checksum
How to use checksums
9c4336186b58a77e4bbb9f7f9af40ad513a159a3c71f91b6443560bc01408225
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / bktest-2.1.0-py3-none-any.whl

Download URL bktest-2.1.0-py3-none-any.whl
Size 47.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d17ba428a2ad58af07769b4dbac93fdaeb735ca931a9586ea68c8e4394451bb3
BLAKE2b-256 checksum
How to use checksums
211e43629bb420c94df3360045c3e88ae226454d16fbfe33f6e171cb1e44f90f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page