How this works
MAR Article 4 requires a summary of the basis of valuation, the methodology and the underlying assumptions, an indication of any change to them, and a sensitivity analysis. This page is that, and it says where it falls short.
The single most important architectural decision
The model's output schema has no field for a price, a share count, a weight, a notional or a risk limit. It expresses direction and conviction, plus a relative stop preference — "tight", "standard" or "wide" — which the mandate clamps. Everything quantitative is computed downstream from the mandate and from real prices.
This is not a prompt instruction, which a model can ignore. It is the type system, and a test fails the build if anyone widens the schema.
Three gates the AI cannot see or bypass
Is this instrument in the universe? Is the action permitted by this mandate? Is the portfolio allowed to open new positions right now? Every refusal carries a stable reason code and is published.
The share quantity is computed from the mandate, never from the model. Position caps, sector caps, issuer caps, sleeve bands and order-size-versus-volume limits all bind here.
Loss limits, drawdown ladders, volatility ladders, stale-data halts and circuit breakers. A halted portfolio may still reduce risk — exits always run, because a cap that stopped a stop firing would turn a bookkeeping limit into an unbounded loss.
Fills, and why look-ahead is impossible rather than avoided
A fill is struck on a volume-weighted average price over a window that begins strictly after the decision timestamp plus a latency delay. No fill can use information from the bar in which the decision was made.
Conventions that would allow it are banned outright rather than discouraged — the paper broker raises on them and a test asserts that no mandate uses one:
| Banned convention | Why |
|---|---|
| same_bar_close | The decision used data up to the close and would fill at the close. Indefensible. |
| same_bar_vwap | Overlaps the decision window. |
| bar_high_or_low | Uses information unavailable at decision time. |
| next_day_open_for_intraday_decision | Injects a full overnight gap unrelated to the strategy. |
Costs
Every result is net of modelled execution costs, itemised rather than collapsed into one opaque number: spread, market impact, commission, SEC Section 31 fees and FINRA trading activity fees. Gross and net are always reported side by side so the cost drag is visible.
Published verbatim, including the assumptions that are not sourced. Where a number is a guess it is labelled a guess. A cost model that hides its weak assumptions makes every result downstream of it unfalsifiable.
zero_commission_us · swiss_retail · institutional · crypto_retail_punitive · intraday_punitive
Section 31 fee rates are taken from an effective-date table rather than hardcoded — the rate was $0.00 for part of fiscal 2026 and then $20.60 per million, and a single hardcoded value would be wrong on both sides of the change.
Sensitivity analysis — partially built
Rendering every performance figure under all profiles simultaneously, and a second axis at +/-50% on the spread assumptions, is specified but not yet built. This gap is published rather than omitted.
Statistics that are deliberately withheld
Annualised return, volatility, Sharpe, Sortino and Calmar are not computed below sixty observations, and the site shows "withheld" rather than a number. Annualising a three-week return produces a figure that looks precise and is not, and publishing one would be a small lie repeated on every page.
A benchmark comparison is aligned on overlapping dates only. A benchmark series that started later than the portfolio would flatter it.
Changes to any of this
Rulebook changes are events in the same hash chain as trades, carrying a full diff, a reason and an effective date. Model and prompt changes are the same. You cannot quietly loosen a limit after a bad quarter here, because the loosening would appear in sequence next to the quarter that prompted it. Current rulebook versions:
What the actions mean
MAR Article 4 asks that the meaning of a recommendation be explained. The permitted actions here are not price targets or ratings. BUY and ADD express that an instrument should be entered or increased, subject to the mandate computing whether and by how much. TRIM and SELL express reduction or exit. HOLD is an explicit no-change. FLATTEN closes everything. TIGHTEN_STOP moves a stop closer, within limits the mandate sets. FLAG_THESIS_BREAK and FLAG_DATA_ANOMALY raise something for attention without proposing a trade at all.