Direct answer
Fibonacci retracement is calculated by taking the difference between a chosen swing high and swing low, then multiplying that range by fixed Fibonacci ratios (commonly 0.236, 0.382, 0.5, 0.618, and sometimes 0.786). Each ratio is applied to the swing move to produce a set of horizontal price levels.
These levels are not “forecasts.” They are geometric reference points built from the input swing prices and a small set of predetermined constants.
Mechanism: definition, inputs, and the formula
What “retracement” means
A retracement level assumes there is a prior directional move (from swing low to swing high, or from swing high to swing low). The method then marks where price might pause or reverse as it “retraces” that move.
Required inputs
To calculate Fibonacci retracement levels, you need:
- A swing high price (H)
- A swing low price (L)
- The set of Fibonacci ratios you want to use (r)
Common Fibonacci ratios used in retracement tools include 0.236, 0.382, 0.5, 0.618, and 0.786. Different charting tools may include or omit 0.786, but the core idea is the same: fixed fractions applied to the same range.
Core calculation
Let the price range be:
- Range = H − L
If the move direction is treated in a way that makes the arithmetic consistent, retracement levels are typically computed by offsetting from the swing high or swing low using the same ratios.
A widely used expression (from the swing high downward) is:
- Level = H − (Range × r)
Where:
- H is the swing high
- Range = H − L
- r is one of the Fibonacci ratios
For example:
- If r = 0.5, then Level = H − (Range × 0.5)
Handling direction (so the levels land on the correct side)
In practice, the “correct” placement depends on which swing is considered the start of the prior move and which is the end. Some implementations treat retracement from the high, others from the low, but both approaches ultimately apply the same constants to the same swing-to-swing range.
A simple way to keep this correct is to state your convention up front:
- Convention A: you always compute levels from H using Level = H − (H − L) × r
- Convention B: you compute levels from L using Level = L + (H − L) × r
Both are equivalent under consistent choice of H and L for the prior move.
Evidence or example: a concrete calculation you can verify
Assume you choose:
- Swing high: H = 120
- Swing low: L = 100
Then:
- Range = H − L = 20
Using the formula Level = H − (Range × r):
- For r = 0.236: Level = 120 − (20 × 0.236) = 120 − 4.72 = 115.28
- For r = 0.382: Level = 120 − (20 × 0.382) = 120 − 7.64 = 112.36
- For r = 0.5: Level = 120 − (20 × 0.5) = 120 − 10 = 110
- For r = 0.618: Level = 120 − (20 × 0.618) = 120 − 12.36 = 107.64
If you include 0.786:
- For r = 0.786: Level = 120 − (20 × 0.786) = 120 − 15.72 = 104.28
Independent verification approach:
- Pick the same H and L from the same chart timeframe and data.
- Recompute Range = H − L.
- Plug the ratio values into Level = H − (Range × r) (or your tool’s equivalent convention).
- Check that the resulting numbers match the displayed retracement levels.
If your computed levels differ, the first likely reason is that the tool used a different swing selection (different H or L), a different ratio set, or a different direction convention.
Limitations and risks: what can go wrong
-
Swing selection drives the result The calculation is deterministic once H and L are chosen, but choosing different swing points changes every level. Two analysts can look at the same market and mark different highs/lows, leading to different retracement lines.
-
The method does not define an outcome Fibonacci retracement produces reference levels, not guaranteed behavior. Price may pass through levels, stall briefly, or move away without a consistent pattern.
-
Ratios and implementations vary Tools may use slightly different ratio sets or apply offsets using different direction conventions. Even when both say “Fibonacci retracement,” the plotted numbers can differ if the chosen ratios or formulas differ.
-
Historical relationships are not predictive A level that “worked” in the past does not ensure it will matter in the future. Verification is always tied to the specific data window and to the chosen swing points.
-
Data and measurement choices affect results Calculations depend on the exact prices used for H and L. Differences can come from timeframe (candles vs. ticks), rounding, or whether the tool uses highs/lows strictly or derived swing points.
Verification and next question
To confirm any Fibonacci retracement chart visually, treat it as a reproducible math exercise:
- Retrieve the exact swing high H and swing low L used by the chart tool.
- Recalculate Range = H − L.
- Apply the same ratios r that the tool uses.
- Compute levels using a consistent convention (from H or from L).
A useful next step is to compare retracement levels with nearby “reference concepts” you might be mixing up, because retracement is purely a range-based geometric construction. For example, it differs from indicator-style signals that are generated from rules reacting to data continuously.
You can also review how changing the chosen swing points (or the ratios displayed) alters the computed levels, because the math is the same but the inputs change.