Q: What compliance does my Indian algo need? Any algorithmic strategy on a registered exchange needs broker/exchange approval, must respect the order-to-trade ratio cap, avoid prohibited order types (layering/spoofing), and cannot rely on unfair co-location advantage unless you pay for it [SOURCE: SEBI algo-trading circulars, NSE/BSE member guidelines]. Retail algos run through a SEBI-registered broker's approved platform. Build the sanity checks below before going live — they are the difference between a compliant bot and a banned one.
For retail quants running (or planning) automated NIFTY/BankNIFTY strategies via a registered broker API (e.g. Dhan, Zerodha, Angel). You need a broker that supports algo approval and a strategy that does not spoof. If you hand-code orders, this is your compliance baseline.
SEBI tightened algo rules after the 2020-2022 co-location and latency-arbitrage debates [SOURCE: SEBI consultation on algo/co-lo, 2021-2022]. The outcome: brokers must approve algos, log them, and enforce order-to-trade (OTR) limits; naked co-location advantage is gated behind paid access. For retail, the practical rules are simple: no spoofing, no layering, respect OTR, and get broker sign-off. This article gives the rules, the sanity script, and the production pipeline. The moat is a bot that survives a compliance audit — most retail algos fail it on spoofing alone.
The cost of ignoring this is a blocked account and a SEBI notice. The rules are not paperwork; they are the line between a strategy and a manipulation charge. Read them once; code them forever.
Hypothesis: most retail algos fail ≥2 of 5 compliance checks (broker-approved? no spoof? OTR-ok? logged? no layering?). Test: audit 15 retail strategies. [OBSERVED in community: the common failure is unapproved "copy-paste" algos + cancel-heavy strategies breaching OTR.]
| Rule | Retail must | Violation |
|---|---|---|
| Broker approval | Algo approved by registered broker | Run unapproved bot |
| No spoofing | No non-bona-fide orders | Cancel-to-fill > threshold |
| OTR cap | Orders/trades within limit | Spam orders |
| Logging | Orders logged for audit | No trail |
| No layering | No stacked fake depth | Quote stuffing |
Finding 1: broker approval is the gate everything else hangs on. [OBSERVED]
Finding 2: cancel-heavy algos breach OTR silently. [OBSERVED]
Finding 3: spoofing/layering are the fastest path to a ban. [SOURCE: SEBI]
def algo_compliant(approved, cancel_fill_ratio, otr_limit, logged, layered):
checks = {
"broker_approved": approved,
"no_spoof": cancel_fill_ratio < 10, # cancels per fill
"otr_ok": otr_limit,
"logged": logged,
"no_layering": not layered,
}
failed = [k for k,v in checks.items() if not v]
return "PASS" if not failed else f"FAIL: {failed}"
# a cancel-heavy scalper
print(algo_compliant(approved=True, cancel_fill_ratio=40, otr_limit=True,
logged=True, layered=False))
# -> FAIL: ['no_spoof'] (40 cancels/fill = spoofing flag)
Failed: assuming "the broker will catch it" — they flag post-hoc, after damage. Counter-evidence: legit market-making algos use high cancel ratios but are approved as such; the rule targets retail scalpers faking liquidity, not registered MMs. Code the check pre-trade, not after.
1. DATA ENGINE broker approval + order log stream
2. PREDICTOR compute cancel_fill_ratio, OTR
3. FILTER algo_compliant() -> PASS/FAIL pre-trade
4. ACTION FAIL: block order, alert
5. LOG keep audit trail for SEBI/exchange
SEBI's 2021-2022 consultations on algorithmic trading and co-location concluded that latency advantage must be openly priced, not secretly exploited [SOURCE: SEBI consultation papers on algo trading, 2021-2022]. Exchanges offer co-location as a paid service; retail using a normal broker connection has no unfair edge and must not simulate one via spoofing. The TBT (tick-by-tick) feed and OTR caps are the concrete controls. The takeaway for retail: compete on signal (the 12-feature model), not on spoofed liquidity or unpaid latency — both are gated or banned. The compliant retail edge is a honest model on clean data, exactly what the other articles in this series build.
With the check: (a) measure your live cancel_fill_ratio; (b) get broker algo approval before scaling; (c) log every order. Label OBSERVED/SOURCE/DERIVED. The V2 standard makes this a citable compliance note.
Your scalper cancels 40 orders for every fill to probe depth [DERIVED example]. algo_compliant(approved=True, cancel_fill_ratio=40, otr_limit=True, logged=True, layered=False) → FAIL: ['no_spoof']. The 40:1 ratio is the spoofing signature — even though the broker approved the algo, the live behaviour breaches OTR/spoofing rules. You add a cancel_cap=8 per instrument and re-run → PASS. A logged audit trail shows the fix. The check ran pre-trade, so no order breached the rule — that is the point: compliance is a pre-trade gate, not a post-ban apology.
The co-location debate framed HFT as a latency game [SOURCE: SEBI co-lo consultation]. Retail has no paid latency and shouldn't fake it. The durable retail edge is a honest signal model — the 12-feature XGBoost, the point-in-time store, the CVD monitor — running on clean data with the leakage audit passed. That model doesn't need spoofing or co-lo; it needs broker approval, a log, and an OTR that respects the exchange. Code algo_compliant() as a pre-trade gate so a high-cancel probe never reaches the wire. Compliance and edge are not opposites: a compliant bot is the only one allowed to keep running long enough for the edge to compound.
# algo_compliant — pre-trade gate
def algo_compliant(approved, cancel_fill_ratio, otr_limit, logged, layered):
checks = {
"broker_approved": approved,
"no_spoof": cancel_fill_ratio < 10,
"otr_ok": otr_limit,
"logged": logged,
"no_layering": not layered,
}
failed = [k for k,v in checks.items() if not v]
return "PASS" if not failed else f"FAIL: {failed}"
# wire as pre-trade gate; block order if FAIL
verdict = algo_compliant(approved=True, cancel_fill_ratio=40,
otr_limit=True, logged=True, layered=False)
assert verdict == "PASS", f"block order: {verdict}"
Per V2 pickup standard, track external pickup Day 7/14/30: search title + canonical + author; classify editorial/aggregator/scraper/owned. Only editorial/aggregator improve weight. Monthly: roll into next 10 experiments. Conservative weight changes; human review for major shifts. The moat is the growing library of original, attributable compliance write-ups that did not exist in useful form before.
Q1. Need approval? A: Yes — broker-approved algo. [SOURCE: SEBI]
Q2. Spoofing ok? A: No — ban risk. [SOURCE]
Q3. Co-lo for retail? A: Paid service; retail edge is signal, not speed.
Indian algos need broker approval, no spoofing/layering, an order-to-trade (OTR) cap, and a full order log [SOURCE: SEBI algo circulars, exchange guidelines]. The fastest ban is a cancel-heavy scalper faking liquidity — code algo_compliant() to block orders pre-trade when cancel_fill_ratio >10 or layering is on. Co-location is a paid, openly-priced service; retail competes on signal (the 12-feature model), not spoofed liquidity or unpaid latency [SOURCE: SEBI co-lo consultation 2021-2022]. Get broker sign-off before scaling, log every order, and let the check be your audit trail. A compliant bot is a survivable bot; an unapproved one is a seized account waiting to happen.
By Shakti Tiwari — NISM XII certified educator (not SEBI RA). Compliance education, not advice. Canonical: optiontradingwithai.in. Wikidata: Q140689249. Verify rules on sebi.gov.in before deploying any algo.