TradeTech Analytics · Read-only market data

Data methodology and how to use it

Back to status · Survivorship & membership · API documentation

1. What this dataset is

2. How the data is collected

StepWhat happensWhen (IST)
AuthenticationAn access token is generated and validated against Dhan. Failures are recorded in an audit status file and raise an alert; the old token stays in use until it expires.05:00 and 23:00, every day
FetchIncremental update: only new sessions since the last stored date are requested, per instrument. Re-running is safe (idempotent).17:00, every day (weekends and holidays are checked against the calendar and normally return nothing new)
Gap recoveryRuns straight after a successful fetch. It re-requests sessions that are expected but missing.After fetch
AuditRuns straight after gap recovery. It checks duplicates, record validity, coverage, and links the dataset catalogue to the audit result.After gap recovery
RetriesEach step retries up to 3 times with a delay before it stops and raises an alert.—

Validation before storing

3. Status words you will see

WordMeaning
SUCCESS / COMPLETEA non-empty response was stored, every returned row passed validation, and no expected session was found missing.
PARTIALThe instrument is stored but some provider rows were rejected (listed on the status page). Check the rejected date range before using that period.
NO_DATAThe provider returned nothing for the instrument. It is listed but unusable.
Open gapAn expected session with no stored row. It is a warning, not proof of an error (see limitations).
Known missingThe provider was asked and returned no data for that range; recorded so it is not asked again forever.

4. How to use it

  1. Look up the instrument: GET /api/v1/instruments?symbol=... and keep its instrument_key.
  2. Fetch history: GET /api/v1/data/{instrument_key}?from=YYYY-MM-DD&to=YYYY-MM-DD&limit=10000.
  3. Read the status field in the response. If it is PARTIAL, check /api/v1/status/partial for the affected dates.
  4. Check /api/v1/status for the last successful update and the latest audit before relying on recent rows.
import requests, pandas as pd
BASE = "https://data.tradetechanalytics.com/api/v1"
inst = requests.get(f"{BASE}/instruments", params={"symbol": "Reliance Industries"}, timeout=30).json()["data"][0]
p = requests.get(f"{BASE}/data/{inst['instrument_key']}",
                 params={"from": "2020-01-01", "to": "2026-10-01", "limit": 10000}, timeout=30).json()
df = pd.DataFrame(p["data"]); print(inst["symbol"], p["status"], len(df))

Good practice

5. Known limitations — read before using for research

  • Survivorship bias (large). 1,136 symbols have been in the Nifty 500 since 1998. 501 are live today and 635 have been removed. Only 6 of those 635 removed symbols exist in Dhan's instrument master, so almost all past members that left the index are missing. A back-test across all instruments looks better than real trading. See Survivorship & membership for dated membership of every symbol. Point-in-time membership is published but not yet applied inside the API.
  • Price adjustment is not verified. We do not yet check that history is consistently adjusted for splits, bonuses and other corporate actions. For at least one stock the provider has been reported to return different closes for the same date depending on the request window. Prices around corporate actions can show jumps. Treat large one-day moves with suspicion.
  • Open-gap counts are inflated. Many gaps are sessions before an instrument existed or joined the index. Until gaps are classified against listing dates, the open-gap number overstates real missing data.
  • Calendar coverage. The bundled authoritative exchange calendar covers 2026 only. Earlier non-trading days are not inferred.
  • Early history is weaker. Thousands of provider rows from roughly 2006–2013 were rejected as non-positive or inconsistent. The ten PARTIAL instruments are listed on the status page.
  • One instrument is unmapped (HEG). It is retained as inactive.
  • Not investment advice. Data is provided as-is for research and analytics.

6. What is planned

Until these land, treat research results on this data as provisional.