The split that broke our adjusted prices
A reviewer told us to walk Nestle's 10:1 split and check for a discontinuity. There was one. Three bugs later, the Yahoo reconciliation went from 88.79% to 96.88%, and the two names still off are Yahoo's.
Engineering deep-dives, benchmarks, and unhedged opinions on Indian-market data infrastructure. Updated when there's something to say.
A reviewer told us to walk Nestle's 10:1 split and check for a discontinuity. There was one. Three bugs later, the Yahoo reconciliation went from 88.79% to 96.88%, and the two names still off are Yahoo's.
TejHQ now has sign-in by email, hashed API keys, a free tier with real quotas, and a Pro tier with metrics, batch and resolve. How the auth is built, the edge-cache leak we caught before launch, and why there is no billing page.
Today's NIFTY 500 list is the wrong universe for a 2012 backtest. How we rebuild monthly top-500-by-turnover membership from data available on each rebalance date, what it exposed about our 2010 and 2011 rows, and the ISIN continuity rule that fixed it.
How the keyless tier of api.tejhq.dev now answers from a Cloudflare Worker and an R2 read, never from Cloud Run. The pre-render step, the in-memory date slice, the cache rules, and the guardrails that keep the bill at zero.
Why 5,000 daily bhavcopy files made every wide OHLCV query open 5,000 parquet footers, what changed when we compacted them into per-year rollups, and the schema mismatch that bit us two months later.
What it took to backfill NSE end-of-day prices from 2010 to today: two URL schemes, two CSV schemas, a SEBI format cutover in the middle, and a Go SQL driver that hates NULL.
Splits, bonuses, dividends, ISIN drift across mergers. How TejHQ Phase 4 actually shipped: the adjustment math, the per-ISIN reverse cumprod, the post-merger ISIN resolver, and the 89% Yahoo reconciliation.
Twelve-minus-one momentum, monthly rebalance, top decile, 2024-Q1 to 2026-Q1. From raw Bhavcopy to equity curve in one script. Full code + results.
Why retail quants in India pay anywhere from zero to twenty-four lakh rupees a year for the same OHLCV. A breakdown of who charges what, and what they're actually selling.
Same data, same query, two engines. Polars wins on pure scan speed; DuckDB wins on remote Parquet pruning. Numbers, code, and the cases where each loses.
End-of-day market data for India costs anywhere from ₹0 to ₹24 lakh a year. We pay zero. Here's the SEBI CMTS Bhavcopy pipeline that powers tej-bazaar.