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. Two-step sizing (live 9/27 evening): conviction = S only — S (signal score, −1…+1) = Rel mom 60% ((Rel−50)/50), ST mom 25% (0.8 × (ST−50)/50 + 0.2 × 1W direction, ±2 deadband), Est.rev 10% (1M EPS estimate % change ÷ 3, clipped: ±3% = ±1), Surp. 5% (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, 70.6%/29.4%; weights reset 9/27 evening from 45/25/15/15); ST Inflection and Weekly pattern information only. Tier and Valuation Adj. are context only (no Quality term, no Tier rules). Step 1 — gate: a name passes if S ≥ +0.30 and Rel / ST momentum agree (scores of opposite sign, both beyond ±0.10, fail the gate); a failing held name exits (index exposure kept via VOO / XIC), a failing candidate is not entered. Step 2 — size: effective (look-through) weight = benchmark wt + tilt, tilt = k × S / residual vol (k calibrated so the precise US target TE is 4.11%; same k for Canada), capped +4pt overweight / 10% of model (NVDA bench+2pt); direct = effective − VOO/XIC weight × bench; × model size → % of account; rounded to the nearest 0.5% level, 1.0% floor, changes < 0.5pt = Hold at current; XLV / MTUM / RSPR and GLD / SLV unchanged; VOO / XIC absorb the residual. The card's Signal drivers table shows each signal's value, score (green +, red −, grey ≈0), weight and contribution, then Conviction = S with the Step 1 result, a muted context line (Tier · Val. Adj., not in sizing) and any flags (⚑ Step 1 fail: conv < gate / Rel/ST disagree, Step 2 tilt at cap); the Why line reads “practical action (model: …): Step 1: passes / fails gate (conv x vs +0.30) · Step 2: size = bench + tilt (k × S / σ) = effective % of model → direct → model x.xx% acct → rounded level · Signals ±S (Rel · ST · Est.rev · Surp) · resid vol · index wt (info: Tier · Val.Adj, ST Infl, Pattern)” with score arrows ↑↑ ≥+0.5, ↑ ≥+0.15, → ±0.15, ↓ ≤−0.15, ↓↓ ≤−0.5 (ETF / index / alts rows: signals info only). Keep (held names) = weight if the name stays (Step 1 exit removed): Step-2 size at conviction max(S, +0.15), same caps, on the 0.5% grid, minimum 1.0%; passing names keep = target; standalone (not re-optimised — VOO / XIC would absorb the difference); ETFs = current, VOO / XIC n/a; exits add “if kept x% acct” to the Why line. Watchlist / Quant Buys candidates show the practical entry and TE with entry vs without; ETFs show vol / beta with a note (VOO / XIC = benchmark proxy; GLD / SLV outside the equity model). Every weight suggestion on the card is practical (Target / Keep / Step 1 / Δ, the Keep line and candidate entries); there is no action chip at the top — the recommendation is the Practical target line with its Buy / Sell / Hold / Exit / Enter chip; the muted Model (precise) row shows the unrounded Step-2 size (and its model direction in the tooltip) for reference; the Step 1 column = halfway point on the same grid. Practical / model TE and beta are 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.