Built from the conviction ranking (what we've actually analyzed), sized by risk-adjusted expected return × screen agreement, capped at 8% single / 25% sector. The universe screen is a weight haircut, not a hard gate — 6 holdings carry a screen disagreement.
E[r] is the authored return, frozen at each name's analysis-date price. E[r] live re-anchors the same bull/base/bear targets to the last close (2026-07-28) — hover a cell for distance-to-base-target. A split? badge means the price broke vs the analysis (likely a split, e.g. ROCK-B) and the name needs a re-stream; its live figure is suppressed and the sizing falls back to the authored weight. The sizing module below can size on either basis.
Two-stage: the conviction (value) layer selects the universe; a momentum/trend gate then sizes the book. The price spine is 12-1m momentum (trailing-year return, skip-month) z-scored across names; the 40-week MA times entries (benching cheap names below a falling 40w MA — value traps still falling; overweighting those reclaiming a rising 40w MA with positive momentum). The 200-week MA & 52-week-high flag the over-extended (stretched on the 4-yr cycle) for trimming.
Fundamental-momentum leg (35%): position size blends price momentum (65%) with realized fundamental momentum — ROIC & operating margin vs each name’s own 5-year baseline, plus 5-year revenue growth (Novy-Marx fundamental momentum, less crash-prone). It modulates size only — deteriorating fundamentals shrink a high-price-momentum name; improving ROIC lifts a quiet one. The ΔROIC column shows the headline driver. Optional overlay; not backtested (forward-return validation matures ~Aug 2026).
Of 28 eligible value names — confirmed 8, basing 8, weakening 2, extended 1, broken 7, no-data 2. Active book 19; 9 value names benched awaiting trend confirmation. Versus pure value: 9 dropped, 0 newly included.
Concentrated by design. The active book is 19 of 30 target slots. The gap is not a missing-analyses gap — the analyst has reviewed the top of the universe and chosen HOLD/OBSERVE on names like NONG.OL, TRAC-B.ST, AKSO.OL, ABG.OL etc., consistently citing cyclical-peak or quality concerns (see the verdict_rule badges). Forcing the book to 30 would dilute conviction; the smaller, higher-conviction book is the honest reflection of available BUY-rated names. See VERDICT_RULES.md for the rule taxonomy.
Benched · value names awaiting trend confirmation (cheap, but below a falling 40w MA / no data — dropped: ACP.WA, GENO.OL, ZZ-B.ST, ELISA.HE, VEFAB.ST, KMAR.OL, BETS-B.ST, NORION.ST)
Fully automated: eligibility comes straight from the
nightly universe screen (rating ≥ Attractive, data-integrity ok, one share class) — no analyst
dependency. The same 40-week-MA trend gate and 12-1m momentum sizing as the Value+Momentum book.
Hysteresis: a held name is kept while it stays in the top 50
by natural rank (an extended holding is kept while it would rank inside the band without the extended sizing haircut, so its shown rank can exceed 50) — new names enter only when a held name exits the band, breaks trend, or loses screen
eligibility. This cuts turnover; only the top 30 are sized.
Screen-eligible 212 — confirmed 50,
basing 57, weakening 30, extended 18,
broken 53 (benched). Active 155; book
30; buffer (31–50)
22. Turnover this run: +1 / −1.
Movement vs 2026-07-23 (same universe, same screening method). Not backtested; forward validation matures ~Aug 2026. The known trade-off vs the conviction
book: this holds screen-cheap cyclicals while their trend is intact (the analyst HOLDs them) — the
40w gate is the exit, not analyst judgment.
Exits this run: DNO.OL (rank fell to 53 (outside top 50))
Weights shown use the default sizing basis (inverse volatility). To size an
actual allocation, switch basis, and download the .xlsx, use the Position sizing module
below — it follows this portfolio when the NC-Momentum toggle is active, and explains the
inverse-volatility calculation.
Buffer · natural ranks 31–50 — monitored, not sized. A held name above is kept until it exits this band (anti-overtrading hysteresis); these are the names that would enter when a slot opens.
Enter an allocation; each holding is sized by its target weight and converted to a share count at the latest close. Pick the base currency — holdings in other currencies are converted at the ECB reference rate. Prices as of 2026-07-28 (latest close) · FX as of 2026-07-28 (ECB via frankfurter). Shares rounded to the nearest whole. Toggle the portfolio above (Pure Value / Value+Momentum / NC-Momentum) — this table follows it, including the .xlsx download.
Weight bases. Conviction books: Live E[r] (expected return recomputed from the last close) or Authored (frozen weights). NC-Momentum: Inverse volatility (default), Live E[r], or Composite × momentum.
How inverse volatility is calculated:
σi = standard deviation of each name's weekly returns over the trailing 52 weeks, annualized (× √52).
Raw weight wi ∝ 1/max(σi, 5%) — the floor stops a freakishly quiet name from dominating; a name with missing history gets the book's median σ.
Raw weights are then passed through the same caps as every book (8% single / 25% sector) and renormalized to 100%.
Result: a low-vol name (σ ≈ 25%) gets roughly twice the weight of a high-vol one (σ ≈ 50%) — risk-parity-lite, sizing positions by risk contribution rather than by conviction score. Hover a weight for the name's σ.
Ticker
Name
Weight
Price
Px
Target
Shares
Cost
Drift
Risk-adjusted ranking · top 30 of 258
Movement: the # column shows each name's own conviction-rank week-over-week move (vs 2026-07-20); the badge by the name shows its universe-composite move (vs 2026-07-20). Hover a badge for the prior rank.
Ranked by Score (risk-adjusted expected return × confidence) — not by the qualitative conviction level in the Conv. column, which is a separate dimension and now also haircuts portfolio weight. E[r] = probability-weighted bull/base/bear return. Ratio = E[r] / dispersion (Sharpe-like). Confidence = extraction tier × freshness. Score = ratio × confidence.
Scenario bands: bootstrap_estimated (Step 4 replaces with authored bands). Authored bull/base/bear (per SCENARIO_SCHEMA.md) replace the bootstrap as analyses are re-streamed.
Refreshed since last run · 2026-07-28 · 3 names
Names re-streamed in the last batch, with what changed versus the prior analysis. ΔROIC in percentage points; Δeconomic-profit & Δprice in the analysis currency. ▲ up · ▼ down. Read-only — the ranking is unaffected.
Where the layers disagree is signal for recalibrating the NC screen. Summary: 20 agree positive, 4 conviction-over-screen, 178 screen-over-conviction. The strong one-directional tilt — especially in Financials & Real Estate — flags that the screen's NOPAT/ROIC/EP composite under-rates financials, where ROE frameworks apply. That is the priority NC recalibration.
Sector
n
Conv>Screen
Screen>Conv
Net tilt
Industrials
60
0
46
-46
Financials
75
4
40
-36
Consumer Discretionary
33
0
23
-23
Energy
22
0
20
-20
Technology
22
0
15
-15
Health Care
21
0
14
-14
Consumer Staples
13
0
11
-11
Materials
7
0
6
-6
Utilities
3
0
2
-2
Deep-dive freshness · what to analyze next
Of 228 attractive names (composite ≥ 60), 66% have a fresh deep-dive. To do: 39 missing · 39 report-stale · 0 aging. By tier: V.Attractive 100% · Attractive 65%. This worklist refreshes every nightly run — work the top, coverage climbs to 100%. No fixed weekly batch.