Skip to content

Half the movement is the spread

A thin smallcap oscillates all afternoon on no news, and a pull-back rule tested on it wins four times out of five. Traded live it loses on almost every attempt. The oscillation was real, the backtest was arithmetically correct, and neither of them was about the stock.

Technical AnalysisAdvanced13 min read
Browse Technical Analysis(132)

A smallcap has been sitting in your watchlist for a fortnight. On the one-minute chart it does something that looks almost designed: it drops about 1.5%, comes back, drops again, comes back, all afternoon, on no news at all. You write the obvious rule — buy the dip, sell the recovery — and test it on two years of one-minute data. It wins 78% of the time. You trade it for three weeks and lose money on almost every attempt, including the attempts that the chart afterwards shows were correct. Nothing on your screen was wrong. The prices were real prices, the test arithmetic was right, and the thing being measured was not the stock.

Every point on a price chart is a Last traded price — a price at which somebody actually transacted. And almost nobody transacts at the middle of the market. A buyer in a hurry pays the offer; a seller in a hurry accepts the bid. So the series your chart is drawn from is not a series of values. It is a series of values plus a record of which side was impatient, and that record flips constantly.

Think of it like this
The jeweller’s two rates

A sarafa shop displays two rates all day — one at which it buys your gold and a higher one at which it sells you gold. Suppose the underlying rate does not move a paisa between eleven and four. Now write down, in order, the price of every transaction that happened at that counter: a sale, a purchase, a sale, two purchases. The list zig-zags. Show the list to somebody who never saw the board and they will tell you gold was volatile that afternoon. It was not. You have shown them a record of who walked in, not a record of the price.

In the market

The exchange displays two rates too, and prints only transactions. A chart of last traded prices in a wide-spread stock is that same list, plotted. The zig-zag is genuine, in the sense that each print really happened; it carries no information about value, because it is generated by the alternation of impatient buyers and impatient sellers rather than by anybody changing their mind.

The arithmetic, on a day when nothing happened

Worked example
A stock whose value does not move at all
A thin scrip with a [[Mid price]] of ₹200 all day. Best bid ₹199, best offer ₹201 — a spread of ₹2, or 1% of the mid. Sixty trades arrive, alternating between impatient buyers and impatient sellers
The printed seriesEach print is a real trade at a real price. There is no print at ₹200, because nobody transacts at the mid201, 199, 201, 199, …
The return between consecutive prints₹2 on a ₹200 stock, sixty times over. On a one-minute chart this is a full day of vigorous two-way actionAbout ±1%
What the daily candle recordsOne per cent of the mid, on a day when the value of the company did not move by a rupee. Both extremes are spread, not movementHigh ₹201, low ₹199, range ₹2
What the pull-back rule finds in the printed seriesAnd it finds it on nearly every occasion, because the side of the next print is close to a coin flip. Hence the 78% win rateBuy at 199 after a down print, sell at 201 on the recovery: +₹2
What the same rule can actually transactTo buy you must pay what sellers are asking, and to sell you must accept what buyers are bidding. There was never a moment at which ₹199 was available to a buyerBuy at the offer ₹201, sell at the bid ₹199: −₹2
The gap between test and accountOne spread crossed on the way in and one on the way out. The backtest did not merely overstate the edge — it reported the cost of the round trip as the profit of it, with the sign reversed₹4 a share, being two spreads
The rule was not a bad rule badly tested. It was a measurement of the spread, dressed as a signal, and the 78% win rate is what a coin flip looks like when every outcome is scored at the wrong price. Notice what would have caught it and what would not: more data would not have caught it, because two more years of prints contain two more years of the same bounce. A longer bar would have reduced it. Testing at the price you could have touched — buy at the offer, sell at the bid — would have killed it outright, in one afternoon, before any money was involved.

It shrinks as the bar lengthens, and that is the practical fix

The bounce adds roughly one spread’s worth of width to a bar, more or less regardless of how long the bar is — because a bar records the highest print and the lowest print, and in a two-sided market those are an offer and a bid. Genuine movement, on the other hand, accumulates as the bar lengthens. So the bounce’s share of what you measure falls steadily with the timeframe, which means the fix is not a cleverer indicator; it is a longer bar.

Bar lengthGenuine movement in the barWhat the bar measuresShare that is spread
1 minute₹0.10₹0.90About 89%
15 minutes₹0.39₹1.19About 67%
One session₹1.94₹2.74About 29%
One week₹4.33₹5.13About 16%
A construction, not a measurement: one stock with an 80-paise spread around a ₹48 mid, whose genuine one-minute travel is taken as 10 paise and is then scaled up by the square root of the number of minutes — 375 in an Indian equity session. The scaling is a convention rather than a fact, and the fourth lesson in this module is how you check it on a particular name. The pattern survives any reasonable choice of inputs: the same stock is nearly unreadable intraday and perfectly readable weekly, and no setting on the chart changes that.
Where the bounce decides what you see, and where it is irrelevant
It dominates
  • Spread of one or two per cent — thin smallcaps, most of the SME platform, anything with a handful of trades a minute
  • Short bars: one-minute and five-minute charts, where the spread is comparable to the bar’s whole range
  • Anything that counts reversals — pull-back rules, oscillator crossings, doji and inside-bar counts, tests of mean reversion
  • Volatility measures taken from prints: ATR on an intraday chart reads mostly spread, so a stop set at a multiple of it is sized against the spread
It is negligible
  • A large cap where the best bid and best offer sit one tick apart: five paise on a ₹1,500 share is 0.003% against a daily range of a per cent or more
  • Daily and weekly bars on any reasonably traded name
  • The exchange’s official close in a name that actually trades through the last half-hour, because it is then a volume-weighted average of that window and therefore averages both sides of the spread together — the carve-out for thin names is below
  • Trend measures over long horizons, where genuine movement is orders of magnitude larger than one spread
Loading interactive demo…

There is no price at the middle. Thin the levels out and watch the two prices a trade can actually happen at move further apart — every point on a chart of that stock is one or the other.

The four-line habit

  1. 1
    Record the spread next to the price, once per name

    Best bid, best offer, the mid, and the spread as a percentage of the mid. Take it twice — once mid-morning and once mid-afternoon — because the first fifteen minutes and the last are not representative of either.

  2. 2
    Divide the spread by the typical range of the bar you trade

    This one ratio decides whether the chart in front of you is readable at that timeframe. Above roughly a third and you are mostly looking at the spread; the honest responses are to lengthen the bar or to drop the name, and there is no third option that involves an indicator.

  3. 3
    Test at the price you could have touched

    Buys fill at the offer, sells at the bid. A test run on last traded prices credits you with both halves of every spread you would in fact have paid, and that error is largest in exactly the names where a pull-back rule looks best.

  4. 4
    Prefer the official close to the last print — and then check whether you actually got one

    The exchange’s close is an average across the last half-hour and therefore across both sides of the market, so it carries far less bounce than the final trade of the day. The carve-out matters more than the rule, because it bites in exactly the names this lesson is about: where a security did not trade at all in that final window, the last traded price stands in as the official close, bounce and all — and where it traded four times, the "average" is an average of four prints that were each at somebody’s bid or somebody’s offer. The protection is proportional to how much trading went into the window, which in a thin scrip can be none. An earlier lesson in this track deals with the two different daily closes and where each comes from.

◆ Your call

The perfect range

A ₹42 smallcap has traded between ₹41 and ₹43 for six weeks, touching both ends repeatedly on the daily chart. The best bid is ₹41.75 and the best offer is ₹42.35. Your written pull-back rule, tested on the print series, shows a 74% win rate and an average gain of 1.1% a trade.

Check yourself

A scrip has a best bid of ₹47.60 and a best offer of ₹48.40 all day. Sixty trades print, alternating between the two, and no other price trades. What does the daily candle look like, and what does an ATR-based stop do with it?

Simple bhasha mein
Sarafa ke do bhaav

Sarafa ki dukaan pe do rate board pe likhe hain — aapse sona ₹199 mein lenge, aapko ₹201 mein denge. Maano dopahar bhar asli bhaav ek paisa nahi hila. Ab us counter pe hue saare saudon ki list banao: ek bikri, ek kharidi, phir bikri — 201, 199, 201, 199. List zig-zag kar rahi hai, aur jisne board nahi dekha woh list dekh ke kahega "aaj sona bahut oopar-neeche hua". Kuch nahi hua. Aapne bhaav ka record nahi dikhaya — kaun andar aaya, uska record dikhaya hai. Chart pe bilkul yahi hai: har point ek asli sauda hai, aur beech waale ₹200 pe sauda hota hi nahi. Bid ₹199, offer ₹201: candle ka high 201, low 199, range ₹2 yaani 1% — us din jab company ki keemat ek rupaya nahi badli. Ab "girawat pe khareedo, wapsi pe becho" rule ko print series pe test karo: 199 pe liya, 201 pe becha, +₹2, aur 78% baar sahi. Live mein? Khareedne ke liye offer dena padta hai — ₹201 — aur bechne pe bid milta hai — ₹199. −₹2. Farq ₹4, yaani do spread: ek andar jaate waqt, ek bahar aate waqt. Test ne round trip ka kharcha munafa likh diya, sign ulta karke. Do saal ka extra data isse nahi pakadta, kyunki usmein wahi bounce bhara hai; bada bar isse chhota karta hai, aur "offer pe kharid, bid pe bikri" waala test isse ek shaam mein maar deta hai.

What to remember
  • Every point on a chart is a trade, and every trade happened at the bid or the offer — never at the middle.
  • Bid-ask bounce is movement caused by consecutive trades landing on opposite sides of the spread.
  • It widens each bar by roughly one spread, so its share of what you measure falls as the bar lengthens.
  • It manufactures apparent mean reversion, so any thin name will test as reverting whatever it is doing.
  • Divide the spread by the typical bar range: above about a third, the chart at that timeframe is mostly spread.
  • Test at the touchable price — buys at the offer, sells at the bid — or the round-trip cost gets reported as profit.
Finished this lesson?

Mark it done to track your progress through the curriculum.