RealisticBroker friction model: spread + commission as tunable params (slippage no-op) #120
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Specify the
RealisticBrokercost 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-barM1Columns.spreadfield 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)), mirroringsim-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).
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=andcomm=.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.
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.