Summary
Fast-analysis decisions show a strong mean-reversion bias: during a sustained rally, the pipeline produced 82% SELL decisions, issued while price sat at the top of its recent range. The prompt explicitly encourages SELL on overbought readings, and the result is a signal stream that systematically fights trends.
Related: #216 (same deployment, same evidence set).
Evidence
From a v5.0.17 deployment, hourly fast-analysis, 6 symbols, 4 days, 518 completed analyses:
- Market context in the window: BTC +24%, ETH +33%, SOL +25%, HYPE +32% (strong one-way rally)
- 427 / 518 (82%) final decisions were SELL; average
price_position at signal time: 81st percentile for BUYs, 77th for SELLs
- Notably, the objective score layer itself was bearish only ~25% of the time (
score_based_decision SELL = 131/518) — the bearish skew accumulates across the LLM call and the finalization layers, it is not driven by the objective score alone
- The system prompt in
fast_analysis.py contains: "SELL signals are encouraged when indicators suggest downside" — on 4H/1D crypto, "indicators suggest downside" ≈ RSI overbought ≈ almost every day of a rally
Backtest proxy (QuantDinger's own Strategy V2 engine)
Fade-overbought short with the pipeline's level construction (BTC & ETH, 1D, 2024-09 → 2026-08):
- Baseline: BTC −10.6%, ETH −43.9%
- Adding a trend filter that blocks counter-trend shorts during MA bull alignment: 0 trades on BTC in 2 years — the filter becomes an off-switch, not an improvement
- Trend-following control (turtle) on the same engine/window: BTC +40.2% — the loss is specific to the fade thesis, not the engine or costs
(Small samples, directional only.)
Suggestions
- Treat "SELL signals are encouraged" in the prompt as a candidate for removal/softening — it was presumably added to counter LLM bullishness, but combined with overbought indicator feeds it produces trend-fighting behavior.
- Consider making the consensus/multi-timeframe score regime-aware (e.g. suppress counter-trend fades when a higher-timeframe trend proxy is strong), and validate any such gate with backtests before shipping — a naive gate simply removes all trades.
- Surface the market regime in the response (the engine already computes one internally in
_finalize_trading_plan_for_decision) so downstream consumers can interpret counter-trend signals.
Worth noting as context: published studies find LLM directional calls are close to random — the pipeline's rules layer should therefore not amplify the model's leanings, which is what the current construction appears to do.
Summary
Fast-analysis decisions show a strong mean-reversion bias: during a sustained rally, the pipeline produced 82% SELL decisions, issued while price sat at the top of its recent range. The prompt explicitly encourages SELL on overbought readings, and the result is a signal stream that systematically fights trends.
Related: #216 (same deployment, same evidence set).
Evidence
From a v5.0.17 deployment, hourly fast-analysis, 6 symbols, 4 days, 518 completed analyses:
price_positionat signal time: 81st percentile for BUYs, 77th for SELLsscore_based_decisionSELL = 131/518) — the bearish skew accumulates across the LLM call and the finalization layers, it is not driven by the objective score alonefast_analysis.pycontains: "SELL signals are encouraged when indicators suggest downside" — on 4H/1D crypto, "indicators suggest downside" ≈ RSI overbought ≈ almost every day of a rallyBacktest proxy (QuantDinger's own Strategy V2 engine)
Fade-overbought short with the pipeline's level construction (BTC & ETH, 1D, 2024-09 → 2026-08):
(Small samples, directional only.)
Suggestions
_finalize_trading_plan_for_decision) so downstream consumers can interpret counter-trend signals.Worth noting as context: published studies find LLM directional calls are close to random — the pipeline's rules layer should therefore not amplify the model's leanings, which is what the current construction appears to do.