What is Ichimoku and what does “calculated” mean?
Ichimoku (Ichimoku Kinko Hyo) is a technical indicator that creates several lines from the same underlying idea: rolling price ranges. In practice, it is calculated from historical price data by repeatedly measuring, for each time step, the highest and lowest traded prices over a chosen lookback window.
“Calculated” here means: for each bar (time period), you compute intermediate values (midpoints of ranges) and then place resulting lines at specific offsets (shifts) forward or backward along the timeline.
A key concept is that Ichimoku is not a single formula output. It is a set of five lines that depend on (1) rolling-window highs and lows and (2) window lengths (commonly fixed integers, such as 9/26/52, though users may change them). When you change the window lengths, the numerical values of the lines change.
The Ichimoku formulas (with standard components)
To calculate Ichimoku, you need a time series of price bars. Each bar typically provides at least a “high” and a “low” value for that period. The formulas below describe how to compute each named line from those inputs.
1) Tenkan-sen (conversion line)
Let:
- HighestHigh(N) = the maximum of “high” over the last N bars (including the current bar)
- LowestLow(N) = the minimum of “low” over the last N bars (including the current bar)
Then:
- Tenkan-sen = (HighestHigh(9) + LowestLow(9)) / 2
Assumption for this formula: you use “high” and “low” from the same bar definition as the rest of your chart (for example, daily bars for daily Ichimoku).
2) Kijun-sen (base line)
- Kijun-sen = (HighestHigh(26) + LowestLow(26)) / 2
This uses a longer window than Tenkan-sen, so it reacts more slowly to changes in range.
3) Senkou Span A (leading span A)
Senkou Span A is built from the two midpoint lines:
- Senkou Span A (at time t) = (Tenkan-sen(t) + Kijun-sen(t)) / 2
However, Ichimoku places this line forward on the chart by a fixed offset. With the commonly used standard values:
- Plot Senkou Span A at (t + 26)
This forward shift is part of the definition, not a “visual choice.” Without it, you are computing a different alignment than standard Ichimoku.
4) Senkou Span B (leading span B)
Senkou Span B uses a wider range:
- Senkou Span B (at time t) = (HighestHigh(52) + LowestLow(52)) / 2
And it is also plotted forward with the same standard offset:
- Plot Senkou Span B at (t + 26)
5) Chikou Span (lagging span)
Chikou Span is not based on a midpoint range; it is based on the price level itself (commonly the close):
- Chikou Span (at time t) = Close(t)
But it is placed backward along the chart:
- Plot Chikou Span at (t − 26)
Assumption: you use a consistent “close” price and bar indexing. If your data uses a different definition (for example, adjusted close), you must decide which one you want to use and keep it consistent.
What data requirements and assumptions matter most?
Ichimoku calculation is mechanically straightforward, but small inconsistencies can change results. The most important requirements are:
-
Consistent bar data Use a single timeframe (for example, daily) and the corresponding high/low values for every bar. If you mix intraday data with daily formulas, the rolling highs/lows will refer to different periods.
-
Clear window-length choice The standard Ichimoku commonly uses 9, 26, and 52 for the lookback lengths, and 26 for the offset shift. If your chosen settings differ, your formulas must reflect those chosen parameters.
-
Enough history to compute early values Rolling-window calculations require prior bars:
- Tenkan-sen needs at least N=9 bars.
- Kijun-sen needs at least N=26 bars.
- Senkou Span B needs at least N=52 bars.
That means the earliest part of a dataset will produce undefined or incomplete values for some lines until enough bars exist.
- Indexing and shifting must be handled carefully The forward plotting of Senkou Span A/B and the backward plotting of Chikou Span are about alignment with time. A common failure mode is calculating the right raw values but placing them at the wrong bar indices.
A simple worked example (with explicit assumptions)
This example shows the calculation structure without using live market numbers.
Assumptions:
- You have a sequence of daily bars.
- You are computing values at a specific day t.
- You use standard lookbacks 9/26/52 and standard offset 26.
- You define HighestHigh(N) and LowestLow(N) as maxima/minima over the last N bars including day t.
Example steps for a single day t:
-
Compute Tenkan-sen(t)
- Find the maximum high over days (t−8) through t.
- Find the minimum low over days (t−8) through t.
- Take their midpoint: (that maximum + that minimum) / 2.
-
Compute Kijun-sen(t)
- Find the maximum high over days (t−25) through t.
- Find the minimum low over days (t−25) through t.
- Midpoint them: (maximum + minimum) / 2.
-
Compute Senkou Span A at time t
- Take the midpoint of Tenkan-sen(t) and Kijun-sen(t).
- Then plot it at (t + 26).
-
Compute Senkou Span B at time t
- Find the maximum high over days (t−51) through t.
- Find the minimum low over days (t−51) through t.
- Midpoint them.
- Then plot it at (t + 26).
-
Compute Chikou Span at time t
- Set it equal to Close(t).
- Then plot it at (t − 26).
Notice the pattern: all “range midpoints” come from rolling highest highs and lowest lows; the “shift” parts come from placing computed values at different indices.
Limitations and failure modes to understand before interpreting results
Ichimoku’s calculation does not guarantee meaningful interpretation in every situation. Material limitations include:
-
Different settings produce different lines Because the indicator depends on window lengths, two charts using different parameters are not comparable line-for-line. A common risk is assuming identical behavior across settings.
-
Early-bar values may be missing or unreliable Until enough history exists (especially for the 52-bar range used for Senkou Span B), you cannot compute all lines. If you compare charts starting at different points in time, alignment may differ.
-
Data quality and bar definitions affect rolling highs/lows If high/low values are missing, inconsistent, or computed under a different bar aggregation method, the HighestHigh and LowestLow calculations change, and therefore every dependent line changes.