Skip to content

View translation

SolFourHourThreeBarPivotLowReversalLong

Hypotheses

SOL 4H Three-Bar Pivot-Low Reversal Long with 200-SMA Bull Regime Filter (Timeframe-Rescaled for Adequate Sample)

Hypotheses

Long-only single-instrument STRUCTURAL PIVOT-DETECTION strategy on SOLUSDT perpetual futures, OHLCV-only, re-pointed from DAILY to 4H bars to generate a statistically adequate event count. Mechanism is unchanged from the prior version (which the analyst certified sound): a confirmed three-bar pivot-low fractal where Bar 2 has the LOWEST LOW of the 3 bars (local minimum) AND Bar 3 CLOSES ABOVE Bar 2's HIGH (structural upside break of the local low). This is PURE POSITIONAL/ORDINAL geometry — only the relative low-rank of the 3 bars matters, not body sizes/colors/shadow proportions — distinct from every proportional candlestick pattern in the portfolio. Economic mechanism: a confirmed pivot low marks a structural support-level establishment — the market tested a low, found buyers, and Bar 3's break above Bar 2's high evidences buyers retaking price discovery. The ONLY change vs. the failed run is bar resolution: a 3-bar pivot-low on SOL 4H fires ~4-6x more often (~250-350 events over the available history vs. ~56 on daily), enough to populate a non-empty holdout and make WF-OOS / DSR statistically testable. The 200-SMA(4H) bull regime filter, structural-invalidation stop, and minimal-parameter (3 params) design are all preserved. Stays on Binance (not Hyperliquid) because 4H needs multi-year history for a valid walk-forward + holdout, which only Binance provides at this interval.

Hypotheses

The failure was a code<->hypothesis misalignment produced by the OPTIMIZER drifting definitional constants in the post-optimization config: sma_period->100 (hypothesis mandates a 200-SMA), notional_pct->0.3503 (description states a 30% cap), and min_notional->2.766 (below the $5 exchange minimum). The strategy's code defaults were already correct (200 / 0.30 / 5.0); the mismatch came entirely from the config overrides the semantic auditor inspects. Since the optimizer's search space is exactly config.parameters, the robust fix is to REMOVE the three hypothesis-definitional params from config.parameters so the code defaults hold and can never be optimized into a contradiction, and to add a max(5.0, ...) floor on min_notional in code so orders can never be permitted below the documented exchange constraint regardless of any override. Only the genuine, non-definitional exit/risk knobs (target_R, max_hold_bars, stop_buffer_pct, risk_pct) remain exposed for optimization. The pivot-detection signal logic, entry/exit, and R-based sizing are unchanged from the previously verified code (every earlier verification layer had passed) — the sole code edit is the min_notional exchange-minimum floor. Now the regime SMA runs on exactly 200 bars, the notional cap is exactly 30%, and the minimum order is exactly $5, so the code implements the hypothesis exactly as stated on instrument (SOLUSDT.BINANCE), timeframe (4H), direction (long-only), mechanism (ordinal three-bar pivot-low break with 200-SMA bull filter and structural stop), and sizing.

Hypotheses

Failed deflated Sharpe and every forward gate on the FINAL attempt (2 of 2). DSR=0.1996 (vs 0.95 bar), with the optimized Sharpe 0.956 BELOW the 225-trial expected-max luck bar of 1.425 (is_significant=false, PBO 0.5145 >0.5, sharpe_ci_low -0.2173 straddling 0) — after multiple-testing correction the selected config is statistically indistinguishable from best-of-N noise; the high probabilistic_sharpe (0.9571) vs DSR 0.20 is the classic PSR-vs-DSR trap. Two independent forward gates concur and are decisive: the walk-forward is is_overfitted=TRUE (avg IS 1.641 collapsing ~6x to avg OOS 0.261, one negative window -0.706), and the time-ordered HOLDOUT FAILED and is NEGATIVE (holdout_sharpe -1.92, ratio -7.356 vs WF-OOS 0.261) — the untouched recent window loses money, consistent with genuine 2025-2026 decay (2025 -14.0%, 2026 -5.1%, rolling Sharpe to ~-6). The clean 0-cliff sensitivity grid measures consistency, not significance, and its entire ~0.7-0.87 plateau sits below the luck bar. Not iterate: attempt 2 of 2 is exhausted, the walk-forward is overfit and the holdout negative — the binding failure is forward non-generalization, not an under-explored parameter region, so a further best-of-225 sweep re-selects the same sub-significant, decaying config. Not revise_hypothesis: single-asset 4H structural pivot-low reversal on SOL is not a proven mechanism stranded on a dead target (SOL is fine; no promoted pivot/structural-breakout sibling exists — the closest, ADA's sequential-breakout family, was likewise abandoned post-optimization). FAILURE PATTERN: the timeframe rescale from daily to 4H did exactly what it promised — it produced an adequate, testable sample (279 trades, non-empty holdout, computable DSR) — and the verdict that sample delivers is that the pivot-low mechanism's edge is sub-significant: a genuine but modest, 2021/2023-concentrated ~0.96-Sharpe edge that cannot clear the 225-trial luck bar (DSR 0.20), overfits the walk-forward (IS 1.64 -> OOS 0.26), and loses money in the untouched forward holdout (-1.92). Fixing the sample-size objection does not create statistical significance; a clean sensitivity grid and improved base Sharpe do not rescue an edge that fails deflated Sharpe and its forward holdout simultaneously.

Implementation

Long-only three-bar pivot-low reversal on SOLUSDT.BINANCE perpetual, 4H bars, OHLCV-only. Enters long when the middle of the last three bars has the strictly lowest low (a confirmed pivot low) AND the current bar closes above that middle bar's high (structural upside break), filtered to a bull regime where close is above the 200-period SMA. Stop is structural (just below the pivot low), target is target_R multiples of that risk, plus a time stop. Position size risks risk_pct of equity over the structural stop distance, hard-capped at 30% of equity notional, with a $5 exchange-minimum floor.

Backtest Review

Timeframe rescale achieved its goal: 237 trades (vs ~56 on daily) — enough to populate a non-empty holdout and make WF-OOS / DSR statistically testable

Backtest Review

Trades match the hypothesis: 237 long / 0 short pivot-low reversals, low beta (0.06) and 30% exposure confirm the regime filter + structural stops actually gate exposure (not a closet long)

Backtest Review

Edge clears trading costs: ~0.8% expectancy per trade on ~26% notional, commission only 2.7% of gross

Backtest Review

Clean risk profile: max_drawdown 15.5%, recovery_factor 3.25, Sharpe 0.75, minimal 4-knob tunable surface with definitional constants hard-locked out of the optimizer

Backtest Review

Thin profit_factor (1.18) and sharpe_ci_low (-0.355) straddling zero — edge is modest and may not survive best-of-N deflation

Backtest Review

Recent-regime decay (2025 -8.2%, 2026 -5.8%) puts the recent-window holdout at real risk

Backtest Review

Win rate 41.8% with a 2R target leans on a few large winners (tail_ratio 1.61) — outlier sensitivity to watch in walk-forward

Backtest Review

low, healthy

Backtest Review

modest positive

Backtest Review

adequate sample — the core fix this iteration targeted

Backtest Review

thin but > 1

Analysis

The 4H rescale achieved its stated goal: adequate, testable sample (279 trades, non-empty holdout, computable DSR/WF)

Analysis

Clean sensitivity surface: 0 cliffs across all four tunable knobs; low fee drag (commission 3.2% of gross)

Analysis

Optimization improved base Sharpe (0.75->0.96) and the trades correctly implement the pivot-low mechanism

Analysis

Fails deflated Sharpe: DSR=0.1996 vs 0.95 bar; optimized Sharpe 0.956 BELOW the 225-trial expected-max luck bar of 1.425

Analysis

PBO=0.5145 (>0.5), sharpe_ci_low -0.2173 straddles 0, is_significant=false

Analysis

Walk-forward is_overfitted=TRUE: avg IS 1.641 collapses ~6x to avg OOS 0.261, one negative OOS window (-0.706)

Analysis

Forward HOLDOUT FAILED and is NEGATIVE: holdout_sharpe -1.92, ratio -7.356 — untouched recent window loses money

Analysis

Recent decay: 2025 -14.0%, 2026 -5.1% (optimized); rolling Sharpe to ~-6 into 2026

Analysis

Edge outlier-tilted and 2021/2023-concentrated (skew 1.76, kurtosis 9.9)

Analysis

Code↔hypothesis misalignment found by the semantic auditor — the code does NOT implement the hypothesis. Re-code the strategy to implement the hypothesis EXACTLY (instrument, timeframe, direction, the named edge/mechanic, sizing). Concrete issues: sma_period=100 in the optimized config contradicts the hypothesis title ('200-SMA Bull Regime Filter'), the config.description ('200-period SMA'), and the rationale ('200-SMA(4H) regime gate'); the code reads p.get('sma_period', 200) so the regime SMA actually runs on 100 bars, not 200 | notional_pct=0.3503 (35.03%) contradicts both the config.description and rationale which state the size is 'capped at 30% of equity notional'; code applies min(notional, equity * notional_pct) using 0.3503, ~5 percentage points looser than stated | min_notional=2.766 in the config is below the $5.00 exchange minimum (code default is correctly 5.0); the guard 'if notional < self.min_notional' uses the overridden 2.77 value, permitting orders below the documented exchange constraint

Outcome Summary

This iteration re-pointed a previously sound three-bar pivot-low reversal mechanism from daily to 4H SOL bars specifically to generate an adequate, testable event count, and it succeeded on that count: 237 long trades in the backtest earned the analyst's 'optimize' verdict with a modest but cost-clearing edge (Sharpe 0.75, ~0.83% expectancy). Optimization improved the headline numbers (Sharpe 0.96, 279 trades, 73.4% return) but exposed the edge as sub-significant—deflated Sharpe 0.20 against a 0.95 bar, PBO above 0.5, and an overfit walk-forward whose in-sample Sharpe of 1.64 collapsed roughly sixfold to 0.26 out-of-sample. Decisively, the untouched time-ordered holdout was negative (Sharpe -1.92), consistent with genuine 2025-2026 decay, so the analyst abandoned the strategy on the final permitted attempt. The verdict the larger sample delivered was that the pivot-low mechanism on SOL 4H is a real but 2021/2023-concentrated edge that cannot clear the multiple-testing luck bar or generalize forward.

Outcome Summary

Fixing a sample-size objection (rescaling daily to 4H) makes an edge testable but does not create statistical significance—a clean sensitivity grid and higher base Sharpe cannot rescue an edge that fails deflated Sharpe, overfits the walk-forward, and loses money in an untouched forward holdout.

Outcome Summary

The analyst abandoned it after optimization because it failed every forward gate: deflated Sharpe 0.1996 (vs 0.95 bar) with optimized Sharpe below the 225-trial luck bar of 1.425, PBO 0.5145, walk-forward is_overfitted=true (IS 1.641 collapsing to OOS 0.261), and a negative time-ordered holdout (Sharpe -1.92, ratio -7.356), with iteration 2 of 2 exhausted.

Outcome Summary

A long-only, OHLCV-only structural strategy on SOLUSDT 4H (Binance perp) that buys confirmed three-bar pivot lows (middle bar has the lowest low, next bar closes above its high) only in a 200-SMA bull regime, with a structural stop just below the pivot low.

Outcome Summary

The initial backtest ran 237 long trades over 793 days with a 52.83% total return, Sharpe 0.747, 41.8% win rate, profit factor 1.18, and 15.46% max drawdown; optimization lifted the base Sharpe to 0.956 across 279 trades (73.4% return) but pushed max drawdown to 18.43%.
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.