{
  "scan_date": "2026-08-12",
  "macro_notes": "active_mode=aggressive: all aggressive_overrides applied in place of base values (RSI ceiling 72, leading-sector breakout ceiling 75; PE band 9-35 with Energy/Materials PE-up-to-45 exception gated on an active commodity trigger + >10% YoY EPS/FCF growth; stop = 2.5x ATR(14) below entry; T1 20% at 1:1.5 R:R then stop to breakeven; T2 30% at 1:3 R:R trailing below rising 20 EMA; T3 50% runner trailing 20EMA/2.5xATR; risk% by score 5=1.75%/4=1.25%/3=1.0% of $2603.89; min R:R 1:3; cash_reserve_pct 15; max_simultaneous_positions 8). Step 1b (enrich) and Step 5 (exit/hold checks) SKIPPED -- open_positions is empty; holds=[] and exits=[] output as required. Lesson applied (narrow_funnel, retrospective.json): ran all 7 screener_sources entries plus 5 fallback searches (52-week-high list, TSX gainers list, direct XFN/XEG/XMA constituent lookups, sector-rotation sweep); evaluated 36 distinct tickers across 5 sectors (Industrials, Technology, Financials, Energy, Materials), clearing min_candidates_evaluated_per_scan(15) and min_sectors_represented(5). Sector-sweep rotated to Industrials (yesterday used Energy). Sector ETF Constituent Check showed Energy (XEG) as this week's leading sector (+3.23% vs TSX Composite) vs XIT +1.07% and XMA -0.72%; the 75 RSI ceiling was available for Energy breakout candidates but none of the Energy names (SU, CNQ, CVE, CCO) survived Step 3 confirmation, so it was not ultimately used. The aggressive PE-to-45 Energy/Materials exception was not invoked -- no surviving Energy/Materials candidate had a confirmed PE in the 35-45 overage range to test it against. Watchlist resolution (Step 1c): GIL -- ran 3 more TSX-qualified searches (TradingView, Yahoo GIL.TO, Globe and Mail GIL-T); still could not obtain a definitive breakout-day volume figure vs the 20-day average (only found avg volume ~681.74K and a 0.4x-below-average reading from 08-10, which actually argues against the breakout thesis). This is the 4th consecutive scan (08-07, 08-10, 08-11, 08-12) this confirmation has failed, so per the retrospective note's own instruction GIL is moved to excluded rather than carried again. IFP -- ran 3 more searches to find a single authoritative dated price; instead found a 4th conflicting read ($13.45 Globe and Mail open vs $13.24 vs $10.96 vs $10.52-stale-Apr vs $7.99-stale-Dec2025), plus a TD Securities target cut to C$10/Hold and a 52-week decline of -53.60%. Unable to resolve to one authoritative price across 3 scan-days; the weight of evidence (analyst downgrade, steep 52-week decline) supports a reversal rather than a breakout, so per the note's own carry-limit guidance IFP is moved to excluded as setup-invalidated rather than carried a 3rd time. Wednesday mega-cap reconfirmation rule applied in full: every mega-cap resurfaced via the XEG/XFN/XMA constituent checks (CNQ, CVE, RY, TD, BMO, BNS, CM, BN, MFC, NA, SLF, IFC, AEM, WPM, FNV, NTR, SHOP, CSU, GIB.A, DSG) got an individual Step 3 confirmation search today -- none were templated under funnel_breadth.recurring_megacap_handling, so price_cad is null on all excluded entries today (the ETF-only template was not needed). Data-quality flag: multiple sources returned stale or mutually-conflicting prices for WJX, KXS and IFP in particular (differences of 15-40%); where this could not be resolved to a single confident current figure the candidate was excluded rather than scored on guessed numbers, per the no-invented-numbers rule. Net result: 0 new_buys (nothing cleared all/most of a setup's 5 checkboxes with volume+resistance+MACD all confirmed), 5 watchlist entries carried (each scored 3/5 on its best-fit setup, missing volume and/or MACD/candle confirmation), remainder excluded.",
  "candidates_evaluated_count": 36,
  "sectors_evaluated": ["Industrials", "Technology", "Financials", "Energy", "Materials"],
  "lessons_applied": [
    "narrow_funnel (retrospective.json lessons_for_next_scan #1): used every screener_sources entry (7) plus screener_outage_fallback searches (52-week-high list, TSX gainers list, direct XFN/XEG/XMA holdings lookups) to reach 36 distinct tickers evaluated across 5 sectors, clearing min_candidates_evaluated_per_scan(15) and min_sectors_represented(5)."
  ],
  "signals": {
    "new_buys": [],
    "holds": [],
    "exits": [],
    "watchlist": [
      {"ticker": "EIF", "waiting_for": "Exchange Income Corp (TSX:EIF) crossed above its 200-day moving average TODAY (08-12, Marketbeat-confirmed). Price $77.46, RSI readings 46.6-62.6 (within band, sources conflict but neither straddles ceiling), MACD 0.98 positive, PE 23.31 (within band). Scores 3/5 on setup_B_breakout (above 200d EMA, RSI in band, MACD positive) -- missing: breakout-day volume vs 20-day average, and confirmation of a specific resistance level with 2+ prior touches (today's signal is a 200-DMA cross, not a resistance break). Re-check tomorrow specifically for volume figure and resistance level."},
      {"ticker": "X", "waiting_for": "TMX Group (TSX:X) price ~$53.30, confirmed above 200d EMA ($49.76) and 50d EMA ($51.71, ~3% below price), RSI 59 (within band), MACD 0.48 positive, PE(TTM) 24.40 (within band), next earnings Oct 26 (not imminent). Scores 3/5 (above 200d EMA, RSI in band, MACD positive) on either setup_A or setup_B -- missing: confirmation of proximity to 20d/50d EMA within 2% for a clean pullback entry (currently ~3%, borderline) OR a confirmed resistance break with 2+ touches and breakout volume for setup_B. Re-check tomorrow's price relative to 20d/50d EMA and look for a volume figure."},
      {"ticker": "CJT", "waiting_for": "Cargojet (TSX:CJT) confirmed above 200d EMA (+1.46%), PE 28.8 (within band), market cap $1.39B, RSI readings 41.4-61.0 (both within band, no ceiling conflict), MACD conflicting (one daily reading bearish, one 3-month reading bullish with volume rising alongside price), trading near the high of its $75.26-$88.00 one-month range following a strong Aug 10 earnings beat (EPS $0.47 vs prior-year loss). Scores 3/5 on setup_B_breakout (above 200d EMA, RSI in band, MACD net-positive per the volume-confirming source) -- missing: a definitive breakout-day volume figure >1.2x the 20-day average and confirmation of a clean close above the $88 resistance level. Re-check tomorrow for a clean break above $88 on confirmed volume."},
      {"ticker": "SLF", "waiting_for": "Sun Life (TSX:SLF) reported at fresh market highs in Aug-2026 coverage, confirmed above 200d EMA ($88.66), PE 21.29 (within band), RSI 38.45 (within band, on the low side). Scores 3/5 on setup_B_breakout (above 200d EMA, at fresh highs = plausible resistance break, RSI within the 72 ceiling) -- missing: a specific breakout-day volume figure vs 20-day average and a confirmed MACD reading (not found in today's searches). Re-check tomorrow for volume and MACD."},
      {"ticker": "DSG", "waiting_for": "Descartes Systems (TSX:DSG) shows a genuine reversal pattern: RSI was recently oversold at 24.09 (a 13.8% four-week decline), and has since crossed back above its 200-day EMA ($97.86) with MACD turning positive (+2.91, flagged as a 'Bullish Setup' crossover) and price now above its 5/20/50-day EMAs. Scores 3/5 on setup_C_oversold_reversal (above 200d EMA, RSI dropped <35 recently with evidence of curling up via the MACD cross, MACD turning positive) -- missing: a confirmed bullish reversal candle and confirmation of increasing volume on the reversal. No PE or next-earnings-date data found today (left unconfirmed, not guessed). Re-check tomorrow specifically for a reversal candle pattern and volume trend."}
    ]
  },
  "excluded": [
    {"ticker": "GIL", "reason": "Watchlist carryover, 4th consecutive scan (08-07, 08-10, 08-11, 08-12) unable to confirm breakout-day volume vs 20-day average despite TSX-qualified searches each time; today's best data (avg volume ~681.74K, a 0.4x-below-average reading from 08-10) actively undermines the breakout thesis rather than confirming it. Moved to excluded per the retrospective note's own instruction not to carry a 4th time.", "price_cad": null},
    {"ticker": "IFP", "reason": "Watchlist carryover; unable to resolve a single authoritative current price across 3 scan-days despite repeated TSX-qualified, dated searches -- today added a 4th conflicting figure ($13.45/$13.24/$10.96/$10.52-stale/$7.99-stale). TD Securities cut its target to C$10 (Hold) and the stock is down -53.60% over 52 weeks, supporting a reversal rather than a breakout. Invalidated to excluded per the note's carry-limit guidance.", "price_cad": null},
    {"ticker": "WJX", "reason": "Price data conflicted sharply across sources ($22.04 / $24.87 / $31.56, a >40% spread) and could not be resolved to one confident current figure; RSI unobtainable after two dedicated search attempts; MACD reading (0.29, 'sell') was tied to the stale lower price. Insufficient confirmed data to score any setup.", "price_cad": null},
    {"ticker": "CLS", "reason": "No PE or explicit 200d EMA confirmation obtained; MACD readings conflicting/mixed (11.555 neutral vs 5.480 buy); an extreme single-day move (-12.58% on Aug 6) raises volatility risk. Fewer than 3 of 5 setup criteria confirmable today.", "price_cad": null},
    {"ticker": "MDA", "reason": "PE reported in the 30-50x range, exceeding the base 9-35 band; the aggressive PE-to-45 exception does not apply (MDA is Industrials/Technology, not Energy/Materials). No RSI/MACD data found. Discarded on PE grounds.", "price_cad": null},
    {"ticker": "KXS", "reason": "Trailing PE 39.20 exceeds the 9-35 band (aggressive exception is Energy/Materials-only, doesn't apply to Technology); price also conflicted across sources ($197.98 vs $177.21 vs an apparently stale $127.42/-30.6%-below-200EMA read), adding confirmation risk on top of the PE discard.", "price_cad": null},
    {"ticker": "CNQ", "reason": "RSI 54.6 neutral and MACD nominally positive, but described as 'strongly bearish' with price below its 5/20/50-day EMAs; no 200d EMA confirmation obtained despite a dedicated Wednesday reconfirmation search. Conflicting/insufficient technical picture.", "price_cad": null},
    {"ticker": "CVE", "reason": "MACD nominally positive but price below its 20-day EMA (sell signal); no 200d EMA data obtained despite dedicated search. Mixed/insufficient technical picture, not confirmable as a bullish setup.", "price_cad": null},
    {"ticker": "SU", "reason": "RSI 34.28, just under the oversold floor, but MACD is bearish (-1.57, 'sell') with a recent pivot-top sell signal and a -6.39% decline since Jul 31 -- no evidence of the RSI 'curling up' required for setup_C_oversold_reversal. Only 1/5 criteria (above 200d EMA) confirmed.", "price_cad": null},
    {"ticker": "AEM", "reason": "Wednesday mega-cap reconfirmation: shares down ~7.7% over the past 30 days amid retreating gold prices; no bullish technical confirmation (RSI/MACD/200d EMA) found despite dedicated search.", "price_cad": null},
    {"ticker": "WPM", "reason": "Wednesday mega-cap reconfirmation: only a modest +0.53% daily move noted (Aug 3 data); no RSI, MACD, or 200d EMA data found despite dedicated search.", "price_cad": null},
    {"ticker": "FNV", "reason": "Wednesday mega-cap reconfirmation: only a negligible +0.05% daily move noted (Aug 3 data); no RSI, MACD, or 200d EMA data found despite dedicated search.", "price_cad": null},
    {"ticker": "NTR", "reason": "Wednesday mega-cap reconfirmation: no price, RSI, or technical data returned despite a dedicated search attempt.", "price_cad": null},
    {"ticker": "RY", "reason": "Wednesday mega-cap reconfirmation: fundamentally strong (PE ~19x, Q1 net income +25% YoY, price target raised to C$260) but no RSI, MACD, or 200d EMA technical confirmation obtained despite dedicated search.", "price_cad": null},
    {"ticker": "TD", "reason": "Wednesday mega-cap reconfirmation: no RSI, MACD, price, or 200d EMA data returned despite dedicated search.", "price_cad": null},
    {"ticker": "BMO", "reason": "Wednesday mega-cap reconfirmation: no RSI, MACD, price, or 200d EMA data returned despite dedicated search.", "price_cad": null},
    {"ticker": "BNS", "reason": "Wednesday mega-cap reconfirmation: confirmed above 20d/50d/200d EMAs and RSI 60.36 (within band), but currently consolidating in a tight $121.14-124.40 range below resistance with no confirmed breakout and RSI just outside the setup_A 35-60 pullback window; only 2/5 criteria clearly confirmed for either best-fit setup.", "price_cad": null},
    {"ticker": "CM", "reason": "Wednesday mega-cap reconfirmation: next earnings Aug 27 noted, but no RSI, MACD, price, or 200d EMA technical data returned despite dedicated search.", "price_cad": null},
    {"ticker": "BN", "reason": "Wednesday mega-cap reconfirmation: only vague 'momentum' commentary found; no RSI, MACD, price, or 200d EMA data returned despite dedicated search.", "price_cad": null},
    {"ticker": "MFC", "reason": "Wednesday mega-cap reconfirmation: fundamentally strong (EPS beat, multiple analyst target raises to C$67-70) but no RSI, MACD, or 200d EMA technical confirmation obtained despite dedicated search.", "price_cad": null},
    {"ticker": "NA", "reason": "Wednesday mega-cap reconfirmation: no RSI, MACD, price, or 200d EMA data returned despite dedicated search.", "price_cad": null},
    {"ticker": "IFC", "reason": "Wednesday mega-cap reconfirmation: no RSI, MACD, price, or 200d EMA data returned despite dedicated search.", "price_cad": null},
    {"ticker": "CCO", "reason": "RSI 29.4 (oversold) but MACD bearish (below signal line), stock broke down through support at $140 with further downside signaled to $112; no evidence of a reversal curl. Fails setup_C_oversold_reversal criteria.", "price_cad": null},
    {"ticker": "AC", "reason": "Confirmed above 200d EMA and RSI within band, but no breakout volume, no confirmed resistance level with prior touches, and no MACD data found despite today's +5.5% gainer move on record revenue. Only 2/5 criteria confirmed.", "price_cad": null},
    {"ticker": "ARG", "reason": "Price data stale (Jul 15, $7.54); RSI 56.7 and PE 22.1 both within band but not re-confirmed with current data despite the 52-week-high mention on Aug 11; market cap vs the $500M CAD minimum not confirmed. Insufficient current-day data to score confidently.", "price_cad": null},
    {"ticker": "AYA", "reason": "Hit a 52-week high Aug 11 (+16.39% over the past month, Strong Buy rating) but RSI, MACD, and PE could not be confirmed despite search; only 2/5 setup_B criteria (implied above-200d-EMA, fresh-highs breakout) confirmable.", "price_cad": null},
    {"ticker": "CHR", "reason": "Surfaced only via the 52-week-high fallback list; no dedicated RSI/PE/MACD confirmation search completed after covering the required funnel-breadth minimums and higher-priority candidates -- genuine search-budget constraint, noted explicitly rather than guessed.", "price_cad": null},
    {"ticker": "ECOR", "reason": "Surfaced only via the 52-week-high fallback list; no dedicated RSI/PE/MACD confirmation search completed after covering the required funnel-breadth minimums and higher-priority candidates -- genuine search-budget constraint, noted explicitly rather than guessed.", "price_cad": null},
    {"ticker": "SHOP", "reason": "Wednesday mega-cap reconfirmation: RSI 63.4 neutral, but 50-day MA confirmed below 200-day MA (bearish trend / death-cross pattern), explicitly described as losing momentum. Fails the above-200d-EMA-momentum requirement.", "price_cad": null},
    {"ticker": "CSU", "reason": "Wednesday mega-cap reconfirmation: RSI 63.8-64.0 (within band) but moving-average consensus is Strong Sell (0 buy / 12 sell signals), contradicting a vague unsourced 'breaking out' comment. Bearish MA consensus not overridden by a single ambiguous note.", "price_cad": null},
    {"ticker": "GIB.A", "reason": "Wednesday mega-cap reconfirmation: strong Q3 fundamentals (EPS $2.24 vs $1.84 YoY, net income +14%) but no RSI, MACD, or 200d EMA technical confirmation obtained despite dedicated search.", "price_cad": null}
  ]
}
