{
  "scan_date": "2026-09-11",
  "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 and watchlist are both empty (no open positions since CAR.UN stopped out 2026-08-31) -- Step 1b had nothing to enrich, Step 1c had nothing to re-check (2026-09-10's watchlist was also empty), and Step 5 has nothing to check, so holds and exits are empty arrays by design. Tool-availability check: mcp__Questrade__* tools confirmed absent from this session's toolset entirely (not present even as a deferred/loadable tool). daily_run.log confirms run_daily_scan.sh's own pre-flight check already failed 3/3 attempts at 07:33-07:35 and sent its own urgent ntfy alert before this scan session started. Since signals.new_buys ends up empty today on scoring grounds (see below), Step 6 had nothing to execute or abort and no additional ntfy alert was needed beyond that pre-flight alert -- same handling as 2026-09-01 through 2026-09-10. Step 1a lessons from retrospective.json (generated 2026-09-11, 6 items in lessons_for_next_scan, all applied): (1) narrow_funnel -- addressed by running all 9 screener_sources entries (again returning only generic platform-description/index-level commentary, no fresh dated tickers) then pivoting to a 16-ticker direct-name sweep across 12 sectors (Technology: GIB.A, OTEX; Materials: AEM, FNV; Energy: CNQ, WCP; Financials: NA, CM; Industrials: WSP; Utilities: FTS; Consumer Discretionary: DOL; Consumer Staples: ATD; Healthcare: WELL; Real Estate: FCR.UN; Telecom: BCE; Communication Services: QBR.B), plus 4 recurring-megacap deferrals (SU, CVE, IMO, TOU) surfaced only via the XEG holdings lookup -- 20 distinct tickers across 12 sectors total, clearing both min_candidates_evaluated_per_scan (15) and min_sectors_represented (5) with real margin. (2) unconfirmed_volume -- applied: WCP's volume was successfully confirmed and internally consistent this time (7.40M vs 7.35M 20-day avg, ~1.0x -- below setup_D's 1.5x bar rather than genuinely conflicting like 09-10); FTS's only obtainable volume reading (11,962 vs 1,458,436 avg, ~0.008x) was recognized as implausible/self-contradictory rather than used, and FTS was excluded on that basis; CNQ's and WELL's volume could not be confirmed after two attempts each and both were excluded rather than scored through the gap. (3) unconfirmed_resistance_level -- moot again; no candidate reached setup_B scoring today (WCP's 52-week high has no established resistance level by definition; nothing else cleared the technical filters). (4) unconfirmed_candle_pattern -- moot; no watchlist carry-forward existed and no candidate's scoring depended on a candle pattern. (5) unconfirmed_macd_reading -- applied: the same positive-value-labeled-'Sell' MACD anomaly seen on QSR/TOU/IMO in prior scans recurred on CNQ today (MACD 0.143, labeled Sell) and was not credited toward its score, contributing to its exclusion. (6) deferred_megacap_moved: GIB.A -- forced a full Step 3/4 reconfirmation today regardless of day-of-week per the lesson, via two separate searches (including a company-name-specific retry after the first query returned confusable Gildan Activewear/generic MACD-guide content) -- neither attempt returned any usable current RSI/MACD/200-EMA/price reading, so GIB.A was excluded today for unconfirmable technicals rather than reusing 09-10's stale $102.02/-2.74%-below-200EMA reading as if still current. NOTE: this is the 3rd consecutive scan (09-09, 09-10, 09-11) that retrospective.json's lessons_for_next_scan has carried this identical GIB.A deferred-megacap item forward even though 09-09 and 09-10 both already performed and logged this exact reconfirmation -- generate_retrospective.py's deferred-megacap tracker still does not appear to register a prior day's resolution; today compounds this with GIB.A's underlying data also having gone from readable (09-10) to completely unconfirmable (09-11), which is a separate, real problem worth the user's attention alongside the tracker bug. 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 was applied to setup_D candidates today -- moot in practice since WCP (the only setup_D-shaped candidate) scored only 1/5 on its own criteria (volume ratio ~1.0x, well under the 1.5x floor; no confirmed relative-strength read) before the adaptive bar would ever matter. Step 2 sourcing: all 9 screener_sources entries run first and again returned only generic platform/index-level commentary rather than concrete same-day TSX tickers (SwingTradeBot, Barchart, TradingView, TradeThatSwing, Globe and Mail all non-specific; SEDI and 52-week-high/unusual-volume searches returned only tracker-platform links, no concrete same-day filings/names; sector sweep rotated to Financials per rotation history, also returned nothing concrete; Sector ETF Constituent Check returned XEG's top-5 holdings by weight (SU 25.35%, CNQ 24.34%, CVE 13.08%, IMO 6.45%, TOU 5.64%) but only a stale early-September XEG/XFN/XMA/XIT performance snapshot, not a current relative-strength read) -- breadth was then closed with the 16-ticker direct-name sweep above plus 7 targeted follow-up searches (GIB.A retry, FNV RSI cross-check, WCP price/volume/PE/earnings, CM volume/PE, FTS volume/PE/earnings, QBR.B volume/PE/resistance, WELL price/RSI/volume) plus 1 more CNQ follow-up = 34 total searches this scan, above the usual ~22-27 range, reflecting an unusually high rate of cross-source data conflicts and stale/unconfirmable readings requiring refresh attempts (CM, FTS, QBR.B, CNQ, GIB.A, WELL, BCE, OTEX all hit data_integrity.stale_flagged_input_rule or an equivalent unconfirmable-data exclusion today -- 8 of 20 evaluated names, a notably higher rate than 09-10's session; worth flagging as its own pattern if it persists). No candidate was sourced only via the Sector ETF Constituent Check with an independent confirmation also run today, so no candidate needed the standard megacap-deferral treatment except the 4 XEG-holdings names (SU, CVE, IMO, TOU) that were never independently searched -- these were placed in excluded per funnel_breadth.recurring_megacap_handling with price_cad left null since the ETF-holdings lookup returned only weight percentages, not prices, and no extra search was run to backfill it per that rule's own no-extra-search instruction. Today is a Friday, not the Wednesday reconfirmation day, so this deferral was applied normally to all four. Phase D commodity trigger check: gold opened at $4,359.40, down ~1.1% from Thursday's close (does not qualify the >0.5% bullish gold trigger, and the direction is negative regardless). WTI came back genuinely conflicting this session -- one source showed +0.11% to $102.59, another showed an intraday slide of -2.4% to $100.05 off a session high of $104.46, amid reported US/Iran tension -- this could not be confirmed as a clean >1% bullish move either way, so aggressive_overrides.valuation_exception's P/E override for Energy/Materials was NOT applied today; moot regardless since every Energy/Materials name evaluated was excluded on technical or data-quality grounds, not P/E. No confirmed current-week XEG/XFN/XMA/XIT-vs-TSX-Composite relative-strength percentage was obtainable (only a stale early-September snapshot), so today's leading sector could not be determined with confidence -- moot since no candidate reached setup_B scoring where the leading-sector RSI ceiling would matter. Net result: 20 candidates evaluated across 12 sectors, zero cleared the bar for watchlist or new_buys -- a valid outcome per funnel_breadth's own framing, not a sign the search was cut short.",
  "candidates_evaluated_count": 20,
  "sectors_evaluated": ["Technology", "Materials", "Energy", "Financials", "Industrials", "Utilities", "Consumer Discretionary", "Consumer Staples", "Healthcare", "Real Estate", "Telecom", "Communication Services"],
  "lessons_applied": [
    "narrow_funnel: ran all 9 screener_sources entries (again only generic commentary), then closed breadth with a 16-ticker direct-name sweep across 12 sectors plus 4 recurring-megacap deferrals (SU/CVE/IMO/TOU) -- 20 distinct tickers evaluated, clearing both min_candidates_evaluated_per_scan (15) and min_sectors_represented (5)",
    "unconfirmed_volume: WCP's volume confirmed and internally consistent (~1.0x, below setup_D's 1.5x bar); FTS's only obtainable volume reading (~0.008x) recognized as implausible and excluded rather than used; CNQ and WELL volume unconfirmable after two attempts each, contributing to their exclusion rather than a silently-noted gap",
    "unconfirmed_resistance_level: moot today -- no candidate reached setup_B scoring",
    "unconfirmed_candle_pattern: moot today -- no watchlist carry-forward existed and no candidate's scoring depended on a candle pattern",
    "unconfirmed_macd_reading: CNQ's positive-value-labeled-'Sell' MACD (same anomaly seen on QSR/TOU/IMO previously) was not credited toward its score, contributing to its exclusion for insufficient setup-fit data",
    "deferred_megacap_moved: GIB.A given a full Step 3/4 reconfirmation today via two separate searches -- neither returned usable current technicals, so it was excluded for unconfirmable data this time rather than reused from 09-10's reading; flagging (3rd consecutive scan) that retrospective.json's lesson generator still appears not to register a prior day's resolution of this same item"
  ],
  "signals": {
    "new_buys": [],
    "holds": [],
    "exits": [],
    "watchlist": []
  },
  "excluded": [
    { "ticker": "GIB.A", "reason": "CGI Inc. (Technology). Forced full Step 3/4 reconfirmation today per retrospective.json's deferred_megacap_moved lesson (3rd consecutive day this identical lesson has fired). Two separate searches, including a company-name-specific retry, returned no usable current RSI/MACD/200-EMA/price data at all -- excluded for unconfirmable technicals rather than reusing 09-10's stale $102.02/-2.74%-below-200EMA reading as if it were still current.", "price_cad": null },
    { "ticker": "AEM", "reason": "Agnico Eagle Mines (Materials). Price $223.07 sits below its 200-day SMA ($245.06) and 20-day EMA ($233.16), both reading Sell -- excluded on ordinary technical grounds despite RSI (41.81) being in-band.", "price_cad": null },
    { "ticker": "FNV", "reason": "Franco-Nevada (Materials). RSI 74.4 confirmed independently by two separate searches, both above the aggressive-mode ceiling of 72 -- excluded as overbought (2+ sources agree, per exclusions.rsi_conflicting_data_rule).", "price_cad": null },
    { "ticker": "CNQ", "reason": "Canadian Natural Resources (Energy). Price $64.75 above its 200-day SMA ($53.17, Buy) and RSI 50.78 in-band, but MACD read 'Sell' from an aggregator despite a positive 0.143 value (the same positive-value-labeled-Sell pattern seen repeatedly this program) and no current-day volume figure was obtainable after two separate searches -- excluded per data_integrity.stale_flagged_input_rule rather than scoring through the unconfirmed volume/MACD gap.", "price_cad": null },
    { "ticker": "WCP", "reason": "Whitecap Resources (Energy). RSI 61.24 in-band, MACD positive, PE 16.70, earnings not until Oct 28 -- volume this time was internally consistent (7.40M vs 7.35M 20-day avg, ~1.0x) but below setup_D_momentum's 1.5x volume-acceleration bar, and no confirmed 1-3 session relative-strength-vs-XEG/TSX figure was obtainable -- scored 1/5 on setup_D, below the watchlist threshold. Insider buying (CEO + 3 execs, ~$856K CAD over 90 days per 09-10 research) is a genuine positive but not confirmed within the setup's 30-day window -- worth continued monitoring given the fresh 52-week high ($18.70).", "price_cad": null },
    { "ticker": "NA", "reason": "National Bank of Canada (Financials). Price $212.67 above its 200-day SMA ($197.42, Buy) with RSI 36.48 in-band, but MACD is genuinely negative (-3.23, Sell) and no 20d/50d EMA-proximity or volume data was obtainable to score a pullback fit -- scored at most 2/5, below the watchlist threshold.", "price_cad": null },
    { "ticker": "CM", "reason": "Canadian Imperial Bank of Commerce (Financials). Price conflicted materially across two separate searches ($151.57 vs. a $167.82-171.49 intraday range, an ~11-13% discrepancy) -- excluded per data_integrity.stale_flagged_input_rule after a second search failed to resolve the conflict. PE (14.21 fwd / 15.63 TTM) and RSI (68.92, in-band) were otherwise confirmable and looked constructive.", "price_cad": null },
    { "ticker": "WSP", "reason": "WSP Global (Industrials). Price $193.59 sits materially below its 200-day SMA ($245.52, ~21% below) -- excluded on ordinary technical grounds despite RSI (35.66) being at the low end of the in-band range.", "price_cad": null },
    { "ticker": "FTS", "reason": "Fortis (Utilities). RSI 61.9 in-band, MACD positive (0.74), price above its 200-day MA ($74.86) -- but the only current-volume figure obtainable (11,962 vs. a 1,458,436 average, ~0.008x) is implausible for a liquid TSX utility and directly contradicts the same search's own note that volume is rising with price -- excluded per data_integrity.stale_flagged_input_rule rather than scoring against a self-contradictory reading.", "price_cad": null },
    { "ticker": "OTEX", "reason": "Open Text (Technology). The only price data obtainable was explicitly dated Sept 4, 2026 (a week stale) at $33.27, more than 40% below its 52-week high ($56.00) -- no current RSI/MACD/200-EMA reading could be confirmed -- excluded for unconfirmable current technicals.", "price_cad": null },
    { "ticker": "DOL", "reason": "Dollarama (Consumer Discretionary). MACD negative (-0.420, Sell), 200-day MA $186.89 with key support described as forming near ~$179 (implying price at or below its 200-day average), and conflicting earnings-date reports (one already-passed Sept 4 date, another citing Sept 16, which would fall within 3 trading days of today if correct) -- excluded on the combination of bearish MACD, ambiguous EMA position, and unresolved near-term earnings risk.", "price_cad": null },
    { "ticker": "ATD", "reason": "Alimentation Couche-Tard (Consumer Staples). Technical rating is Strong Sell (5 sell signals vs. 2 buy), MACD negative (-0.110), 200-day MA $70.40 -- excluded on ordinary technical grounds.", "price_cad": null },
    { "ticker": "WELL", "reason": "WELL Health Technologies (Healthcare). The only price/volume data obtainable was dated May 9, 2025 (16 months stale) despite a second targeted search -- excluded for unconfirmable current data.", "price_cad": null },
    { "ticker": "FCR.UN", "reason": "First Capital REIT (Real Estate). MACD barely positive (0.03) and price above its 200-day EMA ($17.82), but no RSI was obtainable and today's volume reading (93,575 vs. a 361,959 average) looked like a partial-session snapshot rather than a full-day figure -- excluded for insufficient confirmable technicals.", "price_cad": null },
    { "ticker": "BCE", "reason": "BCE Inc. (Telecom). The only technical reading obtainable (MACD 0.162, RSI 37.006) was explicitly dated to late July 2026 (6+ weeks stale) -- excluded for unconfirmable current technicals.", "price_cad": null },
    { "ticker": "QBR.B", "reason": "Quebecor (Communication Services). Price conflicted materially across two searches ($56.44 vs. $62.07, with a further inconsistent previous-close of $57.58 quoted alongside the second figure -- roughly a 10% spread) and volume was unconfirmable (one source showed an implausible 4,500 shares) -- excluded per data_integrity.stale_flagged_input_rule. Note: one reading cited a +7.8% single-session move, which would be a genuine momentum trigger if confirmed -- worth a same-day Questrade-sourced re-check if that connector becomes available.", "price_cad": null },
    { "ticker": "SU", "reason": "Suncor Energy Inc. (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": "CVE", "reason": "Cenovus Energy Inc. (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 Limited (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 Corp. (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 }
  ]
}
