{
  "scan_date": "2026-08-28",
  "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, 15% cash reserve, 8% max portfolio risk). Step 1a lessons from retrospective.json (generated 2026-08-27, lessons_for_next_scan had 4 items, none tagged overdue_exit_not_executed/unenriched_position/deferred_megacap_moved this time): (1) narrow_funnel (only 2 distinct tickers, CAR.UN/CJT, traded across the whole program, below the 15-ticker breadth target) -- addressed today by re-checking all 8 prior watchlist tickers (LUN, BCE, DOL, EIF, X, BMO, BNS, CLS) in Step 1c before any new sourcing, then running all 7 screener_sources entries (sector sweep rotated to Consumer Staples, not used recently) plus 3 screener_outage_fallback searches (Consumer Staples names, Energy 52-week-high/WTI, REIT/Healthcare/Utilities) after the generic screener queries returned mostly macro commentary rather than individual tickers -- combined, evaluated 16 distinct tickers across 10 sectors (Materials, Communication Services, Consumer Discretionary, Industrials, Financials, Technology, Energy, Real Estate, Utilities, Consumer Staples), clearing min_candidates_evaluated_per_scan (15) and min_sectors_represented (5). (2) unconfirmed_volume pattern -- today's confirmation searches did request volume; FTS got a real current-vs-average volume ratio (761,287 vs 1,509,441 avg, ~0.5x, consistent with a pullback's selling pressure drying up) that fed its watchlist scoring, but EIF and BNS were both moved to excluded specifically because a current-day volume ratio still could not be confirmed for a 3rd consecutive day (Step 1c's repeat-carry rule), and WCP's only volume figure found was a stale Aug 18 read (0.8x avg, insufficient to confirm a breakout), keeping it on watchlist instead of scoring it as a breakout new_buy. (3) unconfirmed_resistance_level -- BCE and BNS were both moved to excluded today with an unresolved resistance/consolidation level cited as part of the reason, per the 3-consecutive-scan repeat rule, rather than left pending again. (4) unconfirmed_macd_reading -- MDA's -0.29 MACD sell reading was confirmed identical for a 3rd consecutive day today, now treated as a stable, genuine bearish reading (not noise) and kept excluded despite a Globe and Mail 'institutional accumulation' mention. Step 1c watchlist resolution (run before Step 2, against each ticker's prior waiting_for): LUN -- 6th trading day since 2026-08-21 (max carry 7), a fresh source (different from the prior byte-identical RSI/MACD figures) now reads an outright 'Strong Sell' technical rating with price still $36.11, well below the $38.07 reclaim trigger -- moved to excluded on disconfirming data rather than riding out the last carry day. BCE -- 3rd consecutive day with no same-day RSI or volume found (price data itself was stale, dated Aug 21) -- excluded per the repeat rule. DOL -- RSI (29.1) repeated exactly from the prior read and price fell further to $180.64 (near the ~$179 200d EMA support), still no bullish reversal candle or rising volume confirmed for the setup_C oversold-reversal thesis -- kept on watchlist one more day given this is only the 2nd day under the setup_C framing (shifted from setup_A only yesterday), not yet a 3rd repeat. EIF -- still no resistance/consolidation level or today's volume ratio (only a 20-day avg volume found) on the 3rd flagged day -- excluded per the repeat rule despite a supportive Globe and Mail institutional-accumulation mention (that mention is qualitative, not the specific numeric confirmation the rule requires). X (TMX Group) -- RSI (42.87) and MACD (-0.19) came back byte-for-byte identical to the prior day's figures for a 3rd consecutive day, confirmed stale -- excluded per the repeat rule. BMO -- finally got a fresh post-earnings read (RSI 39.7 neutral, MACD turned negative Aug 19) after two days of stale pre-earnings data; a separate Globe and Mail source independently confirms BMO is 'deeply overbought' with RSI 85 and 11% above its 50d MA -- the fresh read no longer supports any of the three entry setups (MACD bearish, RSI reading conflicts between sources) -- excluded. BNS -- still no resistance/consolidation level or volume ratio on the 3rd flagged day (RSI 55.95/MACD -0.575 neutral this time, not the more favorable RSI 60.22/MACD 1.276 buy read from 2 days ago) -- excluded per the repeat rule. CLS -- RSI came back 49.29 again, the same one of the two conflicting values from before, not a tie-breaking read -- 3rd consecutive day unresolved -- excluded per the repeat rule. Step 2 new sourcing: screener_sources' generic queries (SwingTradeBot, Barchart, TradingView, Trade That Swing) returned mostly index-level/macro commentary rather than individual tickers this time; Globe and Mail's TSX-breakouts query surfaced CM, RY (both closed at/near record highs, both reported Q3 fiscal 2026 earnings 2026-08-27 -- now in the past, so no longer earnings-excluded) and named CLS/MDA/EIF/KXS/X as an 'institutional accumulation' list (KXS was the one genuinely new name from that list). The rotated Consumer Staples sector sweep surfaced Supremex (SXP) and High Liner Foods (mentioned but not independently confirmed technically, not scored). The Energy and REIT/Healthcare/Utilities fallback searches (run because the generic screener queries underperformed on ticker breadth) surfaced Whitecap Resources (WCP, Energy, oil-rally beneficiary) and Boardwalk REIT (BEI.UN, Real Estate); Fortis was also named on a separate 'most oversold TSX stocks' list but today's actual RSI read (57-59) shows it is NOT currently oversold, so it was scored on its own merits rather than under the oversold carveout. New-candidate outcomes: CM excluded (Strong Sell technical rating, no confirmed RSI/MACD, -2.84% post-earnings). RY excluded (RSI 39.48 and MACD bearish/crossed negative -- only ~2/5 on setup_A, below the watchlist threshold). KXS kept on watchlist (RSI 57/MACD 0.49 both buy signals and raised guidance, but today's search could not confirm current price against its $157.47 200d EMA or a volume ratio -- needs both tomorrow). MDA excluded (see lesson (4) above). WCP kept on watchlist (Strong Buy technical rating, RSI 61/MACD 0.08 both buy, but no today's price, no defined resistance level, and only a stale Aug 18 volume read -- needs a genuine same-day confirmation before scoring as a breakout). BEI.UN excluded (MACD -0.29 negative, no RSI found -- doesn't plausibly support any of the three entry setups on today's data). FTS kept on watchlist (RSI 57.4-59.08/MACD 0.35 both buy signals, volume today ~0.5x its average consistent with a pullback's selling pressure drying up, but EMA-proximity to the 20d/50d EMA and a reversal candle are not yet confirmed -- worth a same-day price check against its EMAs tomorrow). SXP excluded ('Strong Sell' technical rating with 8 sell signals vs 1 buy, and its reported 200-day EMA figure ($3.65) is inconsistent with the stock's known price scale -- a data-quality problem on top of an already-bearish overall read). No candidate today was sourced only via a Sector ETF Constituent Check -- that query returned aggregate sector-performance commentary (Financials +6.2%, Materials -0.8% with an Aug 24 miners surge, Technology -8.0% with a late-week Shopify/CSU/Celestica bounce) rather than a specific constituent list, so funnel_breadth.recurring_megacap_handling was not triggered for any ticker today (moot point: today is Friday, not Wednesday, anyway). Devonian Health Group and yesterday's other recurring-megacap exclusions (SU, SHOP, CSU, GIB.A, DSG) were not resurfaced by any of today's sources and so are not re-listed. Step 5 (CAR.UN, the only open position, entered 2026-08-27): current price $33.32 (07:30 fetch) vs stop $32.54 -- stop not hit. Day 1 of the hold -- nowhere near either the 5-day (grade-B/off-sector) or 10-day (grade-A/leading-sector) aggressive time stop. Neither T1 ($35.84) nor T2 ($37.82) hit. No new swing high on elevated volume since only 1 day has elapsed, so no pyramid ADD. No candidate today scored >=4 while CAR.UN holds its entry-day 5/5, so no SWAP. Action: HOLD. Step 6: mcp__Questrade__* tools were confirmed absent from this session's toolset (checked before relying on them) -- consistent with today's run_daily_scan.sh pre-flight, which already logged QUESTRADE_UNAVAILABLE at 07:33 and sent its own urgent ntfy alert before this scan began, per daily_scan_prompt.md Step 6 point 0 this is treated as the known connector-availability gap for this unattended cron invocation, not evidence of a different/interactive session. It had no practical effect today because signals.new_buys is empty (no candidate scored a genuine 4-5) -- there was nothing for Step 6 to execute or fail to execute, so no additional ntfy alert was sent beyond the pre-flight's.",
  "candidates_evaluated_count": 16,
  "sectors_evaluated": ["Materials", "Communication Services", "Consumer Discretionary", "Industrials", "Financials", "Technology", "Energy", "Real Estate", "Utilities", "Consumer Staples"],
  "lessons_applied": [
    "narrow_funnel: 8 Step 1c watchlist re-checks plus all 7 screener_sources entries (sector sweep rotated to Consumer Staples) plus 3 screener_outage_fallback searches (generic screeners underperformed on ticker breadth today) evaluated 16 distinct tickers across 10 sectors, clearing min_candidates_evaluated_per_scan (15) and min_sectors_represented (5)",
    "unconfirmed_volume pattern: FTS's real current-vs-average volume ratio (~0.5x) fed its watchlist scoring; EIF and BNS were moved to excluded (not left pending again) specifically because a current-day volume ratio still couldn't be confirmed for a 3rd consecutive day; WCP was kept on watchlist rather than scored as a breakout because its only volume figure was a stale Aug 18 read",
    "unconfirmed_resistance_level: BCE and BNS were both moved to excluded today citing an unresolved resistance/consolidation level, per the 3-consecutive-scan repeat rule rather than left pending",
    "unconfirmed_macd_reading: MDA's -0.29 MACD confirmed identical for a 3rd consecutive day, now treated as a stable genuine bearish reading and kept excluded despite a supportive institutional-accumulation mention elsewhere",
    "no overdue_exit_not_executed, unenriched_position, or deferred_megacap_moved lessons were active today (none in retrospective.json's lessons_for_next_scan); recurring_megacap_handling was not triggered for any ticker since none were sourced only via a Sector ETF Constituent Check today"
  ],
  "signals": {
    "new_buys": [],
    "holds": [
      {
        "ticker": "CAR.UN",
        "days_held": 1,
        "current_price_cad": 33.32,
        "stop_intact": true,
        "t1_hit": false,
        "t2_hit": false,
        "action": "HOLD -- day 1 of hold, stop intact ($32.54), neither T1 ($35.84) nor T2 ($37.82) hit, no pyramid ADD condition met, no SWAP candidate scored >=4 today"
      }
    ],
    "exits": [],
    "watchlist": [
      {
        "ticker": "DOL",
        "waiting_for": "Dollarama (Consumer Discretionary), 4th day evaluated, setup_C oversold reversal (2nd day under this framing). RSI repeated exactly at 29.1 (same figure as the prior read, likely a stale/cached source) while price fell further to $180.64, now close to its ~$179 200d EMA support. Still needs a genuinely fresh RSI reading plus a visible bullish reversal candle and rising volume to confirm the reversal -- escalate to excluded tomorrow if the RSI figure repeats unchanged a 3rd time.",
        "trigger_price_cad": null,
        "trigger_direction": null,
        "questrade_symbol": null
      },
      {
        "ticker": "KXS",
        "waiting_for": "Kinaxis (Technology), 1st day evaluated. RSI 57.0 and MACD 0.49 both read as buy signals, with raised full-year guidance after a strong Q2, but today's search could not confirm current price against its $157.47 200d EMA (a precondition for scoring any of the three setups) or a volume ratio. Needs a confirmed same-day price/200EMA relationship and volume tomorrow.",
        "trigger_price_cad": 157.47,
        "trigger_direction": "above",
        "questrade_symbol": null
      },
      {
        "ticker": "WCP",
        "waiting_for": "Whitecap Resources (Energy), 1st day evaluated. Strong Buy technical rating with RSI 61.2/MACD 0.08 both buy signals, benefiting from an oil-price rally (WTI +1.6% amid Strait of Hormuz tensions), but no today's price, no defined resistance/consolidation level, and the only volume figure found was a stale Aug 18 read (~0.8x avg, below the 1.2x breakout threshold). Needs a genuine same-day price, resistance level, and volume ratio before it can be scored against setup_B.",
        "trigger_price_cad": null,
        "trigger_direction": null,
        "questrade_symbol": null
      },
      {
        "ticker": "FTS",
        "waiting_for": "Fortis (Utilities), 1st day evaluated. RSI 57.4-59.1 and MACD 0.35 both buy signals; today's volume (761,287) is roughly 0.5x its average (1,509,441), consistent with selling pressure drying up on a pullback. Not yet confirmed: price proximity (~2%) to its 20d/50d EMA, and a bullish reversal candle -- note this stock appeared on a separate 'most oversold' list but today's actual RSI shows it is NOT oversold, so it is being tracked under setup_A pullback, not setup_C. Needs EMA-proximity and a reversal candle confirmed tomorrow.",
        "trigger_price_cad": null,
        "trigger_direction": null,
        "questrade_symbol": null
      }
    ]
  },
  "excluded": [
    { "ticker": "LUN", "reason": "Lundin Mining (Materials). 6th trading day on watchlist since 2026-08-21 (max carry 7). A fresh, genuinely different source (distinct from the prior byte-identical RSI/MACD figures) now reads an outright 'Strong Sell' technical rating; price ($36.11) remains well below the $38.07 reclaim trigger. Moved to excluded on disconfirming data rather than riding out the final carry day.", "price_cad": null },
    { "ticker": "BCE", "reason": "BCE Inc. (Communication Services). 3rd consecutive day with no same-day RSI or volume found (price data found today was stale, dated Aug 21). Moved to excluded per the repeat rule.", "price_cad": null },
    { "ticker": "EIF", "reason": "Exchange Income Corp (Industrials). 3rd flagged day still without a defined resistance/consolidation level or a today's-volume ratio (only a 20-day average volume was found). A Globe and Mail institutional-accumulation mention is qualitative only, not the specific numeric confirmation required. Moved to excluded per the repeat rule.", "price_cad": null },
    { "ticker": "X", "reason": "TMX Group (Financials). RSI (42.87) and MACD (-0.19) came back byte-for-byte identical to the prior day's figures for a 3rd consecutive day, confirmed stale. Moved to excluded per the repeat rule.", "price_cad": null },
    { "ticker": "BMO", "reason": "Bank of Montreal (Financials). Finally got a fresh post-earnings technical read (RSI 39.7 neutral, MACD turned negative Aug 19) after two days of stale pre-earnings data. A separate Globe and Mail source independently confirms BMO is deeply overbought (RSI 85, 11% above its 50d MA). The fresh read does not support any of the three entry setups today.", "price_cad": null },
    { "ticker": "BNS", "reason": "Bank of Nova Scotia (Financials). 3rd flagged day still without a defined resistance/consolidation level or a today's-volume ratio; today's RSI/MACD read (55.95/-0.575, neutral) is also less favorable than the RSI 60.22/MACD 1.276 buy read from 2 days ago. Moved to excluded per the repeat rule.", "price_cad": null },
    { "ticker": "CLS", "reason": "Celestica (Technology). RSI came back at 49.29 again -- the same one of the two conflicting values seen before, not a tie-breaking read. 3rd consecutive day unresolved. Moved to excluded per the repeat rule.", "price_cad": null },
    { "ticker": "CM", "reason": "Canadian Imperial Bank of Commerce (Financials). Q3 fiscal 2026 earnings reported 2026-08-27 (now in the past, no longer earnings-excluded), but stock fell -2.84% post-earnings and carries an outright 'Strong Sell' technical rating with no confirmed RSI/MACD figures. Does not plausibly support any of the three entry setups on today's data.", "price_cad": null },
    { "ticker": "RY", "reason": "Royal Bank of Canada (Financials). Price above its 200d EMA, but RSI (39.48) is only borderline within the setup_A band and MACD has crossed bearish (-0.23 below signal, histogram -1.23). Scores roughly 2/5 on setup_A (missing EMA-proximity, volume, and a positive MACD) -- below the 3-4 watchlist threshold.", "price_cad": null },
    { "ticker": "MDA", "reason": "MDA Space (Industrials). MACD (-0.29) confirmed identical for a 3rd consecutive day -- a stable, genuine bearish reading, not noise. Despite a Globe and Mail 'institutional accumulation' mention, the confirmed technical data does not support any of the three entry setups.", "price_cad": null },
    { "ticker": "BEI.UN", "reason": "Boardwalk REIT (Real Estate). MACD reads negative (-0.29) and no RSI figure could be confirmed. Does not plausibly support any of the three entry setups on today's data.", "price_cad": null },
    { "ticker": "SXP", "reason": "Supremex (Consumer Staples). Outright 'Strong Sell' technical rating (8 sell signals vs 1 buy); its reported 200-day EMA figure ($3.65) is inconsistent with the stock's known price scale, a data-quality problem on top of an already-bearish overall read.", "price_cad": null }
  ]
}
