{
  "scan_date": "2026-05-21",
  "macro_notes": "Gold at ~$4,820/oz continues to support gold-sector positioning but K.TO and AGI.TO technicals are deteriorating (MACD negative on both). All six major Canadian banks report Q2 2026 earnings on May 28 — sector-wide earnings risk for financials. Industrials led swing setups in early May (6 signals, May 6 scan); energy sector also leading (1 signal, May 11 scan). VIX ~17.25 as of early May — moderate volatility, shallow pullbacks. No confirmed new-buy candidates met all Step-3 hard filters this session. NOTE: positions.json watchlist still carries a stale QSR.TO entry that shows 'POSITION OPEN' but QSR.TO appears only in closed_positions — remove that watchlist entry.",
  "signals": {
    "new_buys": [],
    "holds": [
      {
        "ticker": "K.TO",
        "days_held": 2,
        "current_price_cad": null,
        "stop_intact": null,
        "t1_hit": false,
        "t2_hit": false,
        "action": "HOLD — CRITICAL DATA ERROR: stop_loss_cad recorded as $38.80, which is ABOVE entry price $38.07. For a long position this is invalid; per the risk note ($4.74 stop gap), intended stop is approximately $33.33 (38.07 - 4.74). Correct in positions.json before next session. Technical indicators weak: RSI ~33 (near/below oversold threshold, source: KGC/US proxy), MACD -0.104 (negative). T1 ($48.28) not hit. Day 2 of 3-day time-stop window — exit next session if no progress toward T1. Do NOT add to position (risk violation already logged)."
      },
      {
        "ticker": "ENB.TO",
        "days_held": 2,
        "current_price_cad": null,
        "stop_intact": null,
        "t1_hit": null,
        "t2_hit": null,
        "action": "HOLD — stop_loss_cad and all targets are null; cannot evaluate stop status or T1/T2 progress. MACD positive and Strong Buy signal from moving averages. Day 2 of 3-day time-stop window. Define stop (2.5x ATR below entry $78.11) and T1/T2/T3 targets urgently before time stop triggers tomorrow."
      },
      {
        "ticker": "BNS.TO",
        "days_held": 2,
        "current_price_cad": 107.89,
        "stop_intact": null,
        "t1_hit": null,
        "t2_hit": null,
        "action": "HOLD — price $107.89 vs entry $106.23 (+1.6%, small positive drift). Stop and targets are null; cannot evaluate stop status or T1/T2. Strong Buy technical rating; stock also appeared on Globe and Mail positive breakouts list. Earnings May 28 (5 trading days — outside 3-day exclusion window but approaching; re-evaluate by May 26). Day 2 of 3-day time-stop window. Define stop and targets urgently."
      }
    ],
    "exits": [
      {
        "ticker": "AGI.TO",
        "exit_reason": "Time stop: position held approximately 7 trading days since entry 2026-05-12 with no confirmed progress toward T1 ($66.91 vs entry $60.08, requires +11.4%). MACD -0.830 (negative) signals further technical deterioration — setup no longer valid. Screen criteria: exit if held 3+ days with no T1 progress. RSI 39.32 is within range but insufficient to override time stop given negative MACD. Also note ongoing risk-violation flag: position is oversized (10 shares, $68.30 at risk vs $25 max — do not re-enter at more than 3 shares).",
        "action": "EXIT full position"
      }
    ],
    "watchlist": [
      {
        "ticker": "CM.TO",
        "waiting_for": "RSI confirmation below 65. Price $153.34 CAD is within $1 of 52-week high ($154.25) — RSI likely elevated but unconfirmed. Earnings May 28 (5 trading days — too close for new swing entry; risk of gap through stop). Watch for post-earnings pullback to 20d or 50d EMA with RSI resetting to 35-55 range and MACD turning positive. PE 11.7x is within criteria (9-35). Re-evaluate week of June 1."
      }
    ]
  },
  "excluded": [
    {
      "ticker": "TD.TO",
      "reason": "Described as 'among the ten most oversold companies in the TSX index' — RSI likely at or below 35 oversold threshold. Also reporting Q2 2026 earnings May 28 (5 trading days). Fails RSI oversold filter; high earnings-week risk."
    },
    {
      "ticker": "RY.TO",
      "reason": "Near 52-week record close per Globe and Mail breakouts article. RSI likely above 65 (insufficient independent data to confirm below 65). No pullback setup identified. Reporting earnings week of May 28."
    },
    {
      "ticker": "BMO.TO",
      "reason": "Near 52-week record close per Globe and Mail breakouts article. RSI likely above 65 (insufficient independent data to confirm below 65). No pullback setup identified. Reporting earnings week of May 28."
    },
    {
      "ticker": "TH.TO",
      "reason": "Market cap estimated below $500M CAD minimum threshold. Fails fundamental filter."
    },
    {
      "ticker": "WEED.TO",
      "reason": "Market cap below $500M CAD minimum threshold. Fails fundamental filter."
    },
    {
      "ticker": "ISC.TO",
      "reason": "Market cap borderline ~$500M CAD; no RSI, MACD, or 200d EMA data confirmed from any source. Insufficient data to evaluate."
    }
  ]
}
