{
  "scan_date": "2026-09-08",
  "macro_notes": "active_mode=aggressive: all aggressive_overrides applied (RSI band 35-72, leading-sector breakout ceiling 75, T1 1:1.5/T2 1:3, 5/10-day time stops, pyramid rule, 10% cash reserve, 11% max portfolio risk). positions.json open_positions is empty (no open positions since CAR.UN stopped out 2026-08-31) -- Step 1b had nothing to enrich and Step 5 has nothing to check, so holds and exits are both empty arrays by design. Step 0/Tool-availability: mcp__Questrade__* tools confirmed absent from this session's toolset -- matches daily_run.log's own questrade_preflight entries for today (all 3 attempts QUESTRADE_UNAVAILABLE), whose own urgent ntfy alert was already sent by run_daily_scan.sh before this scan began. Step 1a lessons from retrospective.json (generated 2026-09-08, 6 items in lessons_for_next_scan, all applied): (1) narrow_funnel (only 2 distinct tickers, CAR.UN/CJT, ever traded) -- addressed by running all 9 screener_sources entries (sector sweep rotated to Real Estate, not used as the sweep sector in any of the last 7 scans) plus ~18 direct-name breadth-closing searches once the generic screener sources again returned only index-level commentary and platform-description links rather than fresh dated tickers -- evaluated 22 distinct tickers (21 excluded + 1 watchlist) across 9 sectors (Energy, Financials, Materials, Real Estate, Industrials, Utilities, Technology, Communication Services, Consumer Discretionary), clearing both min_candidates_evaluated_per_scan (15) and min_sectors_represented (5). (2) unconfirmed_volume pattern -- applied by excluding rather than scoring around the gap wherever today's actual volume genuinely could not be confirmed (SRU.UN, TIH) or came back below the 0.8x floor once confirmed (SRU.UN 0.79x); WCP's volume ratio (2.15M/7.35M avg = 0.29x) also failed outright once obtained. (3) unconfirmed_resistance_level -- moot today; no candidate reached setup_B scoring cleanly enough to need a resistance level (WCP was the closest fit but was excluded on price/volume conflicts first). (4) unconfirmed_macd_reading -- AYA (RSI 43.7 vs 61.36, MACD -0.767 vs +2.31) and DSG (RSI 33.65 vs 65.629 on two separate attempts) both had their exact scoring-deciding number conflict across sources and could not be reconciled after a second, differently-worded search each -- both excluded per data_integrity.stale_flagged_input_rule rather than picking a reading. (5) unconfirmed_candle_pattern -- MFC's watchlist re-check specifically needed a confirmed bullish reversal candle at the 50d EMA; the only hammer-pattern reference found was dated March 10, 2026 (Zacks/Finviz), nearly 6 months stale, so it does NOT confirm today's candle -- treated as unconfirmed, not used. (6) deferred_megacap_moved -- empty in today's retrospective.json (GIB.A's standing risk was closed out on 2026-09-04); no ticker required an overridden reconfirmation today. Step 1a momentum (setup_D) adaptive-review: positions.json's closed_positions still contains no setup_type:'momentum' entries (CJT breakout, CAR.UN pullback), so no extra confirmation bar applied to setup_D candidates today (moot regardless -- SVM, the one setup_D-shaped candidate, was excluded on data-integrity grounds below, not scored). Step 1c watchlist resolution (most recent prior file: 2026-09-04, since 2026-09-05/06/07 were a weekend + Labour Day holiday): MFC re-checked before any new sourcing. RSI has cooled to 55.38 (was 68.0), now inside the setup_A 35-60 pullback band; price $60.69 (live_prices.json 07:35 fetch) sits within ~1.4% of its 20d EMA ($59.84) and ~2.1% of its 50d EMA ($59.42), both above the $52.88 200d EMA; MACD remains positive/buy; today's volume (902.59K) vs its ~1.61M average (~0.56x) is declining, consistent with a pullback losing selling pressure. That is 5 of setup_A's scoring points now consistent with a pullback, but the entry_trigger itself (a confirmed bullish reversal candle at the EMA) is still unconfirmed today -- the only reversal-candle reference found was the stale March hammer noted above -- so MFC is kept on watchlist with an updated waiting_for (not a repeat of the prior note) rather than promoted; this is only the 2nd consecutive scan carrying it (added 2026-09-04), well under both the 2-consecutive-unchanged-note limit (the note did change materially) and the 7-trading-day carry limit. questrade_symbol remains unresolved (Questrade tools unavailable this session, consistent with 2026-09-04's handling). Step 2 sourcing: all 9 screener_sources entries run; SwingTradeBot/Barchart/TradingView/TradeThatSwing/Globe and Mail again returned generic swing-trading commentary, index-breadth statistics, or educational content rather than individual fresh-dated TSX tickers; SEDI insider-buying and 52-week-high/unusual-volume searches again returned only platform-description links, no concrete same-day filings or names. Sector ETF Constituent Check returned XEG's top 5 holdings (Suncor 25.35%, CNQ 24.34%, Cenovus 13.08%, Imperial Oil 6.45%, Tourmaline 5.64%) with no price data in the result itself (same as 2026-09-04), so per recurring_megacap_handling's 'no extra search' rule their excluded entries below carry price_cad: null. Leading sector this week: Materials/precious metals -- gold and silver miners led the TSX's biggest gainers this week (some individual names up as much as 7.1% on the day, several TSX30-style names up 100%+ over the past year) -- noted for setup_B's leading-sector RSI ceiling (75) even though no Materials candidate survived to be scored against it. Phase D commodity trigger check: gold fell ~0.6% today (opened $4,451.60, trading ~$4,443.90/oz) and WTI fell ~0.17% (~$92.37/bbl) -- neither move qualifies as the bullish >0.5%/>1% trigger in aggressive_overrides.valuation_exception (both moved the wrong direction for a producer P/E premium), so the Energy/Materials PE-band exception (up to 45) was not available or needed today. Breadth was closed with direct-name searches across Real Estate (SRU.UN, REI.UN, GRT.UN, IIP.UN), Financials (BNS, BMO), Materials (AYA, SVM, GMIN), Industrials (TIH), Utilities (EMA), Energy (WCP; CVE/IMO/TOU/SU/CNQ via the ETF lookup/general news), Technology (DSG), Communication Services (T), Consumer Discretionary (DOL), plus ~9 follow-up searches to try to resolve conflicting/missing data points on the most promising names (MFC, WCP, T, DSG, SVM x3, AYA, GMIN) -- total ~45 searches today, well above the usual 22-27 estimate, reflecting an unusually high rate of cross-source price/indicator conflicts this session (worse than 2026-09-04's ~33-search day for the same reason) rather than inefficiency. Individual exclusions: SU, CNQ, ENB -- only narrative mentions found (Morgan Stanley upgrade citing FCF yield, 'institutional conviction', a Bank buyback-adjacent story), no confirmable RSI/MACD/EMA data obtained for any of the three, and the narrative itself (analyst upgrades) is a deprioritized_signal -- excluded for insufficient confirmable technicals rather than scored on narrative. CVE, IMO, TOU -- resurfaced only via the XEG top-holdings lookup, not individually reconfirmed today per funnel_breadth.recurring_megacap_handling (today is Tuesday, not Wednesday, and none are in today's empty deferred_megacap_moved lesson list). BNS -- RSI 43.6/MACD -0.89 from one source implied 'Sell' against a 200d EMA of $123.55, directly contradicted by other results describing the stock at an all-time high, +30% YTD/+68% over 12 months (which would put price well above that EMA) -- an unresolved conflict on whether price is even above or below its own 200d EMA, the single most basic gating check; excluded per data_integrity.stale_flagged_input_rule. BMO -- most recent price found was dated September 1 (7 days stale) despite a second, differently-worded attempt; no volume figure obtained at all -- excluded for an unconfirmable current price. AYA -- RSI (61.36) was reasonably consistent across two attempts, but the only price found (September 3, $41.10) is 5 days stale despite a second attempt, and MACD remained conflicting (-0.767 vs +2.31) -- excluded for an unconfirmable current price/indicator set. SVM -- initially promising (today's price +3.12% on 1.56x average volume, RSI 59.02, MACD 0.27 buy, all seemingly setup_D-momentum-shaped), but a follow-up search returned a ~28% conflicting price read ($12.61-13.39 vs the original $17.53) that traces to NYSE American cross-listing contamination (SVM trades on both TSX in CAD and NYSE American in USD), the exact pattern seen previously with AEM/GIB.A; a dedicated ATR(14) search also came back empty, meaning the stop-loss distance couldn't be computed at all; and insider-trading data showed only selling in the past 12 months, not the buying setup_D's scoring needs, while the volume move has an identifiable catalyst (broad sector-wide precious-metals rally, not an unexplained anomaly) -- excluded per data_integrity.stale_flagged_input_rule on the price/ATR conflict, which would have been decisive even before the insider-buying/no-catalyst point failed setup_D's own scoring. GMIN -- price conflicted by roughly 25% across three separate reads within the session ($40.07 vs $50.81 vs $53.46), unresolved after two attempts -- excluded. SRU.UN -- no RSI obtainable after two attempts (a required screening input, same failure mode as SLF on 2026-09-04), and its confirmed volume ratio (241,649/304,882 = 0.79x) independently falls just under the 0.8x technical-section floor. REI.UN -- price conflicted by ~21% across two attempts ($18.90 vs a June-dated $22.87), and RSI/volume were never obtained -- excluded. GRT.UN -- 200d EMA conflicted by ~13% across sources ($74.13 vs $83.851, which flips whether price is above or below it) and RSI similarly conflicted (54.18 vs 'above 70') -- excluded per data_integrity.stale_flagged_input_rule; its earnings date has already passed (Aug 12), so that was not the issue. TIH -- three separate searches returned three incompatible prices ($156.94 / $225.77 / $199.59) and RSI was never obtained despite two attempts -- excluded for irreconcilable price data. EMA (Emera) -- confirmed to have crossed below its 200-day moving average ($70.68) -- an ordinary technical disqualifier (price below 200 EMA), not a data-quality issue. WCP -- RSI (61.24) and MACD (0.08 buy) looked constructive, but price conflicted by ~18% across two attempts ($14.77 vs $17.94) and the eventually-confirmed volume ratio (2.15M/7.35M avg = 0.29x) failed the 0.8x floor outright regardless -- excluded. T (Telus) -- the only same-day price found ($13.54) is inconsistent with the previously-cited 200d EMA ($17.01, framed as a 'Buy' implying price above it) by roughly 20%, unresolved after a second attempt and plausibly a US-listed TU/CAD-listed T cross-contamination -- excluded. DSG (Descartes) -- RSI conflicted directly on the number its only plausible setup (setup_C oversold reversal, since one reading was 33.65, just under the 35 floor) depends on: a second attempt returned 65.629, a completely different regime (neutral-bullish, not oversold) -- excluded per data_integrity.stale_flagged_input_rule rather than picking a reading; its earnings (Sep 2) have already passed so that was not a factor. DOL (Dollarama) -- RSI 23 (oversold) would ordinarily route to setup_C's carveout, but price is confirmed -6.37% below its 200-day moving average -- price-below-200-EMA is an ordinary automatic exclusion criterion that applies before any setup scoring, including the oversold carveout (the carveout only waives the RSI-floor discard, not the 200-EMA discard) -- excluded on ordinary technical grounds. IIP.UN -- no RSI/MACD/200-EMA obtained despite a targeted search -- excluded for insufficient confirmable technicals. Step 6: since signals.new_buys is empty today (no candidate scored 4-5 -- SVM was the closest at an effective 3/5 once the price/ATR conflict and the failed insider/no-catalyst point are accounted for, which also would not have cleared the NEW_BUY threshold), Step 6 had nothing to execute or abort regardless of the confirmed Questrade outage, and no additional ntfy alert was sent beyond the preflight's own (mirrors 2026-08-31 through 2026-09-04's handling of the same empty-new_buys situation).",
  "candidates_evaluated_count": 22,
  "sectors_evaluated": ["Energy", "Financials", "Materials", "Real Estate", "Industrials", "Utilities", "Technology", "Communication Services", "Consumer Discretionary"],
  "lessons_applied": [
    "narrow_funnel: ran all 9 screener_sources entries (sector sweep rotated to Real Estate, unused as the sweep sector in the last 7 scans) plus ~18 direct-name breadth-closing searches once generic screeners again returned only index-level commentary, evaluating 22 distinct tickers across 9 sectors -- clears both min_candidates_evaluated_per_scan (15) and min_sectors_represented (5)",
    "unconfirmed_volume: SRU.UN and TIH excluded specifically because today's volume genuinely could not be confirmed after a follow-up attempt; SRU.UN's confirmed ratio (0.79x) and WCP's confirmed ratio (0.29x) both independently failed the 0.8x floor once obtained",
    "unconfirmed_resistance_level: moot today -- no candidate reached setup_B scoring cleanly enough to require a resistance level",
    "unconfirmed_macd_reading: AYA and DSG both had their exact scoring-deciding RSI/MACD figure conflict across two differently-worded search attempts each and could not be reconciled -- excluded per data_integrity.stale_flagged_input_rule rather than picking a reading",
    "unconfirmed_candle_pattern: MFC's watchlist re-check needed a confirmed bullish reversal candle at the 50d EMA; the only hammer-pattern reference found was dated March 10, 2026 (nearly 6 months stale) -- treated as unconfirmed rather than used, kept on watchlist",
    "deferred_megacap_moved: empty in today's retrospective.json (GIB.A's standing risk was already closed out 2026-09-04) -- no override reconfirmation needed today"
  ],
  "signals": {
    "new_buys": [],
    "holds": [],
    "exits": [],
    "watchlist": [
      {
        "ticker": "MFC",
        "waiting_for": "Setup_A_pullback: RSI has now cooled to 55.38 (was 68.0 on 2026-09-04), inside the 35-60 pullback band; price $60.69 sits within ~1.4-2.1% of its 20d/50d EMAs ($59.84/$59.42), both above the $52.88 200d EMA; MACD positive; volume declining (~0.56x avg), consistent with selling pressure drying up on the pullback. Still needs a confirmed bullish reversal candle at/near the 50d EMA to trigger entry -- the only reversal-candle reference found today was a hammer pattern dated March 10, 2026, nearly 6 months stale, so it does not confirm today's price action. Not a single crossable price level (candle-pattern-dependent), so trigger_price_cad/trigger_direction are left null. questrade_symbol unresolved: mcp__Questrade__* tools confirmed unavailable this session (connector outage, matches today's questrade_preflight failures in daily_run.log).",
        "trigger_price_cad": null,
        "trigger_direction": null,
        "questrade_symbol": null
      }
    ]
  },
  "excluded": [
    { "ticker": "SVM", "reason": "Silvercorp Metals (Materials). Today's price/volume initially looked setup_D-momentum-shaped (+3.12%, 1.56x avg volume, RSI 59.02, MACD buy), but a follow-up search returned a ~28% conflicting price ($12.61-13.39 vs the original $17.53), consistent with NYSE American/TSX cross-listing contamination (same pattern as AEM/GIB.A previously). A dedicated ATR(14) search came back empty, so the stop-loss distance couldn't be computed at all. Insider-trading data showed only selling in the past 12 months (not buying), and the volume move has an identifiable catalyst (broad sector-wide precious-metals rally), failing setup_D's 5th scoring point independently. Excluded per data_integrity.stale_flagged_input_rule on the price/ATR conflict.", "price_cad": null },
    { "ticker": "AYA", "reason": "Aya Gold & Silver (Materials). RSI (61.36) was reasonably consistent across two attempts, but the only price found (Sep 3, $41.10) is 5 days stale despite a second, differently-worded search, and MACD remained conflicting (-0.767 vs +2.31) across sources -- excluded for an unconfirmable current price and indicator set.", "price_cad": null },
    { "ticker": "GMIN", "reason": "G Mining Ventures (Materials). Price conflicted by roughly 25% across three separate reads within this session ($40.07 vs $50.81 vs $53.46), unresolved after two attempts -- excluded per data_integrity.stale_flagged_input_rule.", "price_cad": null },
    { "ticker": "SRU.UN", "reason": "SmartCentres REIT (Real Estate). No RSI figure could be obtained from any source after two attempts (a required screening input, same failure mode as SLF on 2026-09-04). Confirmed volume ratio (241,649/304,882 avg = 0.79x) independently falls just under the 0.8x technical-section minimum.", "price_cad": null },
    { "ticker": "REI.UN", "reason": "RioCan REIT (Real Estate). Price conflicted by ~21% across two attempts ($18.90 vs a June-dated $22.87); RSI and today's volume were never obtained despite two searches -- excluded per data_integrity.stale_flagged_input_rule.", "price_cad": null },
    { "ticker": "GRT.UN", "reason": "Granite REIT (Real Estate). 200-day EMA conflicted by ~13% across sources ($74.13 vs $83.851 -- which flips whether price is above or below it), and RSI similarly conflicted (54.18 vs a separate 'above 70' reading) -- excluded per data_integrity.stale_flagged_input_rule. Its most recent earnings (Aug 12) have already passed, so that was not a factor.", "price_cad": null },
    { "ticker": "IIP.UN", "reason": "InterRent REIT (Real Estate). No RSI, MACD, or 200-day EMA figure could be obtained from any source despite a targeted search -- excluded for insufficient confirmable technicals.", "price_cad": null },
    { "ticker": "BNS", "reason": "Bank of Nova Scotia (Financials). One source's RSI (43.6)/MACD (-0.89) implied 'Sell' against a stated 200d EMA of $123.55, directly contradicted by other results describing the stock at an all-time high, +30% YTD/+68% over 12 months -- an unresolved conflict on whether price is even above or below its own 200d EMA. Excluded per data_integrity.stale_flagged_input_rule.", "price_cad": null },
    { "ticker": "BMO", "reason": "Bank of Montreal (Financials). Most recent price found was dated September 1, 2026 (7 days stale) despite a second, differently-worded search attempt; no volume figure was obtained at all -- excluded for an unconfirmable current price.", "price_cad": null },
    { "ticker": "TIH", "reason": "Toromont Industries (Industrials). Three separate searches returned three incompatible prices ($156.94 / $225.77 / $199.59); RSI was never obtained despite two attempts -- excluded for irreconcilable price data per data_integrity.stale_flagged_input_rule.", "price_cad": null },
    { "ticker": "EMA", "reason": "Emera (Utilities). Confirmed to have crossed below its 200-day moving average ($70.68) -- an ordinary technical disqualifier (price below 200 EMA), not a data-quality issue.", "price_cad": null },
    { "ticker": "WCP", "reason": "Whitecap Resources (Energy). RSI (61.24) and MACD (0.08 buy) looked constructive, but price conflicted by ~18% across two attempts ($14.77 vs $17.94); the eventually-confirmed volume ratio (2,147,563 / 7,352,520 avg = 0.29x) failed the 0.8x minimum outright regardless of the price conflict.", "price_cad": null },
    { "ticker": "T", "reason": "Telus (Communication Services). The only same-day price found ($13.54) is inconsistent with the previously-cited 200d EMA ($17.01, framed as a 'Buy' implying price above it) by roughly 20%, unresolved after a second attempt -- plausibly TSX:T/NYSE:TU cross-listing contamination. Excluded per data_integrity.stale_flagged_input_rule.", "price_cad": null },
    { "ticker": "DSG", "reason": "Descartes Systems (Technology). RSI conflicted directly on the number its only plausible setup (setup_C oversold reversal) depends on: one reading was 33.65 (just under the 35 floor), a second differently-worded attempt returned 65.629 (a completely different, neutral-bullish regime). Excluded per data_integrity.stale_flagged_input_rule rather than picking a reading. Its earnings (Sep 2) have already passed, so that was not a factor.", "price_cad": null },
    { "ticker": "DOL", "reason": "Dollarama (Consumer Discretionary). RSI 23 (oversold) would ordinarily route to setup_C's carveout, but price is confirmed -6.37% below its 200-day moving average -- the price-below-200-EMA exclusion applies regardless of the RSI-oversold carveout (the carveout only waives the RSI-floor discard, not the 200-EMA discard). Excluded on ordinary technical grounds.", "price_cad": null },
    { "ticker": "SU", "reason": "Suncor Energy (Energy). Only narrative mentions found (Morgan Stanley upgrade citing an 11% FCF yield) -- no confirmable RSI/MACD/EMA data obtained, and an analyst upgrade is itself a deprioritized_signal. Excluded for insufficient confirmable technicals.", "price_cad": null },
    { "ticker": "CNQ", "reason": "Canadian Natural Resources (Energy). Only narrative mentions found ('strong trading', institutional conviction) -- no confirmable RSI/MACD/EMA data obtained. Excluded for insufficient confirmable technicals.", "price_cad": null },
    { "ticker": "ENB", "reason": "Enbridge (Energy). Only narrative mentions found ('strong trading', institutional conviction) -- no confirmable RSI/MACD/EMA data obtained. Excluded for insufficient confirmable technicals.", "price_cad": null },
    { "ticker": "CVE", "reason": "Cenovus Energy (Energy). Resurfaced only via XEG top-holdings lookup -- recurring mega-cap name, not individually reconfirmed today (funnel_breadth.recurring_megacap_handling). Weekly reconfirmation runs Wednesdays.", "price_cad": null },
    { "ticker": "IMO", "reason": "Imperial Oil (Energy). Resurfaced only via XEG top-holdings lookup -- recurring mega-cap name, not individually reconfirmed today (funnel_breadth.recurring_megacap_handling). Weekly reconfirmation runs Wednesdays.", "price_cad": null },
    { "ticker": "TOU", "reason": "Tourmaline Oil (Energy). Resurfaced only via XEG top-holdings lookup -- recurring mega-cap name, not individually reconfirmed today (funnel_breadth.recurring_megacap_handling). Weekly reconfirmation runs Wednesdays.", "price_cad": null }
  ]
}
