LTC Spot-Cash Band Rebalancing with Re-arming Sleeve-Drawdown Protection
Outcome: Abandoned
LtcSpotBandRebalanceSleeveDrawdownRearm
Outcome Summary
This third iteration replaced the earlier inventory stop, which had halted trading for 5.4 years, with a re-arming sleeve-drawdown stop. The band mechanism was finally exercised: 61 fills, within the predicted 30-70. At the contract defaults it lost 14.1%, essentially market beta (benchmark correlation 0.93, negative alpha). The stop tended to sell near lows and re-buy higher. The optimized +78% came from fitted stop and re-entry timing, with 2020 carrying 44.5% of the profit, every sensitivity point sat within one Sharpe standard error of the baseline, and the holdout was inconclusive. The analyst abandoned the strategy for a hard year-consistency failure and the measured absence of the volatility-harvesting premium.
Revision of 'LTC Spot-Cash Threshold Rebalancing in a Capped Capital Sleeve'. Instrument, timeframe, long-only setup, 40% sleeve, 50% target weight and the weight band are unchanged; ONLY the capital protection is re-specified. On LTCUSDT.BINANCE_SPOT 4-HOUR bars, a sleeve initially allocated 40% of account equity holds LTC and USDT at a 50/50 target (initial buy: LTC worth 20% of equity at the first post-warm-up bar close). The other 60% of equity is an inactive USDT reserve that never trades. Sleeve value = LTC……Show moreShow less
Revision of 'LTC Spot-Cash Threshold Rebalancing in a Capped Capital Sleeve'. Instrument, timeframe, long-only setup, 40% sleeve, 50% target weight and the weight band are unchanged; ONLY the capital protection is re-specified. On LTCUSDT.BINANCE_SPOT 4-HOUR bars, a sleeve initially allocated 40% of account equity holds LTC and USDT at a 50/50 target (initial buy: LTC worth 20% of equity at the first post-warm-up bar close). The other 60% of equity is an inactive USDT reserve that never trades. Sleeve value = LTC holding value + sleeve USDT (tracked internally; the sleeve's cash is the starting 40% allocation plus/minus sleeve trade proceeds and fees). At each 4H bar close, LTC weight w = LTC value / sleeve value. If |w - 0.5| >= band_width, trade LTC back to exactly 50% of the sleeve value (buy when w is below, partial sell when above). The average-entry inventory stop of the previous version is REMOVED: a rebalancer adds to losers by design, so loss vs cost basis is the wrong risk measure (it fired at the Dec-2017 top and halted trading for 5.4 years). Protection is now at the sleeve level: (1) hard cap: LTC holding never exceeds 30% of total account equity — a buy is truncated to the cap, and if price appreciation pushes LTC above 30% of equity it is trimmed to 30% at the bar close; (2) sleeve-drawdown stop: track the sleeve value's high-water mark; when sleeve value falls sleeve_dd_stop_pct below its HWM at a bar close, sell all LTC into sleeve cash (market order at that bar's close) and enter a PAUSED state; (3) re-arm: the pause ends at the first bar close where EITHER cooldown_bars bars have elapsed since the stop OR the LTC close has recovered rearm_recovery_pct from its lowest close during the pause; on re-arm, buy LTC back to 50% of the (now all-cash) sleeve and reset the sleeve HWM to the current sleeve value. There is never a permanent halt. Execution: all orders are market orders at the signal bar's close (next_bar_open_fill substituted by the platform's 24/7 equivalent: the 4H close equals the next bar's open). No leverage, no shorting, no supplementary data, no assumed cash yield. Risk control route (b): signal-based exits (rebalancing, sleeve-drawdown stop) with capped sizing — the single LTC position is at most 30% of equity, far below 100%. Fee arithmetic: a rebalance only fires after LTC moves enough to shift the weight by band_width; with band_width 0.10, w goes 0.50->0.60 when LTC rises ~50% (or falls ~33% for 0.40), so each rebalance trades ~10-20% of the sleeve after a multi-tens-of-percent move; the volatility-harvesting premium of a 50/50 rebalance relative to buy-and-hold over a ±40% oscillation is roughly 1-3% of the sleeve per round trip, versus 0.10% per spot fill on the traded slice (~0.02% of sleeve). Expected rebalances: LTC 4H realized vol ~80-100%/yr implies roughly 4-10 band crossings per year at 0.10, i.e. ~30-70 rebalance fills over 2018-2025.
The analyst found the code correct but the protection contract incompatible with the mechanism: the frozen 25% average-entry inventory stop fired on the first position (bought at the Dec-2017 top) and the permanent halt left 1 trade in 5.4 years, so the band mechanism was never exercised. Following the analyst's concrete reframe, I changed ONLY the protection: (1) removed the average-entry stop (a rebalancer adds to losers by design); (2) protection is now sleeve-level — the existing 30%-of-equity LTC cap plus a……Show moreShow less
The analyst found the code correct but the protection contract incompatible with the mechanism: the frozen 25% average-entry inventory stop fired on the first position (bought at the Dec-2017 top) and the permanent halt left 1 trade in 5.4 years, so the band mechanism was never exercised. Following the analyst's concrete reframe, I changed ONLY the protection: (1) removed the average-entry stop (a rebalancer adds to losers by design); (2) protection is now sleeve-level — the existing 30%-of-equity LTC cap plus a sleeve-drawdown stop from the sleeve's high-water mark; (3) every halt re-arms after cooldown_bars or a rearm_recovery_pct bounce from the pause low, re-entering at the 50/50 target with a reset HWM; (4) risk control route (b): signal exits + single position capped at 30% of equity (<100%). Instrument (LTCUSDT spot), 4H bars, long-only, 40% sleeve, 50% target and band stay as the analyst instructed, so the premise (band rebalancing harvests LTC range volatility after fees) is finally tested across 2018-2025. LTC is uncrowded in the corpus and spot is an under-represented, higher-survival venue; no supplementary feeds needed. The sleeve stop range is set wide (25-60% sleeve drawdown, i.e. roughly 45-90% LTC decline from the sleeve peak given 50% weight) so it acts as disaster protection rather than firing on ordinary range swings.
premise_falsified. The failed gate is the enforced year-consistency floor: the final parameters are positive in only 5 of 9 calendar years (56% < 60%). This is a hard failure, so neither promotion nor labelled paper observation is allowed. Drawdown also failed: 32.5% vs the pre-registered 25% (Calmar 0.21). Fees are not the cause: commission is about 1% of gross, and per-cycle figures are -6.6% at the contract defaults and +22.2% for the final parameters, against a 0.25% spot floor (these per-cycle numbers are……Show moreShow less
premise_falsified. The failed gate is the enforced year-consistency floor: the final parameters are positive in only 5 of 9 calendar years (56% < 60%). This is a hard failure, so neither promotion nor labelled paper observation is allowed. Drawdown also failed: 32.5% vs the pre-registered 25% (Calmar 0.21). Fees are not the cause: commission is about 1% of gross, and per-cycle figures are -6.6% at the contract defaults and +22.2% for the final parameters, against a 0.25% spot floor (these per-cycle numbers are not fee-comparable for a rebalancer). PF is 0.71 at the defaults and 3.0 for the final parameters. The volatility-harvesting premise is measurably absent. With the band now exercised (61 fills over 2018-2026), the default rebalancer returned -14.1% against about -15.9% for a static 20% LTC hold (LTC buy-and-hold: -79.4%). That is about +0.2%/yr of rebalancing benefit, where the hypothesis predicted several percent. Benchmark correlation is 0.93 and alpha is negative. The final parameters' +78% comes from sleeve-stop and re-entry timing fitted on the development data, with 2020 contributing 44.5% of the profit. Every sensitivity point stays within one Sharpe standard error of the baseline (SE 0.44), and the holdout is inconclusive (Sharpe 0.18 on 4 cycles, t 0.32). Insufficient significance is not the reason for this verdict; the measured absence of the harvesting premium and the hard year-consistency failure are. This verdict covers this operationalization: LTC/USDT single-asset vs cash band rebalancing in a 40% sleeve on Binance spot 4-hour bars, with sleeve-drawdown protection.
Implementation
Long-only LTCUSDT spot (4H). A sleeve of 40% of initial equity holds LTC/USDT at a 50/50 target; the other 60% is a fixed USDT reserve that never trades (sleeve cash = USDT balance minus that reserve). At each 4H close, if |LTC weight - 0.5| >= band_width, LTC is traded back to exactly 50% of sleeve value (buy below, partial sell above), commission-adjusted. LTC is capped at 30% of total account equity: buys are truncated, and any excess from appreciation is trimmed at the close. Sleeve-drawdown stop: when sleeve value falls sleeve_dd_stop_pct below its high-water mark at a close, all LTC is sold and the strategy pauses; it re-arms at the first close where cooldown_bars bars have passed (counted from bar timestamps) or the close has bounced rearm_recovery_pct from the lowest close of the pause, then buys back to 50% of the all-cash sleeve and resets the HWM. There is no permanent halt. Execution: market orders at the signal bar's close, which on this 24/7 market is the next bar's open (the platform's equivalent for next_bar_open_fill).
This implements the revised protection contract from scratch. The average-entry stop is gone; protection is at the sleeve level (30%-of-equity LTC cap plus the sleeve HWM drawdown stop with re-arm by cooldown or recovery). Risk route (b): rebalancing and stop exits, with the single LTC position at most 30% of equity and leverage 1. All state is kept in scalar attributes: reserve, HWM, pause flag, pause start ns, pause-low close. The cooldown is measured from bar timestamps, not a process counter. Parameter names……Show moreShow less
This implements the revised protection contract from scratch. The average-entry stop is gone; protection is at the sleeve level (30%-of-equity LTC cap plus the sleeve HWM drawdown stop with re-arm by cooldown or recovery). Risk route (b): rebalancing and stop exits, with the single LTC position at most 30% of equity and leverage 1. All state is kept in scalar attributes: reserve, HWM, pause flag, pause start ns, pause-low close. The cooldown is measured from bar timestamps, not a process counter. Parameter names and defaults follow the optimization plan; the fixed ones are target_weight, sleeve_fraction, min_notional_usd and max_ltc_equity_frac. Nothing is clamped in code, so no _param_bounds. Caveat for the analyst: this is a NETTING account and the sleeve rarely goes flat (only on a sleeve stop), so the positions report books the whole period between stops as ONE trade. Expect total_trades to be very low (single digits) even with dozens of rebalance fills, and expect avg_trade_return_pct and win rate to describe that coarse denominator (lesson 175). Judge the run on fill count and the equity curve, not on the min_trades=30 criterion as the positions ledger counts it.
Verification Results
No code change is required to match the contract. If the analyst finds cap churn dominates costs, the Research Lead could amend the contract to add a tolerance band on the cap (trim only when LTC exceeds the cap by some margin, and top up only below it).
When the cap binds, the 30%-of-equity check causes a fill on almost every bar. The cap check `cap_breach = self.ltc_value > self.max_ltc_equity_frac * self.total_equity` has zero tolerance, and `_buy_notional` tops up to exactly the cap. Once the sleeve exceeds about 0.9x initial equity, 50% of the sleeve is above the cap: the weight then stays below 0.4, so a band buy (truncated to the cap) fires on down-closes, and a trim fires on up-closes. A replica simulation on the sandbox window reproduces about 960 fills, 885 of them cap trims. This is a literal implementation of the frozen hypothesis ('trimmed to 30% at the bar close', 'buy truncated to the cap'), so it is not a code defect. It does change the cost profile from the one the hypothesis describes.
Before paper, persist reserve_cash, sleeve_hwm, sleeve_paused, pause_start_ns and pause_low_close in the strategy snapshot.
Restart persistence: `reserve_cash`, `sleeve_hwm` and the pause state live in instance attributes. After a paper restart, `reserve_cash` would be re-derived as 60% of the current total equity, and the HWM would start again from the current sleeve value. That redefines the sleeve. The backtest never restarts, so the backtest result is not affected; this matters for paper/live only. The cooldown itself is calendar-anchored on bar timestamps, which is correct (check 20).
The fixed 30%-of-equity LTC cap turns the strategy into a per-bar churner whenever the sleeve has grown. I replicated the code's logic in plain Python on the real LTCUSDT 4H closes. On the sandbox-length window (last 2,400 days, roughly 2020-2026) it makes about 960 fills, close to the sandbox's 973 trades. 885 of those fills are cap trims and 71 are band buys, against the 4-10 band crossings a year the hypothesis expected. Here is how it happens. After the 2021 rally the sleeve grows past about 0.9x initial……Show moreShow less
The fixed 30%-of-equity LTC cap turns the strategy into a per-bar churner whenever the sleeve has grown. I replicated the code's logic in plain Python on the real LTCUSDT 4H closes. On the sandbox-length window (last 2,400 days, roughly 2020-2026) it makes about 960 fills, close to the sandbox's 973 trades. 885 of those fills are cap trims and 71 are band buys, against the 4-10 band crossings a year the hypothesis expected. Here is how it happens. After the 2021 rally the sleeve grows past about 0.9x initial equity. From then on 50% of the sleeve is more than 30% of equity, so LTC sits at the cap. Every up-close above the cap is trimmed and every down-close is topped back up to the cap, and each of these fills only has to clear the $5 minimum. In that regime the strategy is not harvesting band volatility. It is a constant 30%-of-equity LTC holder that pays 0.10% taker plus spread on many small slices, so the hypothesis's fee arithmetic (one ~0.02%-of-sleeve fill per multi-tens-of-percent move) does not hold there. On the full 2017-12 to 2026 history the same simulation gives about 60 fills, inside the predicted 30-70, with only 1 cap fill: the first buy lands at the Dec-2017 top and the sleeve never grows enough to hit the cap. Walk-forward windows that start after 2020 will look like the sandbox regime. Check first: fills by kind (cap trim vs band rebalance) per walk-forward window, and total commission plus spread as a share of gross PnL. If cap churn dominates, a tolerance band on the cap (for example trim only above 0.30 + band_width x 0.3) would be a Research Lead amendment, because max_ltc_equity_frac and its literal 'trim to 30% at the close' rule are fixed by the contract. Ledger note (lesson 133): this is a NETTING account and the sleeve rarely goes flat, so positions-report trade counts and avg_trade_return_pct describe stop-to-stop holding periods, not rebalance fills. Judge the run on fills and the equity curve.
Backtest Review
Sharpe
-0.05
Total return
-14.12%
Max drawdown
39.20%
Trades
9
Win rate
44.4%
Profit factor
0.71
The code implements the revised contract as written: a 40% sleeve held 50/50, band rebalancing, the 30%-of-equity cap, a stop from the sleeve's high-water mark, and a re-arm after the cooldown or a bounce from the pause low. The run never halts permanently. Over Dec 2017 to Sep 2023 the sleeve stopped and re-armed 6 times (7 stop-to-stop holding periods), so the band mechanism was finally exercised across the whole development period.
Risk is far below buy-and-hold. LTC buy-and-hold returned -77.8% with a 93% drawdown. The strategy returned -18.8% with a 37.6% account drawdown, 0.40x the underlying's drawdown, so lesson 170's beta test does not fire. All trades are long, there are no shorts, and the largest position is about 23% of equity, under the 30% cap.
A diagnostic replay of the band rule alone, with no sleeve stop, on the detail file's weekly-sampled LTC price path suggests a real volatility-harvesting effect. A 40k sleeve ends near 37-43k for band_width 0.05-0.20 (8-64 rebalances, 0.1% fee per fill). A static 50/50 mix with no rebalancing ends near 24.4k. This is a rough approximation, not the engine.
QA's churn concern does not apply to this development window. The account peaked at 121k (sleeve about 61k, so the 50% LTC target was about 30.5k against a cap of about 36k), so the cap trim/top-up regime QA described never binds here. Its fills-by-kind check should still be run on the walk-forward windows.
At the default parameters the result is negative: Sharpe -0.15, total return -18.8% (about -47% of the 40k sleeve), and the drawdown took 1,150 days to recover. LTC exposure averaged about 20% of equity, and buy-and-hold scaled to that exposure would return about -15.6%, so there is no alpha at the defaults.
The loss comes from the sleeve-drawdown stop, not the band. 5 of the 7 stops sold near local lows (LTC 116.65, 96.48, 28.52, 121.05, 42.10), and re-arming after 30 days bought back higher. That turned an approximately flat band sleeve into a -47% sleeve. Whether a wider stop or a different cooldown/re-arm setting removes the drag is exactly what the tunable ranges (sleeve_dd_stop_pct 25-60, cooldown_bars 30-540, rearm_recovery_pct 20-80) let the walk-forward answer.
The per-position statistics are a netting artifact. This is a NETTING spot account that is rarely flat, so the 7 'trades' are stop-to-stop holding periods, not rebalance fills. avg_trade_return_pct (-15.2%), win rate 0.29 and PF 0.58 describe those holding periods. They are not a per-fill edge comparable with the 0.25% BINANCE_SPOT fee floor. Judge the run on the equity curve and the fills.
With few stop events (6 in 5.75 years), the walk-forward windows will hold few decision episodes, so this is likely to be underpowered.
Analysis
The code implements the revised contract correctly. The band rebalancing is now exercised throughout 2018-2026: 61 fills, close to the predicted 30-70. The cap trim, the sleeve-drawdown stop and the re-arm all fire, and there is no permanent halt.
The accounting is valid: no order failures, zero unrealized gain at the end, commission is about 1% of gross, and impact is negligible.
The single position never exceeded about 51% of equity, there is no leverage, and the risk-control route (b) measurement shows no violations.
HARD FAILURE (cannot be waived): the final parameters are positive in only 5 of 9 calendar years (56% vs 60%). This rules out both promotion and labelled paper observation.
The premise is measurably absent. Buy-and-hold LTC over the same window returned -79.4% (100k to 20.6k). A static, never-rebalanced 20%-of-equity LTC sleeve would therefore have returned about -15.9%. The contract-default rebalancer returned -14.1% (Sharpe -0.05, 9 closed inventory cycles, PF 0.71). Over 8.8 years the band rebalancing added about 1.8 points of account equity (roughly 0.2%/yr). The hypothesis predicted 1-3% of the sleeve per band round trip, which would be several points per year.
The result is market beta, not harvesting: benchmark correlation is 0.93 and alpha is -0.039. Regime split: stressed third -15.9%, calm third +6.2%.
The sleeve-drawdown stop sells at lows. At default settings, 5 of the 9 closed cycles ended at -32% to -59% of the position's notional (2018 three times, 2022 twice). It locks in the losses the rebalancer accumulated, then re-buys after the cooldown.
The final-parameter replay (+78%, Sharpe 0.44, PF 3.0) comes from a 26% sleeve stop combined with a 364-bar cooldown and a 76% re-arm bounce. That is stop and re-entry market timing fitted on the development data, not volatility harvesting. 2020 alone carries 44.5% of the profit. Max drawdown is 32.5%, above the pre-registered 25%, and Calmar is 0.21.
Sensitivity: the baseline Sharpe is -0.097 with a standard error of 0.44. All 52 sweep points, including target weight and sleeve size, lie within one standard error of the baseline (range -0.16 to +0.32). The sweep found no region distinguishable from noise.
Holdout (2023-09 to 2026-10, final parameters): Sharpe 0.18, 4 closed cycles, t = 0.32. It is underpowered and inconclusive, so it does not support the in-sample replay.
baseline 0.71 / final 3.00
inconclusive, underpowered (4 trades)
significance (t >= 2)
per closed inventory cycle of a rebalancer, not a fee-comparable per-trade figure; fees are not the failure
baseline -6.56 / final 22.19
advisory only
+1.8 pts over 8.8 years (baseline)
predicted several pts per year
The Research Lead REVISED this hypothesis because the previous premise did not work. Implement the REVISED hypothesis (see the hypothesis description) from scratch — do not reuse the prior strategy. Revision rationale: The analyst found the code correct but the protection contract incompatible with the mechanism: the frozen 25% average-entry inventory stop fired on the first position (bought at the Dec-2017 top) and the permanent halt left 1 trade in 5.4 years, so the band mechanism was never exercised. Following……Show moreShow less
The Research Lead REVISED this hypothesis because the previous premise did not work. Implement the REVISED hypothesis (see the hypothesis description) from scratch — do not reuse the prior strategy.
Revision rationale: The analyst found the code correct but the protection contract incompatible with the mechanism: the frozen 25% average-entry inventory stop fired on the first position (bought at the Dec-2017 top) and the permanent halt left 1 trade in 5.4 years, so the band mechanism was never exercised. Following the analyst's concrete reframe, I changed ONLY the protection: (1) removed the average-entry stop (a rebalancer adds to losers by design); (2) protection is now sleeve-level — the existing 30%-of-equity LTC cap plus a sleeve-drawdown stop from the sleeve's high-water mark; (3) every halt re-arms after cooldown_bars or a rearm_recovery_pct bounce from the pause low, re-entering at the 50/50 target with a reset HWM; (4) risk control route (b): signal exits + single position capped at 30% of equity (<100%). Instrument (LTCUSDT spot), 4H bars, long-only, 40% sleeve, 50% target and band stay as the analyst instructed, so the premise (band rebalancing harvests LTC range volatility after fees) is finally tested across 2018-2025. LTC is uncrowded in the corpus and spot is an under-represented, higher-survival venue; no supplementary feeds needed. The sleeve stop range is set wide (25-60% sleeve drawdown, i.e. roughly 45-90% LTC decline from the sleeve peak given 50% weight) so it acts as disaster protection rather than firing on ordinary range swings.
Document the protections as close-evaluated thresholds. If intrabar protection is intended, maintain a reduce-only protective stop for the current inventory without setting emulation_trigger.
The 25% inventory-loss and 20% account-drawdown protections are evaluated only at four-hour bar closes. Losses can exceed these thresholds before liquidation; the sandbox's -26.25% completed-position return is consistent with this possibility and does not establish a coding defect.
Outcome Summary
On a trending, falling single asset like LTC, a 50/50 band rebalance against cash earns little over a static hold. Any gain comes from fitted stop-and-re-entry timing, so compare against a matched static-exposure baseline before tuning the protection parameters.
After optimization the analyst abandoned it as premise_falsified. The final parameters were positive in only 5 of 9 calendar years (56%, below the hard 60% floor), and drawdown broke the pre-registered 25% limit. The rebalancing added only about 0.2% a year over a static hold, where the hypothesis predicted several percent a year.
Harvest volatility by holding LTC and USDT 50/50 inside a 40% capital sleeve on Binance spot 4-hour bars, rebalancing when the LTC weight drifted by band_width. LTC was capped at 30% of equity, and a sleeve high-water-mark drawdown stop could pause trading and later re-arm, replacing the previous version's permanent-halt inventory stop.
At the default parameters it returned -14.1% from Dec 2017 to Oct 2026 (Sharpe -0.05, 39.2% max drawdown, profit factor 0.71, 61 fills and 9 closed inventory cycles). A static 20% LTC hold would have returned about -15.9%, and LTC buy-and-hold returned -79.4%. The optimized parameters replayed at +78% (Sharpe 0.44, 32.5% drawdown), but the holdout was inconclusive (Sharpe 0.18 on 4 cycles, t 0.32).
Analysis
区块链量化投资系列课程(4) - 动态平衡策略
Backtest and paper results are hypothetical. Trading involves risk of loss.