Strategies
Cross-Sectional Funding-Carry + Crowding Premium Across 12 Never-Traded Binance USD-M Alt Perps — Dollar-Neutral Long the Lowest-Funding / Short the Highest-Funding Names, Inverse-Vol Weights, Volatility-Targeted Gross, Weekly Rebalance on DAILY Bars (3 parameters)
Outcome: Abandoned
AltPerpCrossSectionalFundingCarryCrowdingLS
Outcome Summary
AltPerpCrossSectionalFundingCarryCrowdingLS was a weekly-rebalanced, dollar-neutral funding-carry book across twelve previously untraded Binance USD-M alt perpetuals, pre-registered on offline evidence of Sharpe 1.16 and seven positive calendar years. The delivered backtest fell well short: Sharpe 0.318, profit factor 1.158, 34.86% total return and 17.36% max drawdown over 645 trades, with the reviewer confirming funding carry was positive every year while the claimed crowding-reversal leg looked like residual alt-market beta, 88% of PnL sitting in five trades, and the stressed vol tercile losing 7.15%. After four iterations the run was abandoned at the backtest-review gate as an artifact: cancelling ±2.5% daily MTM pairs recurred on the exact dates flagged in three prior iterations, and the reported per-trade return contradicted the trade file, so the metrics the optimizer would have maximized were deemed unusable. The reviewer escalated the marking and avg_trade_return_pct behaviour on multi-instrument books for engine-side review rather than more strategy-code changes.
Hypothesis
Implementation
Verification Results
Either fold the haircut into the declared bound (search vol_target_annual over the effective range) or document that vol_target_annual is a nominal pre-haircut target, so the optimizer's chosen value is interpretable against the pre-registration.
_vol_haircut = 1.75 divides the pre-registered vol target: the effective target is 20%/1.75 = 11.4% annualized, not the 20% the hypothesis states. The rationale (names selected on funding extremes carry elevated forward vol) is defensible and the deviation is risk-CONSERVATIVE, and in the sandbox it is moot because the 2x gross cap binds instead — but the searchable knob vol_target_annual therefore does not mean what its name and the hypothesis say, and the optimizer will be searching an effective 0.057-0.20 band.
Log and assert that the EOS position count reaches zero on the bar after retirement (the BOOK log already prints npos per leg), and check in the full backtest report that no EOS position survives past 2025-05-22; if it does, realize the leg on its LAST printed bar instead (a one-bar-early exit is the honest delisting treatment).
_retire_leg flattens the EOS position on the FIRST bar EOS fails to print (2025-05-22 onward — verified in the catalog: EOSUSDT.BINANCE-1-DAY ends 2025-05-22 while all other 11 legs run to 2026-09). The exit is submitted as a market order on an instrument that has no further bar data, so the sim matching engine has only the stale last bar to fill against; if it does not fill, the leg is stranded until on_stop's close_all_positions and its terminal PnL is marked at a price ~15 months stale.
Move the _blocked.clear() to AFTER _trim_losing_legs' effect is consumed for that bar (or run the trim after the rebalance), so a leg stopped out today cannot be re-entered until the next rebalance.
_trim_losing_legs runs BEFORE the rebalance branch clears self._blocked, so a leg stopped out on a rebalance bar is unblocked in the same bar and can be re-entered immediately at the target weight — the 25% leg stop is a no-op on 1-in-7 bars. Cosmetic in expectation (the stop is not a hypothesis-stated exit), but it makes the realized stop behaviour date-dependent.
Backtest Review
- Sharpe
- 0.32
- Total return
- 34.86%
- Max drawdown
- 17.36%
- Trades
- 645
- Win rate
- 50.1%
- Profit factor
- 1.16
Funding carry is real and credited: +$28,106 of the $61,996 realized closed-trade PnL (45%), positive in EVERY year (2021 +2.4k, 2022 +8.7k, 2023 +10.7k, 2024 +6.2k) and on 406/645 trades — the one pre-registered claim that survived five iterations.
Sample and mechanics match the hypothesis: 645 closed trades over 1,430 traded days, 12 declared legs, both sides used (288 long / 357 short), weekly cadence (345 trades at exactly 7d), dollar-neutral rotation. Not a disguised momentum clone.
Iteration 5 did fix the semantic auditor's finding: all twelve pre-registered names are declared, with EOS handled as a partial-history leg that is excluded rather than stale-priced.
BLOCKING, THIRD REQUEST UNANSWERED: cancelling daily MTM pairs unchanged on the exact dates named in iterations 1-3 — 12-10/11 (-2.42/+2.65), 13/14 (-2.87/+2.59), 17/18 (-2.50/+2.53), 21/22 (-2.31/+2.54), 24/25 (-2.28/+2.24), 28/29 (-2.66/+2.37), each netting ~0.1%. Symptom verified; mechanism NOT asserted.
Reported avg_trade_return_pct -0.084% is irreconcilable with the detail file (mean pnl_pct +0.256%, avg_trade_pnl_usd +$96, which the win/loss averages reproduce) and has flipped sign across three runs (+0.565% → +0.189% → -0.084%).
Crowding-reversal falsified: price PnL per year per side (2021 L +27.7k/S -17.8k, 2022 L -42.0k/S +37.1k, 2023 L +16.9k/S -15.0k, 2024 L +31.5k/S -2.5k) is residual alt-market beta, not a two-sided reversal premium.
Five trades ARE the result: top 5 of 645 = 88% of PnL, top 20 = 225%; ex-top-5 the book earns +$7.5k over four years, less than funding alone, so the price leg is ~-$20.6k.
Stressed vol tercile -7.15% (Sharpe -0.219) vs calm +32.2% — backwards for a crowding-washout harvest.
Pre-registered Sharpe 1.16 / 7 positive years → delivered 0.318 (CI -0.54..1.20), PF 1.158, 3 of 5 years positive.
Run window still ends 2025-01-11 and equal-beta sizing / n_per_side 4-5 were never implemented (asks #2 and #3 from iterations 2-3); end_unrealized_pct -27.1.
Analysis
Outcome Summary
Pre-register a falsifiable decomposition and a metrics-integrity check first — here the carry leg was real but the crowding-reversal premium turned out to be residual alt-market beta concentrated in five trades, and unresolved multi-leg MTM/per-trade-return inconsistencies ended the run before any parameter work could matter.
The backtest-review gate returned abandon with abandon_class=artifact: the daily MTM series still printed cancelling ±2.5% pairs on the same December-2024 dates flagged in three earlier iterations, and the reported avg_trade_return_pct (-0.084%) could not be reconciled with the trade records (+0.256% mean, +$96/trade), so the headline Sharpe/vol/drawdown were judged untrustworthy to hand to the optimizer. Optimization, analyst review and risk review were never reached.
A dollar-neutral, cross-sectional carry book over 12 never-traded Binance USD-M alt perps that went long the lowest-funding (crowded-short) names and short the highest-funding (crowded-long) names each week, inverse-vol weighted and scaled to a 20% annualized vol target, to harvest funding cash flow plus a crowding-reversal price premium.
The single backtest over 1,823 daily bars (2020-01-16 to 2025-01-11) returned 34.86% total (CAGR 13.12%) with Sharpe 0.318 (CI -0.54 to 1.20), profit factor 1.158, max drawdown 17.36% and 645 closed trades at a reported avg_trade_return_pct of -0.084%, far below the pre-registered Sharpe 1.16 and 7-of-7 positive years. The reviewer found funding carry genuinely positive every year (+$28,106, 45% of realized PnL) but the top 5 trades accounted for 88% of PnL and the stressed vol tercile returned -7.15% (Sharpe -0.219).
Backtest and paper results are hypothetical. Trading involves risk of loss.