v3.5.0 - Multi-Instrument TradingSuite
🚀 ProjectX Python SDK v3.5.0 - Multi-Instrument TradingSuite
Major Feature Release: Multi-Instrument Trading Revolution
v3.5.0 introduces the most significant enhancement to ProjectX Python SDK since v3.0 - Multi-Instrument TradingSuite. This revolutionary feature enables traders and developers to manage multiple futures contracts simultaneously, opening up advanced trading strategies like pairs trading, cross-market arbitrage, and comprehensive portfolio management.
✨ What's New in v3.5.0
🎯 Multi-Instrument TradingSuite
- Manage Multiple Instruments: Trade ES, NQ, MGC, and other futures simultaneously
- Dictionary-Like Access:
suite["MNQ"],suite.keys(),suite.values(),suite.items() - Parallel Processing: Efficient concurrent initialization of multiple instrument contexts
- Event Isolation: Proper event separation between different instruments
- Resource Management: Granular cleanup with fail-safe partial failure handling
🔄 Backward Compatibility
- Zero Breaking Changes: All existing single-instrument code continues to work
- Deprecation Warnings: Clear guidance for migrating to new patterns
- Smooth Migration: Easy transition from single to multi-instrument setups
⚡ Performance Enhancements
- Parallel Context Creation: Multiple instruments initialized concurrently
- Shared Resources: Efficient connection pooling and authentication
- Memory Optimization: Smart resource sharing where appropriate
- Event Efficiency: Isolated event processing prevents cross-contamination
🎮 Quick Start Examples
Multi-Instrument Setup
import asyncio
from project_x_py import TradingSuite
async def main():
# Multiple instruments for advanced strategies
suite = await TradingSuite.create(
instruments=["MNQ", "ES", "MGC"], # E-mini NASDAQ, S&P 500, Gold
timeframes=["1min", "5min"],
enable_orderbook=True,
enable_risk_management=True
)
print(f"Managing {len(suite)} instruments: {list(suite.keys())}")
# Access specific instruments
mnq_context = suite["MNQ"]
es_context = suite["ES"]
# Get current prices for all instruments
for symbol, context in suite.items():
current_price = await context.data.get_current_price()
print(f"{symbol}: ${current_price:.2f}")
await suite.disconnect()
asyncio.run(main())Pairs Trading Strategy
# ES vs MNQ correlation analysis
es_data = await suite["ES"].data.get_data("5min", bars=100)
mnq_data = await suite["MNQ"].data.get_data("5min", bars=100)
# Analyze spread for pairs trading opportunities
es_price = es_data.select("close").to_series().to_list()[-1]
mnq_price = mnq_data.select("close").to_series().to_list()[-1]
spread = es_price * 50 - mnq_price * 20 # Contract value normalized
print(f"ES/MNQ Spread: ${spread:.2f}")Portfolio Management
# Calculate total portfolio exposure across instruments
total_exposure = 0
for symbol, context in suite.items():
positions = await context.positions.get_all_positions()
for pos in positions:
exposure = abs(pos.size * pos.averagePrice)
total_exposure += exposure
print(f"{symbol} Exposure: ${exposure:,.2f}")
print(f"Total Portfolio Exposure: ${total_exposure:,.2f}")🔄 Migration Guide
From v3.4.x to v3.5.0
Old (Single Instrument):
# v3.4.x - Single instrument only
suite = await TradingSuite.create("MNQ")
data = await suite.data.get_data("5min") # Direct accessNew (Multi-Instrument with Backward Compatibility):
# v3.5.0 - Still works but shows deprecation warnings
suite = await TradingSuite.create("MNQ") # Single instrument (legacy)
data = await suite.data.get_data("5min") # Direct access (deprecated)
# v3.5.0 - Recommended multi-instrument syntax
suite = await TradingSuite.create(["MNQ"]) # List notation
data = await suite["MNQ"].data.get_data("5min") # Explicit accessRecommended (Multiple Instruments):
# v3.5.0 - Full multi-instrument power
suite = await TradingSuite.create(["MNQ", "ES"])
mnq_data = await suite["MNQ"].data.get_data("5min")
es_data = await suite["ES"].data.get_data("5min")Key Migration Points:
- ✅ Use
instruments=["MNQ"]instead of"MNQ"for new code - ✅ Access managers via
suite["SYMBOL"]instead ofsuite.data - ✅ All existing code continues to work with warnings
- ✅ No breaking changes - gradual migration supported
🎯 Advanced Use Cases Enabled
Multi-Asset Strategies
- Pairs Trading: ES vs NQ, correlations and spreads
- Sector Rotation: Rotate between commodities, indices, currencies
- Cross-Market Arbitrage: Exploit price differences across markets
- Diversified Portfolios: Manage risk across multiple asset classes
Enhanced Risk Management
- Portfolio-Level Limits: Position sizing across multiple instruments
- Cross-Instrument Analysis: Correlation-based risk assessment
- Sector Exposure Control: Monitor and limit sector concentrations
- Unified Risk Metrics: Comprehensive portfolio risk measurement
Advanced Analytics
- Spread Analysis: Monitor and trade spreads between instruments
- Multi-Timeframe: Analyze multiple instruments across timeframes
- Correlation Signals: Generate signals based on instrument relationships
- Performance Attribution: Track performance by instrument and strategy
🏗️ Technical Architecture
Component Integration
- InstrumentContext: Each instrument maintains complete context (data, orders, positions, orderbook, risk)
- Shared Authentication: Single client connection for all instruments
- Event Isolation: Events properly separated between instruments
- Resource Efficiency: Smart sharing of connections and authentication
Resource Management
- Parallel Creation: Multiple contexts created concurrently with
asyncio.gather - Fail-Safe Cleanup: Partial failures cleaned up automatically
- Memory Optimization: Efficient resource sharing and cleanup
- Task Management: Proper async task lifecycle management
Performance Features
- Concurrent Processing: Multiple instruments processed in parallel
- Connection Pooling: Shared HTTP connections for efficiency
- Event Optimization: Isolated event buses prevent interference
- Memory Management: Bounded collections and automatic cleanup
🧪 Quality Assurance
Comprehensive Testing
- ✅ 200+ New Tests: Complete multi-instrument functionality coverage
- ✅ Parallel Creation: Concurrent initialization and failure scenarios
- ✅ Event Isolation: Cross-instrument validation and separation
- ✅ Backward Compatibility: Legacy API preservation testing
- ✅ Edge Cases: Error propagation and resource cleanup validation
Production Ready
- ✅ 1,300+ Tests Passing: Complete test suite with 100% pass rate
- ✅ MyPy Compliance: Full type checking with zero errors
- ✅ Ruff Compliance: Code quality and formatting standards
- ✅ CI/CD Validation: All environments and Python versions tested
⚠️ Deprecation Timeline
Deprecated in v3.5.0 (Removal in v4.0.0)
- Direct manager access (
suite.data,suite.orders) in multi-instrument mode - Single-instrument initialization without explicit list notation
- Auto-detection of manager context without instrument specification
Migration Timeline
- v3.5.x: Deprecation warnings guide migration to new patterns
- v3.6.x - v3.9.x: Continued support with warnings
- v4.0.0: Clean removal of deprecated single-instrument access patterns
📚 Documentation & Examples
New Documentation
- 📖 Complete architectural documentation
- 🔄 Step-by-step migration guide
- 💡 Multi-instrument strategy examples and patterns
- 🎯 Use case documentation for pairs trading and portfolio management
New Examples
- 📁
examples/26_multi_instrument_trading.py- Comprehensive multi-instrument demo - 🎮 Real-world trading scenarios with multiple futures contracts
- 📊 Portfolio-level risk management examples
- 📈 Pairs trading and spread analysis demonstrations
🎉 Production Deployment Ready
Enterprise Features
- ✅ Complete Test Coverage: 1,300+ tests with comprehensive scenarios
- ✅ Production-Grade Error Handling: Robust error recovery and propagation
- ✅ Memory Leak Prevention: Proper resource cleanup and management
- ✅ Performance Benchmarking: Optimized for high-frequency trading
- ✅ Comprehensive Logging: Detailed monitoring and debugging support
Stability Guarantees
- ✅ Full Backward Compatibility: No breaking changes for existing code
- ✅ Semantic Versioning: Strict adherence to versioning principles
- ✅ Clear Migration Path: Gradual transition with comprehensive guidance
- ✅ Production Testing: Thoroughly tested for enterprise deployment
🚀 Get Started Today
Installation
# Using UV (recommended)
uv add project-x-py
# Using pip
pip install project-x-py --upgradeQuick Verification
import project_x_py
print(f"ProjectX SDK Version: {project_x_py.__version__}") # Should show 3.5.0Next Steps
- 📚 Read the Migration Guide
- 🎮 Try the Multi-Instrument Example
- 🔄 Update your existing code with the new patterns
- 🚀 Build advanced multi-instrument strategies!
🙏 Acknowledgments
This release represents months of development, testing, and refinement. Special thanks to the ProjectX community for feedback, testing, and contributions that made this multi-instrument vision a reality.
Happy Trading! 🎯📈
For detailed technical information, see the CHANGELOG and README.