Skip to main content

Bitcoin Dollar-Cost Averaging (DCA) Backtest Framework

Project description

Hypertrial: Bitcoin DCA Strategy Framework

A Bitcoin Dollar-Cost Averaging (DCA) framework for evaluating and comparing algorithmic trading strategies across multiple market cycles.

Installation

pip install hypertrial

Quick Start

import pandas as pd
from hypertrial import backtest_dynamic_dca, load_data, register_strategy

# Load Bitcoin data (included with the package)
btc_df = load_data()

# Create a simple custom strategy
@register_strategy("my_custom_strategy")
def custom_dca_strategy(df):
    """A simple custom strategy that allocates more weight when price is below the 50-day MA."""
    # Add features
    df = df.copy()
    df['ma_50'] = df['btc_close'].rolling(window=50).mean()
    df['below_ma'] = (df['btc_close'] < df['ma_50']).astype(int)

    # Create weights
    weights = pd.Series(index=df.index, data=0.0)
    weights[df['below_ma'] == 1] = 2.0  # Double weight when below MA
    weights[df['below_ma'] == 0] = 0.5  # Half weight when above MA

    # Normalize weights (required)
    total_weight = weights.sum()
    if total_weight > 0:
        weights = weights / total_weight

    return weights

# Run backtest with your strategy
results = backtest_dynamic_dca(btc_df, strategy_name="my_custom_strategy")

Key Features

  • Strategy Development: Create and test custom DCA strategies with a flexible API
  • Performance Metrics: Analyze strategies using Sats Per Dollar (SPD) across market cycles
  • Cross-Cycle Analysis: Test strategies under different market conditions
  • Visualization Tools: Built-in plotting for strategy weights and performance metrics
  • Security Verification: Comprehensive security system for submitted strategies
  • Tournament Platform: Submit and compare your strategies against others

Command Line Interface

Hypertrial comes with a built-in CLI:

# List available strategies
hypertrial --list

# Run backtest with a specific strategy
hypertrial --strategy dynamic_dca

# Run backtest for all strategies
hypertrial --backtest-all --output-dir results

# Backtest multiple strategy files from custom paths
hypertrial --strategy-files path/to/strategy1.py path/to/strategy2.py --output-dir results

# Backtest all Python files in a directory
hypertrial --strategy-dir path/to/strategies/dir --output-dir results

# Backtest files matching a glob pattern
hypertrial --glob-pattern "strategies/batch_*.py" --output-dir results

# Process many strategies in parallel
hypertrial --strategy-dir strategies/ --processes 4 --output-dir results

# Process large sets of strategies in batches to manage memory
hypertrial --glob-pattern "*.py" --batch-size 10 --output-dir results

# Disable plots during backtest
hypertrial --strategy my_strategy --no-plots

What is DCA?

Dollar-Cost Averaging (DCA) is an investment strategy where you invest a fixed amount at regular intervals, regardless of price. With Bitcoin, DCA helps mitigate volatility while accumulating BTC over time.

Hypertrial extends this concept by allowing for "dynamic" DCA - varying the purchase amounts strategically while maintaining the same total investment.

Resources

License

This project is available under the MIT License.

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

hypertrial-0.1.13.tar.gz (831.1 kB view details)

Uploaded Source

Built Distribution

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

hypertrial-0.1.13-py3-none-any.whl (246.3 kB view details)

Uploaded Python 3

File details

Details for the file hypertrial-0.1.13.tar.gz.

File metadata

  • Download URL: hypertrial-0.1.13.tar.gz
  • Upload date:
  • Size: 831.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for hypertrial-0.1.13.tar.gz
Algorithm Hash digest
SHA256 b567db773c0acd2f93da20e3b3e68b5a41ff5a5fe31c62e8b2153c0dfca5c29d
MD5 edf05fdfdfea428f493cebdca1870ef6
BLAKE2b-256 30f394a32a7461a06f3e5ca8dfd992996c34d0653194dee72c2e0f506377b46c

See more details on using hashes here.

File details

Details for the file hypertrial-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: hypertrial-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 246.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for hypertrial-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 a38b61100b63de5aab46f7743f2124a973c40bae737571d79ac4f96a3e16c681
MD5 c7d93bb346ec9c7f75d34edf1d81a839
BLAKE2b-256 2ffd049ba28bdad1b2f55e579d1cb911fe42abb2e1562c498da3d713cdd5fe6e

See more details on using hashes here.

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