Skip to main content

Hubble Futures

Unified futures exchange client library for Hubble trading platform.

Features

  • Unified Interface: Single API for multiple exchanges
  • Exchange Support: Aster DEX, WEEX (Binance, OKX coming soon)
  • Type Safe: Full type hints and mypy strict mode
  • Adapter Pattern: Exchange-specific differences handled internally
  • Retry Logic: Automatic retry with exponential backoff for rate limits
  • Decimal Precision: Proper decimal formatting for all exchanges

Installation

pip install hubble-futures

Quick Start

from hubble_futures import create_client, ExchangeConfig

# Create exchange configuration
config = ExchangeConfig(
    name="asterdex",
    api_key="your_api_key",
    api_secret="your_api_secret"
)

# Create client
client = create_client(config)

# Fetch market data
klines = client.get_klines("BTCUSDT", "1h", 200)
account = client.get_account()
positions = client.get_positions()

# Place order
order = client.place_order(
    symbol="BTCUSDT",
    side="BUY",
    order_type="LIMIT",
    quantity=0.01,
    price=50000
)

Supported Exchanges

Exchange Name Passphrase Required
Aster DEX asterdex or aster No
WEEX weex Yes

WEEX Configuration

WEEX requires an additional passphrase parameter:

config = ExchangeConfig(
    name="weex",
    api_key="your_api_key",
    api_secret="your_api_secret",
    passphrase="your_passphrase"  # Required for WEEX
)

API Reference

Market Data

  • get_klines(symbol, interval, limit) - Fetch candlestick data
  • get_mark_price(symbol) - Fetch mark price and funding rate
  • get_depth(symbol, limit) - Fetch orderbook
  • get_ticker_24hr(symbol) - Fetch 24h statistics
  • get_exchange_info() - Fetch exchange metadata
  • get_symbol_filters(symbol) - Fetch trading rules

Account & Trading

  • get_account() - Fetch account information
  • get_positions(symbol) - Fetch open positions
  • get_balance() - Fetch balance summary
  • place_order(...) - Place an order
  • cancel_order(symbol, order_id) - Cancel an order
  • get_open_orders(symbol) - Get open orders
  • set_leverage(symbol, leverage) - Set leverage
  • close_position(symbol, percent) - Close position

Development

Setup

# Clone repository
git clone https://github.com/hubble/hubble-futures.git
cd hubble-futures

# Install dependencies
pip install -e ".[dev]"

Running Tests

# Unit tests
pytest tests/unit -m unit

# Integration tests (mocked API)
pytest tests/integration -m integration

# E2E tests (requires .env with API credentials)
pytest tests/e2e -m e2e

Code Quality

# Format check
ruff check hubble_futures tests

# Type check
mypy hubble_futures

# Coverage
pytest --cov=hubble_futures --cov-report=html

Architecture

┌─────────────────────────────────────────────┐
│  User Code                                  │
│  (Agent, Trading Bot, etc.)                 │
└─────────────────────────────────────────────┘
                 ↓ uses
┌─────────────────────────────────────────────┐
│  Factory: create_client(config)             │
└─────────────────────────────────────────────┘
                 ↓ creates
┌─────────────────────────────────────────────┐
│  BaseFuturesClient (Abstract)               │
│  - Unified interface                        │
│  - Common retry logic                       │
│  - Decimal formatting                       │
└─────────────────────────────────────────────┘
           ↓ implemented by
┌─────────────┬─────────────┬─────────────────┐
│  Aster      │  WEEX       │  Future         │
│  Adapter    │  Adapter    │  Adapters       │
│             │             │  (Binance, OKX) │
└─────────────┴─────────────┴─────────────────┘

Adapter Responsibilities

Each exchange adapter handles:

  • API authentication (different signing methods)
  • Symbol format conversion (e.g., BTCUSDT ↔ cmt_btcusdt)
  • Parameter mapping (e.g., side ↔ type)
  • Response normalization (unified return format)

License

MIT License - see LICENSE for details

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new features
  4. Ensure all tests pass (pytest)
  5. Submit a pull request

Support

For issues and questions:

Metadata

Release files for hubble-futures 0.2.28

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

Source distribution (sdist)

Source distribution for hubble-futures 0.2.28
File Size Uploaded Provenance
hubble_futures-0.2.28.tar.gz 104.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hubble-futures 0.2.28
File Interpreter ABI Platform
hubble_futures-0.2.28-py3-none-any.whl Python 3 none any Details

Total release size: 135.3 kB

Release files / hubble_futures-0.2.28.tar.gz

Download URL hubble_futures-0.2.28.tar.gz
Size 104.8 kB
Tags Source
SHA-256 checksum
How to use checksums
59c833f6adb3c41ef5afe042b8100617f85538f5396d16b356cf7ddb5f97e6e0
BLAKE2b-256 checksum
How to use checksums
e61b59fca23d4739756530f8083ef66a260feb0973115cd4f3c43b4a3e865140
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / hubble_futures-0.2.28-py3-none-any.whl

Download URL hubble_futures-0.2.28-py3-none-any.whl
Size 30.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f34346443cf1e55434e1133179140d52130c04a0cb14cf978250b4d3e42fbfe3
BLAKE2b-256 checksum
How to use checksums
5a6ced47336434dc9b4b57a3fe318abfcb98988fe36d3208ade3a04915b361c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Security for hubble-futures 0.2.28

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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