An open API service indexing awesome lists of open source software.

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.

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`).