Metadata-Version: 2.4
Name: hypertrial
Version: 0.1.10
Summary: Bitcoin Dollar-Cost Averaging (DCA) Backtest Framework
Home-page: https://github.com/hypertrial/hypertrial
Author: Matt Faltyn
Author-email: matt@trilemmacapital.com
Project-URL: Bug Tracker, https://github.com/hypertrial/hypertrial/issues
Project-URL: Documentation, https://github.com/hypertrial/hypertrial#readme
Project-URL: Source Code, https://github.com/hypertrial/hypertrial
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Office/Business :: Financial :: Investment
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6, <4.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=1.3.0
Requires-Dist: numpy>=1.20.0
Requires-Dist: matplotlib>=3.4.0
Requires-Dist: coinmetrics-api-client>=2024.2.6.16
Requires-Dist: pytest>=6.2.0
Requires-Dist: pandas_datareader>=0.10.0
Requires-Dist: scipy>=1.6.0
Requires-Dist: psutil>=5.8.0
Requires-Dist: bandit>=1.7.0
Requires-Dist: safety>=2.0.0
Requires-Dist: pylint>=3.0.0
Requires-Dist: pytest-cov>=6.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Hypertrial: Bitcoin DCA Strategy Framework

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

## Installation

```bash
pip install hypertrial
```

## Quick Start

```python
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:

```bash
# 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

- **GitHub Repository**: [github.com/mattfaltyn/hypertrial](https://github.com/mattfaltyn/hypertrial)
- **PyPI Package**: [pypi.org/project/hypertrial](https://pypi.org/project/hypertrial/)
- **Documentation**: Available in the repository's tutorials directory
- **Issue Tracker**: Submit issues on GitHub

## License

This project is available under the MIT License.
