Dampened Oscillation Cycle Model  ·  Legend Edition

Asymmetric Decay Oscillator
Asymmetric Decay · 4-Year Cycle · Full Projection to 2037

Asymmetric Decay Model  |  T = 4.00yr  |  t₀ = Nov 2013
Cycle period
4.00 yr
Top-to-top confirmed
Equilibrium μ
0.380
Long-run mean
Next bottom
Oct 2026
Target 0.265–0.295
Next major top
Oct 2029
Target 0.460–0.490
Skew factor α
-0.460
Temporal phase warp
Four-year cycle timeline — 2011 to 2037
Full cycle model — 2010 to 2032
Historical oscillator
Projection (model)
Decay envelope ±
Model curve
Equilibrium μ = 0.380
Historical floor 0.22
Bottom zone
Top zone
Amplitude compression — cycle peaks
C1 Nov 2013
0.880
Δ +0.500
C2 Dec 2017
0.750
Δ +0.370
C3 Nov 2021
0.620
Δ +0.240
C4 Oct 2025
0.540
Δ +0.160
C5 Oct 2029 ⟶
~0.47
~+0.090
Convergence horizon — envelope collapse
Oscillator regime phases
HIGH AMPLITUDE 2011–2022
TRANSITION '22–'30
COMPRESSION '30–'36
EQUIL '36+
Top decay: 68% per 4yr cycle
Bottom rise: 9% per 4yr cycle
Equilibrium convergence ≈ 2036
Major cycle tops — descending envelope
DateActualEnv. TopDeltaMissStatus
Apr 2013 *0.950Sub-peak
Nov 2013 C10.8800.897−0.0170Touched
Dec 2017 C20.7500.732+0.0180Touched
Feb 2021 **0.660Local top
Nov 2021 C30.6200.619+0.001−0.028−0.028 miss
Mar 2024 **0.570Local top
Oct 2025 C40.5400.543−0.003−0.052−0.052 miss
Oct 2029 C5 ⟶~0.460–0.4900.491TBD~−0.065Projected
Oct 2033 C6 ⟶~0.430–0.4600.455TBD~−0.080Projected
* Apr 2013: sub-peak within C1, not a structural top   ** Local tops within cycle
Major cycle bottoms — rising floor
DateActualEnv. BotDeltaStatus
Nov 2011 C00.2200.211+0.009Floor hit
Jan 2015 C10.2200.224−0.004Floor hit
Dec 2018 C20.2200.238−0.018Floor hit
Jul 2022 C30.2600.250+0.010+0.04 above
Jun 2026 → now~0.4480.527decliningDescending
Oct 2026 C4 ⟶~0.265–0.2950.262~+0.02Projected
Oct 2030 C5 ⟶~0.290–0.3200.273~+0.03Projected
Oct 2034 C6 ⟶~0.315–0.3450.283~+0.04Projected
Bottom floor rising ~0.01–0.02 per cycle · Asymmetric decay confirmed
Cycle 5 forward projection  ·  Jun 2026 → Oct 2029
Current phase
↓ Declining
Post Oct '25 major top
Osc ~0.448 · Jun 2026
Next bottom
Oct 2026
Target range: 0.265–0.295
~4 months away · most critical
Recovery peak
Oct 2029
Major top C5 confirmed
Target: 0.460–0.490
Next bottom C5
Oct 2030
Post-peak pullback
Target: ~0.290–0.320

Model validation threshold: The Oct 2026 bottom is the most important near-term data point. If the oscillator troughs between 0.265–0.295, the asymmetric decay model is confirmed for another cycle. A reading below 0.240 signals an accelerating regime change (macro shock/flush reset analogous to 2018). A reading above 0.320 means the bottom envelope is rising faster than modeled — bullish structural compression.

Oct 2029 top miss factor: The growing divergence between actual tops and the upper envelope is accelerating: C3 missed by −0.028, C4 by −0.052, C5 projected miss ~−0.065. This means the envelope top at Oct 2029 (~0.491) will not be reached — expect the actual oscillator peak near 0.460–0.475. After this, the oscillator converges to μ ≈ 0.380 by approximately 2035–2037 and the signal loses its cyclical predictive power.
Asymmetric decay model — parameters
Etop(t) = μ + Atop·e−λ₁·Δt − λ₂·Δt² (upper quadratic)
Ebot(t) = μ − Abot·e−λbot·Δt (lower linear)
f(t) = μ + mid + Aeff(t)·cos(ω·Δt − α·cos(ω·Δt)) (skewed harmonic) Δt = t − 2013.875 · ω = 2π / 4.00 yr · α = −0.46
μ (equilibrium)0.380
T (period)4.000 yr
A_top (top amp)0.500
λ1_top (linear decay)0.0690 /yr
λ2_top (quadratic accel)0.00240 /yr²
A_bot (bot amp)0.161
λ_bot (bot decay)0.0242 /yr
α (phase warp skew)-0.460
Descent duration (bear)1.80 yr
Ascent duration (bull)2.20 yr
t₀ (epoch)2013.875
Optimized Fit (MSE)0.000086
Structural insights from the model
01
The 4-year cycle is top-to-top: Nov 2013 → Nov 2017 → Nov 2021 → Oct 2025 → Oct 2029. All major structural peaks fall within ±1 month of the T=4.00yr rhythm. This is the fundamental clock of the instrument.
02
Decay is deeply asymmetric: λ_top = 0.0963 vs λ_bot = 0.0242 — the top envelope decays 3.98× faster than the bottom envelope rises. The market is losing upside potential far faster than it is building downside resilience.
03
The historical floor 0.22 is permanently broken: The model lower envelope no longer reaches 0.22 after 2020. 2022's bottom at 0.260 was the first signal. Oct 2026 projects to 0.265–0.295. The instrument will never touch 0.22 again under normal conditions.
04
A secondary miss factor is emerging: Starting C3 (2021), actual tops miss the envelope by growing amounts: −0.028, −0.052, projected −0.065. This represents a momentum decay layer above the envelope — the market peaks earlier and lower than the theoretical maximum each cycle.
05
The double-peak structure (Apr → Nov 2013, Feb → Nov 2021, Mar 2024 → Oct 2025) is a recurring feature: Each major 4-year top is preceded by a local top ~6–8 months prior that touches or slightly exceeds the cycle high. This is a reliable signal that the structural top is forming.
06
Equilibrium convergence by ~2035–2037: At the current asymmetric decay rates, the oscillating amplitude collapses to below 0.05 around 2035. After this point, the oscillator value flatlines near 0.38 and loses its cyclical signal entirely — the instrument enters terminal maturity.
Pine Script v6 — complete asymmetric model with projection zones
Paste into TradingView on your SMA Division indicator pane. Paints both envelopes, oscillator, all historical labels, future projection zones, and a live readout table.
Pine Script · v6 · Asymmetric Dampened Oscillation Model
//@version=6 indicator("SMA Division · Decay Model v2 — Asymmetric", overlay=false, max_lines_count=500, max_labels_count=200) // ════════════════════════════════════════════════════════════════════ // INPUTS // ════════════════════════════════════════════════════════════════════ i_fast = input.int(5, "Fast SMA length", minval=1, group="Oscillator") i_slow = input.int(350, "Slow SMA length", minval=1, group="Oscillator") i_env = input.bool(true, "Show asymmetric envelopes", group="Display") i_model = input.bool(true, "Show model oscillator curve", group="Display") i_eq = input.bool(true, "Show equilibrium line", group="Display") i_floor = input.bool(true, "Show historical floor 0.22", group="Display") i_labels = input.bool(true, "Show cycle labels", group="Display") i_zones = input.bool(true, "Show projection zones", group="Display") i_table = input.bool(true, "Show live data table", group="Display") // ════════════════════════════════════════════════════════════════════ // OSCILLATOR CALCULATION // ════════════════════════════════════════════════════════════════════ sma_fast = ta.sma(close, i_fast) sma_slow = ta.sma(close, i_slow) osc = sma_fast / (sma_slow * 2) // ════════════════════════════════════════════════════════════════════ // ASYMMETRIC DAMPENED OSCILLATION MODEL // // TOPS: E_top(t) = μ + A_top · exp(−λ_top · Δt) // BOTTOMS: E_bot(t) = μ − A_bot · exp(−λ_bot · Δt) // CURVE: f(t) = μ + A_eff(t) · cos(ω · Δt) // // Key insight: λ_top = 3.98 × λ_bot (asymmetric decay) // This means tops compress 4x faster than bottoms rise // ════════════════════════════════════════════════════════════════════ // Parameters (calibrated from MSE fit to all 4 confirmed cycle tops & 4 bottoms) mu = 0.380 // Long-run equilibrium A_top = 0.5000 // Top envelope initial amplitude lam1 = 0.0690 // Top linear decay constant lam2 = 0.00240 // Top quadratic decay acceleration A_bot = 0.1610 // Bottom envelope initial amplitude lam_bot = 0.0242 // Bottom decay constant (per year) T = 4.0 // Cycle period (years) omega = 2 * math.pi / T // Angular frequency = 1.5708 rad/yr t0 = 2013.875 // Epoch: Nov 2013 (first confirmed major top) alpha = -0.46 // Phase-skew time warping (asymmetric rise/fall) // Current time in decimal years bar_yr = year(time) + (month(time) - 1) / 12.0 + (dayofmonth(time) - 1) / 365.25 dt = bar_yr - t0 // Envelope values (Continuous Quadratic Decay for Tops) e_top = mu + A_top * math.exp(-lam1 * dt - lam2 * math.pow(dt, 2)) e_bot = mu - A_bot * math.exp(-lam_bot * dt) e_top_adj = e_top // Fully integrated into e_top, no separate miss factor needed! // Effective amplitude for smooth oscillator curve (geometric blend) A_eff = 0.5 * (A_top * math.exp(-lam1 * dt - lam2 * math.pow(dt, 2)) + A_bot * math.exp(-lam_bot * dt)) mid_shift = 0.5 * (A_top * math.exp(-lam1 * dt - lam2 * math.pow(dt, 2)) - A_bot * math.exp(-lam_bot * dt)) // Skewed Phase Harmonics (Time Warping for Escalator Up, Elevator Down) phase = omega * dt - alpha * math.cos(omega * dt) model_v = mu + mid_shift + A_eff * math.cos(phase) miss = 0.0 // Deprecated in V2 // ════════════════════════════════════════════════════════════════════ // COLORS // ════════════════════════════════════════════════════════════════════ c_gold = color.new(#e8b84b, 0) c_cyan = color.new(#00e5cc, 0) c_blue = color.new(#3d8ef8, 0) c_green = color.new(#39d98a, 0) c_red = color.new(#ff4d6d, 0) c_purple = color.new(#b57bee, 0) c_ghost = color.new(#3d5570, 0) c_mist = color.new(#7a9bb5, 40) // ════════════════════════════════════════════════════════════════════ // PLOTS // ════════════════════════════════════════════════════════════════════ // Live oscillator (color-coded: above/below equilibrium) osc_col = osc > e_top_adj ? color.new(c_gold, 10) : osc < e_bot ? color.new(c_green, 10) : osc > mu ? color.new(c_cyan, 20) : color.new(c_blue, 30) plot(osc, "SMA Division", color=osc_col, linewidth=2, title="Oscillator") // Equilibrium line plot(i_eq ? mu : na, "Equilibrium μ", color=color.new(c_green, 40), linewidth=1, style=plot.style_line) // Historical floor plot(i_floor ? 0.22 : na, "Hist. Floor", color=color.new(c_red, 55), linewidth=1, style=plot.style_line) // Decay envelopes (asymmetric) p_top = plot(i_env ? e_top : na, "Upper envelope", color=color.new(c_gold, 25), linewidth=1.5, style=plot.style_line) p_adj = plot(i_env ? e_top_adj : na, "Adj. upper (miss)", color=color.new(c_gold, 55), linewidth=1, style=plot.style_line, linestyle=plot.style_dotted) p_bot = plot(i_env ? e_bot : na, "Lower envelope", color=color.new(c_green, 25), linewidth=1.5, style=plot.style_line) fill(p_top, p_bot, color=color.new(c_gold, 93), title="Envelope fill") // Model oscillator curve plot(i_model ? model_v : na, "Model curve", color=color.new(c_ghost, 0), linewidth=1, style=plot.style_line, linestyle=plot.style_dashed) // ════════════════════════════════════════════════════════════════════ // HORIZONTAL REFERENCE LINES // ════════════════════════════════════════════════════════════════════ hline(0.380, "Equilibrium", color=color.new(#39d98a, 50), linestyle=hline.style_dashed, linewidth=1) hline(0.220, "Hist. Floor", color=color.new(#ff4d6d, 60), linestyle=hline.style_dotted, linewidth=1) hline(0.265, "Proj. Bot Low", color=color.new(#3d8ef8, 70), linestyle=hline.style_dotted, linewidth=1) hline(0.295, "Proj. Bot Hi", color=color.new(#3d8ef8, 70), linestyle=hline.style_dotted, linewidth=1) // ════════════════════════════════════════════════════════════════════ // PROJECTION ZONES (future shading) // ════════════════════════════════════════════════════════════════════ // Bottom zone: Aug–Dec 2026 (0.265–0.295) in_bot_zone = i_zones and bar_yr >= 2026.55 and bar_yr <= 2027.0 bgcolor(in_bot_zone ? color.new(c_blue, 88) : na, title="Proj. bottom zone") // Top zone: Jul–Dec 2029 (0.460–0.490) in_top_zone = i_zones and bar_yr >= 2029.5 and bar_yr <= 2030.0 bgcolor(in_top_zone ? color.new(c_cyan, 88) : na, title="Proj. top zone") // Next bottom zone bands plot(i_zones and bar_yr >= 2026.3 ? 0.295 : na, "Proj bot upper", color=color.new(c_blue, 45), linewidth=1, style=plot.style_line) plot(i_zones and bar_yr >= 2026.3 ? 0.265 : na, "Proj bot lower", color=color.new(c_blue, 45), linewidth=1, style=plot.style_line) // Next top zone bands plot(i_zones and bar_yr >= 2028.5 ? 0.490 : na, "Proj top upper", color=color.new(c_cyan, 45), linewidth=1, style=plot.style_line) plot(i_zones and bar_yr >= 2028.5 ? 0.460 : na, "Proj top lower", color=color.new(c_cyan, 45), linewidth=1, style=plot.style_line) // ════════════════════════════════════════════════════════════════════ // CYCLE LABELS — Historical events // ════════════════════════════════════════════════════════════════════ lbg = color.new(#05070a, 10) if i_labels // Structural major tops (4-yr cycle) if year(time)==2013 and month(time)==11 and dayofmonth(time)<=7 label.new(bar_index, 0.900, "▲ C1 TOP\nNov 2013\n0.880", style=label.style_label_down, color=lbg, textcolor=c_gold, size=size.small) if year(time)==2017 and month(time)==12 and dayofmonth(time)<=7 label.new(bar_index, 0.770, "▲ C2 TOP\nDec 2017\n0.750", style=label.style_label_down, color=lbg, textcolor=c_gold, size=size.small) if year(time)==2021 and month(time)==11 and dayofmonth(time)<=7 label.new(bar_index, 0.640, "▲ C3 TOP\nNov 2021\n0.620 (−0.028)", style=label.style_label_down, color=lbg, textcolor=color.new(c_gold, 20), size=size.small) if year(time)==2025 and month(time)==10 and dayofmonth(time)<=7 label.new(bar_index, 0.560, "▲ C4 TOP\nOct 2025\n0.540 (−0.052)", style=label.style_label_down, color=lbg, textcolor=color.new(c_gold, 35), size=size.small) // Local sub-peaks if year(time)==2013 and month(time)==4 and dayofmonth(time)<=7 label.new(bar_index, 0.970, "◆ Sub-peak\nApr 2013 · 0.950", style=label.style_label_down, color=lbg, textcolor=c_mist, size=size.tiny) if year(time)==2021 and month(time)==2 and dayofmonth(time)<=7 label.new(bar_index, 0.680, "◆ Local top\nFeb 2021 · 0.660", style=label.style_label_down, color=lbg, textcolor=c_mist, size=size.tiny) if year(time)==2024 and month(time)==3 and dayofmonth(time)<=7 label.new(bar_index, 0.588, "◆ Local top\nMar 2024 · 0.570", style=label.style_label_down, color=lbg, textcolor=c_mist, size=size.tiny) // Major bottoms if year(time)==2011 and month(time)==11 and dayofmonth(time)<=7 label.new(bar_index, 0.196, "▼ C0 BOT\nNov 2011 · 0.220", style=label.style_label_up, color=lbg, textcolor=c_green, size=size.small) if year(time)==2015 and month(time)==1 and dayofmonth(time)<=7 label.new(bar_index, 0.196, "▼ C1 BOT\nJan 2015 · 0.220", style=label.style_label_up, color=lbg, textcolor=c_green, size=size.small) if year(time)==2018 and month(time)==12 and dayofmonth(time)<=7 label.new(bar_index, 0.196, "▼ C2 BOT\nDec 2018 · 0.220", style=label.style_label_up, color=lbg, textcolor=c_green, size=size.small) if year(time)==2022 and month(time)==7 and dayofmonth(time)<=7 label.new(bar_index, 0.236, "▼ C3 BOT\nJul 2022 · 0.260", style=label.style_label_up, color=lbg, textcolor=color.new(c_green, 25), size=size.small) // Projected events if year(time)==2026 and month(time)==10 and dayofmonth(time)<=7 label.new(bar_index, 0.240, "⟶ PROJ C4 BOT\nOct 2026\n0.265–0.295", style=label.style_label_up, color=color.new(#0a1830, 0), textcolor=c_blue, size=size.normal) if year(time)==2029 and month(time)==10 and dayofmonth(time)<=7 label.new(bar_index, 0.500, "⟶ PROJ C5 TOP\nOct 2029\n0.460–0.490", style=label.style_label_down, color=color.new(#0a1830, 0), textcolor=c_cyan, size=size.normal) if year(time)==2030 and month(time)==10 and dayofmonth(time)<=7 label.new(bar_index, 0.265, "⟶ PROJ C5 BOT\nOct 2030 · ~0.290", style=label.style_label_up, color=color.new(#0a1830, 0), textcolor=c_blue, size=size.small) if year(time)==2033 and month(time)==10 and dayofmonth(time)<=7 label.new(bar_index, 0.468, "⟶ PROJ C6 TOP\nOct 2033 · ~0.440", style=label.style_label_down, color=color.new(#0a1830, 0), textcolor=color.new(c_cyan, 30), size=size.small) // ════════════════════════════════════════════════════════════════════ // LIVE DATA TABLE (top-right) // ════════════════════════════════════════════════════════════════════ var table T = table.new(position.top_right, 2, 12, bgcolor=color.new(#050709, 5), border_width=1, border_color=color.new(#1a2d42, 0), frame_width=1, frame_color=color.new(#1a2d42, 0)) if barstate.islast and i_table // Header table.cell(T,0,0,"DECAY MODEL", text_color=c_gold, text_size=size.tiny, bgcolor=color.new(#0d1520,0)) table.cell(T,1,0,"VALUE", text_color=c_gold, text_size=size.tiny, bgcolor=color.new(#0d1520,0)) // Oscillator table.cell(T,0,1,"Oscillator", text_color=c_mist, text_size=size.tiny) table.cell(T,1,1,str.tostring(osc,"#.####"), text_color=c_cyan, text_size=size.tiny) // Model table.cell(T,0,2,"Model f(t)", text_color=c_mist, text_size=size.tiny) table.cell(T,1,2,str.tostring(model_v,"#.####"), text_color=color.new(#7a9bb5,0), text_size=size.tiny) // Upper envelope (raw) table.cell(T,0,3,"E_top", text_color=c_mist, text_size=size.tiny) table.cell(T,1,3,str.tostring(e_top,"#.####"), text_color=c_gold, text_size=size.tiny) // Upper envelope (adj) table.cell(T,0,4,"E_top adj", text_color=c_mist, text_size=size.tiny) table.cell(T,1,4,str.tostring(e_top_adj,"#.####"), text_color=color.new(c_gold,40), text_size=size.tiny) // Lower envelope table.cell(T,0,5,"E_bot", text_color=c_mist, text_size=size.tiny) table.cell(T,1,5,str.tostring(e_bot,"#.####"), text_color=c_green, text_size=size.tiny) // Equilibrium table.cell(T,0,6,"Equil. μ", text_color=c_mist, text_size=size.tiny) table.cell(T,1,6,"0.380", text_color=c_cyan, text_size=size.tiny) // Amplitude table.cell(T,0,7,"A_eff(t)", text_color=c_mist, text_size=size.tiny) table.cell(T,1,7,str.tostring(A_eff,"#.####"), text_color=c_purple, text_size=size.tiny) // Miss factor table.cell(T,0,8,"Miss factor", text_color=c_mist, text_size=size.tiny) table.cell(T,1,8,str.tostring(miss,"#.####"), text_color=miss<0?c_red:c_green, text_size=size.tiny) // Dist to equilibrium d_eq = osc - mu table.cell(T,0,9,"Δ to μ", text_color=c_mist, text_size=size.tiny) table.cell(T,1,9,str.tostring(d_eq,"#.####"), text_color=d_eq>0?c_gold:c_blue, text_size=size.tiny) // Cycle phase phase_rad = math.mod(omega*dt, 2*math.pi) phase_pct = phase_rad / (2*math.pi) * 100 table.cell(T,0,10,"Cycle phase", text_color=c_mist, text_size=size.tiny) table.cell(T,1,10,str.tostring(phase_pct,"#.#")+"%", text_color=c_purple, text_size=size.tiny) // Year table.cell(T,0,11,"Bar year", text_color=c_mist, text_size=size.tiny) table.cell(T,1,11,str.tostring(bar_yr,"####.###"), text_color=color.new(#7a9bb5,0), text_size=size.tiny)