15.1 Playbook 1: a swing breakout from a volatility contraction (BEL, March 2026)
15.1.1Prerequisites and what this playbook teaches#
Read first (essential) M04 · 4.2.2 (Minervini's Trend Template and the volatility contraction pattern as Definitions 4.6 and 4.7), M04 · 4.2.5 (the breakout archetype and Proposition 4.5), M04A · 4A.7–4A.8 (ATR stops and the trailing-stop rule), M03 · 3.1, 3.1.1 and 3.9.
For depth: M04 · 4.3 (the momentum evidence behind breakouts) and the law-of-the-peak derivation in M04A · 4A.8.
The playbook teaches how to turn a chart pattern into a scan, how the stop sets the size, how a trailing stop is updated from data, and how little one breakout says about a breakout method.
15.1.2The setup as testable rules#
All prices are daily bars; are close, high, low and volume on day .
- Trend Template (M04 Definition 4.6, criteria 1–7): above its 150- and 200-day simple moving averages (SMAs); SMA150 above SMA200; SMA200 above its value 21 sessions earlier; SMA50 above SMA150 and SMA200; above SMA50; the 52-week low and the 52-week high.
- Relative strength (criterion 8, approximated): the stock's 12-month return is at or above the 70th percentile of the 50 stocks.
- Volatility contraction (M04 Definition 4.7, one codable version): in the last 65 sessions, swing highs are days whose high is the maximum of the 11-day window centred on them, confirmed five days later (). The first swing high must be the highest high of the window. Each swing high starts a contraction whose depth is the fall to the lowest low before the next swing high (for the last one, before today). Require 2 to 6 contractions with strictly decreasing depths. The pivot is the last swing high.
- Volume dry-up: the 10-day average volume before today is below the 50-day average.
- Breakout: today's close is above the pivot and yesterday's close was not; relative volume .
- Stop: 0.5% below the low of the last contraction; reject the signal if this is more than 10% below the close.
- Entry: buy at the next session's open.
- Exit: the initial stop, then a chandelier trail (M04A · 4A.7): after each close, stop . Stops move only up. No target; no time stop; hold through scheduled results.
What is left out Minervini's SEPA adds fundamentals (earnings and sales acceleration) and a catalyst; those need point-in-time data the course does not have. O'Neil's market filter "M" (M04 Definition 4.8: Nifty above a rising 200-day SMA) is not part of the rules above. I ran the scan with and without it before choosing: with the filter, the scan finds two signals between June 2025 and October 2026, both in 2025, and none in 2026, because the Nifty closed below its 200-day average on 27 Feb 2026 and stayed there to the end of the data. The playbook trades the version without the filter and uses the filter's verdict in the post-mortem. That is a choice made with knowledge of the scan output, and you should discount the result accordingly.
15.1.3The scan and the episode#
Data: Yahoo daily bars for the 50 constituents from 3 Jun 2024 to 5 Nov 2026 (unadjusted prices; the adjusted close was used only to check for dividends inside the trade). Window: 1 Jan 2026 to 31 Oct 2026, chosen as "this calendar year". The scan (rules 1–6) returns this first signal:
| Field | Value |
|---|---|
| Stock, date | Bharat Electronics (BEL), Monday 2 Mar 2026 |
| Base | swing highs 3 Feb (₹460.00) and 18 Feb (₹453.50) |
| Contractions | 7.5% (₹460.00 to ₹425.55 on 6 Feb), then 5.1% (₹453.50 to ₹430.35 on 24 Feb) |
| Pivot | ₹453.50 |
| Breakout close | ₹453.95 (previous close ₹444.70) |
| Volume | 3.50 crore shares against a 50-day average of 1.70 crore: RVOL 2.06 |
| RS percentile | 98 |
| Stop |
The NSE cash-market bhavcopy for 2 Mar 2026 confirms the bar (open 442.10, high 456.70, low 441.70, close 453.95). The context matters: 2 Mar was the first session after US and Israeli strikes on Iran over the weekend of 28 Feb–1 Mar (M02 · 2.10.4). The Nifty fell 1.24% to 24,865.70 and India VIX rose from 13.70 to 17.13, while a defence-electronics stock broke out on heavy volume.
Over the whole period from June 2025 to October 2026 the same rules produce seven signals in the 50 stocks. Their outcomes are in 15.1.7.
15.1.4The plan before entry#
Thesis. A Trend-Template leader with two tightening contractions and a volume dry-up closes above its pivot on twice its average volume. If momentum continues (M04 · 4.3), the drift after entry is positive, and the trailing stop is meant to capture it (M04A Proposition 4A.11).
Entry trigger. Buy at the open of the next session. There was no session on Tuesday 3 Mar (Yahoo has no bar, and the NSE F&O bhavcopy URL for 3 Mar 2026 returns HTTP 404, consistent with a market holiday), so the order executes at the open of Wednesday 4 Mar. BEL opened at ₹460.00, 1.3% above the signal close; with 0.1% slippage the fill is .
Initial stop and invalidation. ₹428.20. A close back inside the base is not by itself an exit under these rules; only the stop is.
Size (M03 (3.23)). Risk per share , 7.0% of the entry price. shares; ; position value ₹1,42,282, 14% of capital. The gap at the open widened the risk per share from ₹25.75 (at the signal close) to ₹32.26 and cut the size accordingly.
Costs. A round trip of 309 shares bought at ₹460.46 and sold near the stop costs about ₹369 (computed in 15.1.6), . Slippage of 0.1% on each side adds about .
Expected R and break-even win rate (M04 Proposition 4.5). With average winner and costs in R, the break-even win rate is . For (the archetype of M04 · 4.2.5) and , ; for , 35.5%. If the practitioners' claim of a 35–40% win rate at were true, expectancy would be to . Neither number is evidence; M04 · 4.2.5 calls them the profile of a modest real drift, if there is one.
15.1.5Day-by-day management#
at close is before costs. ATR is Wilder's 14-day ATR at that close.
| Date (2026) | Open | High | Low | Close | R at close | ATR | Stop in force | Nifty close | India VIX | Decision |
|---|---|---|---|---|---|---|---|---|---|---|
| Wed 4 Mar | 460.00 | 460.85 | 444.50 | 446.85 | −0.42 | 11.52 | 428.20 | 24,480.50 | 21.14 | Bought 309 at 460.46. Stop order placed for 09:15 each day. |
| Thu 5 Mar | 448.80 | 467.90 | 445.85 | 460.00 | −0.01 | 12.27 | 428.20 | 24,765.90 | 17.86 | Highest close 460.00; trail , below the stop. No change. |
| Fri 6 Mar | 462.00 | 473.45 | 460.35 | 468.45 | +0.25 | 12.36 | 428.20 | 24,450.45 | 19.88 | New highest close. Trail : stop raised to 431.37. |
| Mon 9 Mar | 470.00 | 470.00 | 450.00 | 457.35 | −0.10 | 12.90 | 431.37 | 24,028.05 | 23.36 | Nifty −1.7%. Nothing to do. |
| Tue 10 Mar | 465.00 | 465.80 | 453.55 | 463.35 | +0.09 | 12.85 | 431.37 | 24,261.60 | 18.91 | Hold. |
| Wed 11 Mar | 463.50 | 469.80 | 453.25 | 454.10 | −0.20 | 13.12 | 431.37 | 23,866.85 | 21.06 | Hold. |
| Thu 12 Mar | 452.00 | 455.00 | 448.50 | 453.55 | −0.21 | 12.65 | 431.37 | 23,639.15 | 21.52 | Hold. |
| Fri 13 Mar | 451.90 | 452.40 | 433.65 | 439.40 | −0.65 | 13.16 | 431.37 | 23,151.10 | 22.65 | Close ₹8 above the stop over a weekend. The rule says hold; the stop stays where it is. |
| Mon 16 Mar | 431.90 | 437.80 | 422.25 | 429.50 | — | 13.45 | 431.37 | 23,408.80 | 21.60 | Opened above the stop, traded through it: sold 309 at 430.94 (). |
There were no scheduled company events in the nine sessions (BEL's next results date in Yahoo's calendar was in May). The market events were the war and the oil price: the Nifty fell 5.9% from the signal close to the exit, India VIX was above 17 every day, and the realised daily volatility of the index roughly doubled in March (M02 · 2.10.4).
15.1.6Exit and result#
| Item | ₹ |
|---|---|
| Gross P&L: | −9,121.68 |
| Brokerage (2 orders, ₹20 cap binds) | 40.00 |
| STT (0.1% of buy and sell value) | 275.44 |
| NSE transaction charges | 8.46 |
| SEBI fee | 0.28 |
| Stamp duty (0.015% of buy value) | 21.34 |
| GST (18% of brokerage + transaction + SEBI) | 8.77 |
| Depository charge (illustrative) | 15.00 |
| Total costs | 369.29 |
| Net P&L | −9,490.97 |
| Result in R | −0.952R (−0.95% of capital) |
Tax (M01 · 1.8, M00 · 0.7). Shares held for 12 days give a short-term capital loss. STT is not deductible in computing capital gains; brokerage and other transfer expenses are. The capital loss is therefore about . Set off against short-term gains elsewhere in the same year, it reduces tax by ; if unused, it carries forward eight years. The after-tax loss is not "−₹9,491"; it depends on the rest of your year.
15.1.7Post-mortem#
What went right. The plan was executed as written. The stop was placed where the base would be broken, the size followed from it, and the loss was 0.95R, not more. After the exit BEL closed the week of 27 Mar at ₹404.75, another 6% lower; a trader who had widened the stop to "give it room" would have been looking at a loss of about 1.7R at that close (M04A Proposition 4A.14). The trailing stop moved once, by ₹3, which changed the outcome by ₹980.
What went wrong, and which rules were weak.
- The market filter. The trade was a breakout against a falling market on the first day of a geopolitical shock. M04 Definition 4.8 would have kept you out. The filter did its job here, but one trade cannot show that it adds value in general; in 2025 it would also have removed nothing (both 2025 signals pass it).
- The base was defined by one print. The base's first swing high, ₹460.00 on 3 Feb, was that day's open, and the stock closed at ₹438.95. Depth 1 and the 52-week-high test both rest on a single auction print. A rule that uses closes, or requires the swing high to be confirmed by a close near it, would have drawn a different base.
- The breakout was marginal. The close was ₹0.45 above the pivot, 0.1%. A filter such as "close at least 0.5 ATR above the pivot" would have rejected it. Adding that filter now, after seeing the loss, would be fitting the rules to one trade; the honest response is to test it across many signals (M04 · 4.6).
- The gap at entry. Buying at the next open meant buying ₹6.05 higher than the signal close. A buy-stop at the pivot during the signal session would have filled near ₹454, with a smaller risk per share and a larger position. Neither is right in general; it is a design decision to test.
What the statistics say. The same rules, without the market filter, produced seven signals in the 50 stocks from June 2025 to October 2026:
| Signal | Stock | Exit | Net R |
|---|---|---|---|
| 20 Jun 2025 | BHARTIARTL | trailing stop | +0.018 |
| 12 Sep 2025 | BEL | trailing stop | +0.011 |
| 2 Mar 2026 | BEL | trailing stop | −0.952 |
| 5 Mar 2026 | HINDALCO | gapped through the stop | −1.156 |
| 28 Apr 2026 | ONGC | initial stop | −1.005 |
| 30 Apr 2026 | BAJAJ-AUTO | trailing stop | −0.242 |
| 13 Jul 2026 | BAJAJ-AUTO | trailing stop | +1.871 |
The mean is , the standard deviation , and the -statistic . Note the HINDALCO trade: a gap through the stop produced , the left tail that M03 · 3.9 warns about. Seven trades cannot distinguish an edge of from zero or from . M03 Corollary 3.1.2 says that for a breakout system with and you need trades for an 80% chance of reaching (82 for in expectation). At the rate this scan produces signals in the Nifty 50 (seven in 17 months), 166 trades take about 34 years. The rule set cannot be validated on 50 stocks; it needs a broader universe (the Nifty 500), point-in-time membership, and the walk-forward and multiple-testing protocol of M04 · 4.4–4.6. The external evidence for the archetype is momentum (M04 · 4.3: the IIMA momentum factor's long-run return in India), not the pattern itself; and on the Nifty itself M04A Case 1 found 20-day breakouts indistinguishable from a random walk with drift.
15.1.8Do it in the simulator#
Open Simulator → New order. Run the scan above on the latest data (the code is in the module's scripts; the rules are fully specified in 15.1.2) and write down the result before looking at any chart.
- If a stock qualifies, enter a buy order for the next session with the quantity from (3.23), the stop 0.5% below the last contraction low, and the thesis in one sentence. Record the market-filter state (Nifty versus its 200-day SMA) in the journal.
- If nothing qualifies, which is the common case, place no trade. Instead, practise the ticket: for BEL.NS, take the last close as the entry and the lowest low of the last ten sessions minus 0.5% as the stop, compute , and enter it as a paper order. Then update the chandelier stop after each close for two weeks and log each change with its arithmetic.
- After the trade closes, record R, costs and rule breaks. Do not judge the setup on this trade; add it to a log of at least 30 before you look at the mean.
See it live: BEL's current price at https://oicharts.com/stocks/BEL and the Nifty 50 level for the market filter at https://oicharts.com/indices/nifty-50 .
Data lab
Replay: BEL volatility-contraction breakout, March 2026
Replay of Playbook 15.1 (15.1.3–15.1.6). Step through the bars from mid-January and mark the two contractions yourself before the replay reaches 2 Mar: swing high, swing low, depth. Do your depths match 7.5% and 5.1%? Then watch the base's first high: it is a single opening print on 3 Feb.
Questions
- Re-draw the base using closes instead of highs and lows. Where would the pivot and the stop be, and would the 2 Mar close still be a breakout?
- Add the Nifty (second data series) and its 200-day average. On which date did M04 Definition 4.8 switch off, and how many sessions before the signal?
- Recompute the chandelier stop with 2 ATR and with 4 ATR. Would the exit date or price change?
- The stock closed the week of 27 Mar at 404.75. What R would a trader who had moved the stop to "below the March low" have taken, and what does M04A Proposition 4A.14 say about that decision?