Markets: A Rigorous Course

15.2 Playbook 2: a pullback to the 20-day average in a sector leader, with a time stop (Coal India, April 2026)

Core about 25 min

15.2.1Prerequisites and what this playbook teaches#

Read first (essential) M04 · 4.1.3 (what moving averages are), M04 · 4.3 (momentum and short-term reversal: the evidence, not the decompositions), M04A · 4A.6 (stop-out probabilities, Table 4A.1), 4A.8 (the trailing-stop rule) and 4A.10 (time stops and Proposition 4A.13), M03 · 3.1.1.

For depth: M04 · 4.6 (how many setups you tried before this one) and M04A · 4A.9 (why scaling in cannot create edge).

The playbook teaches a buy-stop entry, a stop placed from volatility, a breakeven rule, a time stop, and above all the habit of comparing a setup with a null: the same exits applied to random entries.

15.2.2The setup as testable rules#

The rules were fixed before the scan was run.

  1. Universe and sectors. The 50 stocks, grouped by NSE's industry label in the constituent file; groups with at least two members.
  2. Sector leader on day tt: the stock with the highest 126-session (six-month) return in its group, and in the top 30% of the 50 by that return.
  3. Trend: Ct>SMA50>SMA200C_t > \mathrm{SMA}_{50} > \mathrm{SMA}_{200} and SMA50 higher than ten sessions earlier.
  4. Extension: in the ten sessions before tt, at least one close at or above SMA20+ATR14\mathrm{SMA}_{20} + \mathrm{ATR}_{14} (the stock was stretched above its 20-day average).
  5. Pullback day tt: Lt≤SMA20,tL_t \le \mathrm{SMA}_{20,t} and Ct>SMA50,tC_t > \mathrm{SMA}_{50,t} (the low tags the 20-day average; the close holds above the 50-day).
  6. Entry: a buy-stop at 1.001×Ht1.001 \times H_t, valid for the next two sessions; the fill is the higher of the open and the trigger, plus 0.1% slippage. If not triggered, cancel.
  7. Initial stop: Lt−0.5 ATR14,tL_t - 0.5\,\mathrm{ATR}_{14,t}.
  8. Management: once a close reaches +1R+1R, move the stop to the entry price (breakeven); thereafter trail at max⁡(stop,highest close−2 ATR14)\max(\text{stop}, \text{highest close} - 2\,\mathrm{ATR}_{14}).
  9. Time stop: if no close has reached +1R+1R by the tenth session after entry, sell at that close (M04A Proposition 4A.13: hold for the horizon over which the edge is believed to exist, and no longer).

15.2.3The scan and the episode#

Data: as in 15.1. Window: 1 Apr 2026 to 31 Oct 2026, chosen to begin after the March sell-off so that this playbook does not repeat 15.1's regime. The first signal:

Field Value
Stock, date Coal India (COALINDIA), Monday 6 Apr 2026
Group "Oil Gas & Consumable Fuels" (COALINDIA, ONGC, RELIANCE); COALINDIA the leader
Six-month return 18.3%, 90th percentile of the 50
Pullback bar open 449.30, high 461.45, low 447.40, close 459.55
Averages SMA20 452.49, SMA50 437.47, SMA200 401.25; ATR 13.67
Extension 20 Mar close 468.15 against SMA20 + ATR = 444.98 + 12.90 = 457.88

The NSE cash bhavcopy for 6 Apr confirms the bar. The Nifty was at 22,968.25, below its 200-day average and 8.8% below its close of 27 Feb; India VIX had been 27.89 a week earlier.

15.2.4The plan before entry#

Thesis. In a falling market, the strongest stock of a strong group has pulled back to its 20-day average and bounced on the day. Short-term momentum in the leader is expected to resume. The thesis is wrong if the stock breaks the pullback low by more than half a day's range.

Entry. Buy-stop at 1.001×461.45=₹461.911.001 \times 461.45 = \text{₹}461.91 for 7–8 Apr.

Stop. 447.40−0.5×13.67=₹440.57447.40 - 0.5 \times 13.67 = \text{₹}440.57.

Size. If filled at the trigger with slippage, Pe=461.91×1.001=₹462.37P_e = 461.91 \times 1.001 = \text{₹}462.37, risk per share ₹21.80 (4.7% of price), Q=⌊10,000/21.80⌋=458Q = \lfloor 10{,}000/21.80 \rfloor = 458 shares, 1R=₹9,984.401R = \text{₹}9{,}984.40, position value ₹2,11,765 (21% of capital).

Costs and break-even. Round-trip costs are about ₹523 (c=0.052Rc = 0.052R); slippage of 0.1% each side adds 0.041R0.041R. The stop is tight, so frictions are almost 0.1R0.1R per trade. With W=1.5RW = 1.5R (a plausible average winner for a ten-day trade), p∗=(1+0.093)/2.5=43.7%p^* = (1 + 0.093)/2.5 = 43.7\%; with W=2W = 2, 36.5%.

How likely is the stop on noise alone? By M04A (4A.12), ATR≈1.596 σS\mathrm{ATR} \approx 1.596\,\sigma S, so the stop sits 21.80/13.67×1.596=2.5521.80/13.67 \times 1.596 = 2.55 daily standard deviations below the entry. Table 4A.1's formula 2Φ(−k/n)2\Phi(-k/\sqrt n) gives a 42% chance of being stopped within ten sessions in a driftless market. The time stop closes most of the remaining trades.

15.2.5Day-by-day management#

Date (2026) Open High Low Close R at close SMA20 Stop Nifty close Decision
Tue 7 Apr 458.05 463.80 455.30 463.00 +0.03 453.17 440.57 23,123.65 High crossed 461.91: bought 458 at 462.37. Session 0 of 10.
Wed 8 Apr 464.00 464.00 447.00 449.25 −0.60 453.61 440.57 23,997.35 Nifty +3.8% on the day; COALINDIA −3.0%. Hold; no rule triggered.
Thu 9 Apr 449.25 456.20 447.85 454.10 −0.38 454.44 440.57 23,775.10 Hold.
Fri 10 Apr 455.00 459.60 427.50 434.10 — 453.96 440.57 24,050.60 Opened above the stop, fell through it: sold 458 at 440.13 (440.57×0.999440.57 \times 0.999).

No results or dividend fell in the window: Coal India's results date in Yahoo's calendar was 26 Apr, and its dividends were paid in February and July (the adjusted-close ratio is constant over the trade). The 10 Apr fall of 4.4% on 2.6 times the 50-day average volume has no scheduled cause in the data I have; I do not know why it happened, and the plan did not need to.

The informative row is 8 Apr. The index had its largest up-day of the period (M02 · 2.10.4 lists it: +3.78%), and the "leader" fell 3%. A leader in a falling market is often a defensive or commodity stock that people owned because it was not falling; when the market turns, money rotates into what fell most. That is a hypothesis, not a finding of this playbook, but it is testable with the sector data in the scan.

15.2.6Exit and result#

Item ₹
Gross P&L: (440.13−462.37)×458(440.13 - 462.37) \times 458 −10,185.92
Costs: brokerage 40.00, STT 413.35, transaction 12.69, SEBI 0.41, stamp 31.76, GST 9.56, depository 15.00 522.77
Net P&L −10,708.69
Result in R −1.073R

The loss exceeds 1R by 0.073R: 0.052R of costs and 0.02R of slippage on the stop. That gap between "1R" on paper and the realised loss is the friction of a tight stop, and it appears on every losing trade. Tax: a short-term capital loss of about ₹10,295 (gross loss plus non-STT costs), usable as in 15.1.6.

15.2.7Post-mortem#

Rule-following. No rule was broken. The time stop never engaged; the trade lasted four sessions.

The real lesson: compare with a null. Running the same rules over the whole window gives 36 closed trades (one more was still open on 5 Nov):

Statistic 1 Apr–31 Oct 2026 1 Jul 2025–31 Mar 2026
Closed trades 36 50
Win rate 16.7% 24.0%
Mean R (net) −0.557 −0.512
Standard deviation 0.576 1.03
Exits: stop / time stop / gap 20 / 13 / 3 34 / 11 / 5
Null: same exits, random entry days (≈1,000 trades) −0.325 (s.e. 0.046) −0.290 (s.e. 0.060)

The null is not zero, because the exit engine itself loses money: about 0.1R0.1R per trade of costs and slippage with a stop this tight, gap-through fills, a breakeven rule that turns many +1R+1R paper gains into small realised losses, and whatever drift these 50 stocks had in the window. Against that null, the pullback entry did worse by about 0.23R0.23R per trade in the 2026 window (z=(−0.557+0.325)/0.5762/36+0.0462=−2.2z = (-0.557 + 0.325)/\sqrt{0.576^2/36 + 0.046^2} = -2.2; the trades overlap in time and are correlated, so the true uncertainty is larger). The earlier window tells the same story. Buying the day after a bounce from the 20-day average, at the bounce's high, bought short-term strength that reverted. That is consistent with the short-term reversal evidence of M04 · 4.3.3, and inconsistent with the idea that the setup adds anything to a trend filter in this period.

What each exit rule did. Splitting the 36 trades by how they ended:

Exit Trades Mean R Range
Stop (initial, breakeven or trail) 20 −0.78 −1.18 to +0.43
Time stop at session 10 13 −0.17 −0.97 to +0.65
Gap through the stop 3 −0.77 −1.18 to +0.06

Six of the 20 stop exits came after the trade had reached +1R+1R and the stop had moved to breakeven or above; they averaged −0.01R-0.01R, a scratch after costs. Only one of them ran far enough for the trailing stop to lock in a real gain (+0.43R+0.43R). The time stop did what Proposition 4A.13 says it should: it ended trades whose drift, if any, had not shown up within the assumed horizon, at an average loss of 0.17R0.17R instead of letting them drift to the stop. The average holding period was 7.75 sessions. A setup whose winners need more than ten sessions to reach +1R+1R is a setup whose time stop is set wrong, and one whose winners rarely reach +1R+1R at all is a setup without an edge; the data cannot yet say which, but the second reading fits the null comparison.

What to change, and how not to. The obvious fixes (a wider stop, no breakeven rule, a market filter) are each another trial (M04 · 4.6). With a 2.5 ATR stop the frictions alone would fall from 0.095R to about 0.06R (Problem 15.4). Under M04 Definition 4.8 the market filter was off for the entire 2026 window, so it would have taken no trades at all, which is a defensible outcome. A rule set worth trading has to beat its own null out of sample. This one did not beat it in sample.

How many trades would it take? For a "typical swing setup" with E=0.2RE = 0.2R and s=1.5Rs = 1.5R (M03 · 3.1.1), 225 trades for t=2t = 2 in expectation and 455 for 80% power. Here the evidence went the other way quickly because the losses were consistent; a negative edge is often easier to detect than a positive one, because costs are certain.

15.2.8Do it in the simulator#

Open Simulator → New order.

  1. On the latest data, list the leader of each NSE industry group in the Nifty 50 by six-month return, and mark which pass rule 3. Pick the first that tags its 20-day average (rule 5) this week. If none does, use the leader of the group that contains TITAN.NS and wait for the tag.
  2. Enter a paper buy-stop at 1.001×1.001\times the pullback-day high, valid two sessions, with the stop at the pullback low minus half an ATR and the size from (3.23). Write the session number on each journal entry, and close the trade at the tenth close if it has not reached +1R+1R.
  3. In parallel, enter the same size in a second stock from the same group on a random day (use a coin or a random-number generator, decided before you look at the chart), with the same stop distance in ATR units and the same exits. After ten pairs, compare the two R series. This is the null of 15.2.7 run live.

See it live: this week's sector moves at https://oicharts.com/sectors when you pick the group, then the leader's own page, e.g. https://oicharts.com/stocks/TITAN .

Data lab

Replay: Coal India pullback to the 20-day average, April 2026

Replay of Playbook 15.2 (15.2.3–15.2.6). The setup's rules are in 15.2.2; the time stop (rule 9) never engaged because the trade lasted four sessions.

Questions

  1. Find the next date after 10 Apr on which Coal India met all of rules 2–5. Would that trade have triggered, and how did it end?
  2. Move the stop to 2 ATR below the pullback low. Recompute Q, 1R and the outcome. Is the result better or worse, and why is the comparison not a test of the wider stop (M04 · 4.6)?
  3. On 8 Apr the index rose 3.8% and the stock fell 3%. Plot the stock's ratio to the Nifty for the quarter. What does "sector leader" mean when the leader is the stock that fell least in a falling market?

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.