{
  "scan_date": "2026-04-27",
  "macro_notes": "TSX banks dominate today's positive breakouts list but CM, TD, and BMO are all RSI >65 (overbought); entry windows closed. Gold sector leaders AEM and K both report earnings within 3 trading days (Apr 30 and Apr 29 respectively) — excluded. ABX is pulling through its 50d MA with short-term bearish MACD signals (Barchart 24% sell). Energy standout SU.TO: 43.88% YTD, Barchart 72% buy (Strong) with 100% medium- and long-term ratings, mild short-term pullback below 20d EMA creating an entry zone. TSX screener access was partial — SwingTradeBot returned ECONNREFUSED, Barchart live screener required membership; Globe and Mail breakouts article (bank stocks, Apr 27) and direct page fetches used to source all candidates.",
  "signals": {
    "new_buys": [
      {
        "rank": 1,
        "ticker": "TSX:SU",
        "company": "Suncor Energy",
        "sector": "Energy",
        "price_cad": 87.59,
        "setup_type": "20d EMA Pullback within established uptrend",
        "setup_score": 3,
        "rsi_14": 53.19,
        "macd_positive": null,
        "above_200d_ema": true,
        "pe_ratio": 18.05,
        "next_earnings": "2026-05-05",
        "entry_zone_cad": "$85.50–$88.50 (at/near 20d EMA)",
        "stop_cad": null,
        "t1_cad": null,
        "t2_cad": null,
        "t3_cad": null,
        "green_flags": [
          "72% buy opinion, Strong signal (Barchart) — 100% medium-term and 100% long-term buy",
          "43.88% YTD gain confirms sustained uptrend well above 200d EMA",
          "P/E 18.05 within target range [12–28]",
          "Market cap $103.93B; liquidity criteria easily met",
          "Earnings May 5 — 8 trading days clear"
        ],
        "red_flags": [
          "MACD value not directly confirmed (null); inferred positive from Barchart 72% buy rating",
          "Price recently dipped below 20d MA — short-term signal is mixed (50% buy)",
          "ADX 23.4 below 25 threshold — trend is mild, not strongly directional",
          "Volume on pullback unconfirmed (null)"
        ]
      }
    ],
    "holds": [],
    "exits": [],
    "watchlist": [
      {
        "ticker": "TSX:ABX",
        "waiting_for": "MACD to turn positive — currently bearish short-term (Barchart 24% sell, short-term 50% sell, weakening). RSI 42 and price above 200d EMA ($55.05 vs $51.52 200d MA) are both positive. Price has pulled below 50d MA; wait for reclaim of 50d before entry. Earnings May 11 (14 days clear). Re-evaluate if Barchart short-term opinion improves to Hold or better."
      },
      {
        "ticker": "TSX:RY",
        "waiting_for": "RSI pullback into 35–55 zone (currently 61, at near-record price ~$239.87). Stock is 27%+ above 200d EMA with no pullback present. Entry thesis intact but timing premature — revisit if RSI drops below 58 on declining volume. Earnings May 28 (31 days clear)."
      },
      {
        "ticker": "TSX:BNS",
        "waiting_for": "RSI to cool from 64 to below 60, then confirm MACD positive and pullback to 20d or 50d EMA. Negative YTD (-0.65%) despite strong 1-year momentum (+53%) may indicate a near-term ceiling. 200d EMA well below current price ($103.85 vs ~$93 200d MA). Earnings May 27 (30 days clear)."
      }
    ]
  },
  "excluded": [
    { "ticker": "TSX:CM",  "reason": "RSI 73.95 — exceeds 65 overbought threshold" },
    { "ticker": "TSX:TD",  "reason": "RSI 69.52 — exceeds 65 overbought threshold; P/E 11.59 also below 12 minimum" },
    { "ticker": "TSX:BMO", "reason": "RSI 66.18 — exceeds 65 overbought threshold" },
    { "ticker": "TSX:AEM", "reason": "Earnings April 30, 2026 — within 3 trading days" },
    { "ticker": "TSX:K",   "reason": "Earnings April 29, 2026 — within 3 trading days (2 days)" },
    { "ticker": "TSX:WPM", "reason": "P/E 42.91 — exceeds 28 maximum" },
    { "ticker": "TSX:FNV", "reason": "P/E 41.93 — exceeds 28 maximum" },
    { "ticker": "TSX:CNQ", "reason": "P/E 11.76 — below 12 minimum" }
  ]
}
