⌂ Research Index · tradebotsecrets research record · evidence-first, negatives included
Damped Wave Horizon Check

BTC · Volatility envelope · Unforced fits vs the re-excited (forced) model

Damped Wave Horizon Check

Round 1 asked whether the unforced damped-wave equation models the market at the 7/30/90-day horizons (it doesn't -- both the frozen and rolling fits ring down to zero while realized volatility never decays). Round 2 adds the operator's fix: the FORCING TERM the equation is missing -- re-strike the oscillator on the causally measured peak-timing clock. Round 3 (Daily first, per the operator) trains EVERY remaining constant: the decay shape learned as an empirical post-peak profile, and the fixed median clock replaced by a fully learned strike-arrival distribution (a renewal-process hazard, propagated forward candle by candle). Every model is scored on the same real anchors.

Verdict with every constant trained (Daily), stated plainly: the forcing term fixes the flatline -- every re-excited variant holds a permanent non-zero floor -- and the LEARNED decay profile lands within ~10-15% of the realized level (the analytic variant overshoots ~2x: the ACF-fitted damping is far slower than the real post-peak drop). The learned CLOCK (hazard) makes the single-anchor forecast genuinely oscillate (see the single-anchor panels below) and converges to the learned-profile model at long horizons -- but at 1 candle ahead it is WORSE (146.1 vs 122.1 bps), because its expectation mixes the big strike value into every forecast and |return|'s heavy tail punishes that in MAE. And the ceiling never moved: no variant beats the anchor's own causal trailing-window mean (117.6 bps at 1 candle) at any horizon, even 1 candle ahead. Decay shape, strike size, and strike timing are now all learned from the data -- the phase of the ~7-candle volatility cycle still carries no measurable forecast value over the local average level. The re-excited model's honest value is structural (a forward projection that stays realistic forever, usable as a sizing/take-profit envelope), not predictive edge.
Aggregate curves & horizon tables — every model, same anchors
The trained model vs BTC price — the candles it trained on and the candles it never saw
The model forecasts the |return| ENVELOPE (how big the next move is), never direction — so against price it is a TUBE, not a line. Left of the divider: the last 150 Daily candles of the training pool. Right of the divider (tinted): the 90-candle holdout continuation the model never saw — every prediction there comes from a fit on that candle's own trailing window only, exactly as it would run live. One-step MAE: 166.1 bps on the trained stretch vs 142.6 bps on the unseen stretch — no degradation crossing the boundary (a level estimator doesn't overfit its pool; the unseen stretch simply ran calmer). The third chart is the harder test: the model FROZEN at the boundary and projected 60 candles into the unseen future with no re-anchoring — the envelope compounds into a bounding cone (price if every candle moved its full predicted size one way); the real unseen price path stays inside it, which is what an envelope model is for — sizing the moves, never calling their side.
Single real anchors, linear axis — where the oscillation actually lives
Why the aggregate curves above are flat while these oscillate: the curves above average hundreds of anchors sitting at random phases of their own cycles (the wiggles cancel, leaving level -- for the market's realized curve too), and even per-anchor the honest phase-diffusion weight falls to ~0.12 after ONE cycle at the measured timing jitter (CV ~0.33). Below, single real Daily anchors: the purple learned-clock path re-strikes and decays -- the sawtooth is real -- while the real |return| path (grey bars) shows what it is up against. Note also the calibration gap: this stretch of the pool ran quieter than its own trailing window, so every model sits high -- level error, not phase error, dominates.
The practical hookup, tested — envelope-scaled DCA ladder on the halving-cycle SHORT
Operator's "anticipated take-profit" idea, attached to the validated direction source and run through the real ladder simulator (the operator's own baseline ladder, 24h re-center, halving SHORT window 2025-09-28 → 2026-05-04, funding off, nothing fitted to the window): at every re-center tick the rung and take-profit distances multiply by the causal envelope scale (one-day-ahead learned-clock forecast ÷ trailing level, clamped [0.5, 2]). Results, full window / untouched final 15%:
Arm1x full1x final 15%5x full5x final 15%
Baseline (operator's ladder)+21.6%−16.8%+98.0%−259%
Anticipated TP only (raw scale)+17.9%−17.8%+56.2%−247%
Entry + TP (raw scale, mean 1.40)+15.8%−14.5%+64.8%−184%
Anticipated TP only (bias-corrected)+19.6%−17.3%+72.8%−249%
Entry + TP (bias-corrected, mean 1.05)+25.4%−17.0%+129.6%−274%
Honest read, per-slice decomposed before trusting the headline: the take-profit-only scaling (the literal "anticipated TP") LOSES in every variant. The bias-corrected entry+TP arm's full-window win decomposes into regime-correlated slices — at 1x the per-slice edges are noise (±0.5pp, split 2–2); at 5x it gains in the three profitable slices (+2.8/+3.4/+11.6pp) and gives back MORE in the adverse final slice (−15.3pp). That is "amplifies whatever the halving call is doing," not forecast skill — consistent with the horizon tables above (envelope shape adds nothing beyond level). The one real, reproducible effect: the RAW (systematically wider) scale is a de-risking knob — fewer fills (449→363), slower deployment, smallest adverse-slice losses at both leverages — a risk dial, not an edge. scripts/run_envelope_scaled_dca_ladder_check_v1.py · logs/envelope_scaled_dca_ladder_check_v1_summary.json
scripts/run_reexcited_damped_wave_check_v1.py · evolution/reexcited_damped_wave_v1.py · logs/reexcited_damped_wave_check_v1_summary.json · peaks: strict local max ±3 candles, confirmed-only (causal); cycle stats, learned profile, and hazard clock from each anchor's own trailing 180-day window; hazard forecast: exact renewal-process phase distribution propagated candle by candle, no Gaussian approximation. Daily first per the operator; finer timeframes only if something here had won.