https://github.com/skr-35/bist100-extractor
BIST100 Extractor. Reproducible Yahoo Finance pipeline for Borsa İstanbul (BIST) tickers. CLI downloads OHLCV for a ticker universe, produces a single combined CSV & XLSX per run and writes to SQLite (runs, prices, meta). Clean repo hygiene (Ruff, Black, Pytest, CI). Designed for batch analysis and backtesting workflows.
https://github.com/skr-35/bist100-extractor
bist100 borsa-istanbul cli data-engineering etl finance market-data ohlcv quant timeseries yfinance
Last synced: 12 days ago
JSON representation
BIST100 Extractor. Reproducible Yahoo Finance pipeline for Borsa İstanbul (BIST) tickers. CLI downloads OHLCV for a ticker universe, produces a single combined CSV & XLSX per run and writes to SQLite (runs, prices, meta). Clean repo hygiene (Ruff, Black, Pytest, CI). Designed for batch analysis and backtesting workflows.
- Host: GitHub
- URL: https://github.com/skr-35/bist100-extractor
- Owner: SKR-35
- License: apache-2.0
- Created: 2026-04-26T11:52:40.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2026-04-26T13:21:41.000Z (2 months ago)
- Last Synced: 2026-04-26T15:16:31.744Z (2 months ago)
- Topics: bist100, borsa-istanbul, cli, data-engineering, etl, finance, market-data, ohlcv, quant, timeseries, yfinance
- Language: Python
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# BIST100 Extractor
A simple, reproducible pipeline to download OHLCV time series for **BIST 100** tickers
from Yahoo Finance using a clean CLI with configurable `--range` and `--interval`.
## Features
- CLI with `argparse`: set `--range` (e.g., `1mo`, `6mo`, `1y`, `5y`, `max`) and `--interval` (e.g., `1d`, `1h`, `5m`).
- Saves per-ticker CSVs under `data/`.
- Solid repo hygiene (ruff + black), GitHub Actions CI, tests.
## Quickstart (Conda)
```bash
conda create -n bist100 python=3.11 -y
conda activate bist100
pip install -e ".[dev]"
ruff check .
black .
pytest -q
```
## Run
```bash
python -m bist_extractor.cli --range 1y --interval 1d
python -m bist_extractor.cli --range 1y --interval 4h
python -m bist_extractor.cli --range 120d --interval 60m
python -m bist_extractor.cli --range 60d --interval 30m
python -m bist_extractor.cli --range 12d --interval 5m
python -m bist_extractor.cli --range 2d --interval 1m
```
Outputs:
```
BIST100_60d_30m_YYYYMMDD_HHMMSS.csv
BIST100_60d_30m_YYYYMMDD_HHMMSS.xlsx
```
and updates `bist100_prices.db` (tables: `runs`, `prices`, `meta`).