Skip to main content

The keep it simple backtesting framework for Python.

Project description

kissbt

kissbt, the keep it simple backtesting framework, is a lightweight and user-friendly Python framework for backtesting trading strategies. It focuses on simplicity, performance, and ease of extensibility while providing essential tools for effective backtesting.

Why kissbt?

  • 🚀 Lightweight – Minimal dependencies ensure fast installation and execution.
  • 📖 Simple API – Lowers the barrier for traders new to backtesting.
  • 🔌 Extensible – Modular architecture enables easy customization.
  • 📊 Essential Features – Includes tools for data handling, strategy implementation, and performance evaluation.

Features

✔️ Object-oriented design for intuitive strategy development ✔️ Fast execution, even for large universes ✔️ Supports long and short positions ✔️ Built-in trade execution, position tracking, and P&L calculation ✔️ Performance analysis with key trading metrics ✔️ Backtesting with historical market data ✔️ Modular components (Strategy, Broker, Engine, Analyzer)

Installation

You can install kissbt using either pip or conda.

Using pip

To install kissbt via pip, run the following command:

pip install kissbt

Using conda

To install kissbt via conda, run the following command:

conda install kissbt

Usage

1. Define a Strategy

Create a custom strategy by extending the Strategy class and implementing the generate_orders method:

from kissbt.strategy import Strategy
from kissbt.entities import Order, OrderType

class MyStrategy(Strategy):
    def generate_orders(self, current_data, current_datetime):
        # Example: Buy if the close price is above the 128-day SMA
        for ticker in current_data.index:
            close_price = current_data.loc[ticker, "close"]
            sma_128 = current_data.loc[ticker, "sma_128"]
            if close_price > sma_128:
                order = Order(ticker=ticker, size=10, order_type=OrderType.OPEN)
                self._broker.place_order(order)

2. Set Up the Broker

Initialize the Broker with starting capital, fees, and other parameters:

from kissbt.broker import Broker

broker = Broker(start_capital=100000, fees=0.001)

3. Run the Backtest

Use the Engine to run the backtest with your strategy and market data:

from kissbt.engine import Engine
import pandas as pd

# Load market data
data = pd.read_csv('market_data.csv', parse_dates=['date'])

# Initialize strategy and engine
strategy = MyStrategy(broker)
engine = Engine(broker, strategy)

# Run the backtest
engine.run(data)

4. Analyze Performance

Use the Analyzer to calculate and display performance metrics:

from kissbt.analyzer import Analyzer

analyzer = Analyzer(broker)
metrics = analyzer.get_performance_metrics()
print(metrics)

Examples

Check out the examples directory for more detailed examples and use cases.

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Contributing

We welcome contributions! If you have ideas, bug fixes, or feature requests, feel free to open an issue or submit a pull request.

Contact

For any questions or inquiries, please contact Adrian Hasse at adrian.hasse@finblobs.com.

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

kissbt-0.1.5.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kissbt-0.1.5-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file kissbt-0.1.5.tar.gz.

File metadata

  • Download URL: kissbt-0.1.5.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for kissbt-0.1.5.tar.gz
Algorithm Hash digest
SHA256 2eabbdd4d65181fc06b2e88f95abbfb29662d0c2d10c6656678999d3d57da0d6
MD5 89e60945b4e8934a523df726d4497281
BLAKE2b-256 272405f77035c766feae87c34e38913594cfbfedd42ead062e5e41d94c6f6e2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for kissbt-0.1.5.tar.gz:

Publisher: python-publish.yaml on FinBlobs/kissbt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kissbt-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: kissbt-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 22.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for kissbt-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1ba6ac61d954dfc64c9b59cd664e9a3c519e926c02d48e9867dace10d3c5be61
MD5 0c9e787b1bfe8b3a8fa896d5fd32d8d3
BLAKE2b-256 6b665a6debbde1543a81c50aea6f2450586349a60f84b775fa3f79056c6f9e40

See more details on using hashes here.

Provenance

The following attestation bundles were made for kissbt-0.1.5-py3-none-any.whl:

Publisher: python-publish.yaml on FinBlobs/kissbt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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