Pyramiding builds a full position across multiple entries as a trade moves favorably. Each additional tier is typically smaller than the last so average cost stays well inside the profit zone.
Buy 100 shares at 100, add 50 at 105 and 25 at 110. The average cost is 102.86. With the stop raised to 103, under the second add, the whole position stopped out still makes about +25. Had the same 175 shares been bought at 110, the same stop would lose 1,225. Adding smaller as the trade works keeps the average cost behind the price.
- Each add raises the average cost; adding equal or larger amounts can turn a winner into a loser on a small pullback.
- It only pays in trends. In a range, every add is bought near the top of it.
- Raising the stop is what makes it safe; without that, pyramiding is just a bigger bet.
tiers = pd.DataFrame({'price': [100, 105, 110], 'shares': [100, 50, 25]}) # each add half the last
avg = (tiers.price * tiers.shares).sum() / tiers.shares.sum()
stop = 103 # stop raised under the second add
at_stop = (stop - avg) * tiers.shares.sum()
flat = (stop - 110) * 175 # the same 175 shares bought all at 110Assumes import numpy as np and import pandas as pd. Each snippet carries its own example numbers; the comments say which are made up or simulated.
- Way of the Turtle, C. Faith, McGraw-Hill, 2007
- B. Hurst, Y. H. Ooi & L. H. Pedersen, “A Century of Evidence on Trend-Following Investing”, Journal of Portfolio Management 44(1), 2017
- Reminiscences of a Stock Operator, E. Lefèvre, 1923
Last reviewed October 2026 · How this site checks its content · Report a mistake