BSE-NSE arbitrage — buying a stock on one exchange and selling it instantly on the other to pocket the price gap — looks profitable on screen but almost never works for retail traders. The visible gap is overstated by the bid-ask spread, transaction costs eat what's left, and high-frequency algos are already faster than you.

You're scrolling through your trading app on a Sunday evening. You notice something odd. The same stock, say Reliance, is showing two prices. ₹2,500 in one place, ₹2,510 in another.

Wait, the same stock at two different prices? Right at this moment? Free ₹10 per share? Why isn't everyone doing this?

Welcome to one of the most-Googled questions in Indian retail trading. The short answer is no, you can't just pocket that ₹10. The longer answer is more interesting. And by the end of this article, you'll know exactly why.

Prefer to watch first? Here's the same idea in a quick video walkthrough.

VRD Rao explaining BSE-NSE arbitrage and why retail traders can't profit from it
Start here

First, what does "BSE-NSE arbitrage" even mean?

Quick refresher. India has two main stock exchanges.

NSE (National Stock Exchange) is the bigger one. BSE (Bombay Stock Exchange) is the older one. Both are basically marketplaces where people buy and sell shares.

Think of them like two big supermarkets. They sell mostly the same products (shares of the same companies), but they're separate buildings, with separate cashiers, separate billing counters.

Now, the same share, say one share of Reliance, is traded on both. So Reliance has a price on NSE and a price on BSE, at the same moment. Almost always, these prices are nearly identical. But not always exactly the same.

When they're different, traders call that gap an "arbitrage opportunity." The word arbitrage just means buying low in one place and selling high in another to pocket the difference. Like buying mangoes for ₹100 in one bazaar and walking ten metres to the next stall to sell them for ₹110.

So the question we're really asking is: can a regular person (you, me, anyone with a trading app) actually pocket that price difference?

The technical answer is yes. The honest answer is no, not in any way that makes you money. Three reasons. Let's walk through them.

The textbook answer

Yes, you can technically do the trade. The plumbing works.

Until 2019, doing this trade was clumsy. You had to settle each side of the deal on the exchange where you placed it. SEBI (the regulator that watches over Indian stock markets) then made a rule called interoperability.

Interoperability is just a fancy word for: "the two exchanges talk to each other now." So you can buy a share on NSE and then sell that same share on BSE. The shares move where they need to move behind the scenes. Most brokers will let you do this for normal trades.

One small catch. If you want to buy and sell on the same day across two different exchanges (which is called intraday squaring-off), check with your broker first. Some brokers (like Axis Direct) require you to buy and sell on the same exchange for intraday trades. Others are more flexible.

!

The plumbing works. The economics, as we're about to see, do not. The rest of this article is about the three reasons why.

Reason 1

The price you see on the screen is not the price you actually trade at

Pull up any stock on your trading app. You'll see a number. Say ₹2,500. That's the LTP, or Last Traded Price.

Important: LTP just means the price of the most recent trade that already happened. Maybe a second ago, maybe ten seconds ago. It does not mean that's the price you can buy or sell at right now.

Here's an analogy. Imagine a coffee shop with a chalkboard outside that says: "Cappuccino — ₹150." That was the price the last person paid.

Right now? Maybe the next cappuccino costs ₹155. Or they've raised it to ₹160. Or maybe they're out, and you can't get one at any price.

The chalkboard isn't lying. It's just out of date. That's the LTP.

The real prices in a stock market are two:

The bid = the price someone is willing to buy at right now. (If you want to sell, this is what you'll get.)

The ask (also called the offer) = the price someone is willing to sell at right now. (If you want to buy, this is what you'll pay.)

Bid and ask are almost always different from each other, and from the LTP. The gap between bid and ask is called the spread.

You've actually seen this before, even if you didn't know it. At the airport money-changer, the board shows two rates: "We BUY USD at 83.50, we SELL USD at 84.20." That's bid (83.50) and ask (84.20).

The "real" exchange rate might be 83.85, but you can't get that. You either buy dollars at 84.20 or sell them at 83.50. The money-changer keeps the difference (the spread).

Stock exchanges work the same way.

📊
What your trading app shows
LAST TRADED PRICE

NSE: ₹200.00 · BSE: ₹204.00. Looks like a clean ₹4 gap.

₹4.00 The gap that looks like free money
vs
📋
What you can actually buy and sell at
REAL BID / ASK

NSE ask (you pay): ₹200.95 · BSE bid (you get): ₹203.10. The real gap shrinks fast.

₹2.15 The gap before any costs hit

This is the cleanest way to see the trap. The headline gap on a chart is the price someone, somewhere, recently traded at. It's not a price the market is offering you right now.

And here's the cruel twist. The gaps that look biggest on the screen usually appear on stocks that aren't traded much (illiquid stocks). And on those stocks, the bid-ask spread is even wider. So the gap that looks juiciest is the one where the real, tradable gap is smallest, or even negative.

Reason 2

Even if the gap is real, costs eat most of it

Let's say you find a moment where the bid-ask gap is wide enough to look real. Pretend you can buy a stock on NSE at ₹200 and instantly sell on BSE at ₹202. A clean ₹2 gap.

You buy 100 shares. Gross gap: ₹200. Easy money? Not so fast.

Every stock trade in India has costs. Lots of small ones that add up. Just like buying a phone has the phone price plus GST plus delivery plus EMI fees, every trade has a stack of charges:

The cost stack on a ₹2 gap, 100-share trade

For an intraday trade at a typical discount broker like Zerodha. You buy ₹20,000 worth on NSE and sell ₹20,200 on BSE. Gross gap: ₹200.

Brokerage (both sides)
flat fee × 2
₹40
STT (a tax on selling)
₹5
₹5
Exchange fees
~₹2
₹2
GST + stamp duty + SEBI fee
~₹4
₹4
Total costs
about ₹51 gone
~₹51
What's left for you
if everything goes perfectly
~₹149

Quick translations of the items above:

  • Brokerage is what your broker charges to place the trade. Discount brokers like Zerodha charge a flat fee per order (around ₹20), and you have two orders here (one buy, one sell). So ₹40 max.
  • STT stands for Securities Transaction Tax. It's a small tax the government takes when you sell a share.
  • Exchange fees are what you pay NSE or BSE for using their platform.
  • GST is the 18% goods-and-services tax added on top of brokerage and exchange fees. Stamp duty is a tiny state-level tax on the buy side.

So out of your ₹200 "free" profit, about ₹51 disappears. You walk away with ₹149.

That doesn't sound terrible. ₹149 for thirty seconds of clicking? Worth it, right?

Here's the thing. The example above used a ₹2 gap. That's almost never what you'll actually see in real life.

The gaps that actually exist between BSE and NSE for liquid stocks are tiny. We're talking 5 to 30 paise. Sometimes less. Try plugging those numbers into the calculator below and see what happens.

Try it yourself

Plug in real prices and quantities. The calculator does the math for you using typical Indian discount-broker charges.

Gross gap (before costs) ₹30.00
Brokerage (both sides) ₹12.00
STT (tax on selling) ₹5.01
Exchange fees ₹1.45
GST + stamp duty + SEBI ₹3.06
Total costs ₹21.52
What you actually keep ₹8.48
Marginal — costs eat most of it

Three things to try, to really see how this works:

1. Try the default. A 30-paise gap on 100 shares looks like ₹30 of free money. After costs, you're left with about ₹8.50. Better than nothing, but it took capital and effort, and you'd need this opportunity dozens of times to make a real income.

2. Now lower the sell price to ₹200.10. A 10-paise gap, which is much more typical. Watch the verdict turn red. You'd actually lose money on this trade.

3. Now switch to "Delivery" mode. In delivery, STT alone jumps from 0.025% to 0.1% on both sides. Notice how badly it eats your profit, even on the bigger ₹2 gap.

This is why retail traders almost never make money trying to do BSE-NSE arbitrage. Even when the gap looks real on screen, the cost stack quietly devours it.

If you can see the gap on your screen, the gap is already gone. Or it was never really there.

⚙ FROM THE TOOLKIT

iStox — practice without risking real money

iStox is our trading simulator. It uses real Indian-market data, but you trade with practice money instead of real money.

It's the best way to see what we just talked about: how bid and ask actually behave, how trades fill (or don't), and how those costs you read about earlier really show up.

Most people learn this stuff the expensive way (by losing real money). iStox lets you learn the cheap way.

Try iStox →
Reason 3

You're up against computers that live next to the exchange

Even when there is a real, profitable gap on the screen, you're not the only one looking.

Picture a 100-metre sprint. On one end, you have an Olympic sprinter at peak training. On the other end, you have someone scrolling on their phone while walking to the bus stop. That's roughly the difference between an HFT (high-frequency trading) computer and a regular human trader.

HFTs are computer programs run by big trading firms. They're designed to spot tiny price differences and trade them automatically, in fractions of a second.

And here's the kicker. These computers aren't sitting in some office in Mumbai. They're physically inside or right next to the exchange building.

This is called co-location. The trading firms pay big rent to the exchange for the privilege of putting their server in the right room.

Why? Because being closer means their orders arrive faster. Even at the speed of light, a few extra metres of cable means a few extra microseconds of delay. And in this game, microseconds matter.

The numbers, roughly:

Your order, going from your phone over Wi-Fi to your broker to the exchange: somewhere around 200 milliseconds. An HFT order, sitting next to the exchange computer: around 50 microseconds. That's about 4,000 times faster than you.

You don't fix that with a faster broadband plan. It's not a small gap. It's a different category of trading.

So what does this mean in practice?

By the time a price gap is big enough and lasts long enough for a human to notice it on a screen, the HFT computers have already decided not to trade it. Why didn't they trade it? Usually because of the bid-ask reality (Reason 1) or the cost stack (Reason 2). The gap on your screen looks tasty precisely because the algos already politely declined.

⏳ HOW THE GAME CHANGED

BSE-NSE arbitrage was real once. Just not anymore.

This wasn't always impossible for retail traders. Each decade closed the door a little further.

1990s
Phone-broker era

Trades placed by phone. Real, persistent price gaps. Some retail traders actually arbitraged for a living.

2000s
First online era

Online trading screens arrived, but execution still measured in seconds. Some edge survived for fast clickers.

2010s
Algorithmic trading

Computer programs took over. Spreads tightened. Retail arbitrage started losing to costs more often than not.

2020s
Co-location era

Microsecond execution from inside the exchange. The gap you can see is the gap the algos already rejected.

None of this is anyone's fault. It's just how the game evolved. Pure mechanical price-gap trading became something computers are extremely good at, and humans aren't.

BSE-NSE arbitrage has been over for retail traders for at least a decade. If anyone is selling you a course on it, they're selling you a 2005 game.

One newer wrinkle worth knowing about. Since March 2024, NSE has offered an optional "T+0" settlement cycle for certain stocks.

Quick translation: settlement is when the share and money actually change hands. Until recently, that took one day after the trade (T+1, meaning Trade-day plus one). T+0 means same-day settlement.

!

T+0 doesn't bring arbitrage back either. Faster settlement is good for managing your cash, but it doesn't shrink the bid-ask spread, doesn't lower the costs, and definitely doesn't make you faster than the algos.

The good news

How regular people actually make money in markets

The reason BSE-NSE arbitrage is dead for retail is the same reason it's such a popular question. It looked like an easy edge. Two prices, click click, profit. Anything that easy was always going to get taken by computers the moment it became cheap enough to automate.

Here's the good news, though. There are real things you have that the algos don't:

Time. An algo has to make money this minute, this hour, today. You don't. You can buy a great company and hold it for three years.

Patience. An algo has to keep trading. That's its whole job. You can sit out 95 trades that look "okay" and only take the 5 that look great.

Judgement. An algo follows rules. You can read about a company, understand its business, and decide whether it's worth owning. The algo just sees patterns in numbers.

The way regular people make money in stocks isn't fancy. Pick good companies. Buy them when they're not overpriced. Hold them when most people are panicking.

That's it. It's not glamorous and it's not fast. But it works, and nobody can take it away from you.

The first concrete step is figuring out which companies are worth your attention. There are over 2,000 stocks listed in India, and most of them aren't worth owning. You need a way to filter.

⚙ FROM THE TOOLKIT

Screener — find the few stocks worth your attention

Screener takes all 2,000+ Indian listed stocks and filters them by what actually matters: companies making real money, with low debt, growing profits, and managed by trustworthy people.

You set the rules once. It does the boring filtering work. The market shrinks from "intimidating list of thousands" to "a manageable shortlist of fifteen."

This is the work that actually pays. Not chasing price gaps that aren't really there.

Open Screener →

The bottom line on BSE-NSE arbitrage

The trade looks like free money on the screen. It isn't. Three things stand between the gap you see and any money in your account: the bid and ask aren't what the LTP shows, the costs eat what's left, and computers in the exchange building beat you to anything that does survive both. The trade you imagined doesn't exist for regular traders.

The good news is that you don't need it. The way regular people actually make money in markets is slower, more boring, and more durable than any arbitrage. It's worth learning. Spend your energy there.

The arbitrage rabbit hole was a detour, not a roadblock.

Frequently asked questions

Quick answers to the questions that usually come up next.

Can I really buy on NSE and sell on BSE?

Yes, technically. Since SEBI's interoperability rule in 2019, shares you buy on one exchange can be sold on the other. Most brokers support this for regular trades.

Whether you can do it as a same-day intraday trade depends on your broker. Some brokers require both sides of an intraday trade to happen on the same exchange. Always check your broker's rules first.

So can I make money doing BSE-NSE arbitrage intraday?

Mechanically possible at some brokers. Financially, almost never. The gap you see on the screen usually shrinks to a few paise once you account for actual bid and ask prices. After brokerage, taxes (STT), exchange fees, GST, stamp duty, and slippage, the trade typically ends up flat or in a loss.

Why do NSE and BSE show different prices for the same share?

Each exchange has its own pool of buyers and sellers, separately matching trades. Tiny price differences appear naturally because trades aren't perfectly synchronized between the two.

Most differences also look bigger than they really are because the prices you see (LTPs) are slightly out of date. They're the price of the most recent trade, not the price you can trade at right now.

Is the LTP the same as the price I can buy or sell at?

No. LTP (Last Traded Price) is the price someone else paid recently. It's like the chalkboard outside a coffee shop showing the last cappuccino's price.

To actually buy, you have to pay the current ask (the price someone is willing to sell at). To sell, you have to take the current bid (the price someone is willing to buy at). Bid and ask are usually a little different from each other and from the LTP.

What charges actually apply to a BSE-NSE arbitrage trade?

For an intraday trade, you'll pay brokerage on both legs (around ₹20 each at a discount broker), STT (a tax on selling, 0.025% of the sell value), exchange transaction charges, a small SEBI fee, stamp duty on the buy side, and 18% GST on top of brokerage and exchange fees.

For delivery (holding for more than a day), STT jumps to 0.1% on both buy and sell, which makes the cost stack much heavier.

Does T+0 same-day settlement help?

T+0 (introduced by NSE in March 2024 for some stocks) means same-day settlement, which is great for managing your cash. But it doesn't shrink the bid-ask spread, doesn't lower brokerage or taxes, and definitely doesn't make you faster than the trading algos.

The three real problems (the screen lies, the costs, the speed) are all still there.

Is there ANY case where this is useful?

One small case. If you already own a stock and notice a clear price difference between the exchanges, you can sell on the higher one and buy back on the lower one. You're not earning the gap, you're just avoiding paying it.

The savings are small (usually a few hundred rupees per year on stocks you already hold). It's a nice-to-have, not a strategy.