Downsize GNN hidden channels/heads (128→64, 16→4) to match the 30-stock
price-only universe before alternative data processors are ready.
Add USE_ALTERNATIVE_DATA flag (default False) that skips news/social
branches so the model trains on real data rather than zero-filled stubs.
Standardize target returns per-batch in the data pipeline to stabilize
training.
Introduce walk-forward cross-validation with expanding windows:
configurable fold count and out-of-sample years.
Add IC loss weighting (0.7) to complement MSE, and wire it into the
trainer alongside the new loss function.
- Add embed_dim/feature_dim divisibility checks in attention modules
- Auto-select largest valid head count in IntradayGNN when num_features isn't divisible by 8
- Fix benchmark to pass PyG Data objects instead of tuples to model
- Fix target computation to use precomputed next trading date and filter valid tickers
- Add missing device argument to autocast calls
- Remove stale global app_state reference in dashboard API
- Clean up various formatting (line wrapping, whitespace)
Containerize the application with ROCm GPU support for AMD Radeon R9700:
- Add Dockerfile with PyTorch/PyG ROCm 5.6 wheels
- Add docker-compose.yml with dashboard, live-trading, and train services
- Add .dockerignore and .env.example for configuration
Fix benchmark script to use batch_size instead of num_stocks for variable
dimensions, and replace fragile partial model surgery with a standalone MLP
for memory estimation.
Fix data pipeline to skip dates with no next trading date instead of
fabricating zero returns.
Add slippage to paper broker, optional mark-to-market prices to broker
interface, and health check endpoint for container orchestration.
- Detect AMD GPUs via ROCm device name in config
- Replace single-timestep LSTM in GNN model with leaner post-GNN MLP
- Pass edge_attr through AMDGATConv propagate and use ones for self-loops
- Fix live trading to sell existing positions on negative signals instead
of skipping them entirely
- Use per-file try/except in data pipeline and batch SQLite inserts
- Import torch directly in backtester instead of dynamic __import__
- Update AMP autocast import for PyTorch 2.0+ compatibility
- Add detailed README with architecture diagram and usage instructions
- Add API, configuration, and development documentation
- Fix price data column handling for yfinance auto_adjust=True
- Fix model feature dimension indexing and temporal attention batching
- Add missing imports and position tracking in paper broker
- Add python-dotenv support for environment variables
- Update .gitignore with Python artifacts and environment files