1. Executive Summary
Critical Finding: The 3 worst-performing algorithms (Consensus, Ichimoku Cloud, Awesome Oscillator) account for 669 picks and -$431 total loss. Meanwhile, 3 strong algorithms (ADX Trend Strength, Momentum Burst, RSI(2) Scalp) are profitable but underutilized with only 257 picks and +$166 total profit. The system is over-weighting its worst strategies.
System Health Overview
| System | Picks | Win Rate | Avg Return | Status | Root Cause |
| Live Signal | 1,656 |
44.4% | -0.25% |
DEGRADED |
Worst algos dominate volume; best algos underused |
| Consolidated | 82 |
9.5% | -3.98% |
CRITICAL |
Correlated LONG-only picks; 14/15 lost on Day 1; no price tracking for 7 tickers |
| Meme Scanner | 29 |
0% | -0.16% |
FAILING |
Tokens too obscure for price feeds; LONG-only; tight SL |
| Edge Dashboard | 4 |
75% | +0.24% |
STALE |
Algorithm works (75% WR) but pipeline dead since Feb 10 |
| Sports Betting | 69 |
N/A | N/A |
STALE |
No outcome resolution possible; pipeline dead since Feb 12 |
| Penny Stocks | 6 |
N/A | N/A |
NEW |
Too early to evaluate; no closures yet |
2. Live Signal System — Deep Dive
The largest system with 1,656 picks across 16 algorithms. Overall 44.4% win rate, -0.25% average return.
2.1 Algorithm Performance Ranking
Algorithms ranked by profitability (avg return). Green = profitable, Red = losing money. The system should weight toward profitable algorithms and reduce/disable unprofitable ones.
| Rank | Algorithm | Picks | Win Rate | Avg Return | Total P&L | Grade |
| 1 | Momentum Burst | 9 |
55.6% | +2.93% | +$14.65 |
A+ |
| 2 | Breakout 24h | 2 |
50.0% | +2.44% | +$4.87 |
A |
| 3 | RSI(2) Scalp | 17 |
58.8% | +0.92% | +$15.66 |
A |
| 4 | Bollinger Squeeze | 7 |
42.9% | +0.66% | +$3.97 |
B+ |
| 5 | ADX Trend Strength | 231 |
58.9% | +0.62% | +$136.10 |
A |
| 6 | Challenger Bot | 9 |
11.1% | +0.52% | +$1.04 |
C |
| 7 | VAM | 125 |
37.6% | +0.21% | +$22.50 |
B |
| 8 | Volume Spike | 38 |
21.1% | +0.19% | +$3.17 |
C+ |
| 9 | Trend Sniper | 265 |
35.5% | -0.16% | -$38.18 |
D |
| 10 | Alpha Predator | 58 |
43.1% | -0.20% | -$11.74 |
D |
| 11 | StochRSI Crossover | 182 |
43.4% | -0.31% | -$56.16 |
D- |
| 12 | Ichimoku Cloud | 471 |
39.7% | -0.47% | -$196.31 |
F |
| 13 | RSI Reversal | 1 |
0% | -0.89% | -$0.89 |
F |
| 14 | MACD Crossover | 43 |
30.2% | -0.97% | -$33.12 |
F |
| 15 | Awesome Oscillator | 41 |
39.0% | -1.13% | -$41.82 |
F |
| 16 | Consensus | 157 |
24.2% | -1.23% | -$193.51 |
F |
2.2 Key Findings
Ichimoku Cloud is the #1 problem. It generates the most picks (471 = 28% of all signals) yet has a 39.7% win rate and -$196 total loss. It alone accounts for 53% of the system's total losses.
Consensus algorithm is the worst per-trade. At 24.2% win rate across 157 trades, it loses -1.23% per trade on average. It acts as a "worst of" ensemble — when multiple bad algorithms agree, it amplifies the error.
ADX Trend Strength is the clear winner. 231 picks, 58.9% win rate, +$136 total profit. This algorithm should be given MORE weight in the ensemble, not less.
2.3 Daily Performance Trend
| Date | Picks | Wins | Losses | Win Rate | Assessment |
| Feb 10 | 301 | 265 | 36 | 88.0% | Excellent |
| Feb 11 | 596 | 150 | 446 | 25.2% | Crash |
| Feb 12 | 338 | 116 | 222 | 34.3% | Poor |
| Feb 13 | 247 | 132 | 115 | 53.4% | Recovery |
| Feb 16 | 11 | 0 | 11 | 0% | 11-loss streak |
Feb 11 was catastrophic: 596 picks with only 25.2% win rate. This coincided with a crypto market selloff. The system lacked a regime filter — it continued generating LONG signals into a falling market. A simple volatility or trend regime check would have paused signals.
2.4 Proposed Changes for Live Signal
P0 Disable or heavily throttle Consensus algorithm
The Consensus algorithm has the worst per-trade performance (-1.23% avg). With 157 picks generating -$193 in losses, it should be disabled immediately. The "consensus of bad algorithms" problem means it amplifies errors rather than filtering them.
Proposed replacement: "Weighted Consensus" — only count signals from algorithms with >45% win rate (ADX, RSI(2) Scalp, VAM, Bollinger Squeeze). Require at least 2 profitable algorithms to agree before generating a signal.
P0 Reduce Ichimoku Cloud signal volume by 70%
Ichimoku Cloud generates 471 picks (28% of volume) but loses money. Add stricter filters:
- Require ADX > 25 (confirming trend strength) before accepting Ichimoku signals
- Require price to be clearly outside the cloud (not just touching it)
- Reduce confidence score threshold from 50 to 65
- Limit to 5 Ichimoku signals per 6-hour window (prevent flood)
P1 Add market regime filter
The Feb 11 crash (25.2% WR) shows the system doesn't adapt to market conditions. Implement a regime detector:
// Regime Detection (run every 30 min)
btc_24h_change = (btc_now - btc_24h_ago) / btc_24h_ago * 100
btc_volatility = stddev(btc_hourly_returns, 24) // 24-hour rolling
if btc_24h_change < -3% AND btc_volatility > 2%:
regime = "RISK_OFF" // Pause all LONG signals, allow SHORTs only
elif btc_24h_change > 5%:
regime = "EUPHORIA" // Tighten SL, reduce position sizing
else:
regime = "NORMAL" // Full signal generation
P1 Amplify ADX Trend Strength signals
The best algorithm (58.9% WR, +$136) should generate more signals:
- Lower the ADX confirmation threshold from 25 to 20 for high-conviction setups
- Allow ADX signals on more timeframes (currently just one)
- When ADX confirms AND another profitable algo agrees, boost confidence to 90+
P2 Implement "Algorithm Confidence Weighting"
Instead of treating all algorithm signals equally, weight them by historical performance:
// Dynamic weight calculation (recalculate weekly)
algo_weight = (win_rate * 2) + (avg_return * 10) + (sample_size_bonus)
// Example weights based on current data:
ADX Trend Strength: (0.589 * 2) + (0.62 * 10) + 10 = 17.38 // HEAVY
RSI(2) Scalp: (0.588 * 2) + (0.92 * 10) + 5 = 15.38 // HEAVY
VAM: (0.376 * 2) + (0.21 * 10) + 8 = 10.85 // MEDIUM
Ichimoku Cloud: (0.397 * 2) + (-0.47 * 10) + 10 = 5.49 // LOW
Consensus: (0.242 * 2) + (-1.23 * 10) + 8 = -3.82 // DISABLED
3. Consolidated Picks — Deep Dive
82 stock picks from the consensus engine. 21 closed, 2 wins (9.5% win rate), -3.98% average return.
8% / 4%
TP / SL (all picks)
3.1 Root Cause Analysis
Problem 1: Catastrophic Day 1. Feb 10 had 15 closures with 14 losses and 1 win. All picks were LONG. This single day poisoned the entire system's statistics. The 14 losers were all momentum/sector plays that got stopped out simultaneously — classic correlated-loss scenario.
Problem 2: Asymmetric R:R requires 33% WR. With 8% target and 4% stop loss (2:1 ratio), the system needs >33% win rate just to break even. At 9.5%, it's deeply underwater. The R:R ratio is appropriate, but the signal quality is far too low.
Problem 3: Price tracking gaps. 7 of 82 picks had $0 current price (now fixed), meaning the outcome checker couldn't resolve them. 3 (SNAP, UBER, CSCO) had actually hit stop losses days ago but weren't recorded. The true loss count was higher than reported.
3.2 Daily Breakdown
| Date | Closed | Wins | Losses | Win Rate | Key Losers |
| Feb 10 | 15 | 1 | 14 | 6.7% | 14 sector/momentum plays all SL'd |
| Feb 11 | 1 | 0 | 1 | 0% | Alpha Factor combo SL |
| Feb 12 | 2 | 1 | 1 | 50% | DIS won (+3%), quality pick SL'd |
| Feb 13 | 3 | 0 | 3 | 0% | SNAP -6.9%, UBER -6.1%, CSCO -11.5% |
3.3 What Won vs What Lost
| Category | Algorithm(s) | Result | Insight |
| WIN |
Blue Chip Growth + Alpha Factor Quality |
AMT +9.88% |
Quality + growth filters together = best combo |
| WIN |
Mean Reversion Sniper |
DIS +3.0% (expired) |
Mean reversion on blue chip worked |
| LOSS x14 |
Various momentum/sector plays |
Avg -4.2% |
All correlated LONG, all SL'd on same downturn |
3.4 Proposed Changes for Consolidated
P0 Add position correlation check
Never allow >5 simultaneous LONG picks in the same sector or >10 total correlated LONG picks. The Feb 10 disaster had 15+ LONG picks all entering simultaneously — when the market dipped, all hit SL together.
// Correlation Guard
max_same_direction = 10 // Max picks in same direction at once
max_same_sector = 3 // Max picks in same GICS sector
cooldown_after_sl = 4h // After 3 SL hits in 1 hour, pause for 4 hours
if count_open(direction='LONG') >= max_same_direction:
skip_new_long_signals()
if count_open(sector=pick.sector) >= max_same_sector:
skip_signal()
P0 Tighten entry criteria: Require multi-factor confirmation
Currently, 2 algorithms agreeing triggers a pick. Raise to 3+ algorithms, with at least 1 being a "quality" factor (Alpha Factor Quality, Alpha Factor Safe Bets, Blue Chip Growth).
The ONLY winning algorithm combo was "Blue Chip Growth + Alpha Factor Quality" — quality-first picks outperform.
P1 Add market environment filter
Check S&P 500 and VIX before generating picks:
- If SPY is below its 20-day SMA: reduce pick count by 50%, require 4+ algo agreement
- If VIX > 25: pause all momentum picks, only allow quality/value factor picks
- If 3+ picks hit SL in same day: activate "defensive mode" for next 24h
P2 Adjust R:R based on volatility
Fixed 8%/4% TP/SL doesn't account for individual stock volatility. SNAP (very volatile) and JPM (low volatility) shouldn't have the same targets.
// Volatility-adjusted targets
atr_20 = average_true_range(ticker, 20) // 20-day ATR
tp_pct = max(6%, min(12%, atr_20 * 2.5)) // 2.5x ATR, clamped 6-12%
sl_pct = max(2%, min(5%, atr_20 * 1.2)) // 1.2x ATR, clamped 2-5%
4. Meme Scanner — Deep Dive
29 picks on micro-cap meme tokens. 0% win rate. All 6 closed trades were losses; 23 expired with no outcome data.
4.1 Token Analysis
| Token | Picks | Outcome | Problem |
| WHITEWHALE_USDT | 5 | All expired |
No price API available for White Whale token |
| PIPPIN_USDT | 5 | All expired |
No price API; picked 5 times in 24h (over-trading) |
| TOSHI_USDT | 4 | All expired |
No price API; 4 picks in 2 hours on same token |
| BUTTCOIN_USDT | 3 | All expired |
No price API; repeated picks on fading momentum |
| MOODENG_USDT | 4 | 4 SL hits |
SL triggered in <2h each time; kept re-entering after losses |
| BONK_USDT | 2 | 2 SL hits |
-2.3% loss both times; same entry/SL levels |
| COPPERINU_USDT | 2 | All expired |
No price API |
| FLOKI_USDT | 1 | Expired |
No price API (note: FLOKIUSD works on live_signal) |
| QUQ_USDT | 2 | All expired |
No price API; extremely low-cap token |
4.2 Root Causes
Fatal Flaw 1: No price feed for 80% of tokens. 23 of 29 picks could never be resolved because the tokens are too obscure for any price API. The scanner picks tokens that can't be tracked. This means the 0% win rate is based on only 6 tracked trades — the true performance is unknown for the other 23.
Fatal Flaw 2: Repeated entries after losses. MOODENG was picked 4 times in 1 hour (all hit SL). PIPPIN was picked 5 times in 24h. The scanner has no cooldown — it keeps re-entering losing positions.
Flaw 3: LONG-only strategy in falling meme market. All 29 picks were LONG. During the Feb 11-12 crypto selloff, every meme token fell. No SHORT capability means the scanner can only lose in bear conditions.
Flaw 4: 2-hour hold period too short. Meme tokens are volatile. A 2-hour window with 1.5-3.5% SL gets stopped out by normal noise. The risk/reward is fundamentally broken for micro-caps.
4.3 Proposed Meme Scanner Redesign
P0 Whitelist trackable tokens only
Only generate picks for tokens that have a verified price API endpoint. Maintain a whitelist of tokens with confirmed CoinGecko/CMC/exchange API coverage. Reject any token not on the whitelist.
// Whitelist: tokens with confirmed price tracking
TRACKABLE_MEMES = [
'BONK_USDT', 'FLOKI_USDT', 'PEPE_USDT', 'DOGE_USDT',
'SHIB_USDT', 'WIF_USDT', 'MEME_USDT', 'MOODENG_USDT',
'POPCAT_USDT', 'NEIRO_USDT'
]
// Before generating pick:
if token not in TRACKABLE_MEMES:
skip("No price tracking for " + token)
P0 Add per-token cooldown
After any pick on a token (win, loss, or expiry), enforce a 6-hour cooldown before re-picking. After 2 consecutive losses on same token, enforce 24-hour cooldown.
P1 Increase hold period and widen SL
Meme tokens need wider stops and longer hold times due to their volatility:
- Hold period: 2h → 8-12h (allow for recovery from noise)
- Stop loss: 1.5-3.5% → 5-8% (wider to avoid noise stop-outs)
- Target: Keep at 3-6% or increase to match wider SL (maintain 2:1 R:R)
P1 Add volume/liquidity filter
Only pick tokens with >$500K 24h trading volume. Tokens like QUQ and COPPERINU have extremely low liquidity — the "price" may not reflect executable levels. Low liquidity also means wider spreads that eat into returns.
5. Edge Dashboard — Pipeline Gap Analysis
Only 4 picks total, all from Feb 10. Despite 75% win rate, the system hasn't generated a new pick in 6 days.
5.1 Performance (Small Sample)
| Ticker | Direction | Outcome | Return |
| DOGEUSD | SHORT | TP Hit | +2.50% |
| DOTUSD | SHORT | Expired Win | +1.10% |
| INJUSD | SHORT | Expired Win | +1.15% |
| ETHUSD | LONG | SL Hit | -3.79% |
The Edge Confluence algorithm works well. 3 out of 4 picks were winners. The one loss (ETHUSD LONG) was against the bearish trend that the other 3 SHORT picks correctly identified. The algorithm's strength is requiring 3+ algorithms to agree — high-conviction signals only.
5.2 Why No New Picks?
The lm_opportunities table stopped receiving data after Feb 10. The Edge Dashboard scans for "confluence" — moments when 3+ different algorithms simultaneously signal the same asset. This is a rare event by design. However, 6 days with zero picks suggests the scanning pipeline (GitHub Actions workflow) may have stopped running, not that conditions haven't been met.
5.3 Proposed Fix
P1 Verify and restart Edge scanning pipeline
- Check if the GitHub Actions workflow that populates
lm_opportunities is still running
- Lower confluence threshold from 3 to 2 algorithms (more picks, slightly lower quality)
- Add more algorithm sources to the confluence check (currently seems limited)
- Generate at least 1 pick per day — if no 3-algo confluence exists, output a 2-algo pick with lower confidence
6. Sports Betting — Outcome Resolution & Pipeline
69 picks from Feb 11-12 (all basketball), all now expired. No outcome resolution was ever possible.
6.1 Why Outcomes Were Never Resolved
The goldmine tracker's outcome checker only handles price-based assets. It checks current price vs entry/TP/SL for stocks and crypto. Sports bets have a fundamentally different outcome model — a game is won or lost, not a price that moves. The tracker has no integration with a sports scores API.
6.2 What the Picks Look Like
All 69 picks were basketball moneyline or spread bets from the Odds API, with these characteristics:
- Mix: ~50 NCAAB + ~19 NBA games
- Bet types: h2h (moneyline) and spreads
- Books: FanDuel, DraftKings, ESPN BET, Bovada, Betparx, Hard Rock, etc.
- Confidence range: 40-85 (most picks at 40 or 65)
- Hold period: 4 hours (appropriate for game duration)
6.3 Proposed Fix
P0 Add sports outcome resolution via ESPN API
Integrate the free ESPN scoreboard API to resolve sports bets after game completion:
// Sports Outcome Resolution
// 1. Parse ticker: "basketball_nba:Golden State Wa" -> sport + team
// 2. Check ESPN API: https://site.api.espn.com/apis/site/v2/sports/basketball/nba/scoreboard
// 3. Match game by team name + date
// 4. If our pick team won: mark as "tp_hit" (win)
// 5. If our pick team lost: mark as "sl_hit" (loss)
// 6. For spreads: check if team covered the spread
// Run: every hour during game days, check all open sports picks
// where pick_time + 5 hours < now (game should be finished)
P1 Restart sports betting pipeline
The lm_sports_daily_picks table stopped receiving data after Feb 12. The Odds API integration (sports-betting-refresh workflow) needs to be verified and restarted. With no new picks, no performance data can be accumulated.
P2 Improve value_bet algorithm
All 69 picks used the same "value_bet" algorithm. Consider adding:
- Injury check: Cross-reference with injury reports before placing picks
- Recent form: Check team's last 5-game record (win streak / losing streak)
- Home/away factor: Weight home advantage more heavily for NCAAB
- Line movement: If the line moves against the pick before game time, reconsider
7. Proposed Algorithm Improvements — Summary
7.1 Quick Wins (Fix in <4 hours)
| Priority | Change | Expected Impact | System |
| P0 |
Disable Consensus algorithm |
Eliminate -$193 in losses (157 bad picks removed) |
Live Signal |
| P0 |
Add Ichimoku ADX confirmation filter |
~70% fewer Ichimoku picks, much higher quality |
Live Signal |
| P0 |
Whitelist trackable meme tokens |
100% of meme picks become trackable |
Meme |
| P0 |
Add correlation guard (max 10 same-direction) |
Prevent Feb 10-style 14-loss days |
Consolidated |
7.2 Medium-Term (1-2 days)
| Priority | Change | Expected Impact | System |
| P1 |
Add market regime filter (BTC/SPY trend check) |
Avoid trading against macro trend; prevent -25% WR days |
All Systems |
| P1 |
Implement algorithm confidence weighting |
Best algos get more picks, worst get fewer |
Live Signal |
| P1 |
Sports outcome resolution via ESPN API |
69 picks become trackable; real sports WR data |
Sports |
| P1 |
Restart Edge/Meme/Sports pipelines |
Fresh data flowing; stale alerts auto-resolve |
Edge, Meme, Sports |
| P1 |
Meme scanner: wider SL (5-8%), longer hold (8-12h) |
Fewer false SL triggers from normal volatility |
Meme |
7.3 Longer-Term (1 week+)
| Priority | Change | Expected Impact | System |
| P2 |
Volatility-adjusted TP/SL for stocks |
Better R:R per ticker; fewer premature SL hits |
Consolidated |
| P2 |
Multi-factor sports algorithm (injuries + form + home) |
Higher-quality sports picks |
Sports |
| P2 |
Add SHORT capability to Meme Scanner |
Profit in bear meme markets |
Meme |
| P2 |
Auto-pause algorithm after 5 consecutive losses |
Circuit breaker prevents runaway losses |
All Systems |
8. Implementation Roadmap
Phase 1: Emergency Fixes (Today)
- Disable Consensus algorithm in
lm_signals configuration
- Add Ichimoku-ADX confirmation requirement to signal generator
- Add correlation guard to consolidated picks engine
- Create meme token whitelist in
mc_winners config
Phase 2: Infrastructure (This Week)
- Implement market regime filter (BTC trend + VIX check)
- Build ESPN API integration for sports outcome resolution
- Restart all stale pipelines (Edge, Meme, Sports)
- Deploy algorithm confidence weighting system
Phase 3: Optimization (Next Week)
- Implement volatility-adjusted TP/SL for consolidated picks
- Add per-token cooldown for meme scanner
- Build auto-pause circuit breaker for all algorithms
- Add SHORT capability to meme scanner
Expected Impact After All Phases
>50%
Target: Live Signal WR
>35%
Target: Consolidated WR
>30%
Target: Meme Scanner WR
Projected outcome: If the top-3 changes are implemented (disable Consensus, filter Ichimoku, add regime detector), the Live Signal system alone should improve from 44.4% to ~52%+ win rate, and the portfolio would swing from -$370 to approximately breakeven or slightly positive. The key insight is that the system already has profitable algorithms (ADX, RSI(2), Momentum Burst) — we just need to stop the unprofitable ones from drowning them out.