The Chandelier Exit, introduced by Chuck LeBeau, is named for how it hangs: the stop dangles from a ceiling like a light fixture. The ceiling is the highest price reached since you entered; the length of the chain is some multiple of ATR. As price rises, the ceiling rises and the chandelier rises with it. When price falls back, the ceiling does not move — and neither does the stop.
This article covers three things: how the line is computed, why it must only move up, and the specific situations in which it will cost you money.
First, ATR: why volatility instead of a percentage
A fixed percentage stop ("get out on an 8% decline") has a problem it cannot answer: 8% means completely different things on different names. On a utility that moves 1% a day, an 8% drop signals genuine bad news. On a growth stock that moves 5% a day, an 8% drop might just be a Tuesday. Measuring two objects of different sizes with the same ruler leaves one measurement too loose and the other too tight.
ATR (Average True Range) exists to fix exactly this. Start with the single-day true range:
TR = max(today's high - today's low,
|today's high - yesterday's close|,
|today's low - yesterday's close|)
The last two terms fold gaps into the measure. If today's entire bar sits above yesterday's close, looking only at today's high and low badly understates how far price actually travelled.
Then smooth TR with Wilder's method (note: this is not a plain EMA — the coefficients differ):
ATR(n) = (previous ATR × (n-1) + today's TR) / n
Our engine defaults to atr_period = 14. ATR is denominated in price, not percent, so "3 × ATR" is automatically a wider distance on a more volatile name. You do not have to hand-tune the stop per symbol.
The full algorithm
Let HH be the highest price seen since entry (updated daily) and k the multiple:
stop line = HH - ATR(n) × k
final stop = max(every stop line computed so far) ← the key: take the maximum
That second line is the soul of the chandelier. With only the first line, price could pull back from a high, HH would stay fixed while ATR expanded on the increased volatility, and the stop would drift downward — which is not a stop at all, but a promise that steps aside when tested.
Our engine exposes two multiples, deliberately:
| Parameter | Default | Purpose |
|---|---|---|
entry_mult | 2.0 | Initial stop on the entry bar — tighter, so a fresh position cannot carry outsized risk |
exit_mult | 3.0 | Trailing stop while held — wider, giving the trend room to breathe |
atr_period | 14 | ATR smoothing period |
sma_period | 100 | Entry filter: only consider longs while close is above the moving average |
breakout_period | 22 | Entry trigger: close makes a new 22-day high |
The initial and trailing stops are separate because they answer different questions. At the moment of entry you know nothing about the trade; the only thing worth controlling is "if I am immediately proven wrong, how much do I lose?" Once the position has an open profit, a stop that tight will shake you out of a trend that has barely begun. A single multiple forced to serve both roles will always shortchange one of them.
Why it must only move up
Allow the stop to move down once and you have given up the only quantity in the strategy you actually knew.
Consider a trade entered at 100 with an initial stop at 92. If stops may be lowered, then when price reaches 93 you will face a very persuasive argument: "volatility has risen, ATR went from 4 to 6, so 88 is the reasonable stop now." The argument is even internally consistent — ATR really did rise. But the consequence is that your maximum loss has changed from the 8 points you agreed to at entry into a number determined by future volatility, with no bound known in advance.
This is a structural problem, not a discipline problem. The point most easily missed in backtesting is that a strategy allowing the stop to fall has no truncation on the left tail of its loss distribution. The largest single loss you observe in-sample is simply the worst this particular slice of history happened to produce; a different slice can produce arbitrarily worse. A stop that only ratchets up locks each trade's worst case at entry (gaps excepted — see below), which is what makes the strategy's total risk something you can add up and budget.
The reverse effect matters just as much: a rising stop gradually converts a losing trade into a breakeven trade and then into a winner, and it does so without requiring any judgment from you. Trend following earns its money through "many small losses plus a few large gains," and the large gains only get large because the stop keeps trailing beneath price instead of cutting the position at whatever level felt like "enough."
Where it will cost you
Any strategy advertised as costless is lying. The chandelier exit's costs are concrete.
Gaps through the stop. A stop is a price level, not an insurance policy. When earnings or a merger announcement opens the next session below your stop, you are filled at the open and the loss exceeds the number you planned. This is the one scenario a stop cannot cover, and it is why position sizing is not optional.
Repeated stop-outs in a range. Price oscillates within a band; each push above the 22-day high triggers an entry, each pullback triggers the stop. In this environment the strategy bleeds steadily and predictably. Historically the hardest periods for trend following have never been crashes — they have been long stretches without direction.
Volatility expansion widening the stop. After a sharp decline, ATR rises significantly, so newly opened positions sit much further from their stops than usual. Your stop distance in percentage terms is larger, and so is the risk you are actually carrying — unless you shrink position size in step. ATR adapts the stop distance for you; it does not adapt your sizing.
It does not tell you what to buy. The chandelier exit is an exit rule. The entry conditions (above the moving average, new high) are only the minimum wiring needed to make it a complete strategy. Reading the effectiveness of an exit rule as the effectiveness of an entire strategy is the single most common misreading in backtest interpretation.
Test it yourself
Every claim above can be reproduced in the backtest tool. Three suggested experiments:
- Hold
exit_mult = 3.0and sweepentry_multfrom 1.5 to 4.0. Watch trade count and win rate move in opposite directions. - Hold the entry parameters fixed and vary only
atr_period(7 / 14 / 28) to see how sensitive the stop is. - Run a stretch of well-known sideways market and let "many small losses" become a number rather than a concept.
One caveat: these experiments will tell you how parameters affect results. They will not tell you which parameter set is better — that is a different subject, covered in the overfitting section of Three Traps in Backtesting.
This article is for quantitative research and educational purposes only and does not constitute investment advice. Historical backtest results do not represent future returns; trading risk is borne entirely by the investor.