Sector/Thematic = Portfolio Dashboard theme label when available; else GICS/Yahoo sector (ETFs use thematic map). Rel mom = dashboard composite (Layer A) · ST mom = flow · Est.rev = 1M (4WK) EPS estimate % change vs itself.
Rel mom arrow = vs ~1M ago (comp_chg_1m); ST mom arrow = vs ~1W ago (flow_chg_1w); ↑ / → / ↓ with deadband ±2 (hover for Δ). Missing Δ = no arrow (e.g. Quant Buys without PD history).
Est.rev = BEST_EPS_4WK_PCT_CHG raw % (≈1M revision vs itself); colour by sign (green +, red −, muted |%|<0.5); ↑/→/↓ same ±0.5 ppt deadband. Sort by that raw %. Expand for 4WK/3MO/6MO raw % plus peer Est.rev 0–100 score (0.6·%ile 4WK + 0.4·%ile 3MO). Blank when 4WK missing. Quant Buys backfilled via PD est_rev_mom / BBG path.
Surp. = latest EPS surprise % (0–1 dp, signed) + streak 4↑/2↓/1— (beat/miss/inline) + trend arrow ↑/→/↓ (improving/stable/fading from mean last-2 vs prior-2; |Δ|<2ppt → stable). Colour % by sign; streak/trend muted. Sort by latest surprise %. Expand for last 4Q + avg4 + methodology. Blank for ETFs / missing history.
Fundamentals / Valuation Adj. / Tier arrows = vs ~1M weekly snapshot (28 calendar days; nearest ≤ today−28, else oldest if age ≥21d). Format in Fundamentals cell: 3.85 ↑ · ↑ = Fund Δ then Val Adj Δ (Val Adj column removed — score + Δ also in hover). Tier chip + arrow. Score deadband ±0.05 on 1–5 scale → flat; Tier any nonzero ordinal change = ↑/↓. Missing prior snapshot = no arrow (baseline alone does not invent history; arrows appear after ~3–4 weekly snapshots / ~1M).
Earnings = next reported earnings date from Yahoo Finance (cached); blank when unavailable. Earnings flags: soft (amber) = T−3..T−2 trading days before; escalate (bold red-amber) = T−1 and T (report day). Trading days = Mon–Fri only (no holiday calendar). Past / blank / em-dash = no flag.
ST Inflection = Portfolio Dashboard Pivot Watch (short-term): a side is labelled PEAK/TROUGH n/5 when ≥2 of its 5 legs fired in the last 10 sessions. Peak legs: weak rally (≥2% up-move on volume ≤0.9× the prior 20d avg), RSI bearish divergence (new 20d closing high, RSI(14) >3 pts lower than the prior high), at/fading 52w high (move to within 5% of the 52w high, or fade to >5% below after being within 2%), OBV bearish divergence (new 20d high, On-Balance Volume lower), ATR spike rolling over (ATR% in top 10% of its 1y range, now easing). Trough legs: RSI bullish divergence, at/bouncing off 52w low, OBV bullish divergence, ATR spike rolling over (same signal counted on both sides) and weak rally, which is peak-only in the dashboard code and never fires for troughs (troughs max out at 4/5). The five signals are listed for both Peak and Trough in the hover tooltip; expand a row for the full ✓/— breakdown.
Weight % / Unrealized % = PIM (US+CAD portfolio only). Mom bands: green ≥70; amber 30–69; red <30; blank / em-dash / null = no colour.
Data freshness line (under the title; hover each item for the exact PT timestamp, source, columns fed and staleness rule; Hide ▴ / Data ▾ collapses it with the As-of line, saved in this browser; an amber dot on Data ▾ = a stale feed): Prices = last Yahoo daily close in the bars; PD = Portfolio Dashboard score books + badge logs; BBG = Bloomberg Est.rev workbook; Fund / Fwd = last Yahoo metrics / consensus pull; Earn = older of the next-date and surprise pulls; Pos/Theme = manual curation file + ⚑ pending-review count; Scored = score run; Sizing = the manual position-sizing analysis (weights / vol as-of dates; never amber, not auto-refreshed). Amber when prices >1 trading day behind the last expected close, PD/BBG >2 business days, Fund/Fwd >8 days, Earn check >3 days (or a Yahoo pull >8 days); re-evaluated against your clock.
Drag column header edges to resize (saved in this browser); Reset columns restores defaults.
Row expand (click any row, incl. its Weight % cell): labelled cards — Position & Sizing, Fundamentals (score / Valuation Adj. / Tier with 1M Δ, confidence · stage, ⚑ flags, Pos / Growth / Margin / Bal.sh. / FCF / Value / Theme pills — click a pill for its justifying note, shown under Pattern & notes; Position one-liner), Earnings (next date, Est.rev 4WK/3MO/6MO + peer score, surprise latest / streak / trend / avg4 + last 4Q EPS act vs est), Momentum (Rel mom + 1M Δ, ST mom + 1W Δ), Growth (historical vs forward, trajectory), ST Inflection (five signals, Peak / Trough ✓/—), Pattern & notes; method text in the small block at the bottom.
Position & Sizing (manual analysis, as-of in the card; not auto-refreshed): current weights = PIM 9/24 % of total account and % of the equity model (US model = 61.63% of account excl. GLD/SLV alternatives; Canada = 62.25% incl. XIC); benchmark est. wt = S&P 500 / S&P/TSX weight estimated from SPY (9/24) / XIC (9/25) holdings files; effective = direct + VOO/XIC look-through; active = effective − benchmark (look-through) and direct − benchmark; vol 1Y (3M context) to the 9/25 close; beta and residual (stock-specific) vol vs SPY / XIC in local currency; share of active risk = contribution to model tracking error. Signal-driven sizing: conviction = 0.75 × S + 0.25 × Q. S (signal score, −1…+1) = Rel mom 45% ((Rel−50)/50), ST mom 25% (0.8 × (ST−50)/50 + 0.2 × 1W direction, ±2 deadband), Est.rev 15% (1M EPS estimate % change ÷ 3, clipped: ±3% = ±1), Surp. 15% (0.5 × latest surprise % ÷ 10 clipped + 0.25 × streak ±n/4 + 0.25 × trend improving +1 / stable 0 / fading −1); missing signals dropped and weights renormalised (ETFs: Rel/ST only, 64.3%/35.7%); ST Inflection and Weekly pattern are shown for information only (weight 0). Q (quality, −1…+1) = (Valuation Adj. − 3.5) ÷ 1.0, clipped (ETFs Q = 0). Target active wt = k × conviction / residual vol (k calibrated so the US model target TE matches the prior 4.11%; same k for Canada), then in order: momentum disagree (Rel and ST scores of opposite sign, both beyond ±0.10) → a positive active is halved; Tier D → overweight capped at +0.5pt of model; Tier A/B with conviction < 0 → effective weight floored at the index weight (not zero); +4pt max overweight, 10% of model (NVDA bench+2pt), floor 0, <0.5% of model → 0 (the Tier A/B floor takes precedence); VOO / XIC absorb the remainder. The card's Signal drivers table shows each signal's value, score (green +, red −, grey ≈0), weight and contribution, then Signal score S, Quality Q (Val. Adj., Tier), Conviction = 0.75×S + 0.25×Q and any flags (⚑ momentum disagree → half size, Tier D overweight cap, Tier A/B floor at index, churn deadband → Hold); the Why line reads “action: Signals ±S (Rel · ST · Est.rev · Surp) · Quality ±Q (Tier, Val. Adj.) · conv · resid vol · index wt [· flags] (info: ST Infl, Pattern)” with score arrows ↑↑ ≥+0.5, ↑ ≥+0.15, → ±0.15, ↓ ≤−0.15, ↓↓ ≤−0.5 (ETF / index / alts rows: signals info only). Target in % of account and % of model; Keep (held names) = weight if the name stays in the portfolio (exit decision removed): bench + k × max(conviction, +0.15) / residual vol (+0.15 = a neutral-positive name), same rules and caps, no <0.5% drop-to-zero, minimum 0.5% of model, same as Target when conviction ≥ +0.15; standalone per name (not re-optimised — VOO / XIC would absorb the difference); ETFs = current, VOO / XIC n/a; exits add “if kept x.xx% acct (vol-adj.)” to the Why line. Step 1 = halfway point; Direction = Increase / Trim / Exit / Hold on the direct trade with a churn deadband: Hold unless the change exceeds ±0.50pt of account or the look-through active weight flips over ↔ under with the trade toward the new side (green = add, red = reduce). Watchlist / Quant Buys candidates show the suggested entry weight and model TE if added; ETFs show vol / beta with a note (no scores; VOO / XIC = benchmark proxy; GLD / SLV outside the equity model). Practical (0.5% grid) row / Practical target line = the tradeable version: model target rounded to a round 0.5% landing level, 1% minimum (below → Exit or 1.0%, whichever is closer), changes < 0.5pt = Hold at current weight, model 0 = Exit, candidates need a model entry ≥ 0.75%; VOO / XIC absorb the residual; practical TE / beta in the card footer. The Weight % cell itself is unchanged.
Growth blends historical and forward consensus growth: 50% historical (3Y revenue CAGR + YoY acceleration bump; banks/insurers: earnings growth) + 50% forward (Yahoo consensus 2Y revenue CAGR; banks/insurers: 2Y EPS CAGR); x.5 blends round toward the forward score (rewards acceleration, penalizes deceleration); stage caps after. Historical only when <3 analysts (“fwd n/a”); forward lift capped at +1 notch when coverage is thin or unsupported by YoY. Growth pill shows trajectory (accelerating / steady / decelerating, ±3 ppt) vs the historical rate that drove the score: YoY (capped 50%) when the acceleration bump set it, else 3Y CAGR; banks vs earnings growth.