Missing historical data of CE/PE via historical API

Hi team / @Hardik

I am trying to fetch historical data for expired options and I’m seeing a recurring data gap across multiple instruments.

For certain timestamps, the full CE–PE pair for a given strike is not present — only one side exists. In other words, for the same timestamp and strike, either the CE or the PE record is missing.

As a concrete example: For ADANIENT, filtering on timestamps like '2025-06-12%' and strike_code = 'ATM-6', around 140 option rows are missing because one side of the CE/PE pair is absent at those timestamps. This is just one example.

Since CE and PE should always be captured together for the same strike and timestamp, this creates broken time-series data and makes any historical analysis unreliable.

Could you help clarify:

  • Is this expected behavior for expired instruments?

  • Or is there a known issue in ingestion, storage, or expiry-day handling that causes one leg to be dropped?

Understanding the root cause will help us decide how to clean or compensate for this

timestamp,strike,present_sides,rows_present
2025-06-12 09:24:00+05:30,2460,['PUT'],1
2025-06-12 09:26:00+05:30,2480,['PUT'],1
2025-06-12 09:27:00+05:30,2480,['PUT'],1
2025-06-12 09:28:00+05:30,2480,['PUT'],1
2025-06-12 09:29:00+05:30,2480,['PUT'],1
2025-06-12 09:30:00+05:30,2480,['PUT'],1
2025-06-12 09:31:00+05:30,2480,['PUT'],1
2025-06-12 09:32:00+05:30,2480,['PUT'],1
2025-06-12 09:33:00+05:30,2480,['PUT'],1
2025-06-12 09:34:00+05:30,2480,['PUT'],1
2025-06-12 09:35:00+05:30,2480,['PUT'],1
2025-06-12 09:38:00+05:30,2460,['PUT'],1
2025-06-12 09:39:00+05:30,2460,['PUT'],1
2025-06-12 09:40:00+05:30,2460,['PUT'],1
2025-06-12 09:41:00+05:30,2460,['PUT'],1
2025-06-12 09:42:00+05:30,2460,['PUT'],1
2025-06-12 09:45:00+05:30,2460,['PUT'],1
2025-06-12 09:47:00+05:30,2460,['PUT'],1
2025-06-12 09:48:00+05:30,2460,['PUT'],1
2025-06-12 09:49:00+05:30,2460,['PUT'],1
2025-06-12 09:50:00+05:30,2460,['PUT'],1
2025-06-12 09:52:00+05:30,2460,['PUT'],1
2025-06-12 09:53:00+05:30,2460,['PUT'],1
2025-06-12 09:55:00+05:30,2460,['PUT'],1
2025-06-12 09:57:00+05:30,2460,['PUT'],1
2025-06-12 09:58:00+05:30,2460,['PUT'],1
2025-06-12 10:00:00+05:30,2440,['PUT'],1
2025-06-12 10:03:00+05:30,2440,['PUT'],1
2025-06-12 10:07:00+05:30,2460,['PUT'],1
2025-06-12 10:08:00+05:30,2460,['PUT'],1
2025-06-12 10:09:00+05:30,2460,['PUT'],1
2025-06-12 10:11:00+05:30,2460,['PUT'],1
2025-06-12 10:16:00+05:30,2460,['PUT'],1
2025-06-12 10:28:00+05:30,2460,['PUT'],1
2025-06-12 10:30:00+05:30,2460,['PUT'],1
2025-06-12 10:35:00+05:30,2460,['PUT'],1
2025-06-12 10:37:00+05:30,2460,['PUT'],1
2025-06-12 10:38:00+05:30,2460,['PUT'],1
2025-06-12 10:42:00+05:30,2460,['CALL'],1
2025-06-12 10:44:00+05:30,2440,['PUT'],1
2025-06-12 10:45:00+05:30,2440,['PUT'],1
2025-06-12 10:47:00+05:30,2440,['PUT'],1
2025-06-12 10:50:00+05:30,2440,['PUT'],1
2025-06-12 10:53:00+05:30,2440,['PUT'],1
2025-06-12 11:00:00+05:30,2440,['PUT'],1
2025-06-12 11:01:00+05:30,2440,['PUT'],1
2025-06-12 11:04:00+05:30,2440,['PUT'],1
2025-06-12 11:05:00+05:30,2440,['PUT'],1
2025-06-12 11:06:00+05:30,2440,['PUT'],1
2025-06-12 11:12:00+05:30,2440,['PUT'],1
2025-06-12 11:16:00+05:30,2440,['CALL'],1
2025-06-12 11:18:00+05:30,2440,['PUT'],1
2025-06-12 11:22:00+05:30,2440,['PUT'],1
2025-06-12 11:26:00+05:30,2460,['PUT'],1
2025-06-12 11:39:00+05:30,2440,['PUT'],1
2025-06-12 12:05:00+05:30,2440,['PUT'],1
2025-06-12 12:06:00+05:30,2440,['PUT'],1
2025-06-12 12:10:00+05:30,2440,['PUT'],1
2025-06-12 12:11:00+05:30,2440,['PUT'],1
2025-06-12 12:35:00+05:30,2440,['CALL'],1
2025-06-12 12:43:00+05:30,2440,['CALL'],1
2025-06-12 12:47:00+05:30,2460,['PUT'],1
2025-06-12 12:48:00+05:30,2460,['PUT'],1
2025-06-12 12:50:00+05:30,2460,['PUT'],1
2025-06-12 12:51:00+05:30,2460,['PUT'],1
2025-06-12 12:53:00+05:30,2460,['PUT'],1
2025-06-12 12:55:00+05:30,2460,['PUT'],1
2025-06-12 12:56:00+05:30,2460,['PUT'],1
2025-06-12 12:59:00+05:30,2460,['PUT'],1
2025-06-12 13:00:00+05:30,2460,['PUT'],1
2025-06-12 13:01:00+05:30,2460,['PUT'],1
2025-06-12 13:06:00+05:30,2460,['PUT'],1
2025-06-12 13:07:00+05:30,2460,['PUT'],1
2025-06-12 13:12:00+05:30,2460,['PUT'],1
2025-06-12 13:15:00+05:30,2460,['PUT'],1
2025-06-12 13:18:00+05:30,2460,['PUT'],1
2025-06-12 13:23:00+05:30,2460,['PUT'],1
2025-06-12 13:24:00+05:30,2460,['PUT'],1
2025-06-12 13:27:00+05:30,2460,['PUT'],1
2025-06-12 13:28:00+05:30,2460,['PUT'],1
2025-06-12 13:30:00+05:30,2460,['PUT'],1
2025-06-12 13:42:00+05:30,2440,['PUT'],1
2025-06-12 13:44:00+05:30,2440,['PUT'],1
2025-06-12 13:46:00+05:30,2440,['PUT'],1
2025-06-12 13:58:00+05:30,2440,['PUT'],1
2025-06-12 13:59:00+05:30,2440,['PUT'],1
2025-06-12 14:04:00+05:30,2440,['PUT'],1
2025-06-12 14:09:00+05:30,2420,['PUT'],1
2025-06-12 14:11:00+05:30,2420,['PUT'],1
2025-06-12 14:12:00+05:30,2420,['PUT'],1
2025-06-12 14:13:00+05:30,2420,['PUT'],1
2025-06-12 14:15:00+05:30,2420,['PUT'],1
2025-06-12 14:16:00+05:30,2420,['PUT'],1
2025-06-12 14:17:00+05:30,2420,['PUT'],1
2025-06-12 14:18:00+05:30,2420,['PUT'],1
2025-06-12 14:19:00+05:30,2420,['PUT'],1
2025-06-12 14:22:00+05:30,2440,['PUT'],1
2025-06-12 14:23:00+05:30,2440,['PUT'],1
2025-06-12 14:24:00+05:30,2440,['PUT'],1
2025-06-12 14:26:00+05:30,2420,['PUT'],1
2025-06-12 14:27:00+05:30,2420,['PUT'],1
2025-06-12 14:28:00+05:30,2420,['PUT'],1
2025-06-12 14:29:00+05:30,2420,['PUT'],1
2025-06-12 14:30:00+05:30,2440,['PUT'],1
2025-06-12 14:31:00+05:30,2440,['PUT'],1
2025-06-12 14:34:00+05:30,2440,['PUT'],1
2025-06-12 14:36:00+05:30,2440,['PUT'],1
2025-06-12 14:38:00+05:30,2440,['PUT'],1
2025-06-12 14:39:00+05:30,2440,['PUT'],1
2025-06-12 14:40:00+05:30,2440,['PUT'],1
2025-06-12 14:41:00+05:30,2440,['PUT'],1
2025-06-12 14:45:00+05:30,2440,['PUT'],1
2025-06-12 14:46:00+05:30,2440,['PUT'],1
2025-06-12 14:58:00+05:30,2420,['PUT'],1
2025-06-12 14:59:00+05:30,2440,['PUT'],1
2025-06-12 15:01:00+05:30,2440,['PUT'],1
2025-06-12 15:02:00+05:30,2440,['PUT'],1
2025-06-12 15:03:00+05:30,2420,['PUT'],1
2025-06-12 15:04:00+05:30,2420,['PUT'],1
2025-06-12 15:05:00+05:30,2420,['PUT'],1
2025-06-12 15:06:00+05:30,2420,['PUT'],1
2025-06-12 15:07:00+05:30,2420,['PUT'],1
2025-06-12 15:08:00+05:30,2420,['PUT'],1
2025-06-12 15:09:00+05:30,2420,['PUT'],1
2025-06-12 15:10:00+05:30,2420,['PUT'],1
2025-06-12 15:11:00+05:30,2420,['PUT'],1
2025-06-12 15:12:00+05:30,2420,['PUT'],1
2025-06-12 15:13:00+05:30,2420,['PUT'],1
2025-06-12 15:14:00+05:30,2420,['PUT'],1
2025-06-12 15:16:00+05:30,2420,['PUT'],1
2025-06-12 15:17:00+05:30,2420,['PUT'],1
2025-06-12 15:18:00+05:30,2420,['PUT'],1
2025-06-12 15:20:00+05:30,2420,['PUT'],1
2025-06-12 15:21:00+05:30,2420,['PUT'],1
2025-06-12 15:22:00+05:30,2420,['PUT'],1
2025-06-12 15:24:00+05:30,2420,['PUT'],1
2025-06-12 15:25:00+05:30,2420,['PUT'],1
2025-06-12 15:27:00+05:30,2420,['PUT'],1
2025-06-12 15:28:00+05:30,2420,['PUT'],1
2025-06-12 15:29:00+05:30,2420,['PUT'],1

Hi @sv28,

As discussed, we have received your email regarding the same query. We are currently reviewing the details and will get back to you with an update shortly.

Please note, for expired option data:

  • For stock options, ensure that your API call is made for the ATM range of ATM ± 3 and does not exceed this range.

  • For index options, you can fetch data up to ATM ± 10.

Hi @Trishul_Devadiga , thanks. Sharing the missing ATM data for the same instrument and date:

timestamp,strike,present_sides,rows_present
2025-06-12 09:36:00+05:30,2600,['CALL'],1
2025-06-12 10:13:00+05:30,2580,['PUT'],1
2025-06-12 10:15:00+05:30,2580,['CALL'],1
2025-06-12 10:17:00+05:30,2580,['CALL'],1
2025-06-12 10:22:00+05:30,2580,['PUT'],1
2025-06-12 10:23:00+05:30,2580,['PUT'],1
2025-06-12 10:25:00+05:30,2580,['PUT'],1
2025-06-12 10:26:00+05:30,2580,['CALL'],1
2025-06-12 10:29:00+05:30,2580,['CALL'],1
2025-06-12 10:31:00+05:30,2580,['CALL'],1
2025-06-12 10:32:00+05:30,2580,['PUT'],1
2025-06-12 10:36:00+05:30,2580,['CALL'],1
2025-06-12 10:40:00+05:30,2580,['CALL'],1
2025-06-12 10:42:00+05:30,2580,['PUT'],1
2025-06-12 10:46:00+05:30,2560,['PUT'],1
2025-06-12 10:49:00+05:30,2560,['PUT'],1
2025-06-12 10:57:00+05:30,2560,['CALL'],1
2025-06-12 11:03:00+05:30,2560,['CALL'],1
2025-06-12 11:04:00+05:30,2560,['CALL'],1
2025-06-12 11:08:00+05:30,2560,['PUT'],1
2025-06-12 11:21:00+05:30,2560,['PUT'],1
2025-06-12 11:22:00+05:30,2560,['CALL'],1
2025-06-12 11:31:00+05:30,2560,['PUT'],1
2025-06-12 11:33:00+05:30,2560,['CALL'],1
2025-06-12 11:43:00+05:30,2560,['PUT'],1
2025-06-12 11:44:00+05:30,2560,['PUT'],1
2025-06-12 11:45:00+05:30,2560,['CALL'],1
2025-06-12 11:48:00+05:30,2560,['PUT'],1
2025-06-12 11:53:00+05:30,2560,['CALL'],1
2025-06-12 12:09:00+05:30,2560,['CALL'],1
2025-06-12 12:17:00+05:30,2560,['PUT'],1
2025-06-12 12:27:00+05:30,2560,['PUT'],1
2025-06-12 12:32:00+05:30,2560,['PUT'],1
2025-06-12 12:37:00+05:30,2560,['CALL'],1
2025-06-12 12:39:00+05:30,2560,['CALL'],1
2025-06-12 12:41:00+05:30,2560,['CALL'],1
2025-06-12 12:42:00+05:30,2560,['CALL'],1
2025-06-12 12:45:00+05:30,2560,['CALL'],1
2025-06-12 13:36:00+05:30,2560,['CALL'],1
2025-06-12 14:03:00+05:30,2560,['PUT'],1
2025-06-12 14:43:00+05:30,2560,['PUT'],1
2025-06-12 14:46:00+05:30,2560,['CALL'],1
2025-06-12 14:51:00+05:30,2560,['CALL'],1
2025-06-12 14:54:00+05:30,2560,['CALL'],1
2025-06-12 15:19:00+05:30,2540,['PUT'],1