Commit History
-
feat: default ingest to Yahoo and restore a full README
Edwin Salguero +1: CursorUse Yahoo Finance as the default tape for config, CLI, Gradio, and UIs; fail closed instead of silently simulating. Merge the algotrader 2.0 lab docs with the v1 FinRL/agentic README and drop the Northwestern line. Co-authored-by: Cursor <cursoragent@cursor.com>3d257f3 -
Add multi-asset portfolio support with a cross-sectional null
ClaudeUnverified signatureSingle-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 …2d2e42a -
Fix three correctness bugs in the Yahoo ingest
ClaudeUnverified signatureAll three are silent: nothing raises, the numbers are just wrong. Unadjusted prices. yahoo.auto_adjust defaulted to false and _normalize_ohlcv selects only the required columns, discarding 'adj close'. So splits were not adjusted for: NVDA's June 2024 10:1 reads as a -90% single-day return and AAPL's 2020 4:1 as -75%. Any strategy or risk control spanning a split saw a phantom crash. Default is now true, opting out logs a warning, and _warn_if_unadjusted names the dates of daily-or-slower bars moving more than 35% as a backstop when adjustment is off. Partial bars reported as final. _poll_once pulls period='5d' and _ingest_new_bars took every row past the watermark, including the period Yahoo is still building. It emitted that in-progress bar, advanced _last_bar_ts past it, and so never re-emitted the finished version — the strategy acted on a close that had not happened yet, then never saw the real one. _drop_incomplete now withholds a bar until its interval has elapsed; yahoo.emit_…9d67baa -
Add algotrader 2.0: a backtester that tries to prove itself wrong
ClaudeUnverified signatureMost backtesting tools answer "how much would this have made?". This adds a second, harder question: how much of that was luck? New `algotrader` package (additive — v1's agentic_ai_system, its tests, CI and Docker setup are untouched): - engine.py: vectorised backtester with an explicit no-look-ahead contract. A strategy emits a target exposure at bar t's close; the engine holds position[t] = target[t - lag] with lag >= 1, so a signal computed on a bar cannot earn that bar's move. Costs are charged on exposure changes, plus a borrow fee on shorts. - validation/: the point of the release. - permutation.py — Monte-Carlo permutation test. Shuffles bar order while preserving each bar's anatomy, then re-runs the same rule on hundreds of structure-free markets. Block-bootstrap mode preserves vol clustering. - deflated_sharpe.py — Bailey & Lopez de Prado's PSR/DSR, charging for every parameter variant tried and for skew and fat tails. - pbo.py — probability of back…3339913 -
feat: add Yahoo ingest on the FinRL tree and stop extra branch creation
Edwin Salguero +1: CursorKeep csv/alpaca/synthetic/FinRL paths unchanged. Add yfinance>=1.0 as an optional data_source, rewrite the README, and remove Dependabot plus the weekly dependency-updates workflow so only main and dev remain. Co-authored-by: Cursor <cursoragent@cursor.com>8a5d4f8
-
feat(ui): add robust multi-interface UI system (Streamlit, Dash, Jupyter, WebSocket) with launcher, docs, and integration tests [skip ci]
Edwin Salguero9f44dc9 -
feat: comprehensive test suite fixes and improvements
Edwin Salguero63f74a3 -
Fix all test issues and improve system stability
Edwin Salguero- Fix FinRLConfig parameter error (remove total_timesteps) - Fix portfolio calculation test tolerance for transaction fees - Fix Bollinger Bands test for NaN values - Fix deprecated pandas frequency warnings ('1H' -> '1h') - Fix deprecated fillna method warnings - Add pytest slow mark registration - All FinRL tests now passing (20/20) - Live trading test confirmed working with synthetic data7db56ad -
Fix OpenCV import for RL tests, mark slow RL tests, and document in README
Edwin Salguero- Add opencv-python-headless to requirements for RL compatibility - Mark RL agent training tests as @pytest.mark.slow and reduce timesteps - Update README with slow test instructionsa3ef409 -
Add FinRL integration with comprehensive RL trading agent
Edwin Salguero- Add FinRL agent with support for PPO, A2C, DDPG, and TD3 algorithms - Create custom trading environment compatible with Gymnasium - Implement technical indicators integration (RSI, Bollinger Bands, MACD) - Add comprehensive configuration system for FinRL parameters - Create demo script with training, evaluation, and visualization - Add comprehensive test suite for FinRL functionality - Update requirements.txt with FinRL dependencies - Update README with detailed FinRL documentation - Create necessary directories for models, logs, and plots2c67d05
-
Initial commit: Enhanced Algorithmic Trading System with Synthetic Data Generation, Comprehensive Logging, and Extensive Testing
Edwin Salguero- 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 script859af74