Skip to main content

A quantitative trading toolkit with abstract strategy framework and common analysis functions

Project description

quant1024

A quantitative trading toolkit providing an abstract strategy framework and common quantitative analysis functions.

Documentation: English | 中文 | 中文文档

Features

  • 🎯 Abstract Strategy Base Class: Provides QuantStrategy abstract base class for rapid custom strategy development
  • 📊 Quantitative Tool Functions: Built-in indicators including returns calculation, Sharpe ratio, and more
  • 🧪 Comprehensive Testing: Full test coverage ensuring stable and reliable external API calls
  • 🚀 Easy to Extend: Clear interface design for easy inheritance and customization

Installation

Method 1: Install from PyPI (after package is published)

pip install quant1024

Method 2: Install from Git Repository

pip install git+https://github.com/yourusername/quant1024.git

Method 3: Install from Local Source

# After cloning or downloading the repository
cd quant1024

# Development mode installation (recommended for development)
pip install -e .

# Or normal installation
pip install .

Install Development Dependencies

pip install -e ".[dev]"

Quick Start

1. Create a Custom Strategy

from quant1024 import QuantStrategy

class MyStrategy(QuantStrategy):
    """Custom trading strategy"""
    
    def generate_signals(self, data):
        """Generate trading signals"""
        signals = []
        for i, price in enumerate(data):
            if i == 0:
                signals.append(0)
            elif price > data[i-1]:
                signals.append(1)   # Buy
            else:
                signals.append(-1)  # Sell
        return signals
    
    def calculate_position(self, signal, current_position):
        """Calculate position size"""
        if signal == 1:
            return 1.0  # Full position
        elif signal == -1:
            return 0.0  # No position
        else:
            return current_position

2. Run Backtest

# Create strategy instance
strategy = MyStrategy(
    name="MyFirstStrategy",
    params={"param1": "value1"}
)

# Prepare price data
prices = [100, 102, 101, 105, 103, 108, 110]

# Run backtest
result = strategy.backtest(prices)

print(result)
# Output:
# {
#     'strategy_name': 'MyFirstStrategy',
#     'total_signals': 7,
#     'buy_signals': 4,
#     'sell_signals': 2,
#     'sharpe_ratio': 0.1234
# }

3. Use Utility Functions

from quant1024 import calculate_returns, calculate_sharpe_ratio

# Calculate returns
prices = [100, 110, 105, 115]
returns = calculate_returns(prices)
print(returns)  # [0.1, -0.0454..., 0.0952...]

# Calculate Sharpe ratio
sharpe = calculate_sharpe_ratio(returns)
print(sharpe)  # 1.2345

API Documentation

QuantStrategy Abstract Base Class

All strategies must inherit from this base class and implement the following methods:

Methods

  • __init__(name: str, params: Optional[Dict[str, Any]] = None)

    • Initialize the strategy
    • name: Strategy name
    • params: Strategy parameters dictionary (optional)
  • initialize() -> None

    • Initialize the strategy (called automatically before backtesting)
  • generate_signals(data: List[float]) -> List[int] [Abstract Method]

    • Generate trading signals
    • data: List of price data
    • Returns: List of signals (1=buy, -1=sell, 0=hold)
  • calculate_position(signal: int, current_position: float) -> float [Abstract Method]

    • Calculate position size based on signal
    • signal: Trading signal
    • current_position: Current position size
    • Returns: New position size
  • backtest(data: List[float]) -> Dict[str, Any]

    • Run backtest
    • data: Historical price data
    • Returns: Backtest results dictionary

Utility Functions

  • calculate_returns(prices: List[float]) -> List[float]

    • Calculate returns series
    • prices: Price series
    • Returns: Returns series
  • calculate_sharpe_ratio(returns: List[float], risk_free_rate: float = 0.0) -> float

    • Calculate Sharpe ratio
    • returns: Returns series
    • risk_free_rate: Risk-free rate (default 0)
    • Returns: Sharpe ratio value

Documentation

For detailed guides and tutorials, please visit:

中文用户请访问 中文指南

Examples

See examples/usage_example.py for more detailed examples, including:

  • Mean reversion strategy
  • Momentum strategy
  • Utility function usage
  • Direct strategy method calls

Run the example:

cd examples
python usage_example.py

Development

Install Development Dependencies

uv pip install -e ".[dev]"

Run Tests

pytest tests/ -v

Test Coverage

pytest tests/ --cov=quant1024 --cov-report=html

Project Structure

quant1024/
├── src/quant1024/          # Source code
│   ├── __init__.py         # Package initialization
│   └── core.py             # Core functionality
├── tests/                  # Test code
│   ├── __init__.py
│   └── test_core.py        # Core functionality tests
├── examples/               # Example code
│   └── usage_example.py    # Usage examples
├── guide/                  # Documentation guides
│   ├── en/                 # English guides
│   └── zh-hans/            # Chinese guides
├── pyproject.toml          # Project configuration
├── README.md               # Project documentation (English)
├── README_zh.md            # Project documentation (Chinese)
└── LICENSE                 # License

Testing

This project includes comprehensive test cases to ensure external software can properly call the API:

  • Import Tests: Verify all public APIs can be correctly imported
  • Inheritance Tests: Verify external code can inherit from the abstract base class
  • Functionality Tests: Verify all methods work correctly
  • Integration Tests: Verify typical use cases
  • Edge Case Tests: Verify exception handling

Run tests to ensure everything works:

pytest tests/ -v

License

See the LICENSE file for license information.

Contributing

Issues and Pull Requests are welcome!

Contact

For questions or suggestions, please submit an Issue.

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

quant1024-0.1.0.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

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

quant1024-0.1.0-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file quant1024-0.1.0.tar.gz.

File metadata

  • Download URL: quant1024-0.1.0.tar.gz
  • Upload date:
  • Size: 25.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for quant1024-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4918fb6a538635cc794b8d28431aa745ff11f146b4bc2b4ca8bfbad173f06f6e
MD5 ff61be08d8cb9eeac4e4fd96b5e2ebbc
BLAKE2b-256 b082b4903bc3b0b0adcc564fc1f78ef63a9c04b24ad40a5a46295d2b860ea0a5

See more details on using hashes here.

File details

Details for the file quant1024-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: quant1024-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for quant1024-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9751042876e268f9eb75b7d444f3bc4db0a6252d3f10d64ad50eac8827e58a06
MD5 4da8f449cb44a6b76a63128c3bb27b80
BLAKE2b-256 dbd9ecea585f35fbb245c657ef23263929cd68bbca4f765cc498cd47d8b3fe25

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