Whose costs a result claims

A cost profile names the broker whose commission a backtest assumes. You pick a broker, not a number. The run records the choice, so a result says whose costs it assumed rather than showing a bare zero.

The profile sets only the commission. Slippage is its own setting on every run, and short borrow applies when margin is on.

To choose a profile:

  1. Open the Run dialog

    Click Run… on the strategy's page.

  2. Open Costs and fills

    Click Change… on the Costs and fills row. It shows Slippage (bps) and the Whose trading costs menu.

  3. Pick a profile

    The menu lists Alpaca, Interactive Brokers and Frictionless; Custom rate is not offered.

See Run a backtest.

The four profiles

ProfileCommission it describesCan a run use it
Alpaca — US equities ($0 commission)$0 on US equities. The default.Yes
Interactive Brokers — Pro TieredPer share, with a per-order minimum and a cap at 1% of trade value, plus exchange and regulatory pass-throughs.No. Offered and refused.
Frictionless — no broker (research only)None, chosen on purpose.Yes
Custom rateA rate supplied with the run, in basis points of notional or dollars per share.No. The dialog, chat and the Orbital AI connector cannot send a rate.

Alpaca is the profile a run gets when nothing is chosen. It names a real broker that charges no commission on US equities, not a research setting.

Interactive Brokers — Pro Tiered is offered and refused: the engine charges one rate per run, with no per-order minimum or cap, and the Pro Tiered schedule needs both. Pick it and the row shows why, the note before the button reads This run can’t start yet., and Run backtest stays disabled. Test under Alpaca instead. The profile only describes Interactive Brokers' commission; Orbital does not trade through Interactive Brokers.

Frictionless — no broker (research only) is a research setting, not an account you can open. It still charges slippage, and borrow on shorts, so its figures match an Alpaca run of the same settings. Set Slippage (bps) to 0 to remove the slippage as well. Alpaca and Frictionless charge the same commission, so a run under either belongs to the same configuration; only the label on the run differs.

Slippage and borrow

Slippage (bps) is 5 by default and 0 is allowed. Only the Run dialog sets it; runs from chat and from Claude or ChatGPT use 5 bps. Slippage applies to market and stop fills, moving each fill price against you by that amount. Limit fills never slip; see When trades happen. Changing the slippage makes a new configuration of the same version, with its own trial count.

With Margin account on, a short position pays borrow at 3% a year while it is short. The report counts it beside commission and slippage.

What the report says

Every result states its costs in three places.

  • The settings line under the strategy's name shortens the profile to Alpaca costs, No broker costs or Custom costs, and prints the slippage as a percentage, such as 0.05% slippage.
  • Settings of this run on the Report tab prints Costs with the profile's full label and Slippage as the same percentage.
  • Run properties, at the foot of the Report tab, opens to show Slippage, Cost model and Costs modelled, which says what was charged and what was not.

For a run on the defaults, Costs modelled reads:

Costs modelled
Charged: commission $0 per trade; slippage 5 bps on market and stop fills (limits never slip). Not charged at all: bid-ask spread is not modelled at all — the simulation reads OHLCV bars, there is no quote data behind them, and the slippage figure above is a stand-in somebody chose rather than a measurement; market impact is not modelled — measured one-way impact runs 8–13 bps and dominates total trading cost, which is more than the entire slippage allowance above it.

With margin on, the charged part adds short borrow at 3.0% APR. In the Run dialog, the same sentence is the second line of the Costs and fills row.

Overall statistics on the Overview tab shows Commission, and Run properties splits Commission paid, Borrow paid and Slippage cost between long and short trades. Each trade's net P&L is its gross less commission, slippage and borrow, plus dividends. See Run properties.

For Claude and ChatGPT, estimate_backtest and run_backtest take a cost profile, and get_backtest returns the cost model as a short paragraph: the profile, what was charged and what was not.

What no profile models

See What is not modelled.

From Claude or ChatGPT