Arbitrage Opportunity for Intraday


I was going through this post. I did some experiment on the feasibility of executing such trades via Kite API. I collected data for some day (WebSocket streaming). The result seems mixed.

  1. First I plotted the last traded price of BHARTI AIRTEL for 21st June whole day for BSE and NSE both.
    I can spot at least 3 major opportunity (for a profitable trade after brokerage and all other charges).
    Now If I go a bit deep, I can roughly assume to make profit in such trade, the following thing should happen,

    For profit (BSE bid price - NSE offer price) (when taking the trade) should be greater than (BSE offer price - NSE bid price) (when covering), or vice versa.
  2. Now I plot, where (BSE bid price - NSE offer price) > 0.5 and (BSE offer price - NSE bid price)<0.05 (Required to make a reasonable profit) against time. i.e. actual prices to consider for strategy “Sell at BSE at higher price, Buy in NSE at lower price. Cover when the difference is less”.
    I find only one opportunity and that too is not tradable practically, because of network latency and things)
  3. The opposite combination i.e. (NSE bid price - BSE offer price) > 0.5 and (NSE offer price - BSE bid price)<0.05 also doesn’t give promising result,
    opportunity is present in Last traded plot (with sufficient margin), but the opportunity vanishes when we consider the actual bid/offer combination? Even when last traded price is always in between offer and bid. What exactly I’m missing? (maybe a traders perspective would help.)

Anyone curious about how I plotted these, look here. All the graphs is here.


Today all arbitrage opportunities are filled by high frequency trading firms who spot opportunities in micro seconds from exchange collocation servers scanning the entire market (not just 1 stock). It is really tough to compete with them using higher latency interfaces/manual trading.

Looking at LTP to spot an arbitrate opportunity is not really correct. It always has to be the way you did, using bids/offer.


Hey Dipan, glad to see some decent efforts going in here. There are few things you need to note -

  1. Algos - There are highly sophisticated algos residing on servers collocated at the exchanges. These algos also have access to TBT data.

  2. TBT Data - Also called ‘Tick by tick’ data captures every trade that happens on the exchange. As you can imagine, there are several trades that occur on a per second basis. It is impossible for any broker to relay TBT information at the retail level (bandwidth constraints etc).

  3. These algo with access to TBT can spot opportunities much quicker. So before you can even see them, they vanish.

After all this, even if you happen to spot a good arb opportunity, then costs could be prohibitive. While brokerage is not a big constraints (if you are trading with Zerodha), taxes and applicable charges could be a pain and hence chasing the arb opportunity may not really be worth it.


Yes! after analyzing cost of trading I have come to realize only where the difference is more than 0.12% the opportunities are worth taking. And I know I don’t have access to TBT data. But again, considering the fact, that last traded price should be between bid and offer. Am I to consider, I’m missing some snapshot of market depth (at some point) altogether? The data is simply not there for market depth, but the trade (i.e. trade price) is there.