mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-27 23:47:46 +00:00
cbe1c52e00
Rename all source files, scripts, tests, documentation, and configuration from Predix/predix to NexQuant/nexquant across the entire codebase.
240 lines
5.6 KiB
Markdown
240 lines
5.6 KiB
Markdown
# NexQuant Models
|
|
|
|
This directory contains all ML model definitions for NexQuant trading factors.
|
|
|
|
---
|
|
|
|
## 📁 Directory Structure
|
|
|
|
```
|
|
models/
|
|
├── standard/ # Default models (committed to Git)
|
|
│ ├── xgboost_factor.py # XGBoost for tabular data
|
|
│ ├── lightgbm_factor.py # LightGBM (faster than XGBoost)
|
|
│ └── randomforest_factor.py # Baseline model
|
|
│
|
|
├── local/ # YOUR IMPROVED MODELS (not in Git!)
|
|
│ ├── transformer_factor.py # Your Transformer
|
|
│ ├── tcn_factor.py # Your TCN
|
|
│ ├── patchtst_factor.py # Your PatchTST
|
|
│ ├── cnn_lstm_hybrid.py # Your Hybrid model
|
|
│ └── optimized_xgboost.py # Your optimized XGBoost
|
|
│
|
|
└── README.md # This file
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 How It Works
|
|
|
|
**Model Loading Priority:**
|
|
|
|
1. **`models/local/*.py`** ← Your improved models (loaded first!)
|
|
2. **`models/standard/*.py`** ← Default models (fallback)
|
|
|
|
**Example:**
|
|
```python
|
|
from rdagent.components.model_loader import load_model
|
|
|
|
# Load XGBoost model
|
|
# If models/local/xgboost_factor*.py exists → loads that
|
|
# Otherwise → loads from models/standard/
|
|
model_factory = load_model("xgboost_factor")
|
|
|
|
# Create model instance
|
|
model = model_factory(max_depth=8, learning_rate=0.1)
|
|
|
|
# Train
|
|
model.fit(X_train, y_train)
|
|
|
|
# Predict
|
|
predictions = model.predict(X_test)
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Available Standard Models
|
|
|
|
| Model | File | Use Case |
|
|
|-------|------|----------|
|
|
| **XGBoost** | `xgboost_factor.py` | Tabular factors, fast training |
|
|
| **LightGBM** | `lightgbm_factor.py` | Large datasets, faster than XGBoost |
|
|
| **RandomForest** | `randomforest_factor.py` | Baseline, robust |
|
|
|
|
---
|
|
|
|
## 🚀 Creating Your Improved Models
|
|
|
|
### Step 1: Create Local Model File
|
|
|
|
```bash
|
|
# Create local directory (if not exists)
|
|
mkdir -p models/local
|
|
|
|
# Copy standard model as template
|
|
cp models/standard/xgboost_factor.py models/local/optimized_xgboost.py
|
|
```
|
|
|
|
### Step 2: Improve Your Model
|
|
|
|
```python
|
|
# models/local/optimized_xgboost.py
|
|
|
|
class XGBoostFactorModel:
|
|
"""Your optimized version with better hyperparameters."""
|
|
|
|
def __init__(self, **params):
|
|
self.params = {
|
|
'objective': 'reg:squarederror',
|
|
'max_depth': 8, # Deeper trees
|
|
'learning_rate': 0.03, # Slower learning
|
|
'n_estimators': 1000, # More estimators
|
|
'subsample': 0.9, # Less dropout
|
|
'colsample_bytree': 0.9,
|
|
'random_state': 42,
|
|
# Your custom params
|
|
'gamma': 0.1, # Regularization
|
|
'min_child_weight': 3,
|
|
**params
|
|
}
|
|
# ... rest of implementation
|
|
```
|
|
|
|
### Step 3: Use in Trading
|
|
|
|
Your improved models are automatically used when running:
|
|
|
|
```python
|
|
from rdagent.components.model_loader import load_model
|
|
|
|
# Auto-loads your optimized version!
|
|
model_factory = load_model("xgboost_factor")
|
|
```
|
|
|
|
---
|
|
|
|
## 🔐 Security
|
|
|
|
**What to keep in `models/local/`:**
|
|
|
|
✅ Your proprietary model architectures
|
|
✅ Optimized hyperparameters
|
|
✅ Custom feature engineering
|
|
✅ Ensemble methods
|
|
✅ Trade secrets & alpha-generating logic
|
|
|
|
**What NOT to commit to Git:**
|
|
|
|
❌ Anything in `models/local/` (already in .gitignore)
|
|
❌ Files with `.local.py` suffix
|
|
❌ Files with `_private.py` suffix
|
|
|
|
---
|
|
|
|
## 📊 Best Practices
|
|
|
|
### 1. Version Your Models
|
|
|
|
```python
|
|
# Good naming:
|
|
models/local/
|
|
├── xgboost_v2.py # Version 2
|
|
├── xgboost_v3_optimized.py # Version 3 optimized
|
|
└── lightgbm_lstm_hybrid_v1.py # Hybrid v1
|
|
```
|
|
|
|
### 2. Document Changes
|
|
|
|
```python
|
|
# models/local/optimized_xgboost_v2.py
|
|
"""
|
|
XGBoost Factor Model v2.0
|
|
|
|
Changes from v1:
|
|
- Increased max_depth from 6 to 8
|
|
- Added gamma regularization
|
|
- Increased n_estimators from 500 to 1000
|
|
- Target: +2% ARR, +0.2 Sharpe
|
|
|
|
Author: Your Name
|
|
Date: 2026-04-02
|
|
"""
|
|
```
|
|
|
|
### 3. Test Performance
|
|
|
|
```python
|
|
# Compare model versions
|
|
from rdagent.components.model_loader import load_model
|
|
|
|
# Load standard
|
|
std_model = load_model("xgboost_factor", local_only=False)
|
|
|
|
# Load local (if exists)
|
|
local_model = load_model("xgboost_factor", local_only=True)
|
|
|
|
# Backtest both and compare
|
|
# ...
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Advanced Usage
|
|
|
|
### Load All Models
|
|
|
|
```python
|
|
from rdagent.components.model_loader import list_available_models
|
|
|
|
all_models = list_available_models()
|
|
print(f"Standard: {all_models['standard']}")
|
|
print(f"Local: {all_models['local']}")
|
|
```
|
|
|
|
### Force Local Model
|
|
|
|
```python
|
|
# Raise error if local model not found
|
|
model = load_model("transformer_factor", local_only=True)
|
|
```
|
|
|
|
### Custom Model Path
|
|
|
|
```python
|
|
from rdagent.components.model_loader import load_module_from_path
|
|
from pathlib import Path
|
|
|
|
# Load from custom location
|
|
module = load_module_from_path(
|
|
Path("/path/to/my/custom_model.py"),
|
|
"custom_model"
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## 📈 Model Selection Guide
|
|
|
|
| Scenario | Recommended Model | Why |
|
|
|----------|------------------|-----|
|
|
| **Tabular Factors** | XGBoost / LightGBM | Fast, interpretable |
|
|
| **Large Dataset** | LightGBM | Lower memory, faster |
|
|
| **Baseline** | RandomForest | Robust, no tuning needed |
|
|
| **Time-Series Patterns** | LSTM / GRU (local) | Sequential dependencies |
|
|
| **Multi-Scale** | TCN (local) | Different time horizons |
|
|
| **Long-Range** | Transformer (local) | Attention mechanism |
|
|
| **Best Performance** | Ensemble (local) | Combine multiple models |
|
|
|
|
---
|
|
|
|
## 🎯 Next Steps
|
|
|
|
1. **Review standard models:** `cat models/standard/*.py`
|
|
2. **Create your improved version:** `mkdir -p models/local`
|
|
3. **Test:** `python rdagent/components/model_loader.py`
|
|
4. **Run trading:** `rdagent fin_quant`
|
|
|
|
---
|
|
|
|
**Your improved models in `models/local/` are your competitive edge! 🚀**
|