Setup
.env at providers/data/market/:
DATABASE_URL=postgresql+psycopg://postgres:postgres@localhost:5432/investments
POSTGRES_DB=investments
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
KITE_API_KEY=
KITE_API_SECRET=
KITE_ACCESS_TOKEN=
cd providers/data/market/components
uv venv ../../../../.venv --python 3.13 --prompt asset-pricing
UV_PROJECT_ENVIRONMENT=../../../../.venv uv sync --all-packages --all-extras
cd ~/ws/asset-pricing && source .venv/bin/activate # prompt shows (asset-pricing)
Run the pipeline
docker compose -f providers/data/market/docker-compose.yml up -d postgres
python -m db_interface.cli init-db # create tables
python scripts/kite_login_flask_app.py # daily Kite login (from data/market/), :5001
python -m instruments_crawler.cli sync # all NSE instruments
python -m historical_crawler.cli sync # 25 years of daily candles
python -m market_api.cli export # stage per-ticker CSVs
python -m market_api.cli build-panel --all # predictor panel CSVs
Serve
python -m uvicorn market_api.app:app --port 8000
curl localhost:8000/tickers
curl "localhost:8000/tickers/INFY/metrics?metrics=mvel1"
curl localhost:8000/panel/mom1m
Test
make -C providers test # pytest over all components
make -C providers lint # ruff over all components