| name | sf-edge-watch |
| description | Diagnose whether a strategy's edge is alive, softening, decaying, or dead — by comparing forward-test vs backtest profit factor / win rate and 7d vs 30d vs 90d recency. Use when the user asks "is this strategy still working / is the edge alive / is X dying / health-check this strategy". Read-only. |
sf-edge-watch
Edges decay. This skill tells you whether one is still alive, by checking
two independent signals:
1. Forward-vs-backtest divergence. If forward-test profit factor has
dropped below half of backtest PF, the live edge has cratered relative to
the curve fit. Same logic on win rate.
2. Recency collapse. Annualize the 7-day, 30-day and 90-day returns
and compare. If the annualized 7d has crashed to less than half of
annualized 30d, the regime has turned hostile.
Each fired flag is listed. Status is then assigned:
| Status | Meaning |
|---|
alive | No flags. Keep running. |
soft | One mild flag (7d small drawdown). Watch it. |
decaying | 2 flags, or one moderate flag. Consider trimming. |
dead | 3+ flags, or forward PF under half of backtest. Pull it. |
When to use
- "Health-check this strategy"
- "Is
trendhoo-v5-by-daviddtech-2543 still working?"
- "Is the edge dying on my deployed bots?"
- Called as a subprocess by
sf-prune and sf-loop-pruner
How to run
# Single strategy
python sf-edge-watch/watch.py STRATEGY_ID_OR_SLUG [--json]
# Audit ALL strategies tied to your deployed bots
python sf-edge-watch/watch.py --deployed [--json]
Output
For one strategy: status, flags list, and the underlying metric comparison
(forward PF vs backtest PF, etc.).
For --deployed: a table — bot name, strategy, status, flag count — sorted
worst-first.