Concepts: reading the cycles
A cycle is a repeating wave in a series: a rise from a trough to a peak and a fall back, over and over, with a roughly constant length. Real series carry several cycles at once, of different lengths and sizes, on top of a trend. Cycles IQ separates them: it removes the trend, measures the spectrum of the rest, keeps the cycles that are statistically genuine and tells you where each one stands.
Your data
- A series of values, oldest first. Closing prices, an indicator, an economic series: any regularly spaced values.
- At least 100 values for every analysis. Longer is better: a cycle is only measured reliably when the series holds several repetitions of it.
- Bars, not days. Every length is counted in bars of your series: a 40-bar cycle on daily data is about two trading months, on weekly data about nine months.
The cycle scan
The cycle scanner returns every significant cycle in a length window you choose (minCycleLength,
maxCycleLength). For each cycle:
| Field | Meaning |
|---|---|
cycleLength |
The period, in bars. |
amplitude |
The size of the wave, in the units of your series. |
strength |
The cycle's weight in the spectrum: a raw number, not a percentage. Compare cycles with each other; a clear gap between the leading cycles and the rest matters more than the absolute value. |
bartelsValue |
The Bartels test: how likely it is that the cycle is genuine and not noise. Higher is more significant. bartelsLimit (0–99) drops cycles below it; lower it to see weaker cycles. |
stabilityScore, dominantRank |
With the PRO features: how consistent the cycle's amplitude and phase were over time (0–1), and its rank among the dominant cycles (1 = strongest, 0 = unranked). Without PRO both are 0. |
A cycle can be drawn as a sine wave with its trough at minBarNum (bars counted from the first value you sent):
value(bar) = amplitude × sin(2π × (bar − minBarNum) / cycleLength − π/2)
Detrending. Before the scan the series is detrended; the default is a Hodrick-Prescott filter (dType=0), the
same as in the Cycle Scanner app. A one-sided HP filter (dType=4) avoids the end-of-series bias when the latest
bars matter most; no detrending (dType=9) gives very different strengths and ranks.
Phase: where a cycle stands
The phase is the position on the wave. The scanner names it with ten phase strings, in this order around the cycle:
| Phase | Where | Score |
|---|---|---|
Downtrend_ApproachingBottom |
late fall, nearing the trough | −80 |
BOTTOM_Arrival |
at the trough | −95 |
BOTTOM_Departure |
leaving the trough | −100 |
Uptrend_Starting |
early rise | −95 |
Uptrend_Neutral |
mid rise | +30 to +60 |
Uptrend_ApproachingTop |
late rise, nearing the peak | +80 |
TOP_Arrival |
at the peak | +95 |
TOP_Departure |
leaving the peak | +100 |
Downtrend_Starting |
early fall | +95 |
Downtrend_Neutral |
mid fall | −30 to −60 |
Read the phase string, not the sign of the score, for the direction. The score flips its sign at the trough and
at the peak: an early rise (Uptrend_Starting) scores −95, an early fall (Downtrend_Starting) +95.
Two phase measurements. Every cycle comes with two independent phase fits over the same cycle length:
- the average phase (
avgPhaseStatus,avgPhaseScore,minBarNum), averaged over all repetitions in the series: stable, best for scoring, screening and the structural picture; - the current phase (
phaseStatus,phaseScore,minBarNumCurrent), fitted to the recent bars only: best for timing, projections and a wave drawn over the latest prices.
Use one group or the other, never a field from each. When the two disagree, the cycle is running ahead of or behind its historical rhythm, and that is information in itself.
The dominant cycle and its projection
The cycle explorer (and market_cycles for a market) finds the dominant cycle in a length window and projects it
forward:
| Field | Meaning |
|---|---|
length |
The dominant cycle's length, in bars. |
phase_status |
A simple phase: Bottom, Rising, Top or Falling. |
nexttop, nextlow |
Bars from the last value to the next projected top and low. |
lasttop, lastlow |
Bars back to the last top and low. |
timeSeries |
With includeTimeseries=true: the series bar by bar with the dominant cycle and the cycle highlighter, extended forward by plotForward bars. |
Cyclic RSI (CRSI)
The cyclic RSI is an RSI tuned to a cycle, with dynamic upper and lower bands (ub, lb) instead of fixed 70/30
lines. Above the upper band the move is stretched upward, below the lower band downward.
- Tune the period to half the dominant cycle length: the oscillator should turn within the cycle.
- The bands need about three repetitions of that cycle: keep the cycle length at most data length ÷ 3, otherwise the bands come back empty (NaN).
The consensus turns the CRSI position into a signal from −3 to +3:
| Signal | Value | Meaning |
|---|---|---|
BullExit |
+3 | was above the upper band in the last 4 bars, now back inside |
BullFatigue |
+2 | above the upper band and turning down |
BullExhaustion |
+1 | above the upper band and still rising |
Neutral |
0 | inside the bands, no recent extreme |
BearExhaustion |
−1 | below the lower band and still falling |
BearFatigue |
−2 | below the lower band and turning up |
BearExit |
−3 | was below the lower band in the last 4 bars, now back inside |
The names follow the momentum move, not the price: "bull exhaustion" is overbought momentum, a caution for price;
"bear fatigue" is oversold momentum turning up, a constructive sign. With a price-CRSI divergence, the fatigue and exit
states get a ReversalConfirmed variant (the label changes, the value does not).
The cycle consensus
The consensus combines all significant cycles into one reading and answers one question: are the cyclical conditions for a turn present right now, and in which direction? It is an alert, not a price forecast.
| Field | Meaning |
|---|---|
combinedScore |
−100 to +100. Positive is bullish, negative bearish. |
bullishConsensus, bearishConsensus |
0–100: the weighted strength of the cycles voting on each side (rising and bottoming cycles vote bullish, falling and topping cycles bearish). |
toppingCycles, bottomingCycles |
Cycles at the turn: the reversal is happening now. |
fallingCycles, risingCycles |
Cycles on the way: pressure building towards a turn. |
breadthFactor |
0–1: lowers a consensus carried by only a few cycles. |
crsiScore, crsiSignal |
The CRSI signal above. |
combinedScoreReasoning |
The step-by-step derivation, in words. |
How the score is built: the cycles contribute up to ±80, the CRSI signal up to ±20 (crsiScore ÷ 3 × 20); the sum is
clamped to ±100. Full conviction therefore needs the CRSI to agree, and the CRSI can only flip the sign when the cycles
alone are within ±20.
combinedScore |
Reading |
|---|---|
| above +50 | strong bullish consensus: high alert for a bottom; look for price confirmation |
| +30 to +50 | cycles lean bullish |
| −30 to +30 | neutral or mixed: no cyclical opposition, the trend tends to continue |
| −30 to −50 | cycles lean bearish |
| below −50 | strong bearish consensus: high alert for a top; look for price confirmation |
Which cycles vote on each side matters as much as the number: a bullish vote carried by long, structural cycles is a different signal from one carried by short cycles. Checking the weekly series as well as the daily is more reliable than either alone.
How well it works, in a walk-forward study on the Dow Jones Industrial Average, daily, 1982–2026 (284 intermediate turns of 5% or more): 97% of the turns had a strong consensus signal within ±15 bars, and 70% of the signals came before or at the turn. About half of the strong signals landed near an actual turn, and the direction was right in 59% of them. When the consensus was quiet (|score| < 10), no turn followed within 20 bars in 62% of the cases. The score does not predict returns over a fixed horizon.
Other measurements
- Turning points (RSD test). A running slope-difference t-test marks the bars where the trend actually turned, at the confidence you choose.
- Smoothing. Savitzky-Golay and modified sinc filters smooth a series without shifting its turns in time.
- Cycle-length clustering (KDE). Groups a list of numbers, such as cycle lengths from many scans, into clusters by kernel density: which lengths recur.
- Market clustering (DTW). Dynamic time warping groups markets whose recent paths look alike, even when shifted in time.
The answers are measurements and projections of cycles, not investment advice.
Answers of Cycles IQ are measurements and projections of cycles, not investment advice. Questions: support.