RealisticBroker friction model: spread + commission as tunable params (slippage no-op) #120

Closed
opened 2026-06-22 18:18:19 +02:00 by Brummel · 2 comments
Owner

Specify the RealisticBroker cost model as declared, tunable, authored params (C8 params, injected at build per C12, so frictions are sweepable):

  • spread — an authored, overridable cost model; default a conservative authored constant/model the researcher sets. The recorded per-bar M1Columns.spread field is an explicit opt-in source (the researcher chooses to trust it for a given dataset), NOT the default and NOT an "upgrade". Rationale: feeds often record an unrealistic constant (e.g. Pepperstone ~2 pips) decoupled from the real, higher, volatile historical spread; trusting it blindly biases the realistic broker optimistic — exactly the wrong bias for a deploy-viability judgement. Cost values follow the same authored-override-wins resolution as instrument reference data (see #113).
  • commission — per-lot and/or per-trade, account currency.
  • slippage — declared, no-op default. The hook where stop-fill realism (gap-through, worse-than-level fills) later plugs in (see the milestone stops note and the protective-exit node issue).

The manifest broker label records the chosen cost profile (e.g. realistic(spread=auth:1.5, comm=3.5/lot, acct=10000EUR)), mirroring sim-optimal(pip_size=...), so two profiles produce directly comparable, reproducible curves. An authored constant/model is reproducible from the manifest alone; a "use recorded spread" choice is recorded as such so the run stays reproducible against its dataset.

depends on: RealisticBroker node (#116)
relates: #113 (authored override hierarchy — cost values resolve the same way).

Specify the `RealisticBroker` cost model as declared, tunable, **authored** params (C8 params, injected at build per C12, so frictions are sweepable): - **`spread`** — an **authored, overridable cost model**; default a conservative authored constant/model the researcher sets. The recorded per-bar `M1Columns.spread` field is an explicit **opt-in source** (the researcher chooses to trust it for a given dataset), **NOT the default and NOT an "upgrade"**. Rationale: feeds often record an unrealistic constant (e.g. Pepperstone ~2 pips) decoupled from the real, higher, volatile historical spread; trusting it blindly biases the realistic broker optimistic — exactly the wrong bias for a deploy-viability judgement. Cost values follow the same authored-override-wins resolution as instrument reference data (see #113). - **`commission`** — per-lot and/or per-trade, account currency. - **`slippage`** — declared, no-op default. The hook where stop-fill realism (gap-through, worse-than-level fills) later plugs in (see the milestone stops note and the protective-exit node issue). The manifest broker label records the chosen cost profile (e.g. `realistic(spread=auth:1.5, comm=3.5/lot, acct=10000EUR)`), mirroring `sim-optimal(pip_size=...)`, so two profiles produce directly comparable, reproducible curves. An authored constant/model is reproducible from the manifest alone; a "use recorded spread" choice is recorded as such so the run stays reproducible against its dataset. depends on: RealisticBroker node (#116) relates: #113 (authored override hierarchy — cost values resolve the same way).
Brummel added this to the Realistic broker & position-event table (C10 A-side) milestone 2026-06-22 18:18:19 +02:00
Brummel added the feature label 2026-06-22 18:18:19 +02:00
Author
Owner

Gap in the planned friction scope: overnight financing / swap / rollover

The cost model specified here covers spread, commission, and a no-op slippage hook. It does not include an overnight financing / swap / rollover cost — the per-day carry charged for holding a position across the daily rollover.

For any candidate that holds positions across days (the trend-following stage1-r candidates do), financing is a material recurring cost, and omitting it biases the deploy-viability judgement optimistic in exactly the direction this milestone exists to prevent. The bias scales with holding period, so it falls hardest on the slower candidates that look best on frictionless Stage-1 R.

Claim (unverified): financing can reuse the same authored-override-wins resolution as spread and commission (a per-instrument, per-side daily rate the researcher authors, with a recorded-rate opt-in), so it does not need a new mechanism — only an added cost term applied per position per rollover boundary, recorded in the manifest broker label alongside spread= and comm=.

Flagging here rather than opening a separate issue, since it belongs in this node's cost-model scope; it can be split out if it grows past a single cost term.

## Gap in the planned friction scope: overnight financing / swap / rollover The cost model specified here covers spread, commission, and a no-op slippage hook. It does not include an overnight financing / swap / rollover cost — the per-day carry charged for holding a position across the daily rollover. For any candidate that holds positions across days (the trend-following stage1-r candidates do), financing is a material recurring cost, and omitting it biases the deploy-viability judgement optimistic in exactly the direction this milestone exists to prevent. The bias scales with holding period, so it falls hardest on the slower candidates that look best on frictionless Stage-1 R. Claim (unverified): financing can reuse the same authored-override-wins resolution as spread and commission (a per-instrument, per-side daily rate the researcher authors, with a recorded-rate opt-in), so it does not need a new mechanism — only an added cost term applied per position per rollover boundary, recorded in the manifest broker label alongside `spread=` and `comm=`. Flagging here rather than opening a separate issue, since it belongs in this node's cost-model scope; it can be split out if it grows past a single cost term.
Author
Owner

Superseded by the 2026-06-28 C10 rework (ledger commit 29cdc8c): the realistic-broker / currency model is retired (real friction is not historically knowable). Cost in research is now a composable cost-model graph in R (the net-R curve); money / a real broker move to a separate live/deploy edge. See #116 (summary), #148 (cost-model graph), #149 (live/deploy edge). Closing as superseded.

Superseded by the 2026-06-28 C10 rework (ledger commit `29cdc8c`): the realistic-broker / currency model is retired (real friction is not historically knowable). Cost in research is now a composable cost-model graph in R (the net-R curve); money / a real broker move to a separate live/deploy edge. See #116 (summary), #148 (cost-model graph), #149 (live/deploy edge). Closing as superseded.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#120