Idea in brief
Nicolas Darvas, a professional dancer, made $2 million in stocks in the 1950s and described the method in two books. Jack Corsellis goes through the second one, "You Can Still Make It in the Market". It came out about 15 years after the famous first book and describes the rules in more detail.
Darvas saw the rise of a strong stock as a staircase of boxes. The box top is a high that price does not exceed for three days in a row. The bottom is a low after the decline from the top that is not broken for three days in a row. The danger zone begins 5% below the bottom. While the stock fluctuates inside its topmost box, it is held and the fluctuations are ignored. A breakout above the top of the topmost box into new highs gives a buy with a 10% stop. Once a new box has formed above the entry, the exit comes when price falls below its bottom into the danger zone.
In the second book Darvas changed the entry rule. The first breakout more and more often fell straight back into the box, so Darvas began waiting for the second one: a breakout, a pullback, then a new high above the high of the first breakout. If there is no pullback after the first breakout and the stock simply keeps rising, Darvas does not chase it.
The method shares the box itself with weekly-box-breakout, but that card uses weekly bars, a box of six weeks or more and an initial stop in the middle third of the box. With new-high-breakout-ma10-exit it shares the entry into new highs, but the exit there is on the 10-day average. In Darvas's method the level is set by a three-day pause, the stop moves up box by box, and the position is added to on new boxes. In turtle-4w-2w the windows are fixed: 20 and 10 days.
Why it might work
Darvas's logic as retold by Jack. The only valid reason to buy a stock is that its price is rising, and attentive professionals will not miss a company with a promising future. So Darvas bought high to sell higher, near 52-week and all-time highs. A box is a step in the trend: while price is in the topmost box, the trend is intact, and a drop below the bottom means the character of the move has changed.
Darvas explained the second breakout by the behavior of professionals. They know that a breakout through resistance is a signal for chartists, and they sell the stock to them on that breakout. The pullback after the first breakout absorbs that selling, and a new high above it shows that demand is still there.
Jack adds an observation of Jack's own. Breakouts from a tight consolidation right below the level, with drying volume, work better. A rush from the bottom of the box straight to the top runs into sellers who bought near the top earlier.
Darvas made a fortune in a bull market, and Jack stresses that the method needs a strong trend in the market, the industry and the stock itself. The video has no statistics on the rules.
Rules
Darvas's rules are marked as author. Jack's additions are marked as community. Missing details were added by us and are marked as Finetiq.
Box (author)
// daily bars, one stock
// top: a high not exceeded for 3 days in a row
IF High > CandTop THEN CandTop = High, TopCount = 0 // a new high resets the count
ELSE TopCount = TopCount + 1
IF TopCount >= 3 AND top not confirmed
BoxTop = CandTop
CandBottom = lowest Low after the top bar
// bottom: a low after the top that is not broken for 3 days in a row
IF Low < CandBottom THEN CandBottom = Low, BottomCount = 0
ELSE BottomCount = BottomCount + 1
IF BottomCount >= 3 THEN BoxBottom = CandBottom // box complete
IF High > BoxTop before the bottom is complete THEN search for the top again // Finetiq
Danger = BoxBottom * 0.95 // author: danger zone 5% below the bottom
// community (Jack, ASYS example): bottom by closes, wicks below the level do not count
Topmost box and new highs (author)
TopmostOK = BoxTop >= highest High over the entire history before the box // author: normally only a breakout above the all-time high
// author: after a two-year bear market there is no need to wait for an all-time high
// Finetiq: if the S&P 500 fell 20% or more from its high within the last 2 years,
// a 52-week high is enough
// author: do not hold or buy a stock that is not in its topmost box
Entry A. First breakout (author, early version)
IF box complete AND TopmostOK AND MarketPosition = 0
BUY STOP at BoxTop + Offset // author: box 30-35, order at 35¼
InitialStop = EntryPrice * 0.90 // author: 10% stop on the first breakout
Entry B. Second breakout (author, second book)
// first breakout: High > BoxTop. We do not buy
P1High = Highest(High) since the first breakout bar
IF Close < BoxTop THEN Reaction = TRUE // Finetiq: a pullback is a close back inside the box
IF Reaction AND MarketPosition = 0
BUY STOP at P1High + Offset // author: a new high above the high of the first breakout
IF Close < Danger THEN setup canceled // Finetiq
// author: if there is no pullback and the stock keeps rising, do not chase it.
// Finetiq: for such a stock we wait for the next box higher up
InitialStop = EntryPrice * 0.90
// community (Jack): the initial stop can go below the box bottom if it is closer than 10%.
// In Jack's tutorial trade this is about 7%
Stop, exit and adding (author, details Finetiq)
// once a new box has formed above the entry (author)
Stop = MAX(Stop, NewBoxBottom * 0.95) // Finetiq: the stop only moves up
SELL STOP at MAX(InitialStop, Stop)
// community (Jack, tutorial trade): exit when the box bottom breaks, without the 5% buffer
// the 20% rule is stated two ways in the video (author)
A: IF Close < HighestHigh(since entry) * 0.80 THEN EXIT AT NEXT BAR OPEN
// price pullback of more than 20% from the high, ASYS example
B: IF MaxOpenProfit > 0 AND OpenProfit < 0.80 * MaxOpenProfit THEN EXIT AT NEXT BAR OPEN
// do not give back more than 20% of profit
// Finetiq: enable after a profit of 20% or more, otherwise the rule closes the trade on the first noise
// adding (author, Jack's example)
IF a new box is complete above EntryPrice
BUY STOP at NewBoxTop + Offset // Finetiq: 50% of the initial size, no more than 2 adds
Order (community)
// Jack: as Jack understands it, Darvas entered with a stop-limit order
BUY STOP at Trigger LIMIT Trigger * 1.01 // community (Jack): limit within 1% of the pivot
// on a gap above the limit there is no trade
Stock selection (a separate rule)
// author: first the market, then the industry, then the stock, all in an uptrend
// author: new growing industries, large earnings or expectations of them, not the largest companies
// community (Jack), screen for today's market:
Close > SMA(Close, 200) AND Close > SMA(Close, 50)
AND Close >= 0.80 * Highest(High, 252) // within 10-20% of the 52-week high
AND small or mid cap, strong industry, earnings or revenue growth
// Finetiq: market trend = S&P 500 above SMA 200
// community (Jack): about 4 stocks in the portfolio
Parameters
| Parameter | Value | Source |
|---|---|---|
| Timeframe | daily bars | author |
| Top and bottom | 3 days in a row without being taken out | author |
| Danger zone | 5% below the box bottom | author |
| High requirement | all-time high | author |
| Exception after a bear market | 52-week high if the S&P 500 fell 20% or more within 2 years | author (exception), Finetiq (threshold) |
| Entry | first or second breakout | author |
| Pullback for the second breakout | close back inside the box | Finetiq |
| Offset | ¼ point at a price of 35 | author |
| Initial stop | 10% from entry | author |
| Stop after a new box | 5% below its bottom | author |
| 20% rule | price pullback from the high or giving back profit | author (two wordings) |
| Threshold for giving back profit | profit of 20% or more | Finetiq |
| Stop-limit order limit | 1% above the level | community (Jack) |
| Adding | on a breakout of a new box | author |
| Add size | 50%, no more than 2 times | Finetiq |
| Screen | above SMA 50 and 200, within 20% of the 52-week high | community (Jack) |
| Number of stocks | about 4 | community (Jack) |
What to test
- First breakout versus second. The main question of the book. On the same boxes, compare the average trade, the share of breakouts that returned into the box within 5 days, and the number of strong moves missed because there was no second breakout.
- Pullback definition. A close back inside the box versus any pullback of 3-5% from the first breakout high. The number of trades entry B gets depends on this formalization.
- Three days and wicks. 2, 3, 4 and 5 days for the top and bottom; a bottom by lows versus a bottom by closes, as Jack does it. If the result changes sharply, the box is unstable.
- Stop. The danger zone 5% below the bottom versus an exit exactly at the bottom and versus a fixed 10%. Separately, the two wordings of the 20% rule.
- All-time high. All-time versus 52-week and versus no requirement. Look at the years after bear markets, when Darvas dropped the requirement.
- Stop-limit. The share of signals missed because of a gap above the 1% limit, and the result of those signals at the open price. If the best trades on earnings are skipped, the limit hurts.
- Concentration and adding. 4 stocks versus 10 and 20 on the same signals, with and without adding. Darvas believes fewer stocks means safer. Check the spread of annual results.
Platform notes
TradingView (Pine Script)
- The box is built as a state machine on
varvariables recalculated on bar close. The orderstrategy.entry("L", strategy.long, stop = boxTop + offset)stays active until filled. Remove it withstrategy.cancelwhen the box has changed or the setup is canceled. - If both
stopandlimitare set instrategy.entry, the result is a stop-limit order, as Jack uses. - Adding is allowed by the
pyramidingparameter instrategy(); by default there are no additional entries. - The all-time high depends on the depth of loaded history, which is limited by the subscription plan. Adjustment for splits and dividends changes old highs and box tops.
MultiCharts and TradeStation (EasyLanguage)
Buy next bar at BoxTop + Offset stoplives for one bar. While the box is valid, the order has to be sent on every bar.- A stop-limit entry is easier to model in the test with a condition: if the bar opened 1% or more above the level, there is no trade. This way the result does not depend on how the platform fills a stop-limit on history.
- In the strategy properties, check that multiple entries in the same direction are allowed. Without it, the add on a new box will not be filled.
- Set stops as a price:
Sell next bar at Stop stop.SetStopLossworks in money, per share or per position, and gives a different level after an add. - Store the all-time high in a variable
ATH = MaxList(ATH, High[1])and load all available history.
MetaTrader 5 (MQL5)
- Brokers usually offer stock CFDs only on large companies. The small and mid-sized growth stocks Darvas looked for are scarce there, and the history is shorter than on the exchange, so the all-time high from it is unreliable.
- On a netting account, an add merges into one position with an average price. Store the 10% stop from the first entry in your own variable. On a hedging account each add has its own ticket and its own stop.
- Recreate a
BuyStopviaCTradewith a daily expiration after each bar closes. MQL5 has a stop-limit order type, but support for it on stock CFDs depends on the broker. - The daily bar is built on server time, and at some brokers it includes pre-market quotes. Box tops and bottoms then differ from the exchange ones.
Where the idea can break
- The rules are retold from a 1970s book, and there are no statistics. Darvas made the fortune in the bull market of the late 1950s, and a famous success story is itself a product of survivorship bias.
- Darvas's own account is inconsistent. The second breakout rule is in the book, but in the Teledyne example Darvas buys the first breakout with a 10% stop. Jack is not sure whether Darvas always waited for the second one.
- The book does not give a number for the pullback before the second breakout. Our formalization may select different trades than Darvas would have.
- The 20% rule is stated two ways in the video: a price pullback from the high and giving back accumulated profit. These are different exits with different frequencies.
- Darvas's stock selection is qualitative: leaders of new industries, earnings expectations, a strong group. A technical screen reproduces only part of it, and a test on today's list of stocks is inflated by survivorship bias.
- Prices in those years were quoted in fractions; an offset of ¼ point at a price of 35 is about 0.7%. At modern prices, set the offset in percent or ticks.
- About four stocks in the portfolio give a large spread of results. The video advertises MarketSmith and Jack's paid community.