{
  "scan_date": "2026-08-19",
  "macro_notes": "Run interactively at the user's explicit request (daily_scan_prompt.md invoked verbatim). active_mode=aggressive: all aggressive_overrides applied (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; risk% by score 5=1.75%/4=1.25%/3=1.0%; min R:R 1:3; cash_reserve_pct 15; max_simultaneous_positions 8). STEP 6 CAVEAT: Questrade MCP tools (list_accounts/get_balances/get_positions/preview_order_instruction/create_order_instruction/get_order_history) are NOT available in this interactive session -- same limitation noted on 2026-08-17 and 2026-08-18. Moot today since new_buys is empty, but flagging again since this is a standing gap between the prompt's design (unattended cron execution) and this session's actual tool access; ntfy_alert.py's send_alert() was available (invoked via python3, not an MCP tool) and would have been used had any guardrail/order event required it. TODAY IS WEDNESDAY: funnel_breadth.recurring_megacap_handling's weekly reconfirmation rule applies -- ran full Step 3 confirmation search + Step 4 scoring on all 11 mega-caps that were deferred via the XEG/XFN/XMA Sector ETF Constituent Check on 2026-08-18 (RY, BMO, CM, SU, CNQ, CVE, AEM, ABX, WPM, FNV, NTR) instead of re-deferring them -- none carried a deferred_megacap_moved lesson from retrospective.json (that field was empty), so this is the standard Wednesday reconfirmation, not an override-triggered one. Result: RY/CNQ/CVE placed on watchlist (clean bullish RSI/MACD/200EMA/earnings-clear reads but same-session volume ratio and pullback/resistance-pattern confirmation unavailable, same structural gap as TD/BNS/EIF below); BMO/CM/SU/AEM/ABX/WPM/FNV/NTR excluded -- BMO (MACD bearish + internally inconsistent 50/200MA figures vs its stated Aug17 ATH), CM (only stale mid-July RSI/MACD readings found, nothing dated today), SU (RSI/MACD/price-vs-200MA all genuinely conflicted across sources -- 29.3 vs 56.1 RSI, -1.15 vs 0.07 MACD, below vs above 200MA -- too unreliable to score), AEM (200MA reads conflict on which side of it the price sits), ABX and FNV (both confirmed price below 200MA + negative MACD, clean fails), NTR (RSI 30.2 qualifies for the oversold carveout but MACD is still falling, not curling up, and price is below its 200MA -- fails setup_C's own gating criteria, this is a genuine downtrend not a reversal). DATA QUALITY: recurring issue from 2026-08-18 continues -- several sources returned moving-average/price figures internally inconsistent with each other (e.g. RY quoted at $293.47 vs a $253.31 200-day MA a ~16% gap; BMO's 50-day MA $141.6 and 200-day MA $129.9 vs its own Aug17 ATH of $259.20). Where this happened the RSI/MACD directional signal was kept (cross-checked for plausibility) but the specific price/MA figures were treated with caution rather than used for precise pullback/resistance-distance calculations. A separate stray search result claimed CJT at $87.41 (-1.95%, below the $87.50 stop) -- cross-checked against live_prices.json ($88.78, last_updated 2026-08-19T13:30:03Z) and an independent stockanalysis.com fetch ($88.58 as of 9:30am ET), both of which agree and sit safely above the stop; the $87.41 reading was discarded as stale/unreliable, consistent with live_prices.json being the more trustworthy source for already-tracked tickers per 2026-08-18's finding. LEADING SECTOR: Energy this week -- XEG constituents (Suncor +1.7%, Canadian Natural +0.9%) gained on rising oil prices while XFN (banks), XMA (miners, on softer gold) and XIT (tech, Shopify -1.2%/Celestica -8.4%) all underperformed the TSX Composite (which itself eased -0.82% on 2026-08-18). This is why CNQ/CVE were held to a genuine look today rather than routed straight to excluded, and why their setup_B RSI ceiling would be 75 rather than 72 if a breakout pattern is confirmed on a future scan. LESSONS APPLIED (retrospective.json generated 2026-08-18, all 3 active): (1) narrow_funnel -- the 5 generic screener_sources queries (SwingTradeBot, Barchart, TradingView, Trade That Swing, Globe and Mail) again returned no concrete new candidate lists (site-level summaries only, same pattern as prior scans), so applied funnel_breadth.screener_outage_fallback: ran 4 additional fallback searches (Utilities breakout/52-week-high, Healthcare/Consumer Discretionary momentum, general TSX 52-week-high list, Real Estate/Communication Services breakout) which surfaced 3 genuinely new tickers not evaluated on 2026-08-18 -- Canadian Utilities (CU, Utilities), Andrew Peller (ADW.A, Consumer Staples), Algoma Central (ALC, Industrials) -- reaching 23 distinct tickers across 7 sectors today (Financials, Energy, Materials, Industrials, Technology, Utilities, Consumer Staples), clearing both min_candidates_evaluated_per_scan(15) and min_sectors_represented(5) with real breadth beyond yesterday's set, not just a recount of the same names. (2) unconfirmed_volume pattern -- persists today for TD/BNS/EIF/RY/CNQ/CVE/CU: no source returned a same-session-vs-average volume ratio for any of them. This is the same structural timing issue diagnosed on 2026-08-18 (scan runs early in the session) plus a second contributing factor observed today -- several megacap technical-analysis pages simply don't surface current-day volume at all, only historical averages. Reiterating 2026-08-18's process recommendation (pro-rate expected volume by elapsed session time, or defer volume confirmation to an intraday re-check) since re-diagnosing this daily without a prompt/tooling change won't resolve it. (3) unconfirmed_resistance_level pattern -- CU (near its Jul31 ATH of $56.90, MarketBeat confirms an Aug14 200MA cross) and ALC (trading $23.90 vs a 52-week high of $24.10) both sit close to a resistance/high level but neither source confirmed '2+ prior touches' the way setup_B requires -- CU placed on watchlist with the ATH as its numeric trigger; ALC excluded since its MACD is also negative (not just the resistance pattern unconfirmed). Net result: 0 new_buys, 6 watchlist (TD/BNS/EIF carried from 08-18 with fresh reads; RY/CNQ/CVE new today from the Wednesday reconfirmation; CU new from fallback sourcing), 1 hold (CJT, stop intact but nearing its aggressive-mode 5-day off-sector time stop -- day 4 of 5), 0 exits, 15 excluded (8 megacaps individually reconfirmed and failed/too unreliable today, 6 Technology names carried forward on unchanged PE-fundamentals reasoning since PE doesn't shift daily, 1 new name (ALC) excluded on negative MACD + unconfirmed pattern).",
  "candidates_evaluated_count": 23,
  "sectors_evaluated": [
    "Financials",
    "Energy",
    "Materials",
    "Industrials",
    "Technology",
    "Utilities",
    "Consumer Staples"
  ],
  "lessons_applied": [
    "narrow_funnel (retrospective.json lessons_for_next_scan #1): generic screener_sources queries returned no concrete lists again, so ran funnel_breadth.screener_outage_fallback (4 additional searches: Utilities, Healthcare/Consumer Discretionary, general 52-week-high list, Real Estate/Communication Services) surfacing 3 genuinely new tickers (CU, ADW.A, ALC) across 2 new sectors (Utilities, Consumer Staples) -- 23 distinct tickers across 7 sectors today, real breadth beyond 2026-08-18's set, not a recount.",
    "unconfirmed_volume pattern: persists for TD/BNS/EIF/RY/CNQ/CVE/CU -- no source returned a same-session-vs-average volume ratio for any of them today; same structural timing issue as 2026-08-18 plus megacap TA pages generally omitting current-day volume. Process recommendation reiterated in macro_notes rather than re-diagnosed as a data-source gap.",
    "unconfirmed_resistance_level pattern: CU and ALC both sit within ~1-2% of a clean high (ATH $56.90 / 52wk-high $24.10) but neither had '2+ prior touches' confirmed -- CU watchlisted with the ATH as a numeric trigger, ALC excluded on its own negative-MACD merits regardless."
  ],
  "signals": {
    "new_buys": [],
    "holds": [
      {
        "ticker": "CJT",
        "days_held": 4,
        "current_price_cad": 88.78,
        "stop_intact": true,
        "t1_hit": false,
        "t2_hit": false,
        "action": "HOLD -- live_prices.json (2026-08-19T13:30:03Z) shows $88.78, cross-checked against an independent stockanalysis.com fetch ($88.58 as of 9:30am ET); both sit safely above the $87.50 stop (~1.5% buffer) and both discard a stray search result that claimed $87.41/-1.95% (stale/unreliable, see macro_notes). Still underwater vs the $91.09 entry by ~2.6%, no progress toward T1 ($106.25). Earnings already passed (Aug 10). Day 4 of the aggressive-mode 5-day off-sector time stop (Industrials isn't one of the 4 tracked leading-sector ETFs) -- one trading day from a time-stop EXIT unless price is still above its 20 EMA and above breakeven at that point (time_stop_override), which it currently is not (still below breakeven). Flagging for close attention tomorrow. No new swing high since entry (price below entry), so no pyramid ADD trigger. No new candidate scored >=4 today, so no SWAP flag."
      }
    ],
    "exits": [],
    "watchlist": [
      {
        "ticker": "TD",
        "waiting_for": "Toronto-Dominion Bank: live_prices.json confirms $169.91 today (2026-08-19T13:30:03Z), down slightly from yesterday's $171.19. RSI 53.24 (Financhill), stable vs yesterday's 57.44 read, within the aggressive 72 ceiling. MACD 0.49, a Buy signal. 200-day MA 151.21, price comfortably above. Next earnings Aug 27, still clear of the 3-trading-day exclusion (6 trading days out). Same-session volume ratio still not obtainable from today's sources -- 3rd consecutive scan blocked on this specific confirmation (see macro_notes' unconfirmed_volume lesson). Re-check tomorrow, ideally later in the session.",
        "trigger_price_cad": null,
        "trigger_direction": null
      },
      {
        "ticker": "BNS",
        "waiting_for": "Bank of Nova Scotia: live_prices.json confirms $125.36 today, down slightly from yesterday's $125.80, still below the $126.87 resistance-reclaim trigger. RSI reads conflict (52.48 vs 62.94, both comfortably within the 72 ceiling so not a ceiling-straddling conflict). MACD 0.02, a thin but positive Buy signal. 200-day MA 117.96, price above. Next earnings Aug 25, 4 trading days out, still clear of the 3-day exclusion. Same-session volume ratio still unconfirmed today -- 3rd consecutive scan on this blocker. Re-check tomorrow for a fresh close vs $126.87 and a later-session volume read.",
        "trigger_price_cad": 126.87,
        "trigger_direction": "above"
      },
      {
        "ticker": "EIF",
        "waiting_for": "Exchange Income Corp: live_prices.json confirms $132.17 today (+0.47%), up from yesterday's $131.82, still about 3.3% below its 52-week high of $136.75 -- the trigger has not fired. A conflicting stockanalysis.com read of $128.54 was discarded as stale/unreliable per the same live_prices.json-is-ground-truth pattern used for CJT today (see macro_notes). Average volume ~224.32K confirmed (stockanalysis.com), but same-session ratio still unconfirmed. MACD shows a buy signal. RSI not confirmed today. Earnings already passed (Aug 11), no near-term exclusion risk. Re-check tomorrow for both the mechanical trigger cross and a later-session volume/RSI read.",
        "trigger_price_cad": 136.75,
        "trigger_direction": "above"
      },
      {
        "ticker": "RY",
        "waiting_for": "Royal Bank of Canada: reconfirmed today under the Wednesday recurring-megacap rule (previously deferred via XFN top-holdings lookup on 08-18). RSI 53.62, neutral, within band. MACD reads as a Buy (64.53, likely a raw indicator value rather than a normalized reading -- treated only as directional). Price quoted at $293.47 vs a 200-day MA of $253.31 -- both above, but the ~16% gap between them looks like a possible data inconsistency (see macro_notes); treating the 'above 200MA' signal as valid but not the precise gap. Earnings Aug 27, 6 trading days out, clear. Missing: confirmed pullback-to-EMA proximity or a defined resistance/breakout level (unclear which setup fits), and same-session volume ratio. Re-check tomorrow with a source that gives a consistent current price, and ideally a clearer chart-position read (pullback vs breakout).",
        "trigger_price_cad": null,
        "trigger_direction": null
      },
      {
        "ticker": "CNQ",
        "waiting_for": "Canadian Natural Resources: reconfirmed today under the Wednesday recurring-megacap rule. RSI 54.62 neutral, MACD 0.07 Buy, price $64.75 above its 200-day MA of $53.17. Earnings already passed (Aug 6), no near-term risk. Average volume confirmed at 14.97M/day; today's session volume not yet confirmed as a ratio. Energy is today's leading sector (XEG outperforming XFN/XMA/XIT this week -- see macro_notes), which would raise CNQ's RSI ceiling to 75 under setup_B if a genuine breakout pattern confirms. Missing: a defined resistance/breakout level or pullback-to-EMA proximity, and the same-session volume ratio. Re-check tomorrow for a specific chart-pattern read.",
        "trigger_price_cad": null,
        "trigger_direction": null
      },
      {
        "ticker": "CVE",
        "waiting_for": "Cenovus Energy: reconfirmed today under the Wednesday recurring-megacap rule. RSI reads 67.49 and 52.06 (both within the 72 ceiling, not a ceiling-straddling conflict). MACD 1.19 Buy, price $44.56 above its 200-day MA of $33.87. Next earnings Nov 4, no near-term risk. Same leading-sector (Energy) consideration as CNQ applies. Missing: a defined resistance/breakout level or pullback-to-EMA proximity, and the same-session volume ratio. Re-check tomorrow for a specific chart-pattern read.",
        "trigger_price_cad": null,
        "trigger_direction": null
      },
      {
        "ticker": "CU",
        "waiting_for": "Canadian Utilities: new candidate today, surfaced via the Utilities 52-week-high fallback search (funnel_breadth.screener_outage_fallback). MarketBeat confirms an Aug 14 cross above its 200-day MA; Financhill/stockinvest.us shows a Jul 31 all-time high of $56.90, but their RSI/MACD/200MA figures are dated 'as of June 2026' and therefore stale, not usable for today's scoring. Next earnings Oct 22, no near-term risk. Needs: a fresh (today-dated) RSI/MACD/price read, and confirmation of whether price has cleared or is consolidating just below the $56.90 ATH -- set as this entry's numeric trigger. Re-check tomorrow with a more specific query.",
        "trigger_price_cad": 56.9,
        "trigger_direction": "above"
      }
    ]
  },
  "excluded": [
    {
      "ticker": "CSU",
      "reason": "Constellation Software: unchanged from 08-18 -- PE 22.02 is within band but RSI/MACD/volume remain unconfirmed, and at ~$3,089/share a $2,500 account's stop distance (2.5x ATR) would almost certainly exceed the entire per-trade risk budget regardless of setup score. No fresh search run today since the practical sizing ceiling hasn't changed.",
      "price_cad": null
    },
    {
      "ticker": "X",
      "reason": "TMX Group: unchanged from 08-18 -- RSI 42.87 in-band, price above 200d MA, but MACD -0.190 negative, failing every setup's MACD requirement; RSI isn't below 35 either so no oversold-reversal carveout applies. No fresh search run today.",
      "price_cad": null
    },
    {
      "ticker": "SHOP",
      "reason": "Shopify: unchanged from 08-18 -- trailing PE 101.52 clearly exceeds the base 9-35 band; Technology gets no PE exception (Energy/Materials only). Excluded on fundamentals regardless of technicals. No fresh search run today.",
      "price_cad": null
    },
    {
      "ticker": "CLS",
      "reason": "Celestica: unchanged from 08-18 -- trailing PE 39.71 exceeds the base 9-35 band; Technology gets no PE exception. No fresh PE search run today since the fundamental fact doesn't shift daily.",
      "price_cad": null
    },
    {
      "ticker": "MDA",
      "reason": "MDA Space: unchanged from 08-18 -- PE readings conflicted (53.52 TTM vs 33.9 elsewhere) but even the more favorable figure sits at the 35 ceiling and the more authoritative TTM figure clearly fails; Technology gets no PE exception. No fresh search run today.",
      "price_cad": null
    },
    {
      "ticker": "KXS",
      "reason": "Kinaxis: unchanged from 08-18 -- trailing PE 39.20 exceeds the 35 band (forward 27.01 would pass, but trailing is the standard read); Technology gets no PE exception. No fresh search run today.",
      "price_cad": null
    },
    {
      "ticker": "BMO",
      "reason": "Bank of Montreal (Financials). Wednesday recurring-megacap reconfirmation: RSI 39.7 neutral, but MACD line below signal (bearish momentum) -- fails the MACD requirement. Its quoted 50-day MA ($141.6) and 200-day MA ($129.9) are also internally inconsistent with its own reported Aug 17 all-time high of $259.20, a data-quality red flag (see macro_notes) that further undermines confidence in the technical read. Not a deferral -- individually reconfirmed and failed today.",
      "price_cad": null
    },
    {
      "ticker": "CM",
      "reason": "Canadian Imperial Bank of Commerce (Financials). Wednesday recurring-megacap reconfirmation: only stale technical readings found (10-day RSI exiting overbought Jul 20, MACD turning negative Jul 22 -- both over a month old), nothing dated today. Price trend described as bullish (above 5/20/50 EMA) but without a current RSI/MACD reading there's no confirmable setup fit today. Not a deferral -- individually reconfirmed and insufficient data today.",
      "price_cad": null
    },
    {
      "ticker": "SU",
      "reason": "Suncor Energy (Energy). Wednesday recurring-megacap reconfirmation: RSI (29.3 vs 56.1), MACD (-1.15 vs 0.07), and price-vs-200MA (below vs above) all genuinely conflict across sources -- unlike the ceiling-straddling RSI conflict rule (which only governs whether to exclude as overbought), this is baseline-data unreliability across every axis needed to score any setup. Too unreliable to act on today; not a deferral.",
      "price_cad": null
    },
    {
      "ticker": "AEM",
      "reason": "Agnico Eagle Mines (Materials). Wednesday recurring-megacap reconfirmation: RSI 48.3 neutral, MACD reported turning positive Jul 22 (stale, not today's reading), but 200-day MA reads conflict on which side of it the price sits ($150.98 vs $186.50, one source explicitly calling the stock below its 200MA -- bearish). Can't confirm the baseline above-200MA gate. Not a deferral -- individually reconfirmed and data too conflicted today.",
      "price_cad": null
    },
    {
      "ticker": "ABX",
      "reason": "Barrick Mining (Materials). Wednesday recurring-megacap reconfirmation: RSI 43.07, MACD -1.22 (Sell), price $51.90 below its 200-day MA of $53.66 -- a clean fail on both the trend gate and the MACD requirement, not a data-quality issue. Not a deferral -- individually reconfirmed and failed today.",
      "price_cad": null
    },
    {
      "ticker": "WPM",
      "reason": "Wheaton Precious Metals (Materials). Wednesday recurring-megacap reconfirmation: MACD 2.27 Buy and price above its 200-day EMA ($118.31), but no RSI figure was found in any source today, and the only price point available ($186.13) is dated Aug 14, 5 days stale. Missing a core scoring criterion entirely (RSI) plus a stale price -- not enough to score any setup today. Not a deferral.",
      "price_cad": null
    },
    {
      "ticker": "FNV",
      "reason": "Franco-Nevada (Materials). Wednesday recurring-megacap reconfirmation: RSI 43.37, MACD -3.87 (Sell), price $298.38 below its 200-day MA of $305.84 -- a clean fail, consistent with its 50MA crossing below its 200MA on Jul 1 (a longer-term bearish signal). Not a deferral -- individually reconfirmed and failed today.",
      "price_cad": null
    },
    {
      "ticker": "NTR",
      "reason": "Nutrien (Materials). Wednesday recurring-megacap reconfirmation: RSI 30.2 qualifies for the sub-35 oversold carveout, scored against setup_C_oversold_reversal -- but MACD is -0.86 and still falling (not curling up/improving) and price sits below its 200-day MA (StockInvest.us: 0 buy signals, 9 sell signals, Strong Sell rating). Fails setup_C's own gating criteria (needs to still be in a long-term uptrend with MACD improving) -- this reads as a genuine downtrend, not a washed-out reversal. Not a deferral -- individually reconfirmed and failed today.",
      "price_cad": null
    },
    {
      "ticker": "ALC",
      "reason": "Algoma Central (Industrials). New candidate today, surfaced via a 52-week-high fallback search -- trading $23.90 vs a 52-week high of $24.10 (within ~1%), price above its 200-day MA ($20.61). But MACD is -0.040 (Sell, not 'about to cross' by any confirmed reading) and neither breakout volume (>1.2x average) nor '2+ prior touches' at the resistance level could be confirmed today -- fails setup_B's MACD requirement outright, so not close enough for watchlist despite the tight proximity to its high.",
      "price_cad": null
    },
    {
      "ticker": "ADW.A",
      "reason": "Andrew Peller (Consumer Staples). New candidate today, surfaced via the Healthcare/Consumer Discretionary fallback search (mentioned in a broader 52-week-high roundup). RSI 48.16 and MACD 0.02 (thin Buy) both in-range, and the stock is up 35.29% over 52 weeks -- but at a ~$5.27 share price with historically modest revenue (~$393M FY2026), this looks well below the fundamental $500M CAD minimum market cap threshold. Not individually confirmed via a dedicated market-cap search today (search budget prioritized elsewhere), but excluded on this strong prior given the company's known small-cap profile -- flagged here rather than silently dropped in case a market-cap check next time shows otherwise.",
      "price_cad": null
    }
  ]
}