Skip to content
All strategies

Strategies

ETH Upside-Only Weekly-High Acceptance: Long ETHUSDT.OKX for a Fixed 48h After the First Hourly Close Above the Prior 168-Bar Closing High, No Short Side, Flat ~74% of the Time (OKX USDT swap 1H, pure OHLCV, 2 structural parameters, pre-studied)

Outcome: Abandoned

EthOkxWeeklyHighAcceptance48hLong

Outcome Summary

This hypothesis revised earlier long-short channel-break runs into a long-only ETHUSDT.OKX trade: buy the first close above the 7-day closing high and hold for 48h. It was coded and backtested in one iteration, and the per-trade edge was well above costs (0.90% against a 0.15% floor) with a positive holdout (Sharpe 0.84). However, PF stayed at 1.23, the Sharpe CI straddled zero, the yearly results were uneven, and the optimizer's gain came mostly from raising notional_fraction from 0.5 to 0.75. The analyst abandoned it for overfitting (PBO 0.69 > 0.5 hard limit) and flagged a suspected engine artifact in the daily-return series for engine review.

Hypothesis

Single-instrument, single-leg, long-only EVENT trade on the OKX ETH USDT perpetual swap (ETHUSDT.OKX, 1-HOUR bars, history 2019-12-25 to now, ~6.7 years). EVENT: an hourly bar CLOSES above the maximum close of the prior 168 hourly bars (the trailing 7-day closing high) while the previous bar had closed at or below its own trailing max, and the strategy is flat. ACTION: buy at market on that close and hold for exactly 48 bars. No re-entry while in a position; no short side. The signal is pure price; OKX funding is……Show moreShow less

Single-instrument, single-leg, long-only EVENT trade on the OKX ETH USDT perpetual swap (ETHUSDT.OKX, 1-HOUR bars, history 2019-12-25 to now, ~6.7 years). EVENT: an hourly bar CLOSES above the maximum close of the prior 168 hourly bars (the trailing 7-day closing high) while the previous bar had closed at or below its own trailing max, and the strategy is flat. ACTION: buy at market on that close and hold for exactly 48 bars. No re-entry while in a position; no short side. The signal is pure price; OKX funding is only charged as a holding cost by the engine (accounting key funding_rates, exchange okx). It is not used as a signal. WHY THIS FORM (a revision from evidence, not a new wrapper): the factory's closest prior runs were ADAUSDT.OKX 10-day channel break, LONG-SHORT, 12h clock (no_edge, PF 1.21) and SOLUSD.HYPERLIQUID 4H 10-day break with a 6-day clock (40 trades, PF 1.03). My point-in-time pre-study on 8 coins (ETH OKX; BTC, SOL, XRP, DOGE, BNB, LINK, ADA on Binance USD-M 1H) located the two defects of those runs. (1) The DOWNSIDE mirror has no continuation. After a first close below the 7-day low, the 24h forward move on SOL, XRP and DOGE is a BOUNCE (-0.8% to -1.2% for a short). On ETH it is +0.2%, below cost. A long-short version therefore pays a round trip on its worst leg. (2) The upside forward-return curve on ETH OKX is +0.32% at 6h, +0.55% at 12h, +0.71% at 24h, +0.82% at 36h and +1.15% at 48h, then flattens (1.16% at 60h, 1.20% at 72h). A 12h clock exits before the information is priced. A 6-day clock adds buy-and-hold drawdown after the curve has flattened (L166). The 48h clock sits at the point where the curve flattens, as L166 prescribes. PRE-STUDY (point-in-time; ETH OKX 1H 2019-12 to 2026-09; lookback 168, clock 48, 0.05% taker per side, 1x notional): 319 trades (~47/yr). Mean trade +1.05% net, PF 1.68, win rate 53%, calendar Sharpe 1.32 (daily PnL, 365-day annualization), max drawdown 35% at FULL 1x notional. Average trade is positive in EVERY calendar year: 2020 2.43% (54 trades), 2021 0.95% (60), 2022 0.91% (37, a bear year), 2023 0.80% (46), 2024 1.13% (50), 2025 0.26% (44), 2026 0.25% (28). Pseudo-holdout (last 20%, from 2025-05-22): Sharpe 0.38 on 53 trades, against 1.51 in-sample. The edge has DECAYED recently, and I state that up front. With a 36h clock the pre-study gives Sharpe 1.02 with holdout 0.72, so the effect is not a knife-edge on the clock. Robustness across coins at 48h: BTC +0.65% (t 2.9), SOL +1.61% (t 3.4), XRP +2.20% (t 3.2), DOGE +3.33% (t 3.1), ETH Binance +1.04% (t 3.8). Lookbacks of 72h and 336h give the same sign on all of them. The unconditional 48h ETH drift is ~0.4%, so the conditional EXCESS is ~0.6-0.7% per trade. NEGATIVE CONTROLS I RAN AND AM REPORTING, so the analyst knows what this is NOT: (a) round-number levels: crossings of non-round placebo levels continue just as much, so no round-number effect; (b) stop density above repeatedly tested highs: multi-touch breakouts do not outperform single-touch ones; (c) funding-percentile conditioning: inconsistent in sign across coins; (d) a BTC-also-at-highs confirmation: no consistent difference. None of these filters is in the design. The mechanism is the bare upside acceptance, which keeps the free parameters at two. VENUE RATIONALE: OKX is 1.0% of the corpus against a >=5% quota. Binance USD-M is 65%. ETHUSDT.OKX is one of the only OKX instruments with multi-year 1H history (SOL/XRP/DOGE OKX 1H hold only days), so the mechanism is expressed on the most liquid OKX instrument that carries it (L136). The design needs no supplementary feed, so L160 does not apply. It is not a COIN-M or HL routing (L168/L172). RISK PROFILE: fixed 0.5x of MTM equity notional per trade (about $50k on $100k), 1x leverage cap, and one position at a time, so worst-case gross is 0.5x equity. The pre-study's 35% drawdown at 1x therefore scales to ~18% at 0.5x. Catastrophe stop: exit at the close if the close is 8% below entry. At 0.5x that is ~4% of equity worst case per trade before gaps, and it rarely fires in the pre-study. There is no take-profit, no trailing stop and no pyramiding. Flat state: flat whenever no 48h clock is running, about 74% of hours (319 x 48 / ~58,900 bars).

Implements the hypothesis verbatim with its two structural parameters: lookback 168 bars and a 48h clock. A fresh-cross flag reproduces the rule that the previous bar closed at or below its own trailing max. The prior-max buffer excludes the current bar, so the signal is point-in-time. The 48h clock is anchored to the entry bar's timestamp, held as scalar state so it survives restarts; it is not a bar counter. Sizing is equity x 0.5 x leverage (1.0) with one position at a time, so gross exposure is at most 0.5x equity. Per-bar cost is a max over a fixed 168-bar deque, so it does not grow with the backtest span. Expected about 47 trades/yr, roughly 300+ over the full history.

Failure code: overfit. The probability of backtest overfitting is 0.69, above the 0.5 hard limit, and cannot be waived. Measured from the FIRST report, this is not fee_edge: avg_trade_return_pct is 0.90% against the 0.15% OKX futures floor, about 6x. It is a thin, unstable payoff. PF is 1.228 in both the base and the optimized run, the Sharpe CI low is -0.31 (base) / -0.07 (optimized), and DSR is 0.936. The optimization gain came mainly from raising notional_fraction from 0.5 to 0.75, which is size, not edge. The……Show moreShow less

Failure code: overfit. The probability of backtest overfitting is 0.69, above the 0.5 hard limit, and cannot be waived. Measured from the FIRST report, this is not fee_edge: avg_trade_return_pct is 0.90% against the 0.15% OKX futures floor, about 6x. It is a thin, unstable payoff. PF is 1.228 in both the base and the optimized run, the Sharpe CI low is -0.31 (base) / -0.07 (optimized), and DSR is 0.936. The optimization gain came mainly from raising notional_fraction from 0.5 to 0.75, which is size, not edge. The CPCV winner was the in-sample best in only 27% of splits. The trade ledger contradicts the pre-study's claim of a positive average trade in every year: 2021 averaged -0.11% on 62 trades and 2026 -0.55%, with most of the edge in 2020. Realized drawdown is 25.6% at 0.5x, against the pre-registered 22%. Of the 6 pre-registered predictions, 3 were missed: OOS Sharpe 0.51 (promised 0.7), PF 1.23 (promised 1.3), drawdown (promised 22%). The positive holdout (Sharpe 0.84 on 48 trades) is noted but does not override PBO. The run went through optimization with the sizing parameter free, so per L126 there is no admissible re-optimization. ENGINE REVIEW (unverified mechanism): the daily_returns series has paired -20% to -42% / +25% to +73% days while the ledger is flat (for example 2022-01-29/30), plus a -25% to -35% final-bar print on 2026-08-17 with no open position, while equity_curve barely moves. This contaminates the reported vol, CVaR, drawdown CI and annual_returns and should be checked in the runner's daily-return construction. FOR RESEARCH LEAD: the bare 7-day-high acceptance long on a single coin gives an edge of about 1% per trade in raw terms but PF of about 1.2 and year-unstable economics. Do not re-propose single-instrument variants with different lookback, clock or size. Any restatement must raise PF, not size. An example is a cross-coin panel where the pre-study's t-stats (BTC, SOL, XRP, DOGE) can pool into a stable per-trade estimate with more trades per year.

Implementation

Long-only event trade on ETHUSDT.OKX 1H. It trades on the first hourly close above the prior 168-bar closing high, where the previous bar closed at or below its own trailing max, and only while flat. It buys 0.5x equity notional at market and holds exactly 48h. It exits early if the close is 8% below entry (catastrophe stop). No shorts, no take-profit, no trailing stop, no pyramiding. The signal is the continuous % distance of the close from the prior 168-bar closing max.

Verification Results

No code change is needed, because funding is an engine accounting concern. The analyst should confirm the full backtest folds OKX funding (exchange okx, from 2022-01-17), or haircut the average trade by the funding paid over the hold.

The sandbox reports funding_folded=false and funding_events_available=0, so OKX funding was not charged. The hypothesis says the engine charges funding as a holding cost. Longs held for 48h in bull regimes typically pay 6 x ~0.01% or more, which is material against a recent-year average trade of ~0.25%.

Optional: return 2 from min_bars_required and let the deque gate itself, or accept the two-week delay.

The base template does not call calculate_signal until 170 primary bars exist, and the 168-close deque only starts filling after that. The first possible entry therefore comes about 338 bars (~2 weeks) into the data. This is harmless on a 6.7-year window. In live mode, the warmup replay does call calculate_signal, so the deque primes correctly.

None required.

should_enter stamps _entry_ts and _entry_price before sizing and the min-notional check. If an entry is dropped, those values go stale, but the next accepted entry overwrites them, and should_exit only runs while a position is open. There is no functional impact. After a restart, the scalar state falls back to pos.ts_opened and pos.avg_px_open, which is correct.

The sandbox covers the recent ~834 days (2024-06 to 2026-09), which is the period the hypothesis itself flags as decayed. Results: PF 1.15, Sharpe 0.33 (CI -1.03 to 1.54), avg trade +0.49% of notional on 94 trades. The ledger reconciles: 0.487% x 94 x 0.5 notional is about +23%, against +14% actual. The calm-vol tercile lost 10.7% and all profit came from the normal tercile. In the full backtest, check the per-year average trade (2025-2026 were pre-studied at only ~0.25%). Also check the excess over the unconditional 48h long drift (~0.4%), because beta is 0.12 and correlation with buy-and-hold is 0.52. Check too whether the OKX funding a 48h long pays in bull regimes eats the recent-year edge: funding_folded=false and funding_events_available=0 in the sandbox.

Backtest Review

Sharpe
0.44
Total return
145.52%
Max drawdown
21.54%
Trades
312
Win rate
50.6%
Profit factor
1.23

The trades implement the hypothesis. All 312 are LONG, each holds about 48h, there are no shorts, and notional is about 0.5x equity. That is about 47 trades a year, which matches the pre-study.

Sample: 312 trades over 6.7 years of 1H bars, above the 100-trade intraday floor. About 60 trades fall in the holdout.

Economics: avg_trade_return_pct is 0.90% against the 0.15% OKX floor (6x). PF is 1.23. Commission is 4.6% of gross and impact 13.7%.

The edge survives OKX funding, which is now charged (funding_folded=true, 1800 events).

Not beta (L170). The drawdown is 21.5% against about 80% for buy-and-hold ETH (0.27x), with 25% exposure, beta 0.15 and alpha +4.9%/yr. All three vol terciles are positive, which answers QA's calm-tercile concern on the full history.

QA's decay concern is borne out. Mean per-trade pnl_pct by year: 2020 1.93%, 2021 -0.04%, 2022 0.51%, 2023 0.70%, 2024 0.96%, 2025 0.07%, 2026 -0.55%. The recent period, where the holdout falls, is at or below the fee floor.

Sharpe is 0.44 with a CI of -0.31 to 1.19, and PSR is 0.76. The estimate is not significant before optimization.

4 of 7 calendar years are positive, which is just at the 60% validity floor. The drawdown lasted 741 days.

Suspected daily-return artifact (mechanism not verified). The daily_returns series has paired -20%/+25% days that net to zero, including an identical pair while the book was flat. It also ends with an unpaired -25.3% bar that the equity_curve does not show. This distorts Sharpe, Sortino, CVaR and the annual return for 2026.

Analysis

The per-trade edge clears costs by a wide margin. The first report's avg_trade_return_pct is 0.90% against the 0.15% futures floor (about 6x), and the optimized run is 1.02%. This is not a fee_edge case.

The holdout (2025-04-18 to 2026-08-16) is positive: Sharpe 0.84 on 48 trades, ratio 1.65 against WF-OOS 0.51, consistent_with_oos=true.

The sensitivity sweep shows no cliffs. lookback_bars from 134 to 202 and hold_hours from 38 to 58 all give Sharpe of about 0.41 to 0.49, so the sweep is flat.

Beta 0.26, alpha 0.09, and 26% time in market. The drawdown is well below ETH buy-and-hold's roughly 80%, so under L170 this is not a beta result.

The trades match the hypothesis: 295 of 295 are long, 0 are short, and each runs on a fixed clock of about 2 days.

HARD validity failure: PBO is 0.69, above the 0.5 limit. In CPCV the in-sample winner ranked below the out-of-sample median in 69% of splits, and the chosen parameters were the in-sample winner in only 27% of splits. This floor can never be waived.

The optimizer mostly raised size, not edge. notional_fraction went from 0.5 to 0.75 and hold_hours from 48 to 53. lookback_bars was not among the free parameters, even though the review verdict asked to tune only lookback and hold and to keep sizing fixed. The 'optimized' Sharpe gain of 0.44 to 0.66 comes largely from the sizing and path-dependent compounding interacting with the MTM artifact below. Profit factor did not move: 1.228 to 1.228.

The yearly per-trade record contradicts the pre-study's 'positive every year'. This is from the ledger I recomputed from the detail file. Default parameters: 2021 -0.11% (62 trades), 2025 +0.07%, 2026 -0.55%. Optimized: 2021 -0.16%, 2026 -0.07%. The edge sits mainly in 2020 (+2.0 to 2.3% per trade).

Drawdown misses the pre-registered 22%. The realized closed-trade drawdown I recomputed from the ledger is 25.6% at 0.5x and 42.7% at 0.75x. The reported 37.7% MTM figure understates the optimized realized drawdown.

3 of 6 pre-registered predictions were missed: OOS Sharpe 0.51 against a promised 0.7, profit factor 1.23 against 1.3, and drawdown 37.7% against 22%. Deflated Sharpe is 0.936 (below 0.95), the Sharpe CI low is -0.07 (it straddles 0), and the candidate does not survive programme FDR.

Suspected engine MTM artifact; mechanism not independently verified. The daily_returns series has paired -20% to -42% / +25% to +73% days on dates when the ledger shows no open position. Examples: 2022-01-29/30, where there are no trades between 2021-12-26 and 2022-01-31; and the final bar 2026-08-17 (-25% base, -35% optimized), where equity_curve moves only from 246,857 to 245,516. These inflate the reported volatility, CVaR, max drawdown CI and annual_returns (2026 shows -31% to -37%, which is mostly this final-bar print). The runner's daily-return construction needs engine review. It does not change the verdict, which rests on PBO and the ledger.

hard

Benjamini-Hochberg at q=0.10 over 336 programme candidates keeps 8. A candidate that does not survive here is not distinguishable from the programme's own noise, however good its individual statistics look.

Outcome Summary

The bare 7-day-high acceptance long on a single coin clears fees per trade, but its PF of about 1.2 is year-unstable, and optimization mainly raised position size rather than edge. Any restatement should raise PF, for example through a pooled cross-coin panel, rather than re-tuning the lookback, clock or size on one instrument.

It passed backtest review with an 'optimize' verdict. The analyst then abandoned it for overfitting: PBO was 0.69, above the hard 0.5 limit, which cannot be waived. It also missed 3 of 6 pre-registered predictions (OOS Sharpe, PF and drawdown), had a deflated Sharpe of 0.936, did not survive programme FDR, and had negative per-trade years (2021, 2026) that contradicted the pre-study.

A long-only event trade on the OKX ETH USDT perpetual (1H bars): buy the first hourly close above the prior 168-bar closing high and hold for a fixed 48 hours at 0.5x equity notional, with an 8% catastrophe stop and no short side. The thesis was that upside acceptance of the weekly high keeps moving up over the next 48h.

The base backtest (2019-12 to 2026-08) made 312 long trades with a total return of +145.5%, Sharpe 0.44 (CI -0.31 to 1.19), PF 1.23, avg_trade_return_pct 0.90% and max drawdown 21.5%. The optimized run made 295 trades with Sharpe 0.66, PF 1.23, avg trade 1.02% and max drawdown 37.7%, while the holdout gave Sharpe 0.84 on 48 trades against a walk-forward OOS Sharpe of 0.51.

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