A trading bot can produce a steady stream of buy and sell stock signals without producing a dependable edge. This review framework shows how to measure signal quality after execution costs, separate useful alerts from duplicate noise, and decide whether a bot belongs on a monitored watchlist. Use it after each batch of trades and during a monthly or quarterly performance review.
Overview
Trading bot performance should be judged as a repeatable process, not by a handful of successful alerts. A signal may look profitable on a chart yet fail in a live account because the alert arrived late, the fill was worse than the displayed price, the position was too large, or fees changed the trade’s outcome.
The central question is not “Did this alert make money?” It is “Does this alert type show a positive and repeatable result after realistic execution costs across different market conditions?” That requires a journal containing the original alert, your actual order details, the market regime, and the final result.
Evaluate one defined signal set at a time. Do not combine an earnings-momentum alert, a swing-trading reversal alert, and an options-flow notification into one performance number. Each has a different holding period, entry rule, exit logic, and source of risk.
A useful review has four stages:
- Capture the signal exactly as received.
- Record the trade as it was actually executed.
- Calculate results after slippage, commissions, fees, and other known costs.
- Compare live results with backtests, paper trades, and out-of-sample observations.
For related preparation, use the Trading Journal Guide and establish a predefined risk limit with the position size calculator guide.
What to track
1. Signal and timing data
Record the bot’s ticker, direction, timestamp, alert type, quoted price, suggested entry, stop, target, and intended holding period. Add the time you saw the alert and the time your order was submitted. These fields reveal whether the signal was actionable or merely accurate in hindsight.
For every trade, record:
- Alert timestamp and your response timestamp
- Quoted or reference price at alert time
- Actual entry price and share or contract quantity
- Actual exit price and exit timestamp
- Stop-loss and target levels, if supplied
- Reason for any manual change or early exit
Entry and exit timing deserves special attention for real-time stock alerts. A bot may identify a fast-moving stock correctly, but a delay of several minutes can materially change the risk-to-reward profile. Compare the alert price with your fill rather than assuming they were identical.
2. Execution costs
Slippage is the difference between the expected execution price and the actual fill. For a long position, buying above the alert price and selling below the expected exit both work against the trade. Track slippage separately for entries and exits so you can identify whether the problem is alert delay, low liquidity, wide spreads, or order selection.
Also record commissions, exchange or platform fees where applicable, borrow costs for short positions, and option-specific costs if relevant. Use the fee schedule that applies to your account, and revisit it when your broker or platform changes its terms. A backtest that excludes costs is not directly comparable with live trading.
3. Core performance measures
Use consistent definitions for every signal group. The following measures are a practical minimum:
| Measure | What it tells you | Spreadsheet approach |
|---|---|---|
| Win rate | How often trades finish above zero after costs | Winning trades divided by total closed trades |
| Average win | The mean net profit on winning trades | Total winning profit divided by number of wins |
| Average loss | The mean net loss on losing trades | Total losing loss divided by number of losses |
| Expectancy | Average amount gained or lost per trade | (Win rate × average win) − (Loss rate × average loss) |
| Maximum drawdown | The largest peak-to-trough decline in the equity curve | Compare each running equity peak with later equity values |
| Profit factor | Gross winning profit relative to gross losing loss | Gross profit divided by absolute gross loss |
For example, if a signal group wins 45% of the time, the average win is $180, and the average loss is $100, its basic expectancy is (0.45 × $180) − (0.55 × $100), or $26 per trade before any omitted costs. This does not predict the next trade. It is a way to compare a sufficiently large and consistently recorded sample with other approaches.
4. Context and signal quality
Label the market regime for each trade: rising, falling, range-bound, unusually volatile, or affected by a known catalyst. Note whether the stock had an earnings release, major company announcement, unusual volume, an index move, or a broad sector rotation. A bot can appear reliable because it was tested during the one environment that favored its rules.
Track duplicate alerts as well. Multiple notifications for the same ticker and direction are not necessarily multiple independent opportunities. Group them into one setup, record the first alert, and document whether later alerts improved the entry or simply increased urgency.
For earnings-related trades, consult the earnings catalyst calendar workflow. For scans and unusual-volume ideas, the market scanner settings guide can help separate the scan condition from the eventual trade decision.
Cadence and checkpoints
After every signal or trade
Capture the alert before memory changes the details. If you do not take the trade, record why: late alert, spread too wide, missing liquidity, conflicting market conditions, or a rule that prohibited entry. Non-trades are useful because they show whether the bot’s opportunities are practical for your schedule and account.
Weekly review
Check for data-entry gaps, duplicate alerts, abnormal fills, and rule violations. Review whether the bot generated signals outside its stated holding period or during conditions where you do not intend to trade. Do not change the strategy based on one unusual winner or loser.
Monthly review
Calculate the core metrics for the latest month and for the entire sample. Compare alert price with actual entry, planned exit with actual exit, and gross results with net results. Review results by ticker, direction, setup type, holding period, and market regime. A useful comparison table can look like this:
| Signal group | Trades | Win rate | Average win | Average loss | Expectancy | Max drawdown |
|---|---|---|---|---|---|---|
| Momentum alerts | — | — | — | — | — | — |
| Reversal alerts | — | — | — | — | — | — |
| Earnings alerts | — | — | — | — | — | — |
Quarterly or after a meaningful sample
Test whether the apparent edge survives a new period that was not used to design or tune the rules. Separate in-sample results, which helped develop the strategy, from out-of-sample results, which provide a cleaner check of its behavior. Paper trading can help assess alerts before additional capital is committed, but it may not reproduce live fills, emotional pressure, or liquidity constraints.
How to interpret changes
A falling win rate is not automatically a failure. A strategy with fewer wins can remain viable if its average wins are sufficiently larger than its average losses. Conversely, a high win rate can conceal poor risk control if occasional losses are very large. Review expectancy, drawdown, and the distribution of results together.
When performance deteriorates, test one explanation at a time:
- Execution drift: Slippage increased because alerts arrive after the move or the traded names became less liquid.
- Market-regime change: A momentum system is being used in a range-bound market, or a reversal system is facing persistent trends.
- Signal duplication: Several alerts represent one underlying event and create accidental concentration.
- Rule drift: Manual entries, exits, stop changes, or position sizes no longer match the tested method.
- Data or platform change: A feed, indicator definition, alert threshold, or automation feature changed.
Do not respond to a weak month by adding filters until the original cause is documented. Each new filter can improve a historical chart while making the live process harder to reproduce. If you compare an AI stock trading bot or another provider, compare identical conditions: the same timestamps, market hours, fee assumptions, position sizing, stop rules, and treatment of missed alerts.
Signals should also be assessed for operational risk. Confirm what happens when an alert is delayed, a data feed disconnects, an order is rejected, or a stop is not filled at the displayed level. An alert service is not the same as a portfolio manager, and a notification is not an instruction to trade.
When to revisit
Revisit this review whenever you complete a defined batch of signals, at least monthly while actively monitoring a bot, and more comprehensively each quarter. Update the journal when broker fees, order types, platform features, market-data access, or automation rules change. Also review it after a major change to the bot’s model, alert threshold, universe, holding period, or risk settings.
A spreadsheet-ready journal can use these columns:
Date | Ticker | Signal type | Direction | Alert time | Seen time | Expected entry | Actual entry | Planned stop | Actual exit | Quantity | Gross P/L | Slippage | Fees | Net P/L | Holding time | Market regime | Duplicate alert? | Rule followed? | Notes
At the end of each review, make one documented decision: continue monitoring unchanged, reduce exposure, pause the signal group, or run a new out-of-sample test. Set the next review date and preserve the previous version of the results so changes remain traceable.
Use the portfolio drawdown guide to define a loss threshold before the next review, and consult the stop-loss guide when checking whether exits match the intended risk. The goal is not to find a bot that never loses. It is to determine, with realistic records and controlled risk, whether its alerts remain useful enough to earn a place on your watchlist.