{
  "scan_date": "2026-04-28",
  "macro_notes": "TSX Composite above 200-day MA (~32,732); bullish market breadth — 82 stocks on positive breakouts list vs only 6 negative (Globe and Mail). WTI crude retreated from >US$110 to <US$100 following US-Iran ceasefire announcement (Apr 14), pressuring Canadian energy stocks 8-10% off March ATHs. Bank stocks (RY, TD, BMO, BNS) near or at all-time highs. Gold stocks represent ~20% of positive TSX breakouts. Energy sector analysts describe April pullback as a buying opportunity; sector earnings growth expected 25%+ full-year 2026. No real open positions in positions.json (only example placeholder TSX:AEM at 0 shares — not evaluated). Screener data limitations: live screener pages (SwingTradeBot, Barchart, Trade That Swing) returned structural results rather than specific ticker lists; Globe and Mail breakouts article confirmed bank names and broad breadth. All unconfirmed fields set to null per instructions.",
  "signals": {
    "new_buys": [],
    "holds": [],
    "exits": [],
    "watchlist": [
      {
        "ticker": "TSX:CNQ",
        "waiting_for": "Strongest setup candidate. P/E 15.65, above 200d EMA ($48.17), earnings May 7 2026 (7 trading days — safe). RSI was 59.15 in early April (just above the 35-55 sweet spot); further price weakness post Apr-14 pullback may have moderated RSI into range. 50d EMA at $59.48 — watch for price to test that level (~$60-64 zone) on declining volume with MACD histogram turning positive. Energy sector catalyst: WTI stabilization above $95-100. Do not enter above $67 without RSI confirmation below 56."
      },
      {
        "ticker": "TSX:RY",
        "waiting_for": "P/E 16.54, strong buy technical rating, ATH $246.72 reached Apr 21 2026. No pullback entry yet — stock is in breakout/extension mode. Watch for 3-5% retracement to 20d or 50d EMA with RSI cooling below 60. Financials sector tailwind from stable BoC rate environment. Earnings next report expected late May 2026 (not a near-term risk)."
      },
      {
        "ticker": "TSX:TD",
        "waiting_for": "P/E 15.19, on TSX positive breakouts list. No confirmed pullback entry yet — momentum intact but extended. Watch alongside RY for Financials sector rotation opportunity. Needs RSI confirmation in 35-55 range and MACD positive on a pullback to EMA support."
      }
    ]
  },
  "excluded": [
    {
      "ticker": "TSX:ATZ",
      "reason": "P/E 45.33 confirmed — exceeds maximum 28 per screen_criteria.json. Also one RSI source reported 83.97 (overbought). Earnings May 7 2026 would otherwise be safe."
    },
    {
      "ticker": "TSX:CM",
      "reason": "P/E 11.7x (fiscal 2026) confirmed — below minimum 12 per screen_criteria.json. On Globe and Mail positive breakouts list but P/E disqualifies."
    },
    {
      "ticker": "TSX:CVE",
      "reason": "Daily technical signal confirmed SELL as of Apr 21 2026 at $34.68. Insufficient bullish confirmation for entry. Analyst consensus is strong buy but technicals do not support swing entry today."
    },
    {
      "ticker": "TSX:KXS",
      "reason": "1-week and 1-month ratings both showing sell signal as of mid-April 2026. Insufficient technical confirmation. P/E unconfirmed but software sector likely above 28 ceiling."
    },
    {
      "ticker": "TSX:TOI",
      "reason": "No usable technical data returned from screeners. Software company — P/E likely exceeds 28 per criteria. Cannot confirm RSI, MACD, or EMA position."
    },
    {
      "ticker": "TSX:BNS",
      "reason": "On positive breakouts list but P/E historically 9-11x — likely below 12 minimum. Not confirmed; exclude until P/E verified above 12."
    },
    {
      "ticker": "TSX:BMO",
      "reason": "On positive breakouts list but P/E historically 9-11x — likely below 12 minimum. Not confirmed; exclude until P/E verified above 12."
    }
  ]
}
