Add multi-asset portfolio support with a cross-sectional null
Claude
Unverified signature
2d2e42a
Single-asset backtesting caps this at hobbyist use: anyone doing real
cross-sectional work (rank N names, long the top decile, short the bottom)
could not express their strategy at all. This adds the portfolio path.
Panel (algotrader/panel.py): aligned T x N field frames with per-symbol
provenance. Missing data deliberately stays missing — forward-filling a symbol
through days it did not trade invents liquidity and lets a strategy hold a
delisted name forever. That choice is what makes survivorship measurable, and
Panel.survivorship() reports it: a universe where every name still trades after
a decade was chosen after the fact, and the Reality Score now caps at 60 when it
finds one.
Matrix engine (algotrader/portfolio.py): T x N weights with drift-aware
turnover. Hold 50% of a book in a name that doubles and you are at 67% without
trading, so charging |target[t] - target[t-1]| understates the cost of doing
nothing. Turnover is measured against the drifted weight instead. A rebalance
…
Initial commit: Enhanced Algorithmic Trading System with Synthetic Data Generation, Comprehensive Logging, and Extensive Testing
Edwin Salguero
859af74
- Added synthetic data generator with realistic market data simulation
- Implemented comprehensive logging system with rotating log files
- Created extensive test suite with unit and integration tests
- Enhanced strategy agent with technical indicators (SMA, RSI, Bollinger Bands, MACD)
- Improved execution agent with realistic order simulation
- Added backtesting and live trading capabilities
- Updated configuration system with synthetic data and logging settings
- Created comprehensive documentation and demo script