Markets: A Rigorous Course

15.7 Playbook 7: a long-term investment from screen to buy (Bharat Electronics, June–November 2026)

Core about 40 min

15.7.1Prerequisites and what this playbook teaches#

Read first (essential) M06 (6.3 DCF, 6.4 value drivers, 6.6 reverse DCF, 6.8 forensic scores, 6.9 quality frameworks), M01 · 1.7–1.8 (delivery costs and capital-gains tax; M00 · 0.7 gives the beginner's version), M03 · 3.1.1 (how many outcomes it takes to detect an edge) and 3.9 (sizing).

For depth: M06 · 6.7 (margin of safety as a quantile of a simulated value distribution) and M14 · 14.11 (the Jhunjhunwala playbook: separating the investing book from the trading book).

The playbook runs one investment decision end to end: a mechanical quality screen on a stated universe, a valuation that becomes a probability, two forensic scores, a sizing rule for an investment book, a staged buying schedule fixed in advance, and the review triggers that would force a sale. The company worked through here is excellent on returns on capital, expensive on every valuation run here, and flagged by the Beneish model. The playbook shows what the written rules then allow, which is less than enthusiasm would like.

This is an educational reconstruction on real data, not a recommendation to buy, hold or sell any security. Prices are Yahoo Finance daily closes. FY23–FY26 fundamentals and the quarterly figures are the companies' reported consolidated statements as carried by the Yahoo Finance data feed (fetched 6 Nov 2026). The full ten-year Coffee Can test also needs FY16–FY22 statements. Those are in the companies' annual reports, which the exchanges' filing servers did not serve to the scripts used for this reconstruction, so the test is applied here to the years the reported statements in the feed cover (FY23–FY26), and the text says so wherever it matters. Assumptions are labelled as such.

15.7.2The setup as testable rules#

The rules were written for a decision date of Monday 1 June 2026, the first trading day after the deadline for audited FY26 results (SEBI's Listing Regulations require annual results within 60 days of the year end).

  1. Universe. Non-financial constituents of the Nifty 50. Lenders are excluded: their Coffee Can test (loan growth and ROE) is different, and Beneish's model is not valid for them (M06 · 6.8.1).
  2. Stage 1, recency filter. Revenue growth of at least 10% and ROCE of at least 15% in each of FY24, FY25 and FY26, with ROCE computed as EBIT over capital employed (total assets minus current liabilities). A year whose growth cannot be computed because the company changed its financial year counts as a failure.
  3. Stage 2, the Coffee Can test (M06 · 6.9): revenue growth of at least 10% and ROCE of at least 15% in every one of FY17–FY26, computed from each company's reported statements. Where earlier years cannot be obtained from primary filings, apply the test to every year that can be, state how many years that is, and carry all passers forward to valuation.
  4. Valuation (M06 · 6.7). Build the distribution of intrinsic value per share and compute p=P(V>price)p = P(V > \text{price}).
  5. Forensics (M06 · 6.8). Beneish M>−1.78M > -1.78 is a flag; Piotroski F≤4F \le 4 is a flag.
  6. Sizing. A full position is min⁡(10%, 5%/D)\min(10\%,\ 5\%/D) of the book, where DD is a stress drawdown for the stock, so that a repeat of the stress costs at most 5% of the book. Full size requires p≥0.5p \ge 0.5 and no outstanding forensic flag. A company that passes on quality but fails on price or forensics may be held only as a tracking position of 2% of the book, not to be added to until both tests pass.
  7. Staging. Three equal tranches: the first at the decision-date close; the second at the first close at or below 90% of the first price, or on 1 Sep 2026 if that comes first; the third at the next close at or below that trigger, or on 1 Dec 2026.
  8. Review triggers (sell rules): 15.7.4.

Why not the 1%-risk rule of M03 · 3.9? It needs a stop, a price that invalidates the thesis. An investment thesis concerns ten years of cash flows, and falls of 30–50% happen inside theses that remain intact (BEL fell 69% between 2017 and 2020). A tight stop turns the investment into a swing trade; a loose one makes "1% risk" a fiction. Investment books are sized by concentration and stress loss instead, which is rule 6, with an explicit budget of 5% of the book per full position.

15.7.3The scan and the episode#

Universe NSE's Nifty 50 constituent file (ind_nifty50list.csv, fetched 6 Nov 2026) has 12 Financial Services names; 38 remain. Survivorship caveat: this is the November list applied to a June decision; index changes between the two dates were not checked. A full-market screen needs ten years of statements for about 2,000 companies, which means a fundamentals database built from exchange filings; 38 companies can be checked by hand.

Stage 1 (reported statements, Yahoo feed). Five survive: Bajaj Auto, Bharat Electronics (BEL), Eicher Motors, Titan and Trent. The other 33 fail on growth (for example HUL, ITC, TCS, Infosys, Asian Paints), on ROCE (Apollo Hospitals, L&T, M&M, UltraTech) or on comparability (Nestlé India reported a 15-month period ending March 2024).

Stage 2 (reported consolidated statements, FY23–FY26; ROCE as in stage 1). Four years of ROCE and three of growth are all the primary data here allow.

Company Revenue growth FY24 / FY25 / FY26 ROCE FY23 / FY24 / FY25 / FY26 Trailing P/E, 1 Jun 2026
Bajaj Auto 23.7% / 12.5% / 22.6% 26.4% / 33.4% / 24.9% / 26.1% 27.0
BEL 14.4% / 16.1% / 15.9% 26.4% / 30.1% / 33.7% / 31.9% 49.1
Eicher Motors 14.5% / 14.2% / 24.0% 24.0% / 26.9% / 26.1% / 26.4% 35.4
Titan 25.9% / 18.4% / 44.8% 34.5% / 34.9% / 37.0% / 38.4% 70.4
Trent 50.5% / 38.3% / 17.6% 13.2% / 39.9% / 29.3% / 28.2% —

Trent fails on its FY23 ROCE; four companies pass. A four-year pass is a much weaker statement than the ten-year test the rule asks for: it says nothing about how these businesses came through FY20 and FY21, the pandemic years, which is exactly what an every-year test is designed to probe. Check FY17–FY22 against the annual reports before calling any of them a Coffee Can company.

Which of the four The rules carry all four forward. This section works BEL through in full; the choice is ours, for exposition, and is not a ranking. On trailing P/E BEL is the second most expensive of the four, and Bajaj Auto, at 27.0, the cheapest. 15.7.8 asks you to run the same steps on the other three. BEL's reported FY26 debt is ₹65.5 cr, all lease obligations, and its FY23–FY26 revenue CAGR is 15.5%.

The business BEL is a government-controlled maker of defence electronics (radars, communications, electronic warfare). Revenue is order-driven. BEL discloses its order book with its results; the figures used below, ₹73,882 cr on 1 Apr 2026, ₹72,258 cr on 1 Jul and ₹68,717 cr on 1 Oct 2026, were not checked against those filings and are unverified. Customer advances fund much of its working capital, which keeps operating capital small and ROCE high.

15.7.4The plan before entry#

Inputs on 1 Jun 2026 Close ₹407.20; 730.98 crore shares; market capitalisation ₹2,97,654 cr; trailing P/E 49.1 on FY26 EPS of ₹8.29. Cash and short-term investments ₹8,584.5 cr plus financial investments ₹624.9 cr less debt ₹65.5 cr give net cash of ₹9,143.9 cr, so the market values operations at ₹2,88,510 cr. Core NOPAT is reported FY26 operating income (revenue ₹26,796.5 cr less total expenses including depreciation: ₹7,792.3 cr, excluding ₹540.9 cr of interest income) taxed at 25.17%: ₹5,831 cr. EV/NOPAT is 49.5, and the return on operating invested capital (equity plus debt minus cash and investments, ₹14,844 cr) is 39.3%.

Discount rate (assumptions) rfr_f = 7.2% (10-year G-sec, the November level in M11 · 11.1; the June level was not verified) minus India's default spread of 1.75% = 5.45%. Equity risk premium 7.08% (Damodaran's January 2026 update, M06 · 6.5). Beta 1.0: Yahoo's 0.33 is not a credible estimate of systematic risk. With no debt, W=ke=12.53%W = k_e = 12.53\%.

DCF with a competitive-advantage period (M06 Solution 6.6). NOPAT grows at gg with return on new investment RR for TT years; afterwards new investment earns only WW:

Vops=N1W+N1g(R−W)RW⋅1−(1+g1+W)TW−g,N1=NOPAT0(1+g).V_{\text{ops}} = \frac{N_1}{W} + \frac{N_1 g (R - W)}{R W}\cdot\frac{1 - \left(\frac{1+g}{1+W}\right)^T}{W - g},\qquad N_1 = \text{NOPAT}_0(1+g).

At g=15%g = 15\% (near the FY23–FY26 revenue CAGR of 15.5%), R=35%R = 35\% (recent ROCE, rounded down) and T=10T = 10, value per share is ₹154.9; at TT = 15, 20, 25 it is ₹195.6, ₹240.9, ₹291.5.

Reverse DCF (M06 · 6.6). With g=15%g = 15\% and R=35%R = 35\%, the price requires an advantage period of $T^ = 34.7$ years. With T=10T = 10 it requires $g^ = 30.6%$ a year; with T=15T = 15, 23.2%23.2\%. Nothing in BEL's reported record resembles fifteen years at 23%. The price describes a longer runway than the record shows.

Margin of safety as a distribution (M06 · 6.7). 200,000 draws (seed 15): g∼N(15%,4%2)g \sim N(15\%, 4\%^2), R∼N(35%,10%2)R \sim N(35\%, 10\%^2), W∼N(12.53%,1%2)W \sim N(12.53\%, 1\%^2), TT uniform on 5–20 years, NOPAT0∼N(5,831,3002)\text{NOPAT}_0 \sim N(5{,}831, 300^2), rejecting R<W+1%R < W + 1\% (196,840 kept). Value per share: median ₹160.6, mean ₹187.5 (the convexity bias of Proposition 6.11), standard deviation ₹95.3; 5th/20th/80th/95th percentiles ₹100.1 / ₹121.8 / ₹234.4 / ₹364.3. p=P(V>407.20)=0.034p = P(V > 407.20) = 0.034: the price is above the 95th percentile. The input distributions are judgements; the reverse DCF says how wrong they would have to be.

Forensics (reported FY26 and FY25 statements). Piotroski F=8F = 8: only the accrual signal fails (CFO/assets 0.038 against ROA 0.149). Beneish M=−1.678M = -1.678 for FY26 and −1.667-1.667 for FY25: flagged in both years, driven by total accruals (TATA 0.1015, contributing +0.47) and receivables (DSRI 1.22, +0.20). Cash from operations was ₹1,541 cr against profit of ₹6,062 cr in FY26 (25%) and ₹564 cr against ₹5,321 cr in FY25 (11%); over FY23–FY26, 43%. Receivable days rose from 144 to 175. An innocent explanation is available: the customer is the state, the March quarter carried ₹10,224 cr (38%) of FY26 revenue, and old advances are being drawn down. The rules do not let a story clear a flag; the next balance sheet must.

Decision Quality: pass (four-year version). Price: fail (p=0.034p = 0.034). Forensics: flagged. Tracking position only: 2% of the book, ₹20,000, in three tranches of ₹6,667. For reference, BEL's largest drawdown since 2010 in the Yahoo series was −69.1% (29 Nov 2017 to 24 Mar 2020); with D=70%D = 70\% a full position would be min⁡(10%,5%/70%)=7.14%\min(10\%, 5\%/70\%) = 7.14\%, ₹71,429. The tracking position's stress loss is 2%×70%=1.4%2\% \times 70\% = 1.4\% of the book.

Costs (M01 · 1.7, statutory and exchange rates as of 6 Nov 2026). Delivery buy: STT 0.1%, NSE transaction charge 0.00307%, SEBI fee ₹10 per crore, stamp duty 0.015%, GST 18% on the exchange and SEBI charges; brokerage is an illustrative parameter set to ₹0 for delivery. About ₹7.75 on a ₹6,500 tranche (12 bp). Sale: STT 0.1%, the same exchange, SEBI and GST charges, and an illustrative depository (DP) charge of ₹15.34 per scrip per sale day.

Expected return, break-even and R With no stop and no target there is no R-multiple. Break-even is the round-trip cost, about 0.30% on ₹20,000 (the fixed DP charge weighs on a small ticket). The model's expected return is negative: the median value is 61% below the price. The tracking position is a sized bet against one's own model, justified only by model humility and capped at a stress cost of 1.4% of the book.

Review triggers, written before the first tranche Sell, or never add, if:

  1. ROCE falls below 20% in a full year, or revenue growth is below 10% in two consecutive years.
  2. The order book falls below 2.0 times trailing twelve-month revenue.
  3. Beneish flags FY27 (a third consecutive year), or FY27 cash from operations is below 25% of profit.
  4. The government's shareholding policy changes, a related-party or procurement-integrity finding appears, or the audit opinion is qualified.
  5. For a full position only: price above the 95th percentile of the current value distribution.

Upgrade to full size only if p≥0.5p \ge 0.5 (price at or below about ₹160 on these inputs) and the accrual flag clears.

15.7.5Day-by-day management#

Date Event BEL close (₹) Action under the rules
19 May 2026 FY26 results (Yahoo earnings calendar) 422.95 Rules not yet run
1 Jun 2026 Decision date 407.20 Tranche 1: 16 shares, ₹6,515.20, charges ₹7.74. Price trigger ₹366.48
22 Jun 2026 High of the holding window 431.50 None
27 Jul 2026 Q1 FY27: revenue ₹5,547.0 cr, profit ₹1,054.3 cr; order book ₹72,258 cr (unverified) 407.15 Order book / FY26 revenue 2.70: trigger 2 not hit
13 Aug 2026 Ex-date, ₹0.55 dividend (Yahoo) 410.50 ₹8.80 on 16 shares
1 Sep 2026 Time trigger (price trigger not reached) 411.20 Tranche 2: 16 shares, ₹6,579.20, charges ₹7.81
22 Oct 2026 First close at or below ₹366.48 364.50 Tranche 3: 18 shares, ₹6,561.00, charges ₹7.79
23 Oct 2026 Low of the holding window 362.00 None
30 Oct 2026 Q2 FY27: revenue ₹7,327.7 cr, profit ₹1,540.2 cr; order book ₹68,717 cr (unverified) 369.90 Order book / TTM revenue (₹30,252.9 cr) = 2.27: not hit. Receivables ₹12,036 cr against ₹12,876 cr in March (−6.5%), but 171 days of annualised H1 revenue against 175: no clear reversal (half-year cash flow not checked). No upgrade
6 Nov 2026 Mark-to-market 396.00 Hold

Tranche 2 was bought above tranche 1 because the time trigger came first. Staging by date is cost averaging; staging by price is a bet that the price comes back. The rule mixed the two, and the average cost (₹393.11) ended near the plain average of the three prices.

15.7.6Exit and result#

The position is open on 6 Nov 2026: 50 shares bought for ₹19,655.40 (average ₹393.11) plus ₹23.34 of charges, 1.97% of the book, worth ₹19,800.00 at ₹396.00.

Item ₹
Gross gain +144.60 (+0.74%)
Dividend received +8.80
Buy charges −23.34
Sale charges if sold on 6 Nov (incl. DP ₹15.34) −35.88
Net if sold on 6 Nov +94.18 (+0.48% of capital deployed; 0.009% of the book)

Tax All lots are under twelve months old, so a sale on 6 Nov would give short-term capital gain at 20% (M01 · 1.8): taxable gain ₹124.84 after the non-STT charges (STT is not deductible against capital gains), tax ₹24.97. The dividend is taxed at the slab rate. The first lot turns long-term after 1 Jun 2027 (12.5% above the ₹1.25 lakh annual exemption).

Against the index The same rupee amounts in the Nifty 50 on the same three days (closes 23,382.60, 24,055.80, 22,687.65) were up 7.14% at 25,030.35 on 6 Nov, before costs and dividends. BEL lagged by about 6.4 points. A full position would have shown roughly the same percentages on 3.6 times the capital.

15.7.7Post-mortem#

What the rules did They carried four companies through a quality screen that could be run on only four years of reported data, and for the one worked through here, with ROCE above 26% in every year available, they refused to let quality override price and accruals. Two independent checks, the reverse DCF (T∗=34.7T^* = 34.7 years) and two consecutive Beneish flags, pointed the same way.

What five months say: nothing M03 (3.2a)–(3.2b) apply with trades replaced by independent stock-years. If a selection rule earns E=3%E = 3\% a year over the index with dispersion s=25%s = 25\% a year per stock, N=(2s/E)2=278N = (2s/E)^2 = 278 stock-years give t=2t = 2 in expectation and 561 give 80% power; at E=5%E = 5\%, 100 and 202. One stock for five months is about 0.4 of one observation. The +0.48% and the 6.4-point lag are noise; the decision has to be judged on process: inputs from data, rules written first, rules followed.

Base rates Managers running Coffee Can portfolios publish their own returns; those are reported results on their own selections, not verified here, and not a base rate. The course's evidence is narrower: M06 · 6.11 shows how hard it is to beat the index after costs, and the screen here could not even be run over the full decade from primary data. How often high-ROCE companies bought at a P/E near 50 beat the Nifty over ten years cannot be estimated from the data in this course; it needs a panel built from filings.

Judgement calls to examine

  • Beta 1.0 rather than 0.33 lowered the value. Two points off WW raise the base case from ₹154.9 to ₹199.1, still under half the price, and cut T∗T^* from 34.7 to 23.2 years (Problem 15.13).
  • The tracking-position rule is the most debatable one. Its defence: a model that says the market is wrong by a factor of 2.5 on a company of this quality is more likely missing something (order visibility, a long runway in defence electronics) than the market is. Its cost: money behind a price one's own analysis rejects. The 1.4% stress cap is what makes it tolerable.
  • ROCE has several definitions in use: EBIT over total assets minus current liabilities here, operating profit over equity plus debt in many published tables. For a company with large customer advances or a large cash balance they can differ by a factor of two, so a screen is only as good as the consistency of its definitions. State yours and keep it fixed.
  • The choice of BEL among four passers was made for exposition. A rule that ranks the passers (by price, for example) must be written before the valuations are seen, or the screen becomes a search.

15.7.8Do it in the simulator#

The simulator fills equities end of day on Yahoo daily bars: a market order at the day's close (or at the open, depending on the account's fill setting); a limit order is eligible from the next open.

  1. Re-run stages 1–3 of 15.7.2 on today's Nifty 50 list with the latest annual results, computing growth and ROCE yourself from the reported statements. Use the annual reports for the earlier years so that the test covers all ten. Record the passers.
  2. Run the valuation on Bajaj Auto, Eicher Motors and Titan as of 1 Jun 2026 and see whether any earns a full position under rule 6. Then, for the company you would analyse today (choose it by a ranking rule written before you value anything), recompute the CAP valuation, the reverse DCF and pp with your own input distributions, and the Beneish and Piotroski scores from the last two annual balance sheets. Write the decision (none, tracking or full) and the review triggers in the journal before placing an order.
  3. Simulator → New order: place tranche 1 as a market order sized by rule 6 (the Preview shows charges and the position as a percentage of equity). Place the later tranches as limit orders at the price trigger, and note the time trigger.
  4. At each quarterly result, add a row with the columns of 15.7.5 and state, trigger by trigger, whether any was hit. Do not upgrade to full size unless both conditions in 15.7.4 hold.

See it live: https://oicharts.com/screener for a first pass over the Nifty 50 list (stage 1 still requires every figure to come from the reported statements), and the chosen company's page, e.g. https://oicharts.com/stocks/BEL , for the current price against your tranche triggers.

Data lab

Replay: a tracking position in BEL, June–November 2026

The replay shows the three tranches of the tracking position in 15.7 on weekly bars, with the price trigger (₹366.48) and the 95th percentile of the Monte Carlo value distribution (₹364.3). The median value of ₹160.6 is far below the chart and is not drawn: the whole holding period sits above the 95th percentile, which is why the rules allowed only a 2% tracking position.

What to look at Where tranche 2 was bought relative to tranche 1, and why (the time trigger came first); the drawdown into late October that fired the price trigger; the reaction around the two results dates. Compare the path with the Nifty 50 over the same weeks: the same rupee amounts in the index gained 7.14% by 6 Nov 2026, against 0.74% gross for BEL.

Questions

  1. Replace rule 7 by "price triggers only" (no time trigger). On these data, how many tranches would have been bought by 6 Nov 2026, and at what average cost?
  2. The position has no stop. Which of the review triggers in 15.7.4 could have been checked on each results date shown, and which needed data the chart does not contain?
  3. If you had sized the position as a full 7.14% of the book, what would the stress loss of a repeat of BEL's 2017–2020 drawdown (−69.1%) have been in rupees, and is that within the 5% risk budget?

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.