Signal, Exposure, and Execution
A recurring design pattern in systematic trading separates what a strategy believes from how that belief is traded and what it costs. The strategy's primary, backtestable output is best modelled not as an equity curve and not as a list of orders, but as a target-exposure signal — a signed, bounded fraction of capital to hold per instrument per time step. Two distinct execution models then consume that signal: a frictionless, idealized model that scores the signal's quality on a clean yardstick, and a realistic model with frictions that estimates a deployable currency profit-and-loss. The actual order and position events are not the strategy's output at all — they are a derived layer, the first difference of the exposure path. This page lays out the pattern, the causal convention that keeps it free of look-ahead, and how the resulting return series feeds performance metrics.
Markers: [L] law/exact, [C] convention, [CORR] corrected.
The separation of concerns
The pattern rests on a clean ontological split: an alpha signal (a directional or sizing belief about future returns) is one object; an execution model (the machinery that turns a desired position into fills, subject to cost and constraint) is a different object. Keeping them separate lets a single signal be scored on a frictionless basis, traded through many execution models, and combined with other signals — all without re-authoring the strategy.
The signal forks into two evaluation paths: a frictionless model on the exposure signal directly, and a realistic model on the derived position-event table.
flowchart LR
scores["signal scores"]
sizing["sizing and decision node"]
exposure[("target-exposure signal")]
frictionless["frictionless model"]
sigeq["signal-quality equity, pips"]
events["position-event table, derived"]
realistic["realistic model, with frictions"]
curreq["currency equity, viability"]
scores --> sizing --> exposure
exposure --> frictionless --> sigeq
exposure -.->|"first difference"| events --> realistic --> curreq
This is the same modularity that backtesting-engine architectures enforce structurally: brokers and cost models are ordinary downstream consumers of a strategy's output, never entangled with the signal logic itself. The benefit is comparability — two signals are only comparable if they are scored under the same execution assumptions, which is impossible if each signal carries its own bespoke order logic.
Four layers compose the pattern:
- Signal -> exposure. The strategy emits a target exposure per step.
- Frictionless scoring. Exposure times return, integrated under an idealized fill model, yields a synthetic equity curve that measures signal quality.
- Derived position events. The first difference of the exposure path yields a broker-independent table of buy/sell/close events.
- Realistic execution. That event table feeds a cost-aware execution model producing a deployable currency P&L.
The sections below treat each layer in turn.
Target exposure as the primary output
Exposure is the proportion of capital committed to a position, expressed as a fraction (or percentage) of the portfolio. A portfolio with $100,000 of which $20,000 sits in a given sector has 20% exposure to it [L] (Market exposure). The natural, backtestable primitive for a strategy is therefore a target-exposure signal: a number per instrument per time step saying what fraction of capital the strategy wants to hold, rather than an order or a realized P&L.
Why signed and bounded
Exposure is signed: a positive value is a long position (the holder owns a
positive amount and profits if the price rises), a negative value is a short
position (profits if the price falls), and zero is flat/neutral [L]
(Long (finance)). The signed
convention mirrors the portfolio notion of net exposure — the sum of signed
position sizes, long counted positive and short negative, so that
net = long% − short% and a perfectly balanced book has net exposure zero
(market-neutral) [L]
(Net exposure).
Its companion, gross exposure, is the sum of absolute position sizes
(gross = long% + short%); a gross above 100% signals leverage [L]
(same source).
A natural bound for a single instrument's signed exposure is the interval
[-1, +1] — fully short to fully long, with the magnitude capped at the available
capital [C]. The bound is a convention, not a law: a leveraged or multi-asset
book deliberately exceeds it (gross exposure > 100% is precisely leverage [L]),
and the exact cap is a risk-budget choice. What is load-bearing is that the
primary output is a bounded, signed fraction of capital rather than an unbounded
order size or a path-dependent equity figure.
Signal score -> sizing -> target exposure
The exposure is rarely the raw strategy score. A typical pipeline is
raw signal score -> position sizing / risk shaping -> target exposure.
The sizing step converts a dimensionless score (a forecast, a rank, a z-score) into a fraction of capital, and it is where risk is shaped. Common conventions:
- Fixed-fractional sizing. Allocate a predetermined fraction of total capital (or risk a fixed fraction of equity) per position, scaling the size with account equity so risk-per-trade stays roughly constant [C] (Position sizing).
- Volatility targeting / volatility-based sizing. Scale exposure inversely to recent realized volatility so the position delivers a roughly constant risk contribution — levering up when volatility is low, deleveraging when it is high [C] (same source). The canonical academic statement is that scaling a factor's weight by the inverse of its past realized variance — taking less risk when volatility is high — raises Sharpe ratios, because changes in volatility are not offset by proportional changes in expected return [C] (Moreira & Muir, Volatility Managed Portfolios).
- Kelly sizing. The Kelly criterion gives the fraction of capital that
maximizes the long-run expected logarithm of wealth; for a simple bet
f* = p − q/b(with win probabilityp, loss probabilityq = 1−p, and payoff oddsb) [L] (Kelly criterion). In practice many size below full Kelly — fractional Kelly (half-Kelly, quarter-Kelly) — to cut volatility and hedge estimation error [C] (same source).
All three are sizing conventions, interchangeable mappings from score to exposure; none changes the shape of the primary output, which remains a signed, bounded target-exposure signal.
Measuring signal quality with a frictionless model
To judge a signal — independent of any broker, currency, or cost regime — the target exposure is integrated against the instrument's return under an idealized execution model: no spread, no commission, no slippage, perfect fills at the reference price. The result is a synthetic, currency-free equity curve whose units are conveniently expressed in return terms (or pips), serving as a level yardstick for comparing and combining signals.
The integral and its causal convention
For an exposure path e_t and per-period instrument return r_t, the synthetic
strategy return for a period is
strategy_return_t = e_{t-1} · r_t
— the exposure held into period t, decided at the prior step t−1, earns
period t's return. This one-step lag is the load-bearing causal convention [L]:
the position is established immediately after the decision at t−1 and held over
the interval [t−1, t], so the realized return uses the next period's return,
and the signal is formed strictly before the return is realized — making the
strategy implementable and free of look-ahead. Practitioners enforce this by
shifting the signal/weight by one period — generating each step's signal from
the prior bar's data, not the current bar's — before multiplying by returns;
failing to do so is a classic look-ahead bug that inflates backtest results [C]
(Backtesting pitfalls — lag the signal with shift(1)).
The structural side of this guarantee — read-only past-only windows, resamplers
that emit only completed bars — is treated on the
look-ahead and causality page; here the point is
that the integration timing (e_{t-1} · r_t, not e_t · r_t) is itself a
causality contract, not a stylistic choice. See also
determinism and reproducibility: the same
exposure and return inputs must yield the same synthetic curve, every run.
What it does and does not measure
The frictionless curve measures the signal's quality — its ability to be on the right side of returns at the right size — and nothing about tradeability. It is deliberately not a realistic P&L: by zeroing all costs and assuming perfect fills it isolates alpha from execution. This is exactly what makes it a fair basis for comparing two candidate signals or combining them (e.g. averaging or risk-weighting their exposures), since both are scored under identical, cost-free assumptions. A signal that looks strong frictionlessly but evaporates under realistic costs is a known and important outcome — which is the job of the next layer to reveal.
Realistic execution with frictions
A realistic execution model re-scores the same strategy under real-world costs and constraints, producing a currency profit-and-loss used for viability assessment and deployment. Where the idealized model assumes a perfect fill at the reference price, the realistic model charges for the gap between intention and outcome. Its principal frictions:
- Spread. The difference between the quoted ask (immediate-purchase) and bid (immediate-sale) price — a measure of the transaction cost and the cost of trading without delay [L] (Bid–ask spread).
- Commission / fees. An explicit charge by the venue or broker for executing an order — a broker is paid a commission when the deal is executed [L] (Broker).
- Slippage. The difference between the execution price a trader expected (typically the price shown when the decision was made) and the price at which the trade actually fills [L] (Slippage (finance)). Slippage arises from market impact, liquidity, and frictional costs, and cannot be fully eliminated even with optimized execution (same source).
- Market impact. The price moving against the trader because of their own order — up when buying, down when selling — a transaction cost that grows with order size relative to turnover and shrinks with liquidity [L] (Market impact).
- Lot, margin, and capital constraints. Minimum lot sizes, margin requirements, and available capital can force the realized position to differ from the target; the model may reject or modify an order rather than fill it as requested.
All of these are species of transaction cost — the costs incurred in making a trade beyond the asset price itself, classically including search, bargaining, and enforcement costs, and in markets the brokerage, spread, and impact components [L] (Transaction cost). A realistic backtest applies these on each trade — typically charged on the turnover (the change in positions) at each rebalance — and deducts them from the equity curve [L]/[C] (Backtest engine — transaction costs on position changes).
Because spread, slippage, and impact are hidden and recurring, over many trades they frequently dominate the explicit commission [C] — which is why a signal must be scored under realistic execution before any claim of deployability.
Position management as a derived layer
A subtle but central point: the actual order and position events — buy/sell/close with sizes — are not the strategy's per-step output. They are a computed, broker-independent table derived from the exposure path: a change in desired exposure implies a trade, so the event stream is the first difference of the target-exposure path.
trade_t ≈ e_t − e_{t-1}(a non-zero difference implies an order)
An order is an instruction to buy or sell on a trading venue [L] (Order (exchange)); a buy or sell order can enter or exit a position depending on the prior state. A target-exposure path encodes the desired position at every instant, and differencing it yields the order events needed to move from one desired state to the next.
Why it cannot be a per-step emission
A single decision instant may imply more than one event. The canonical case is
a stop-and-reverse: an exposure that flips from +1 to −1 in one step implies
both a close of the long and an open of the short — two position events from
one decision. Because one decision step can yield several events, the event
stream cannot be a single per-step output field; it must be a derived table
computed from the exposure path after the fact. (More generally, partial
scaling-in and scaling-out produce variable numbers of events per step.) This is
why position management sits downstream of the signal, as a transformation of
its output, rather than inside it.
One table, many execution models
The derived event table is broker-independent: it states what trades the exposure path requires, not how any particular venue fills them. The same table can therefore feed many different realistic execution models — different spread, commission, and slippage assumptions, or different venues — yielding directly comparable P&L results for the identical underlying decisions. This closes the loop on the separation-of-concerns goal: one signal -> one exposure path -> one derived event table -> N execution models, all comparable because the decision layer is shared and only the cost/fill layer varies.
Connecting to scoring
Both execution models terminate in a return series: the frictionless model in a synthetic, currency-free curve; the realistic model in a currency P&L net of costs. That return series — not the raw exposure or the order table — is the input to the performance metrics. Risk-adjusted ratios (Sharpe, Sortino), path statistics (maximum drawdown), and trade statistics (profit factor, win rate) are all computed on the return series produced by whichever execution model is in use. See the Metric Catalogue for the definitions and the Metric Verification Log for their corrected formulas and edge cases.
The practical consequence: a signal is typically scored twice — once frictionlessly (does the alpha exist?) and once realistically (does it survive costs?) — and the same metric definitions are applied to both return series. A large gap between the two scores is the diagnostic signature of a signal whose edge is too small to overcome its execution costs.
Summary
| Layer | Object | Units | Purpose |
|---|---|---|---|
| Signal -> exposure | signed, bounded fraction of capital per step | dimensionless ∈ [-1,+1] |
the strategy's primary, backtestable output |
| Frictionless scoring | e_{t-1} · r_t integrated |
returns / pips | measure signal quality, comparable across signals |
| Derived events | first difference of exposure path | orders (buy/sell/close, size) | broker-independent trade table |
| Realistic execution | event table + spread/commission/slippage/impact + constraints | currency P&L | viability and deployment |
| Scoring | return series of either model | ratios, drawdown, profit factor | performance metrics |
The throughline is that alpha is separated from execution: the strategy owns the exposure, execution models own the cost, and the order events are a derived consequence of the exposure path — a widely-practiced pattern, not a single product's choice.
References
The separation of concerns
Target exposure as the primary output
- Market exposure — Wikipedia
- Long (finance) — Wikipedia
- Net exposure — Corporate Finance Institute
- Position sizing in trading — QuantInsti
- Volatility Managed Portfolios — Moreira & Muir (NBER w22208)
- Kelly criterion — Wikipedia
Measuring signal quality with a frictionless model
Realistic execution with frictions
- Bid–ask spread — Wikipedia
- Broker — Wikipedia
- Slippage (finance) — Wikipedia
- Market impact — Wikipedia
- Transaction cost — Wikipedia
- runBacktest (transaction costs on position changes) — MathWorks documentation
Position management as a derived layer
Connecting to scoring
Backtesting Engine Architecture
- Architecture overview
- Event-Driven Backtesting
- Look-Ahead Bias & Causality
- Determinism & Reproducibility
- Reactive Streaming Dataflow
- Columnar Data Layout
- Signal, Exposure & Execution
- Graph Compilation & Optimization
- Authoring & Deployment Lifecycle
Strategy Analysis & Validation