2.8 KiB
2.8 KiB
Trading Scripts: Market Data Fetcher
Historical market data pipeline for AI analysis. Fetches stocks/futures/crypto, computes stats/charts, exports for uncensored LLMs.
🚀 Quick Start
# Install deps (one-time)
pip install yfinance pandas matplotlib seaborn plotly kaleido pyarrow
# Basic 1Y report
python market_data.py --period 1y --groups stocks futures crypto --output ./report-1y
# Live daily movers
python market_data.py --period 1d --groups meme --output ./today-movers
📊 Features
- 1Y+ History (auto-adjusts interval: 1d for long periods)
- Futures-safe (flattens MultiIndex for ES=F etc., drops NaN gaps)
- Stats: Total/annual returns, volatility, max drawdown, volume
- Exports: CSV/Parquet/JSON + PNG charts + interactive HTML
- Groups:
stocks(AAPL/TSLA),futures(ES=F/NQ=F),crypto(BTC-USD),meme(GME)
Usage
python market_data.py [OPTIONS]
Options:
--tickers AAPL,TSLA,ES=F Comma-separated (default: AAPL,TSLA,ES=F,BTC-USD)
--period 1y 1mo|3mo|6mo|1y|2y|5y|10y|ytd|max (default: 1y)
--interval 1d 1m|5m|1h|1d|1wk (auto-adjusts)
--groups stocks futures Add predefined groups
--output ./reports Output dir (default: ./market-historical)
Examples
Retail Biz Demo:
python market_data.py --period 1y --tickers AAPL,TSLA --output retail-stocks
# Feed report JSON to uncensored bot: "Analyze TSLA for landscaping firm cashflow"
Daily Alerts (Cron):
# Save daily to /opt/data/market-daily
0 9 * * 1-5 python /opt/gcloud-lab/trading-scripts/market_data.py --period 1d --output /opt/data/market-daily/today
Meme Stocks Live:
python market_data.py --period 5d --groups meme --interval 1h --output meme-watch
Outputs
report/
├── historical_data.csv # Raw OHLCV
├── historical_data.parquet # Efficient (AI load: pd.read_parquet)
├── historical_report.json # Stats summary
├── historical_report.md # Human-readable
├── historical_analysis.png # Charts (normalized prices, returns, risk-return)
└── historical_interactive.html # Zoomable Plotly
AI Integration (OpenClaw/Uncensored Bots)
import json
with open('report/historical_report.json') as f:
data = json.load(f)
prompt = f"Analyze these 1Y stats for retail biz: {json.dumps(data['stats'])}"
# POST to vLLM: http://openclaw-brain-service:8000/v1/chat/completions
Troubleshooting
- No data: Check market hours (futures/crypto 24/7)
- MultiIndex error: Auto-handled (memory quirk fixed)
- Large files: Use
--period 1moor Parquet - Deps:
pyarrowfor Parquet read/write
For clients: "Uncensored AI stock insights — privacy-first, no filters."
Built for gcloud-lab OpenClaw Brain. FluxCD deploys ready.