Skip to content

View original

AlgoSpotMultiDayDrawdownAccumulationLong

Hypotheses

ALGO Spot Multi-Day Drawdown Accumulation Long (BINANCE_SPOT, Daily, OHLCV-Only)

Hypotheses

A long-only, single-instrument, single-venue, OHLCV-ONLY strategy on ALGOUSDT.BINANCE_SPOT DAILY bars. Same drawdown-accumulation mechanism as the landed Btc/Near/Ftm/InjSpotDrawdownAccumulationLong siblings. EXPLICITLY ALIGNED WITH ANALYST DIRECTIVE: ALGO is an organic-demand L1 (Algorand pure-PoS chain with governance staking participation, ASA token issuance, algo-economic burn model, DeFi ecosystem growth) — same structural profile as the organic-demand siblings. NOT an event-driven coin like XRP that failed. ALGO drawdowns are reliably bought by long-term governance stakers and ASA ecosystem participants. ALGOUSDT.BINANCE_SPOT has been listed since 2019 — ~6 years of daily bars. Five parameters total. Hits BINANCE_SPOT venue quota gap (currently 11.3% vs ≥15% target).

Hypotheses

Iteration 2 fix for the Layer-2 'frozen signal (value=0.0)' failure in all six synthetic scenarios. Root cause (verified against src/verification/strategy_verifier.py lines 136-146): the Layer-2 proxy's feed_bar appends each bar to self._bars and calls calculate_signal() DIRECTLY — it never invokes this strategy's overridden on_bar, which was the only place self._closes_1d got populated (via _record_close). With _closes_1d empty, _drawdown_pct() and _sma_filter_passes() always returned None, so calculate_signal() returned a constant 0.0. Fix: added _closes_list() which sources closes from self._bars (populated by BOTH the verifier proxy and the real engine, since the custom on_bar also appends to self._bars), with a fallback to _closes_1d; the two indicator helpers now read from it. This makes the drawdown-depth signal vary every bar in Layer 2 while leaving the real-run trading math identical (self._bars carries the same close values that _closes_1d did). No imports changed (numpy only), so the Layer-1 pass is retained, and the entry/exit/sizing logic, parameter clipping, and BINANCE_SPOT long-only leverage=1 sizing are all untouched.

Hypotheses

The drawdown-accumulation thesis is falsified on ALGO. The strategy is decisively negative — profit_factor 0.45 (loses >2x what it makes), Sharpe -5.54, sortino -14.9, expectancy -$1,343/trade, total_return -25.5%, and negative in 5 of 6 years — over 19 trades, so it is not a fluke. The implementation is clean and spec-compliant (spot long-only, avg_position_pct 20% = intended, on_bar gates on flat, no position-stacking artifact and no bug to fix), which means the failure is the premise, not the code: ALGO is described as an 'organic-demand L1 whose drawdowns are reliably bought,' but ALGO has been in chronic structural decline (from ~$2.40 in 2019 to cents), so the entry (buy a 20% drawdown while close > SMA100) repeatedly catches brief failing rallies in a secular downtrend and gets stopped out at -18% (win_rate 36.8%, avg_loss > avg_win). Unlike the FIL/BTC/ETH/SOL trend-continuation siblings — which had a fixable position-stacking spec violation — there is nothing to iterate here: the mechanism faithfully implements the hypothesis and the hypothesis loses on this target. No parameter change lifts a PF-0.45/Sharpe-5.54 strategy that loses every year, and 19 trades is too thin for meaningful optimization anyway. The drawdown-accumulation template does not transfer to a structurally declining asset like ALGO — abandon.

Implementation

Long-only daily drawdown-accumulation on ALGOUSDT.BINANCE_SPOT (CASH, leverage=1), pure OHLCV. Buys when the 30-day drawdown is <= -20% AND price is above its 100-day SMA (uptrend regime filter), accumulating into organic-demand L1 weakness. Exits when drawdown recovers to >= -5%, on a -18% per-position stop, or after a 180-bar max hold. calculate_signal() returns a continuous drawdown-depth score (tanh of normalized drawdown, regime-adjusted) that varies every bar; entry/exit gating is handled in on_bar.

Verification Results

Verification failed (Layer 2 — synthetic scenarios): Parameters used: ['recovery_exit_pct', 'sma_filter_period', 'stop_loss_pos_pct', 'drawdown_lookback_days', 'drawdown_threshold_pct'] Check that __init__ sets all attributes from self.parameters.get(). - steady_uptrend: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - steady_downtrend: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - flat_ranging: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - volatility_spike: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - zero_volume: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies. - price_gap: Frozen signal: all 400 signals are identical (value=0.0). calculate_signal() likely has a bug — the signal never varies.

Backtest Review

Clean, spec-compliant implementation: spot CASH long-only, avg_position_pct 20% = intended per-leg (no leverage/stacking artifact), on_bar gates entries on flat, trades match the hypothesis.

Backtest Review

Correct venue routing (long-only no-leverage on BINANCE_SPOT), ~6 years of data, metrics_reliable=true, end_unrealized 0.

Backtest Review

Decisively negative on ALGO: profit_factor 0.45, Sharpe -5.54, sortino -14.9, expectancy -$1,343/trade, total_return -25.5%, negative in 5 of 6 years.

Backtest Review

Thesis falsified: ALGO has been in chronic structural decline (from ~$2.40 in 2019 to cents), so its drawdowns are NOT 'reliably bought' — the close>SMA100 + 20%-drawdown entry keeps catching failing rallies that hit the -18% stop (win_rate 36.8%, avg_loss > avg_win).

Backtest Review

No code defect to fix (unlike the FIL/BTC/ETH/SOL trend siblings' position-stacking) — the implementation is faithful and the premise itself loses; 19 trades is too thin for optimization regardless.

Outcome Summary

This strategy ported the proven spot drawdown-accumulation template — landed successfully on BTC, NEAR, FTM, and INJ — to ALGO, classifying it as an organic-demand L1 whose drawdowns long-term stakers reliably buy. The implementation was faithful and spec-compliant, but it was decisively unprofitable: profit factor 0.45, Sharpe -5.54, expectancy -$1,343/trade, -25.5% total return, and losses in five of six years over just 19 trades. The analyst abandoned it at the backtest-review gate on its second iteration, concluding the thesis was falsified by ALGO's chronic structural decline (so dips were never reliably bought) and that, unlike sibling strategies with fixable position-stacking bugs, there was no code defect to correct and nothing to optimize — the template simply does not transfer to a structurally declining asset.

Outcome Summary

A proven template does not transfer to a structurally declining asset — drawdown-accumulation works on organic-demand coins whose dips get bought, but on a secular downtrend like ALGO the 'buy-the-dip-above-SMA' entry just catches failing rallies into stops, so the asset's actual price trajectory matters more than its narrative classification as an 'organic-demand L1.'

Outcome Summary

The backtest-review analyst issued an 'abandon' verdict: the implementation was clean and spec-compliant (no stacking artifact, no bug to fix), so the failure is the premise — ALGO has been in chronic structural decline (~$2.40 in 2019 to cents), so its drawdowns are not 'reliably bought' and the entry repeatedly catches failing rallies that hit the -18% stop, with nothing to iterate and only 19 trades, far too thin for optimization.

Outcome Summary

A long-only, single-instrument contrarian drawdown-accumulation strategy on ALGOUSDT Binance spot daily bars (CASH, no leverage), a direct port of the landed BTC/NEAR/FTM/INJ siblings: buy a 20%+ drawdown while price is above its 100-SMA, on the thesis that ALGO is an organic-demand L1 whose dips are reliably bought by governance stakers and ASA participants.

Outcome Summary

Across 19 trades over ~6 years it returned -25.5% with profit factor 0.45, Sharpe -5.54, Sortino -14.9, expectancy -$1,343/trade, win rate 36.8% (avg loss > avg win) and a 25.5% max drawdown, negative in 5 of 6 years.
Strategy report

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