We are observing an issue where Zerodha's historical candle API (/api/historical/{instrument_token}/{interval}) returns unadjusted prices after corporate actions such as demergers and splits. The problem is that the adjustment is not applied retroactively to prior candles, resulting in apparent single-day price gaps that are impossible on the NSE (which enforces 20% upper/lower circuit limits for most stocks).
Examples from our data (NSE equities, day interval):
Symbol Date Prev close Close Apparent move Event ABFRL 2025-05-22 ₹203.55 ₹89.85 −55.86% ABREL demerger V2RETAIL 2026-03-25 ₹1,920.00 ₹196.30 −89.78% Suspected demerger STLTECH 2025-04-24 ₹36.73 ₹65.05 +77.10% Corporate event IEX 2025-07-24 ₹187.89 ₹132.32 −29.58% Corporate event STAR 2024-12-06 ₹1,326.90 ₹682.55 −48.56% Corporate event
Steps to reproduce:
Fetch day-interval historical data for any of the above symbols covering the dates listed. Compare consecutive daily closes; the gap on the listed date persists even after re-fetching the data days/weeks later. Expected behaviour: When a corporate action occurs, Zerodha is supposed to retroactively adjust all prior candles (back-adjust), so the price series is continuous and shows no artificial gap. This is the standard behaviour described in the Kite Connect documentation.
Actual behaviour: The post-event candle shows the unadjusted new price, while all prior candles remain at the pre-event unadjusted price, creating a >20% apparent gap on the event date. Re-downloading the same symbol weeks later returns identical data; the adjustment is never applied.