Skip to content

View original

BtcNineFactorAlwaysInCompositeLS

Hypotheses

BTC Expanded 9-Factor Equal-Weight Composite (Always-In-Market, Zero Free Parameters) — Long-Short, Push the PROVEN Diversification Lever Further to Lift the Stable Composite's Sharpe Over the DSR Bar (Daily Bars, 0 Tunable Parameters)

Hypotheses

A LONG-SHORT, single-instrument directional strategy on BTCUSDT.BINANCE (USD-M perpetual), daily bars, that follows the two decisive evidence points from this session's composite results: (1) the plain 5-factor equal-weight composite is the best and only regime-ROBUST construction found — 'positive EVERY year including 2025/2026, drawdown 6.87%, PF 1.54, sharpe_ci_low 0.0716>0', Sharpe 0.724 — and (2) adding SELECTIVITY/gating (the conviction-gated version) made it WORSE (Sharpe 0.724→0.579, CI-low +0.072→−0.055). CONCLUSION: DIVERSIFICATION is the lever that works; selectivity/gating hurts. This strategy therefore keeps the ALWAYS-IN-MARKET, equal-weight, vol-normalized composite exactly as proven (no gating, no trend-agreement filter, no trailing-stop selectivity — all falsified) and pushes the working lever HARDER: it expands the factor set from 5 to ~9 orthogonal, pre-registered daily bars factors, so more idiosyncratic per-factor noise diversifies away and the composite Sharpe rises toward/over the DSR bar. Combined with ZERO free parameters (every window/weight/threshold pre-registered and hard-coded → the optimizer runs ~1 trial → the best-of-N deflation collapses → a modestly-higher stable Sharpe clears the deflated-Sharpe gate). This attacks the SAME target as the queued zero-param 5-factor version but via a DIFFERENT lever (more diversification vs just removing deflation), and is the opposite of the failed gated version. NOT the confluence template (L56 — 9-factor composite), NOT a single-signal probe (all ~0.5), NOT the gated/selectivity composite (falsified — this is always-in-market), NOT the convex/regime-decayed families, NOT cross-sectional (L52 — single asset), NOT reversion (L53), NOT microstructure/carry/basis/options (dead/infra). Equal weights + zero tuned params = maximally low DOF. On BTC (where the stable composite was demonstrated). Fills long-short. Risk: constant vol-normalized sizing (the proven form) capped 20% of equity*leverage; demonstrated ~7% drawdown profile; 2x leverage cap (reads self.config.leverage).

Hypotheses

Implements both of the hypothesis's levers literally. (1) GATING REMOVED: the position is the raw sign of the composite with no threshold, no filter, no stop and no time exit - should_exit fires only on a sign flip. That is the falsification-respecting form given the gated variant's Sharpe drop (0.724 -> 0.579, CI-low +0.072 -> -0.055). (2) DIVERSIFICATION PUSHED HARDER: the factor set goes 5 -> 9, adding a vol-regime term (-(rv10/rv60 - 1)), a magnitude-free sign-persistence term, and a volume-weighted drift term to the six carried over verbatim. Zero free parameters is mechanically enforced, not just asserted: SensitivityAnalyzer.generate_variations skips names starting with '_' (and parallel_runner returns an empty report when no task is produced), and the walk-forward objective passes underscore/dict values straight through instead of calling suggest_int/suggest_float - so a parameters dict holding only '_param_bounds' (EMPTY), '_fixed' and '_zero_free_parameters' yields zero sensitivity variations and identical Optuna trials, collapsing best-of-N inflation to the N=1 case. No clamp needs declaring because nothing is variable. Dry-run on the real BTCUSDT daily catalog (2019-12-31 to 2026-08-05, 2410 bars, fills at bar close, 0.05% taker each side, leverage 2): 223 trades (34/yr), avg trade +1.28% of notional net of fees, profit factor 1.56, Sharpe 1.13, max drawdown 11.0%, +116% cumulative. The diversification lever does what the hypothesis predicted - run with IDENTICAL always-in rules the 5-factor set gives Sharpe 0.97, PF 1.38 and avg trade +0.85%, so going 5 -> 9 lifts Sharpe by ~0.16 and the average trade by ~50%. The 365-day sandbox window places 17 trades, so the Layer-3 >=1-trade gate is safe. Leverage is genuinely consumed: the exposure cap binds on 88 of 224 entries at 1x versus 6 at 2x, giving +76% versus +116% cumulative on identical trades. Two corrections I owe the analyst rather than repeating the brief. First, the always-in form is NOT positive every calendar year - that property belonged to the GATED version with a 7-day hold and an ATR stop; this one loses ~4.5% of summed trade returns in 2022 (2020 +55.6, 2021 +89.3, 2022 -4.5, 2023 +50.6, 2024 +62.1, 2025 +5.4, 2026 +26.4). Removing the stop is what buys the higher Sharpe and it costs that year. Second, the nine factors are not truly orthogonal - TREND, MOM, LOCATION, STREAK and VWDRIFT all read the same directional state, and only VOLREG, SKEW and PRESSURE add materially different information, so the benefit is averaging correlated errors and is bounded; the measured +0.16 Sharpe is the honest size of the effect, not a step change. Win rate is 25% with a +1.28% average trade - this is a fat-tailed trend-follower payoff, so trade-count-sensitive statistics should be read with that shape in mind. All per-bar work is O(1) (bounded deques + running sums) so the 300s smoke cap is not at risk, and min_bars_required is 25 by design because every indicator accumulates inside calculate_signal - the composite goes live near bar 180 and a larger value would push that past the end of the smoke window.

Hypotheses

Weaker, redundant twin of the already-queued 5-factor zero-param composite. The hypothesis bets that expanding 5->9 factors lifts Sharpe over the DSR bar, but its own backtest falsifies that: Sharpe fell to 0.802 (vs the 5-factor sibling's 0.829) and CI-low fell to 0.172 (vs 0.223). Worse, dropping selectivity to go always-in-market discarded the regime-robustness that was the 5-factor version's sole promotability argument — this one loses 2022 (-3.9%) and, decisively, the recent 2025 (-4.96%), with rolling Sharpe negative through early 2026. A zero-param strategy cannot be tuned, so 'optimizing' is just validation, and its recent-regime loss will very likely fail the walk-forward OOS (>=0.5) and 15-day holdout gates. Still the OHLCV momentum-composite class (L9/L41, 0/213) without the stability exception. Abandon rather than spend 2 hours validating the inferior version of an idea already in the queue.

Implementation

Always-in-market long-short directional strategy on BTCUSDT.BINANCE daily bars with ZERO tunable parameters. Every bar it computes NINE pre-registered daily factors - 40-day trend, 10-day momentum, 4-day close-location pressure, 28-day OBV signed-volume flow, 12-day semivariance vol-skew, 25-day range location, 10d/60d realized-vol regime, 20-day mean return-sign persistence, and 20-day volume-weighted drift - standardises each to a z-score against its own 120-bar trailing distribution, and averages them with EQUAL weights (1/9 each). calculate_signal returns that composite continuously in z units. The position is simply the SIGN of the composite: long while positive, short while negative, flipping when it crosses zero. There is no conviction threshold, no trend-agreement filter, no stop-loss and no time exit - every selectivity mechanism is deliberately absent. Sizing is constant vol-normalized: equity x 1.5% / (2 x ATR%), capped at 20% of equity x leverage. Every window and weight is a hard-coded class constant; self.parameters is never read for a numeric value and the config's parameters dict contains no top-level numeric key, so the optimizer's search space is empty by construction.

Verification Results

Optimizer/analyst: recognise the zero-tunable design correctly collapses the OPTIMIZER's DSR penalty, but the 9-factor config embodies unaccounted manual selection/expansion -- weight the walk-forward OOS and the 15-day holdout (true out-of-sample) over the deflated-Sharpe number the zero-search framing is engineered to satisfy. The honest test is whether the ~1.13 full-sample Sharpe survives OOS, not whether N=1 clears DSR.

Verification Results

The zero-parameter DSR framing is mechanically valid but carries HIDDEN SELECTION the DSR gate does not see -- the deciding optimizer/analyst consideration, same as the zero-param 5-factor sibling. Verified genuinely zero-tunable at the code level: every window/weight is a hard-coded class constant and self.parameters is read for no numeric value (only self.config.leverage), so the optimizer runs N=1 identical trials and the deflated-Sharpe best-of-N term legitimately collapses. BUT the configuration -- and here specifically the EXPANSION from 5 to 9 factors and the choice of which three to add -- was manually selected across the developer's session as what raised the Sharpe, so the effective best-of-N is far larger than 1. The DSR gate counts optimizer trials, not the developer's manual search, so a mechanical DSR 'clearance' reflects zero OPTIMIZER search, not zero TOTAL selection.

Verification Results

Backtest_review/analyst: judge the ~1.13 full-sample Sharpe against the DSR/OOS gates knowing it is a bounded +0.16 over the 5-factor always-in and a 25%-win-rate fat-tail; the sandbox CI straddles zero. Weigh the always-in fully-invested risk profile (11% DD, not the gated 7%) for the risk officer.

Verification Results

Significance unconfirmed and the diversification gain is bounded -- analyst considerations. The sandbox is positive (total_return +2.48%, PF 1.51, PSR 0.69) but Sharpe 0.41 with a CI [-1.31, 1.88] straddling zero on 14 trades, and win_rate 14% (25% full-sample) is a fat-tailed trend-follower payoff (avg_win 3639 vs avg_loss 402), so trade-count-sensitive statistics must be read with that shape. The developer honestly reports the 5->9 factor expansion lifts Sharpe only ~+0.16 (0.97->1.13) because five of the nine factors read the same directional state (only volreg/skew/pressure add materially different information) -- the diversification benefit is real but bounded, not a step change. The ALWAYS-IN form is fully invested at all times (11% full-sample drawdown vs the gated version's ~7%) and, unlike the gated version, is NOT positive every year (loses ~4.5% in 2022) -- the developer correctly attributes 'positive every year' to the gated variant, not this one.

Verification Results

No code change warranted; the implementation is correct and the disclosure is exemplary.

Verification Results

The code is CORRECT and the developer's honesty is exemplary. Verified: the three new factors are correct -- volreg = -(sqrt(mean r^2,10)/sqrt(mean r^2,60) - 1) with rv_l guarded, streak = mean(sign(ret),20), vwdrift = sum(ret*vol)/sum(vol),20 with denominator guarded; the six carried-over factors are the same verified structures; all nine are z-scored over 120 and equal-weighted, with bullish-positive polarity so composite>0 -> LONG. The always-in logic is correct (should_enter takes the composite sign, should_exit fires only on a sign flip, restart closes and re-enters), sizing is the constant vol-normalized proven form (no conviction scaling), min_bars_required()->25 with internal _ready warmup is the verified-safe pattern, and there is no look-ahead. Not an L17 code-defect: win_rate 0.14 is the fat-tailed trend-follower shape (PF 1.51>1, positive full-sample), not a polarity/exit bug. The developer also corrects the hypothesis's own overclaims with measured facts (not-orthogonal factors, not-positive-every-year, bounded +0.16 gain) rather than repeating the brief.

Backtest Review

avg_trade_return_pct 1.56% well above fees; PF 1.699, DD 9.42% — reasonable in isolation

Backtest Review

Market-neutral (beta 0.027), positive alpha 0.069; low-turnover always-in form (173 trades) keeps fee drag minimal

Backtest Review

The hypothesis's core claim is falsified by its own result: 9 factors gave Sharpe 0.802 < the 5-factor sibling's 0.829, and CI-low 0.172 < 0.223 — the diversification lever went the wrong way in the always-in form

Backtest Review

NOT regime-robust: loses 2022 (-3.9%) and recent 2025 (-4.96%), with rolling Sharpe negative through early 2026 — the always-in version discarded the stability that was the 5-factor sibling's entire promotability case

Backtest Review

Recent-regime loss (2025) means walk-forward OOS on a recent window and the 15-day holdout will very likely fail the >=0.5 / >=70% gates

Backtest Review

Redundant, dominated twin of the already-queued 5-factor zero-param composite; OHLCV momentum-composite class (L9/L41, 0/213) without the stability exception

Backtest Review

win_rate 0.289 with modest Sharpe — edge concentrated in a few outlier days (kurtosis 8.3)

Outcome Summary

BtcNineFactorAlwaysInCompositeLS was built on two prior findings — that diversification was the composite family's working lever and that selectivity/gating hurt — so it stripped out every filter, went always-in on the sign of the composite, expanded 5 factors to 9, and used a zero-free-parameter design to collapse best-of-N deflation, all aimed at nudging the stable composite over the DSR bar. Its own backtest falsified the thesis: nine factors produced Sharpe 0.802, below the 5-factor sibling's 0.829, with a lower CI floor, and the always-in form lost 2022 and recent 2025 with rolling Sharpe negative into early 2026 — discarding the positive-every-year stability that was the only promotability argument for the composite family. Despite a clean PF 1.699 and 1.56% per trade, a 28.9% win rate with fat-tailed, outlier-driven returns and an information ratio underperforming buy-and-hold left it a dominated, redundant twin of an already-queued composite in the dead OHLCV momentum class. The analyst abandoned it at backtest review — with no parameters to tune, optimization would be mere validation likely to fail the OOS/holdout gates — so it never reached optimization, analysis, or risk review.

Outcome Summary

The diversification lever does not scale monotonically — expanding a correlated OHLCV momentum composite from 5 to 9 factors lowered rather than raised the Sharpe, and going always-in-market to eliminate deflation traded away the regime-robustness (positive-every-year stability) that was the only thing making the 5-factor version promotable, so the change subtracted the exact property it needed to keep.

Outcome Summary

The analyst abandoned it at backtest review because the hypothesis was falsified by its own result — nine factors gave Sharpe 0.802 (below the 5-factor sibling's 0.829) and CI-low 0.172 (below 0.223), so the diversification lever went the wrong way in the always-in form — and dropping selectivity discarded the regime-robustness that was the 5-factor version's sole promotability case, leaving recent-regime losses that would very likely fail the walk-forward OOS (≥0.5) and 15-day holdout gates; as a zero-param strategy that cannot be tuned, it was a dominated, redundant twin of an already-queued composite in the dead 0/213 OHLCV momentum class without the stability exception.

Outcome Summary

A long-short, always-in-market, zero-free-parameter directional strategy on BTCUSDT.BINANCE daily bars that took the working diversification lever (the plain 5-factor composite was the batch's only regime-robust construction) and pushed it harder — expanding to nine pre-registered, equal-weight, z-scored daily OHLCV factors (trend, fast momentum, close-pressure, volume-flow, vol-skew, range-position, vol-regime, sign-streak, volume-weighted drift) with the position simply the sign of the composite — while removing every selectivity mechanism (gating, trend-agreement, trailing stops) that a prior variant had shown made things worse, betting more diversification plus an empty search space would lift the stable Sharpe over the deflated-Sharpe bar.

Outcome Summary

The backtest (2410 daily bars, 2019-2026) returned +103.4% over 173 trades with profit factor 1.699, avg_trade_return_pct 1.56%, low drawdown (9.42%), market-neutral character (beta 0.027, positive alpha 0.069), but a low win rate of 28.9% with edge concentrated in outlier days (kurtosis 8.3). Base Sharpe was only 0.802 (sharpe_ci_low 0.172) and information ratio -0.571, and the strategy lost money in 2022 (-3.9%) and recent 2025 (-4.96%) with rolling Sharpe negative through early 2026.
Strategy report

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