Corporate Actions
Market-data announcements are not always executable events. The Rust backtest runtime applies supported action models only when the required event terms and reference coverage are available.
Actions Executed in Backtests
Section titled “Actions Executed in Backtests”Each run needs qualified coverage for its instruments and dates. Support for an action type does not mean every historical announcement has the terms needed to execute it.
| Action | Runtime behavior |
|---|---|
| Forward split | Multiplies open quantities, divides entry prices, adjusts portfolio state, and rescales pending orders. |
| Reverse split | Applies the inverse quantity and price adjustment, then rescales pending orders. |
| Symbol change | Migrates positions, orders, indicator state, and active basket membership from the old instrument ID to the new one. |
| Cash distribution | Captures entitlement and applies the declared cash, withholding, and tax character on the event’s specified timeline. |
| Return of capital | Applies the declared cash distribution and reduces eligible long-lot basis, floored at zero; any excess over basis is tracked separately. |
Supported cash, stock, and mixed cash-and-stock merger settlements use declared terms:
| Merger consideration | Modeled outcome |
|---|---|
| Cash | Closes the source holding for the declared cash consideration. |
| Stock | Converts the source holding into declared successor shares, applying the specified basis and fractional-share terms. |
| Mixed | Applies declared cash and successor shares together, with the specified basis and tax treatment. |
The engine has declared economic-action models for cash distributions, return of capital, spinoffs, and terminal settlements. These require their own complete event terms and coverage; the merger controls do not certify all those events in provider history.
The engine also applies timestamped basket membership changes. Add and Remove events control which instruments are active for basket-based evaluation; they are not corporate-action conversions.
Coverage and Settlement Limits
Section titled “Coverage and Settlement Limits”The simulator applies the declared consideration, timing, successor identity, and accounting model. It does not infer missing merger terms from a ticker change, invent a liquidation price from the last quote, or treat an announcement category as complete settlement instructions.
Missing required identity or action coverage blocks the run. A supported static-basket or individual-symbol case does not qualify the whole index for the same dates; see Baskets and Universes for range limits.
Why Splits and Symbol Changes Matter
Section titled “Why Splits and Symbol Changes Matter”A split changes quantity and price scale without changing the modeled position cost basis. The runtime updates open lots and pending orders so stops and limits keep their intended relative price level.
A symbol change moves the runtime’s state to the new instrument ID. This keeps an open position, pending orders, indicators, and a basket’s active membership aligned with the renamed instrument.
Reviewing Results
Section titled “Reviewing Results”The runtime records cash-dividend and return-of-capital applications as broker events. Review those events alongside completed trades when an open position crosses an action date. They show what the backtest applied; they do not provide tax, legal, or corporate-action processing advice.
For mergers, inspect the source closure, delivered successor quantity, cash, and remaining basis together. An equity curve alone can hide an incorrect settlement or successor valuation.
Reruns keep the run’s original action reference data after reference updates. Price bars are not frozen; later price corrections can change results.
