Event Types
Reference for all event types generated during backtesting and live trading.
# Event Types Reference
Every backtest and live-trading session generates a stream of **events** — structured records of what happened and why. Events power the backtest timeline, portfolio event log, and audit trail.
Each time the engine processes a market data tick, it evaluates your strategy conditions and emits the appropriate events: signals when conditions trigger, orders when trades execute, guards when trades are blocked, and audits that explain the reasoning behind each decision.
---
## Signal Events
### Buy Signal
A strategy's conditions evaluated to true and its action is Buy. The engine creates one or more Order events immediately after this signal.
- **Key fields:** Strategy ID, condition evaluation audit, action metadata
- **Example:** RSI(AAPL, 14) drops below 30 and the strategy action is "Buy $500 of AAPL" — a BuySignal fires followed by an Order.
### Sell Signal
A strategy's conditions evaluated to true and its action is Sell. The engine creates one or more Order events immediately after this signal.
- **Key fields:** Strategy ID, condition evaluation audit, action metadata
- **Example:** RSI(AAPL, 14) rises above 70 and the strategy action is "Sell 100% of AAPL" — a SellSignal fires followed by an Order.
### Alert Signal
A strategy's conditions evaluated to true and its action is Alert. No trade is executed — only a notification is sent to the user.
- **Key fields:** Strategy ID, condition evaluation audit, action metadata
- **Example:** Price of BTC crosses above $100,000 — an AlertSignal fires and the user receives a notification.
### Launch Agent Signal
A strategy triggered an AI agent launch. The agent runs autonomously to analyze and act on the portfolio using the same tools available in Aurora Agent Mode.
- **Key fields:** Strategy ID, condition evaluation audit, agent configuration
- **Example:** A quarterly condition triggers and launches an agent with the task "Review portfolio allocation and rebalance if needed."
> **Tip:** Only one agent can run per strategy at a time. If the condition triggers again while an agent is already running, the new launch is suppressed.
### Rebalance Signal
A strategy triggered a portfolio rebalance. Contains the target allocations and, for dynamic rebalances, the full pipeline audit showing how assets were selected and weighted.
- **Key fields:** Strategy ID, target allocations, market data, dynamic rebalance pipeline audit (if applicable)
- **Example:** A quarterly rebalance condition triggers — the RebalanceSignal shows the target weights (50% SPY, 30% QQQ, 20% IWM) and is followed by individual Order events for each trade.
### Deposit/Withdraw Signal
A strategy triggered a cash deposit or withdrawal. Followed by a Transaction event recording the actual cash movement.
- **Key fields:** Strategy ID, condition evaluation audit, deposit/withdraw amount
### Deposit/Withdraw Signal (Alias)
An alias for the Deposit/Withdraw Signal. Represents the same event as InitiaiteDepositOrWithdraw.
- **Key fields:** Strategy ID, condition evaluation audit, deposit/withdraw amount
### No Signal
A strategy's conditions were evaluated on this tick but none triggered. Confirms the engine ran and checked conditions at this point in time.
- **Key fields:** Timestamp, strategy ID
> **Tip:** NoSignal events are useful for debugging — they confirm the engine was active even when no trades occurred.
---
## Options Events
### Open Option Signal
A strategy triggered opening a new options position. Includes resolution audits showing how the platform selected specific contracts (strike, expiration, Greeks) from the options chain.
- **Key fields:** Strategy ID, signal data, market data, resolution audits (per-leg strike/expiry selection, Greek filters, fallback attempts)
- **Example:** A strategy says "Sell 30-delta puts on SPY, 30-45 DTE" — the OpenOptionSignal shows which specific contract was resolved and the full audit trail.
### Option Resolution Attempt
A detailed audit of a single options contract resolution attempt. Shows what strike and expiration were targeted, the available buying power, and whether the attempt succeeded or was rejected (with the rejection reason).
- **Key fields:** Strategy ID, underlying symbol, allocation requested, buying power available, portfolio value, resolution result (Success or Rejected with details), risk audit
> **Tip:** When a resolution is rejected, the reason (e.g., insufficient buying power, no matching contracts) is recorded here — check these events first when debugging why an options trade didn't execute.
### Close Option Signal
A strategy triggered closing existing options positions. Includes evaluation audits showing which positions matched the close filters (P/L thresholds, DTE limits, Greek ranges) and which were closed.
- **Key fields:** Strategy ID, signal data, market data, close evaluation audits (per-position filter matching), evaluation summary
- **Example:** A CloseOption strategy with a 50% take-profit filter fires — the event shows each open position's current P/L and whether it met the threshold.
---
## Execution Events
### Order
An individual order for a stock, crypto, or options contract. Contains the side (buy/sell), quantity, submitted price, fill price, fees, and status. For options, also includes spread metadata (spread type, leg index, collateral).
- **Key fields:** Order type (Market/Limit), status (Pending/Filled/Canceled), asset, side, quantity, submitted price, fill price, fees, strategy ID, spread metadata (for options)
> **Tip:** In backtesting, orders fill instantly at the current market price. In live trading, orders go through your connected brokerage and may experience slippage or partial fills.
### Transaction
A completed cash movement — either a deposit into or withdrawal from the portfolio. Records the amount, status, and timestamps.
- **Key fields:** Transaction type (Deposit/Withdraw), status (Pending/Completed/Canceled), amount, portfolio ID, strategy IDs, created and completed timestamps
### Rebalance Order
A composite event recording a portfolio rebalance request before it's split into individual Order events. Captures the full set of target allocations and the market data snapshot used to compute them.
- **Key fields:** Rebalance order details (target allocations), market data snapshot
### Copy Trade
A trade copied from another user's portfolio per a copy-trading subscription. Wraps an underlying Order event with the source-portfolio reference.
- **Key fields:** Underlying order, source portfolio ID, source user ID
---
## Corporate Action Events
### Dividend Applied
A dividend payment was applied to a position. Shows the dividend details (amount per share, ex-date, pay-date) and the number of shares held when the dividend was locked in.
- **Key fields:** Dividend details, number of shares held, timestamp
- **Example:** AAPL pays a $0.25/share quarterly dividend — if you hold 100 shares, the ApplyDividend event records a $25 cash addition.
### Stock Split Applied
A stock split was applied to one or more positions. Shows the split ratio and the number of positions that were adjusted.
- **Key fields:** Ticker, split ratio (from → to), number of positions adjusted, timestamp
- **Example:** NVDA does a 10-for-1 split — if you hold 10 shares at $1,200, the event records the adjustment to 100 shares at $120.
---
## System Events
### Market Data Tick
A snapshot of prices (and optionally fundamentals) for all tracked assets at a point in time. One Market event fires per evaluation interval (e.g., daily for OHLC backtests, per-minute for intraday).
- **Key fields:** Timestamp, prices (symbol → price map), fundamentals (symbol → metrics map)
> **Tip:** Market events are the clock that drives the backtest. Every other event happens in response to a Market tick.
### Backtest Complete
Marks the end of a backtest or trading session. Contains no additional data — it simply signals that the event stream is finished.
- **Key fields:** Timestamp only
### Trading Audit
Batched constraint-check rows explaining why orders were skipped or modified during signal processing. For example, if a buy was skipped because buying power was insufficient, the reason and metrics appear here.
- **Key fields:** Source (BuySignal/SellSignal/RebalanceCashWalk/OpenOption/CloseOption), timestamp, portfolio value, buying power, audit items (code, message, metrics), truncated flag
> **Tip:** TradingAudit events are only generated during full-audit backtests. They are the primary tool for understanding why a trade didn't execute as expected.
### Order Guard
An order was rejected or modified by the portfolio guard before execution. Shows the reason code and relevant details so you can understand why a trade was blocked.
- **Key fields:** Reason code (InsufficientBuyingPower, SellToCloseShortOrZero, SellToCloseNoPosition, BuyPriceError, SellPriceError, MultiLegGroupBPRejection, SellQuantityCapped), message, asset, side, quantity, buying power, required cost
- **Example:** You try to buy $10,000 of TSLA but only have $3,000 in buying power — an OrderGuard event fires with reason InsufficientBuyingPower.
### Portfolio Deactivated
A live-trading portfolio was paused by the platform after a fatal error (e.g., revoked brokerage authorization, or repeated unrecoverable failures). Captures the reason, the full error trace, and the brokerage/deployment context for post-mortem.
- **Key fields:** Reason (authFailureStreak, authRevoked, hardFatal, metadataLookupFailed), error summary and full trace, brokerage label, deployment label, timestamp
> **Tip:** If the reason is 'authFailureStreak' or 'authRevoked', reconnect your brokerage account to resume trading. Other reasons indicate a deeper system issue — the operator team is alerted automatically.
### Order Rejected
The broker refused an order during pre-submission validation, so the order was never persisted. Keeps doomed orders out of the approval queue while preserving an audit trail of what the strategy attempted and the broker's rejection reason. Asset-class agnostic — fires for stock, option, and crypto orders.
- **Key fields:** Broker, rejection code (UnderlyingIneligible, AssetRestricted, InsufficientBuyingPower, OptionsLevelTooLow, MarketHalt, Other), rejection message, attempted order type + price, legs, underlying symbol, spread type, strategy ID
- **Example:** An options strategy fires a vertical spread on ADI. Public preflights and returns 'not currently available for spread strategies on Public' — an OrderRejected event fires with code UnderlyingIneligible and no Order doc is created.
> **Tip:** OrderRejected events are the audit trail for orders that never reached the approval queue. Pair with OpenOptionSignal events to see what the strategy attempted vs what the broker accepted.
### Price Anomaly
A diagnostic event emitted by the data-source iterator when an asset's mark in the engine changes by more than 5× (in either direction) from one tick to the next. Carries enough state — raw intraday value, expected split factor, expected adjusted price, and which iterator wrote this tick — to attribute the root cause without re-running the backtest.
- **Key fields:** Asset symbol, prev/new price + tick, ratio, raw unadjusted price, expected split factor, expected adjusted price, intraday/daily source flags, forward-fill flag
> **Tip:** PriceAnomaly events are diagnostic only — they do not modify portfolio state. They are the primary signal that the split-adjustment bridge between intraday and daily iterators has drifted.
### Market Closed
A strategy signal evaluated true, but the platform blocked stock or option order creation because the regular market session was closed. No Order was created and no broker submission was attempted.
- **Key fields:** Timestamp, market status, session open/close times, blocked action, blocked signal count, asset symbols, strategy IDs, reason
- **Example:** An OpenOption strategy fires after the options market has closed; a MarketClosed event records the blocked action and symbols instead of creating an option order.
> **Tip:** MarketClosed means the strategy wanted to trade but the platform's market-hours policy blocked execution. Do not interpret it as NoSignal or OrderRejected.