A trading bot does not become safe simply because it is automated. This checklist shows how to monitor execution, exposure, data, software, and risk controls each day and week so small operational problems can be identified before they become costly losses.
Overview
Automated stock trading removes some manual work, but it does not remove the need for supervision. A bot can follow its code correctly while still producing poor results because market conditions changed, data stopped updating, orders were rejected, or the connection to a broker failed.
Effective bot performance monitoring separates two questions:
- Is the system operating as designed? This covers connectivity, data, code versions, signals, orders, and fills.
- Is the strategy still operating within acceptable risk? This covers position size, concentration, drawdown, losses, slippage, and exposure during unusual conditions.
Keep these questions separate in your records. A bot may be technically healthy but strategically unsuitable for current volatility. Conversely, a profitable session may conceal a serious system fault, such as an unprotected position or an order that was only partially filled.
Before using any trading bot with live funds, define its permitted instruments, trading hours, maximum position size, maximum daily loss, and emergency shutdown process. The limits should be written down rather than left to memory. For background on evaluating a system before deployment, see How to Evaluate a Trading Bot and Backtesting Trading Strategies.
What to track
1. Connectivity and data health
Start with the infrastructure that allows the bot to make decisions and send orders. Confirm that the broker or exchange API is connected, authentication has not expired, and the system clock is synchronized. Record the time of the last successful market-data update and the time of the last order-status update.
Look for stale quotes, missing candles, repeated connection attempts, abnormal latency, and gaps in the data stream. A bot should normally stop opening new positions when required data is unavailable. Continuing to trade using old prices can turn a valid strategy into an uncontrolled one.
2. Signals and strategy state
Review the number of signals generated, the instruments considered, and the reason for each live order. The goal is not to approve every trade manually; it is to identify behavior that does not match the strategy specification.
Useful checks include:
- Did the bot trade only approved symbols and time windows?
- Did it use the intended timeframe, indicators, and parameter set?
- Did a software deployment, configuration edit, or broker update change its behavior?
- Did the number of signals differ sharply from the normal range for similar market conditions?
Save the active strategy version and configuration with each daily report. This creates an audit trail when results change.
3. Orders, rejects, and fills
Execution quality deserves its own review. Count submitted, accepted, rejected, canceled, expired, and partially filled orders. A rejected order is not automatically a loss, but repeated rejects may leave the bot with an unintended position or no hedge when one was expected.
Compare the intended entry and exit prices with actual fills. Track slippage separately for entries and exits, and review whether it is concentrated in particular symbols, sessions, order types, or volatility conditions. Also check for duplicate orders, orders that remain open beyond their expected lifetime, and protective stops that were not accepted.
Do not judge a strategy using gross backtest results when live execution costs and partial fills are materially different. The guide to backtesting without fooling yourself provides useful context for this comparison.
4. Positions and exposure
Reconcile the bot's internal position record with the broker's account. Confirm symbol, direction, quantity, average price, unrealized profit or loss, and attached stop or limit orders. The broker's record should be treated as the final source for live exposure.
Monitor total exposure, single-symbol concentration, sector or theme concentration, and exposure across correlated strategies. A day trading bot and a swing trading bot may appear independent while taking similar positions. Include cash usage, margin usage where applicable, and any overnight holdings in the same review.
5. Drawdown and risk limits
Track realized profit and loss, unrealized profit and loss, daily loss, rolling drawdown, losing streak, average loss, and the largest loss. Compare actual risk with the limits defined in the trading plan.
There is no universal safe threshold for every strategy or account. As a starting framework, many traders define a maximum loss per trade, a maximum daily loss, and a maximum portfolio drawdown that triggers a pause. Those limits should reflect account size, liquidity, strategy variability, and the trader's ability to tolerate losses. Position sizing guidance is available in Position Sizing for Day Trading and the ATR Position Sizing Guide.
6. Software and operational changes
Record code commits, parameter changes, package updates, server moves, credential changes, and broker maintenance. A performance change after a deployment should be investigated before the system is allowed to continue at full size.
Use separate paper-trading or test environments for changes whenever possible. Keep a rollback version and ensure that a human can disable new orders without needing to edit code during a fast market.
Sample bot health report
| Area | Record | Status |
|---|---|---|
| Connectivity | Last data update, API status, latency, authentication | Green, amber, or red |
| Execution | Orders, rejects, fills, slippage, open orders | Green, amber, or red |
| Exposure | Positions, concentration, cash or margin usage | Green, amber, or red |
| Risk | Daily loss, drawdown, largest loss, limit usage | Green, amber, or red |
| Strategy | Version, parameters, signals, unexpected behavior | Green, amber, or red |
Cadence and checkpoints
Before the market opens
- Confirm broker, data-feed, and server connectivity.
- Check scheduled earnings, macro events, market holidays, and restricted symbols.
- Verify account balances, buying power, open positions, and working orders.
- Confirm the correct strategy version, parameters, trading window, and risk limits.
- Test that alerts and the emergency stop process work.
During the session
Watch exceptions rather than staring at every normal signal. Alerts should identify rejected orders, stale data, unusual latency, duplicate orders, missing protective orders, position limits, and daily loss limits. Set severity levels in advance:
| Severity | Example | Response |
|---|---|---|
| Informational | Routine fill or scheduled status message | Log for review |
| Warning | Higher-than-usual slippage or a delayed data update | Investigate and reduce activity if persistent |
| Critical | Uncontrolled position, repeated rejects, or breached loss limit | Stop new orders and reconcile the account |
After the close
Reconcile every live position and order with the broker. Calculate net results after commissions, spreads, borrowing costs, and other applicable trading costs. Save logs, fills, strategy version, and screenshots or exports needed to reproduce the session. Note whether results were driven by the intended signals or by unusual execution.
Weekly and monthly reviews
Once a week, examine patterns rather than isolated trades: average slippage, fill rates, rejected-order causes, performance by symbol and time of day, drawdown recovery, and exposure overlap. Once a month or quarter, review whether the bot's assumptions still match the market, broker, data feed, and account structure. Re-test changes in a controlled environment before increasing size.
How to interpret changes
One poor trade does not prove that a strategy is broken. A cluster of operational exceptions, however, can make performance results unreliable. Diagnose changes in layers:
- Check the account first. Confirm actual positions, fills, fees, and cash before reviewing charts or reports.
- Check execution next. Determine whether slippage, rejects, latency, or partial fills explain the result.
- Check the data and code. Compare inputs, timestamps, versions, and parameters with the expected configuration.
- Check the market regime. A trend-following, mean-reversion, or volatility-sensitive strategy may behave differently when liquidity or volatility changes.
- Check the risk process. Decide whether position size should be reduced, trading paused, or the strategy retired pending review.
Use evidence instead of changing several variables at once. If you alter the signal, position size, and execution method simultaneously, you may not know which change affected the outcome. Performance ratios such as Sharpe and Sortino can help organize a review, but they should complement—not replace—drawdown and execution analysis. See Sharpe Ratio vs. Sortino Ratio for a broader comparison.
Use a simple stop protocol for serious failures: disable new entries, preserve logs, reconcile live exposure, close or hedge positions according to the written plan, and investigate before restarting. Avoid restarting repeatedly merely because a bot has stopped; that can duplicate orders or conceal the original fault.
When to revisit
Use this checklist at every market open, after each trading session, and during a weekly performance review. Revisit the risk limits and monitoring design monthly or quarterly, even when results look stable. A quiet period can hide a control that has never been tested under stress.
Perform an additional review after a broker or exchange update, API-limit change, data-feed interruption, software deployment, credential renewal, strategy-parameter change, unusual market event, or material increase in account size. Refresh platform-specific details—such as order types, alert features, connection limits, and fee schedules—when the provider changes them. Treat any published threshold as a starting assumption, not a permanent rule.
For a practical routine, create a one-page report with five headings: connectivity, strategy, execution, exposure, and risk. Mark each green, amber, or red; attach the day's fills and logs; and write one sentence explaining every amber or red item. If a critical alert occurs, pause new orders before investigating. Re-enable the bot only after the account, data, code, and risk controls have been reconciled. That habit turns bot monitoring from a vague concern into a repeatable part of automated trading risk management.