Documentation · Section 5 of 6
Portfolios
The long-term lane: target weights, a monthly amount, reviewed contribution proposals you approve, pass-through execution and performance from your own fills.
Portfolios: The Long-Term Lane
Target weights, a monthly contribution, and proposals you approve.
- The amount is a planning cap: the portfolio invests up to that amount per month from cash already at your broker. dotQuant never touches your bank and never moves money into the account.
- dotQuant stores your intent (weights, cadence, benchmark) and the instruction history (what was proposed, approved, sent, and what the broker reported back). Positions, cash, and valuations always come from a fresh read of your broker at planning time — the broker is the book of record, dotQuant is never a custodian.
- If the named connection cannot answer, the outcome is cannot plan now — never a plan from a cache, never a different account.
Create one on the Portfolios tab: pick symbols, weights that total 100%, the monthly amount, review day, and broker connection.
The Monthly Review
Fresh broker facts in, a fully resolved proposal out.
1. Reads your free cash on the named connection — the contribution is capped by what is actually there.
2. Reads your current positions and fresh prices (pence-quoted LSE instruments are normalised; cross-currency holdings are converted through the platform's own FX feeds, and the rate and date are recorded on the slice).
3. Computes a drift-aware, new-money-first split toward your target weights — overweight holdings simply receive nothing; the planner never plans a sell.
4. Resolves each slice into what your broker can actually execute — fractional quantities where supported, whole shares rounded down, and anything unexecutable (below the broker minimum, or a unit costing more than the slice) banked as cash that rolls into the next month. Ordered plus banked always equals the contribution to the cent.
The result is a proposal: the resolved orders and banked slices, waiting for you. A pending proposal is a refreshable quote — if prices or cash change before you act, the platform re-plans and supersedes it. Only your approval (or your explicit skip) closes the period, and a period can be approved once — that is the money invariant.
Approving and Steering
You are the only money event — and you can steer between reviews.
You can also steer without waiting for the review day:
- Review now… requests an ad-hoc review immediately, optionally with a one-off amount for just that round.
- Withdraw… asks for a percentage of the portfolio: each holding sells that share of the shares this portfolio bought — never your other shares of the same stock — capped by what your broker holds and rounded down to what it can trade. The sells are planned within a minute and wait for your approval like any proposal (Yes, sell or Decline…). The proceeds stay as cash at your broker; while the portfolio is active its next review invests free cash again, so pause it if the money should stay out. It works on a paused portfolio too.
- Cancel request withdraws an open review or withdrawal request and its pending quote.
- Skip this period… declines the current contribution proposal — the period closes with zero execution.
When a review is due but no proposal can be produced, the portfolio says why — no free cash on the broker, the broker unreachable, or no execution adapter for that broker — read fresh, never from a stored flag.
Execution, Rejections, and Retries
Pass-through orders, honest broker verdicts, user-pressed remediation.
- Rejections are shown verbatim with the broker's own reason on the proposal's slice — an unmapped symbol, a quantity-precision rule, insufficient funds.
- Retry is yours to press: a rejected slice carries a Retry action that re-executes it at the approved quantity under a fresh attempt — never automatic, and idempotent per press (a double-tap cannot double-buy).
- Quantity-precision rejections on platform-sized orders are stepped down automatically at the gateway (always rounding down) until the broker accepts — the order record shows exactly what was sent.
Every order the platform sends carries its origin — which portfolio (or strategy, or manual ticket) produced it — visible on the Activity tab and filterable in the order history.
Performance: From Your Own Fills
P/L and rate-of-return graphs computed from what dotQuant actually did.
- Everything is computed from dotQuant's own fill records: cost basis at the fill date's FX close, value at the latest usable close, pence-quoted instruments normalised. It measures the dotQuant process — it is labelled from fills and is never a statement of account; your broker's numbers are the authority.
- Honest degradation: if any held position cannot be priced, totals say incomplete rather than partially summing.
- With the Desktop App streaming, every price-made figure ticks live from your own market-data entitlement: each portfolio's value and P&L in the list, its holdings, its return and the all-portfolios total, marked live · IBKR (or delayed when your entitlement only gives delayed data, or 2 of 3 live when it covers some holdings); the graph's daily points stay end-of-day.
For agents:
portfolio-performance (current snapshot) and portfolio-performance-history (daily series; omit the portfolio id and pass a currency for the cross-portfolio aggregate).Momentum Mandates: One Shot a Day
The day's top winner, bought after the open and sold before the close — by rule, on paper first.
1. A set time after the open (15 minutes by default) dotQuant reads the Top winners from your own IBKR scanner through the Desktop App — it must be running, or that day is nothing today: no scan. The scanner is market data only: the cash, holdings, orders and prices are always the order account's.
2. It takes the highest-ranked row that passes your filters: a price floor ($5 by default, which keeps penny stocks out), a change band (above it is a pump), the venues you allow, an optional volume floor — and never a share you already hold.
3. It buys whole shares with up to your budget (capped by your free cash) — on US markets with a limit a little above the scanner's price (1% by default), cancelled if it has not filled within minutes (10 by default); elsewhere at the market — and sells it again before the close (see Sell by the Close). Optionally a take-profit sells part of it (half by default) once it is up your percent, and a stop sells all of it once it is down yours — both watched on the order account's own price on Trading 212 (on IBKR, on dotQuant's stored prices, which often land too late to act within the day).
Every session is on the mandate's ledger: every row it read and why each was skipped, the pick, the buy and the sale as your broker reported them, and the result — or nothing today and why. Pause stops new rounds at once; a position already bought is still sold before the close.
Be clear-eyed: the top gainers at the open are thin and often pre-market pumps or promoted stories; late buyers of a retail-driven spike, a pump-and-dump or a binary biotech headline often lose most of it. There is no backtest — the movers are not stored, so the evidence is the mandate's own paper ledger. Keep it a small speculative slot, and start on a paper connection.
For agents: the
design-a-momentum-mandate workflow — configure-momentum-mandate → notes → arm-momentum-mandate (high-impact, the person's yes) → list-momentum-mandate-actions.Speculative Mandates: A Speculator's Shortlist
The pre-market movers reviewed before the open by your own assistant or dotQuant's speculator, bought within your limits.
- Your own assistant answers each review through the
run-a-speculative-session recipe; no answer by the deadline means no trade that day.- dotQuant's speculator answers it on your own model key, set on the AI Configuration page; without one, that day is no trade.
The shortlist proposes; the mandate's limits decide. Each entry is sold whole at its take-profit or its stop — a position may be held overnight, and a gap through the stop sells at the open, below it. After each session the mandate's agent writes down what it saw and what it learned, and reads it before the next review: open What the agent learned on the mandate to read it too.
Or follow the session (your own assistant only): choose My assistant follows the session under After the shot. After the morning's shot your assistant keeps reading the top movers and the mandate's positions at the pace you give it — dotQuant never wakes it — and buys, adds, sells all or part, or raises a stop when it sees a move. Your limits hold whatever it sends: the budget, how many names at once, how many buys a session (6 by default), no new buy in the last minutes (30 by default), never buying back a name sold that day, and a daily loss line (10% of the budget by default) after which only sells and stops go on. Everything it holds is sold in the session's last 10 minutes — a follow mandate is not held overnight, unless your broker refuses that sale. Each session on the ledger lists its moves, each with your assistant's own reason.
Every session is on the mandate's ledger: the shortlist the shot acted on, each buy and sale as your broker reported them, and the result — or nothing today and why. Pause stops new shots at once; a position already bought is still sold on its stop or take-profit.
Be clear-eyed: pre-market movers are thin and often pumps or promoted stories, and a market order queued for the open can fill far above the pre-market price. There is no backtest — movers are not stored, so the evidence is the mandate's own paper ledger. Keep it a small speculative slot, and start on a paper connection.
For agents: the
design-a-speculative-mandate workflow — configure-speculative-mandate → arm-speculative-mandate (high-impact, the person's yes) → list-speculative-mandate-actions; each session, run-a-speculative-session, and on a follow mandate follow-a-speculative-session (get-follow-tape → submit-follow-moves or nothing → list-follow-moves). Every limit (budget, positions, stop, take-profit and the follow limits) stays the person's to change later, armed or not: set-speculative-mandate-limits (high-impact, the person's yes), read back on list-speculative-mandates.Agent-Designed Portfolios
Hand an AI agent your mandate; approve what it structures.
design-a-portfolio workflow walks an agent through turning an investment mandate — "beat a global index fund over years, adding money monthly" — into a configured portfolio: the long-term frame, the buyable universe on your broker connection (venue, currency, and cost facts included), contribution sizing from your real free cash, weights that total 100%, and a benchmark.You stay the decision-maker: the agent structures and computes; the holdings are your picks, the portfolio is saved disabled, and enabling it — like approving every proposal — is yours. dotQuant computes arithmetic on your choices; it does not give investment advice.
The companion
manage-a-portfolio workflow covers the ongoing loop: enable, read proposals, approve or decline, request ad-hoc reviews, retry failed slices, and read performance — all the same commands the UI uses.