TL;DR: Alerts are the auto-scanner in Row 3 of the Investment Dashboard. 50+ rules across 7 categories — valuation, risk, credit, technical, momentum, dividend, quality — run nightly and flag anomalies in red / yellow / green. Read reds first, greens as confirmation, yellows as judgement calls.
Concepts
How Are Alerts Generated?
Alerts aren't written by an analyst nor inferred ad hoc by an AI. They come from a rule engine. Each rule is an explicit condition:
- "P/E above 1-year P95 → Red: Valuation extreme"
- "Sharpe Ratio < 0 → Red: Risk-adjusted return negative"
- "Altman Z > 2.99 → Green: Credit safe zone"
- "Piotroski F = 9 → Green: Strong financial quality"
Every stock runs the full scan once daily, collects every triggered rule, and sorts them by severity (Red → Yellow → Green).
The 7 Alert Categories
| Category | Meaning | Example |
|---|---|---|
| Valuation | Is the current price reasonable? | P/E at historical top, P/B too high |
| Risk | Historical volatility and drawdown | Max drawdown too deep, annualized vol extreme |
| Credit | Bankruptcy risk | Altman Z in caution zone, KMV DD too short |
| Technical | Price-pattern signals | RSI severe overbought, KD golden cross |
| Momentum | Trend strength | 60-day momentum top quartile, consecutive up days |
| Dividend | Distribution stability | Yield percentile too low / too high |
| Quality | Composite financial health | Piotroski F nine-of-nine vs many failed |
Red / Yellow / Green Meanings
- Red: Severe signal, needs immediate attention. Strict thresholds, low false-positive rate.
- Yellow: Worth noting but not urgent. Often "moderate deviation" or "needs other indicators to confirm."
- Green: Positive signal, confirmation that "this aspect of the stock is solid."
Important: Red ≠ "don't buy" and green ≠ "do buy." Alerts are clue gathering, not investment instructions.
Hands-on: Reading It on CTSstock
Open any stock (/analysis/tw/2330), scroll to Row 3 "Alerts."
Layout:
- Three columns (red, yellow, green), each showing up to 3 items sorted by severity
- Click any message to jump to the detailed anchor in the corresponding deep page (e.g. clicking "P/E at P95" jumps to the Valuation tab)
- Messages include concrete numbers (e.g. P/E = 32.5, P95 = 30) so you can gauge trigger strength
Three Usage Patterns
Pattern 1: Red-flag scan (30s)
Look at the red column only. If 3 reds spread across 2+ categories (e.g. "Valuation extreme" + "Drawdown too deep"), multiple dimensions are unhealthy — reduce position.
Pattern 2: Red-vs-green hedged read (1 min)
Cross-read red and green together:
- Red "P/E at P85 (high)" + Green "Piotroski F = 9, strong quality" → "Expensive but high-quality" — depends on whether you'll pay the premium for quality
- Red "Sharpe < 0" + Green "Altman Z safe zone" → "Poor short-term return but low bankruptcy risk" — may suit long-term holders
Pattern 3: Cross-stock comparison (3 min)
Read alerts on 3 candidate stocks side-by-side. The one with most greens and fewest reds wins. But beware: total alert count isn't a quality metric — high-volatility stocks naturally trigger more rules regardless of merit.
FAQ
Q: Are alerts real-time or daily?
Daily (one full scan after market close). Intraday signals (e.g. an intraday breakout) aren't covered by the alert system; for those, use the "Anomaly Signals" page.
Q: Are there false positives?
Yes. Thresholds are intentionally lenient (e.g. P/E P95 triggers "extreme," not P80) to reduce noise. But some rules will inherently misfire — "Max drawdown -30%" fires red on any stock that just experienced a big decline, but during 2008 or 2020 nearly every stock would trigger. Always read alerts with market context in mind.
Q: Where's the full rules list?
The complete table (53 rules with conditions, thresholds, severity, copy) lives in tasks/alerts_rules.md in the project repo. Users see only the triggered messages, not the rule table itself.
Q: Can I customize the rules?
Not currently — rules are centrally maintained. We may add "subscribe to alerts" for watchlist stocks, but personal rule customization isn't planned: rule quality requires backtesting validation, and ad-hoc custom rules tend to introduce noise rather than insight.