The operating model

Option A — Systematised Thematic (decided 16 Aug 2026). An active thematic portfolio run against a written policy (Investing/Policy.json): ten sleeves with min–max bands, hard guardrails, monthly monitoring — and trades only on a band breach or at the semi-annual windows. Defensive posture is a triggered regime (drawdown ≥ 15% from peak, or declared), never the default.

New investment ideas in every review

Standing preference from 9 Sep 2026: every review considers sustainable dividend income and capital-growth ideas, including crypto, tokenised assets and private-market funds, with dated evidence, a clear yield basis, payout and debt risks, tax and FX effects, portfolio overlap, entry valuation, size and thesis failure criteria. Alternatives also require checks of investor rights, custody, redemption, eligibility and token supply. If nothing qualifies, say so. Watchlist ideas follow the existing mandate; allocation repairs retain priority. This review preference does not create automatic alerts.

Where the data comes from

Public-market refresh without a broker reconciliation

Public closes and reference FX can revalue the recorded holdings while quantities, costs and cash stay at their last confirmed values. The page labels this an estimated valuation, identifies source dates and keeps it out of the verified account-history chart. DataStatus.json sets brokerReconciled: false until a broker/statement reconciliation clears it.

The 29 October refresh uses 28 October Stock Analysis closes and ECB FX, with Cboe VIX dated 27 October. RR. is converted from pence to pounds; IBE1 uses the Madrid IBE ordinary-share close. London SEMI history is now in GBP, available from 19 August; BTC retains its 28 September quote. Every macro/watch quote carries its own date. The current chart week is included at its latest observation date. The saved IBKR performance extract and the full holdings-thesis screen retain their older dates.

Monthly (~1st–4th, alongside the finance run)

Kirill downloads last month's SC securities statement from the app and drops it into Investing/Statements/ (plus a settlement-balance screenshot if cash moved).
Claude pulls IBKR live, reads the statement, updates Positions.csv + FX.csv, and runs build_portfolio.py — this page updates, and a reconciled snapshot lands in Snapshots/. Contributions and withdrawals go into CashFlows.csv so drawdown remains flow-adjusted.
Market pull, three agents in parallel (also at every rebalance): IBKR weekly price history for every holding plus a live positions check; benchmarks, sector/theme ETFs and macro gauges; and a news scan that screens every holding (Reviews.csv — ok / watch / review, shown on the portfolio) and refreshes the Watchlist.csv — assets outside the portfolio only — plus the news list. All read-only — no orders, alerts or watchlist edits. Two more agents pull costs: IBKR commissions + actual time-weighted returns from the API, and SC fees, dividends and withholding from the statement. The build then draws the performance, risk, sector, market and watchlist charts. Performance is a back-cast: today's book held constant.
Claude writes the drift memo: total, month move, sleeve drift, guardrails, drawdown. Flags only — never trades.
Kirill acts only on band or guardrail breaches; executed trades go into Trades.csv, each tagged with its basis (planned · trigger · unplanned · auto) and the plan it executes — the dashboard's discipline scorecard reads it. A completed rebalance adds its date to Policy.json. Rebuild, push, log the run.

The band rule is the only monthly sleeve trigger: a sleeve more than 0.5 percentage points outside its policy band. A 0–0.5pp overrun is watch-only and is checked next month; hard guardrails have no tolerance. A position trade needs a named trigger, completed thesis/stop review, or approved weight-neutral wrapper migration — intended position sizes are not yet encoded.

Quarterly (3rd week of May & November)

Monthly steps plus: earnings recap per held name; conviction re-score per sleeve (flag a thesis weak two quarters running); watchlist review for new technology — entry only with a pre-written thesis + kill-criteria, starter ≤ 2%, funded from a satellite sleeve; cycle watch; event-trigger review; FOMC SEP read-through for duration. Trades still require a band/guardrail, except a staged plan explicitly listed in Policy.json → approved_programs; the guarded Nov-2026 JPY tranche is the first such exception.

Cycle watch (inside every quarterly check)

Deep-cyclical sectors get systematically cheap at cycle troughs; the review catches the bottom deliberately instead of by headline. Watched sectors and their trough markers: shipping (orderbook-to-fleet at lows, rates below cash breakeven, P/NAV < 1, scrapping up), semiconductors (memory-price declines decelerating, inventory correction late, book-to-bill trough), energy & oilfield services (rig-count trough, service pricing below reinvestment), chemicals & fertilizers (below-mid-cycle margins, capacity closures), metals & mining (price into the cost curve, mine closures).

A sector flags entry-watch when ≥ 2 trough markers are present and sentiment is still bearish — Claude then sends a cycle signal memo with the evidence and 2–3 candidate vehicles (LSE UCITS preferred). A signal is a flag, not a trade: entries still need a pre-written thesis with kill-criteria, starter ≤ 2%, satellite funding; one signal per sector per cycle. Shipping memos carry a standing caveat — Kirill's income is already shipping-correlated, so a shipping entry concentrates household exposure beyond what the portfolio shows.

Semi-annual rebalance (3rd week of February & August)

The deep pass, timed for ~90% of earnings reported: full thesis scorecard (what the mandate believed vs what happened), macro regime assessment, crypto market watch, a trade-proposal list with broker routing (new core/metals buys via LSE UCITS to walk US-situs exposure toward the US$60k estate-tax line). Kirill executes over the window; Policy.json is amended — dated — if the mandate itself changes.

Crypto market watch (inside every semi-annual rebalance)

The mandate prohibits crypto — this is a monitoring brief, not a position. It exists so that "should we own any?" is an evidence question settled at a scheduled window, not a headline question asked at a random moment. Markers scored each window: drawdown from cycle high, halving clock (next ~Apr 2028), ETF/ETP net flows (the marginal buyer since 2024), stablecoin aggregate supply, perp funding & open interest, price vs realized price, regulatory/policy.

≥ 3 markers in trough territory with sentiment still bearish → Claude writes a crypto signal memo. A signal is not a trade and not even a trade permission: it puts a mandate amendment on the window's agenda. One signal per cycle. Standing caveat — no cash flow, no valuation anchor, and no metals substitute: gold is the ballast, bitcoin has fallen with equities in every recent stress, so it would sit in the satellite risk budget, never the defensive one. The pre-agreed shape if the answer ever becomes yes (non-US-situs LSE bitcoin ETP, a 0–3% digital_assets satellite, 2% starter, bitcoin only, stop-review exempted) is written up in Investing/Runbook.md.

Events & the defensive regime

Status

Slice 1 (this dashboard + runbooks) shipped 16 Aug 2026. Open: Slice 2 — scheduled monthly run + statement ingest; Slice 3 — IBKR price alerts wired to the event playbook. Canonical copy of this runbook: Investing/Runbook.md.