algorithmic_trading / docs /AGENTIC_SYSTEM_V1.md
Edwin Salguero
feat: default ingest to Yahoo and restore a full README
3d257f3
|
Raw
History Blame Contribute Delete
4.69 kB
# Algorithmic Trading
FinRL reinforcement-learning trading with Alpaca execution, plus Yahoo Finance OHLCV as the default public tape. Parallel LLC.
This is **research and paper-trading infrastructure**. Live capital requires a separate evaluation contract, feature-parity tests, and a rewritten execution path. Do not treat `paper_trading: false` as a promotion gate.
---
## 1. Title and Summary
**Algorithmic Trading**
Ingest OHLCV, compute indicators or train a FinRL policy, size orders under position and drawdown caps, route to paper or live Alpaca.
GitHub `main` is the FinRL / Docker / Streamlit tree plus algotrader 2.0. `dev` is the integration branch. Yahoo is the default `data_source.type`.
**Design themes**
* Four ingest paths: CSV replay, synthetic GBM, Alpaca REST, Yahoo (`yfinance>=1.0`)
* FinRL policies (PPO, A2C, DDPG, TD3) on a Gymnasium-style environment
* Alpaca for authenticated market data and order routing (paper by default)
* Yahoo for delayed public bars when no broker key is available
* Secrets from environment (`ALPACA_API_KEY`, `ALPACA_SECRET_KEY`), never committed
* Tests and Docker/CI as already present on this tree
---
## 2. Concepts and Methods
### Market data
| Source | When to use | Failure modes |
| ------ | ----------- | ------------- |
| **CSV** | Offline replay; default in `config.yaml` | Missing path or OHLCV columns β†’ `None` |
| **Synthetic** | Unit tests and demos | GBM is not tradable edge |
| **Alpaca** | Authenticated bars and live/paper orders | Auth, feed, and rate-limit failures |
| **Yahoo** | Real Close without a broker account | Unofficial API, ~15 min delay, interval lookback caps (1m β‰ˆ 7 days). Pin `yfinance>=1.0`; 0.2.x fails against the current chart API |
`load_data` dispatches on `data_source.type`. Existing `alpaca` / `csv` / `synthetic` branches are unchanged.
### Strategy and FinRL
* `StrategyAgent`: SMA, RSI, Bollinger, MACD on Close; teaching rule, not an alpha claim
* `FinRLAgent`: PPO / A2C / DDPG / TD3 via Stable-Baselines3; persist under `models/`
* `ExecutionAgent` / `AlpacaBroker`: paper simulation or Alpaca market/limit orders
Backtests in this repo are in-sample passes unless you add a purged walk-forward yourself. Leakage is the null hypothesis.
---
## 3. Stack
| Layer | Tools |
| ----- | ----- |
| Language | Python 3.11 (CI); 3.8+ stated for local |
| RL | FinRL / Stable-Baselines3, Gym/Gymnasium, PyTorch |
| Broker | alpaca-py |
| Market data | Alpaca REST; yfinance β‰₯ 1.0 (Yahoo) |
| Tabular | pandas, NumPy, scikit-learn |
| UI | Streamlit, Dash, Jupyter widgets |
| Deploy | Docker Compose, GitHub Actions |
| Tests | pytest, pytest-cov |
---
## 4. Structure
```
algorithmic_trading/
β”œβ”€β”€ agentic_ai_system/ # ingest, strategy, FinRL, Alpaca, Yahoo
β”œβ”€β”€ ui/ # Streamlit, Dash, Jupyter, WebSocket
β”œβ”€β”€ tests/
β”œβ”€β”€ models/ # trained artifacts (gitignored bodies)
β”œβ”€β”€ data/ # generated CSV (gitignored)
β”œβ”€β”€ scripts/ # Docker / deploy helpers
β”œβ”€β”€ .github/workflows/ # CI/CD, release, backtesting
β”œβ”€β”€ config.yaml
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ Dockerfile
└── docker-compose*.yml
```
Branch policy: **`main`** (protected) and **`dev`** only. Do not re-enable Dependabot or the Monday `dependency-updates` workflow; those created extra branches.
---
## 5. Quick start
```bash
git clone https://github.com/ParallelLLC/algorithmic_trading.git
cd algorithmic_trading
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Alpaca keys if using alpaca ingest or orders
```
Default ingest is CSV. For Yahoo daily bars without a broker:
```yaml
data_source:
type: 'yahoo'
trading:
symbol: 'AAPL'
timeframe: '1d'
```
```bash
python demo.py
python -m agentic_ai_system.main --mode backtest --start-date 2024-01-01 --end-date 2024-12-31
pytest tests/ -q
```
UI launchers and Docker are documented in `UI_SETUP.md` and `DOCKER_HUB_SETUP.md`. Paper-trade before live. Yahoo is not a SIP tape.
---
## 6. Configuration (additive Yahoo keys)
| Key | Meaning |
| --- | ------- |
| `data_source.type` | `csv` \| `synthetic` \| `alpaca` \| `yahoo` |
| `yahoo.start_date` / `end_date` | Historical window; clamped per Yahoo interval limits |
| `yahoo.auto_adjust` | Passed to `yfinance` |
| `execution.broker_api` | `paper` \| `alpaca_paper` \| `alpaca_live` |
| `finrl.algorithm` | PPO, A2C, DDPG, TD3 |
---
**License:** Apache License 2.0
**Organization:** [Parallel LLC](https://github.com/ParallelLLC)
**Repository:** <https://github.com/ParallelLLC/algorithmic_trading>