Dharun Ashokkumar India

Alternative Data Platform — Indian equities

Python · data engineering

Find information that moves stocks in the physical world, before it hits financial statements.

View source on GitHub

Stack: Python, alternative data, medallion architecture, point-in-time, feature store, FastAPI, Prefect, TimescaleDB, backtesting, quant

What it is

Most market signals show up in a company's numbers after the fact. Alternative data is the bet that you can see the same thing earlier — in power demand, shipping, footfall, satellite imagery — if you can structure it. This platform is built to do that for Indian equities.

It's a scalable skeleton with hard layer contracts plus one fully working vertical slice (POSOCO power demand). Adding the other sources is a plug-in, not a rewrite — copy a template, implement three methods, add a feature recipe, and nothing downstream changes.

The medallion pipeline

  • Sources and ingest — pluggable data sources behind one abstract contract
  • Bronze — raw, untouched, in object storage (MinIO)
  • Silver — normalised records in Postgres
  • Gold — a point-in-time feature store
  • Signals, backtest, delivery — factor models, an Indian cost model, FastAPI and Grafana

The rule that runs through everything

Point-in-time correctness is structural, not a checkbox. Every feature carries (feature_date, published_date, as_of_date), and every read goes through one function that filters to what was actually knowable at the as-of moment. There is simply no API to see the future — which is the single most common way a backtest lies to you.

At a glance

LanguagePython
Working vertical slicePOSOCO
StorageMinIO and Postgres
DeliveryFastAPI

I wanted to build the boring, correct part first — the part that stops you fooling yourself — and only then add sources. The anti-lookahead feature store is the whole point.