Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
- 🤖 Models: ensemble VotingClassifier (LR, RF, XGBoost) with Optuna tuning
- 📈 Backtesting: execution costs, slippage, liquidity limits, market impact modeling, portfolio helpers
- 🛡️ Risk management: drawdown and turnover guards
- 📟 Live trading: real-time position manager with intraday risk controls
- 🛠️ CLI: end‑to‑end pipeline, evaluation, and model backtest in one place

## Quickstart
Expand Down Expand Up @@ -67,6 +68,7 @@ Artifacts are written to:
- `config/backtest_config.yaml`: execution costs, slippage, liquidity
- `config/risk_config.yaml`: drawdown protection and turnover limits
- `config/streaming.yaml`: providers, auth, subscriptions (optional)
- `config/position_manager.yaml`: live position tracking and impact parameters

Time‑aware evaluation rules:
- If `data.test_start` and `data.test_end` set: train = dates < `test_start`; test = `test_start` ≤ dates ≤ `test_end`
Expand Down
14 changes: 14 additions & 0 deletions config/position_manager.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
position_manager:
risk_management:
drawdown_protection:
enabled: true
max_drawdown_pct: 0.2
impact:
enabled: true
model: linear
alpha: 0.1
beta: 0.05
reconciliation:
intraday: "1m"
daily: "1d"
mode: paper
9 changes: 5 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ The [API Documentation](api/) provides comprehensive coverage of:
- **Feature Engineering** - Technical indicators and custom features
- **Machine Learning Models** - MomentumClassifier and training utilities
- **Backtesting Framework** - Trade simulation and performance metrics
- **Trading Utilities** - Risk management and position sizing
- **Trading Utilities** - Risk management, position sizing, real-time position control
- **Utility Functions** - Metrics, visualization, and configuration schemas
- **Configuration** - Model and feature configuration examples

Expand Down Expand Up @@ -84,9 +84,10 @@ QuantTradeAI/
│ ├── backtest/ # Backtesting
│ │ └── backtester.py # Trade simulation
│ ├── trading/ # Trading utilities
│ │ ├── drawdown_guard.py # Drawdown protection
│ │ ├── portfolio.py # Portfolio operations
│ │ └── risk_manager.py # Risk coordination
│ │ ├── drawdown_guard.py # Drawdown protection
│ │ ├── portfolio.py # Portfolio operations
│ │ ├── position_manager.py # Real-time position tracking
│ │ └── risk_manager.py # Risk coordination
│ └── utils/ # Utilities
│ ├── metrics.py # Performance metrics
│ ├── visualization.py # Plotting functions
Expand Down
4 changes: 2 additions & 2 deletions docs/api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Complete API documentation for QuantTradeAI.
- **[Feature Engineering](features.md)** - Technical indicators and custom features
- **[Machine Learning](models.md)** - MomentumClassifier and training utilities
- **[Backtesting](backtesting.md)** - Trade simulation, market impact models, and performance metrics
- **[Trading Utilities](trading.md)** - Risk management and position sizing
- **[Trading Utilities](trading.md)** - Risk management, position sizing, live position control
- **[Streaming](streaming.md)** - Real-time WebSocket gateway, adapters, monitoring

## 🚀 Quick Navigation
Expand All @@ -19,7 +19,7 @@ Complete API documentation for QuantTradeAI.
- **Feature Creation**: [Feature Engineering](features.md)
- **Model Training**: [Machine Learning](models.md)
- **Strategy Testing**: [Backtesting](backtesting.md)
- **Risk Management**: [Trading Utilities](trading.md)
- **Risk Management & Execution**: [Trading Utilities](trading.md)
- **Real-time Data**: [Streaming](streaming.md)

### By Component
Expand Down
55 changes: 48 additions & 7 deletions docs/api/trading.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
# Trading Utilities

API documentation for risk management and position sizing.
API documentation for risk management, position sizing, and live position control.

## Position Manager

### `PositionManager(config_path: str)`

Thread-safe real-time position tracking that ties into the streaming gateway
and enforces intraday risk limits.

**Parameters:**
- `config_path` (str): Path to a YAML file matching `PositionManagerConfig`.

**Example:**
```python
from quanttradeai.streaming import StreamingGateway
from quanttradeai.trading import PositionManager

gw = StreamingGateway("config/streaming.yaml")
pm = PositionManager("config/position_manager.yaml", gateway=gw)
pm.start()
```

The manager reconciles intraday and daily positions while applying
drawdown protection and market-impact-aware execution.

## Risk Management

Expand Down Expand Up @@ -202,12 +225,30 @@ print(f"Sortino Ratio: {risk_metrics['sortino_ratio']:.2f}")
print(f"Calmar Ratio: {risk_metrics['calmar_ratio']:.2f}")
```

## Configuration

### Risk Management Configuration
```yaml
trading:
position_size: 0.2
## Configuration

### Position Manager Configuration
```yaml
position_manager:
risk_management:
drawdown_protection:
enabled: true
max_drawdown_pct: 0.2
impact:
enabled: true
model: linear
alpha: 0.1
beta: 0.05
reconciliation:
intraday: "1m"
daily: "1d"
mode: paper
```

### Risk Management Configuration
```yaml
trading:
position_size: 0.2
stop_loss: 0.02
take_profit: 0.04
max_positions: 5
Expand Down
24 changes: 24 additions & 0 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ The framework uses several configuration files:
- **`config/backtest_config.yaml`** - Execution settings for backtests
- **`config/impact_config.yaml`** - Market impact parameters by asset class
- **`config/risk_config.yaml`** - Drawdown protection and turnover limits
- **`config/position_manager.yaml`** - Live position tracking and intraday risk controls

## 🔧 Model Configuration

Expand Down Expand Up @@ -122,6 +123,29 @@ The `impact` block activates market impact modeling. Parameters `alpha`,
`beta`, and optional `gamma` control the chosen model, while `decay` and
`spread` apply temporary impact decay and bid-ask spread costs. Default
parameter sets per asset class can be defined in `config/impact_config.yaml`.

### Position Manager

```yaml
position_manager:
risk_management:
drawdown_protection:
enabled: true
max_drawdown_pct: 0.2
impact:
enabled: true
model: linear
alpha: 0.1
beta: 0.05
reconciliation:
intraday: "1m"
daily: "1d"
mode: paper
```

Controls live position tracking and execution logic. The `impact` section
reuses backtest models, while `reconciliation` intervals harmonize intraday and
daily views. Set `mode` to `paper` or `live`.

## 🔧 Feature Configuration

Expand Down
11 changes: 11 additions & 0 deletions docs/quick-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,17 @@ streaming:
reconnect_attempts: 3
health_check_interval: 30
```

### Position Manager

```python
from quanttradeai.streaming import StreamingGateway
from quanttradeai.trading import PositionManager

gw = StreamingGateway("config/streaming.yaml")
pm = PositionManager("config/position_manager.yaml", gateway=gw)
pm.start()
```

## 🚨 Error Handling

Expand Down
48 changes: 27 additions & 21 deletions quanttradeai/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,26 @@
AlphaVantageDataSource,
WebSocketDataSource,
)

# Lazily import optional dependencies to keep lightweight usage possible
from .data.loader import DataLoader
from .data.processor import DataProcessor
from .models.classifier import MomentumClassifier

try: # pragma: no cover - optional heavy dependency
from .models.classifier import MomentumClassifier
except Exception: # pragma: no cover - tolerate missing ML libs
MomentumClassifier = None # type: ignore[assignment]
from .trading.portfolio import PortfolioManager
from .trading.risk import apply_stop_loss_take_profit, position_size
from .backtest import (
simulate_trades,
compute_metrics,
MarketImpactModel,
LinearImpactModel,
SquareRootImpactModel,
AlmgrenChrissModel,
ImpactCalculator,
)
from .backtest import (
simulate_trades,
compute_metrics,
MarketImpactModel,
LinearImpactModel,
SquareRootImpactModel,
AlmgrenChrissModel,
ImpactCalculator,
)

__all__ = [
"DataSource",
Expand All @@ -53,14 +59,14 @@
"DataLoader",
"DataProcessor",
"MomentumClassifier",
"PortfolioManager",
"apply_stop_loss_take_profit",
"position_size",
"simulate_trades",
"compute_metrics",
"MarketImpactModel",
"LinearImpactModel",
"SquareRootImpactModel",
"AlmgrenChrissModel",
"ImpactCalculator",
]
"PortfolioManager",
"apply_stop_loss_take_profit",
"position_size",
"simulate_trades",
"compute_metrics",
"MarketImpactModel",
"LinearImpactModel",
"SquareRootImpactModel",
"AlmgrenChrissModel",
"ImpactCalculator",
]
2 changes: 2 additions & 0 deletions quanttradeai/trading/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@
from .risk import apply_stop_loss_take_profit, position_size
from .drawdown_guard import DrawdownGuard
from .risk_manager import RiskManager
from .position_manager import PositionManager

__all__ = [
"PortfolioManager",
"apply_stop_loss_take_profit",
"position_size",
"DrawdownGuard",
"RiskManager",
"PositionManager",
]
Loading