Skip to main content

Live Trading

Live trading connects your strategies to a real exchange and places real orders with real funds. This is the final step after backtesting and paper trading.

caution

Live trading involves real money. Always backtest and paper trade thoroughly before going live. Start with small amounts.

Prerequisites

Before going live, make sure you have:

  1. A strategy that has been backtested with good results
  2. Paper traded the strategy with live data
  3. Connected an exchange with API keys that have trading permissions
  4. Funds deposited on that exchange

If your strategy uses Margin or Futures blocks, the first time you start it (or place any manual leveraged order) you'll be asked to acknowledge a one-time risk disclosure for that product type. See Risk acknowledgment for what the dialog covers.

Supported product types

Live strategy execution currently supports the following exchange × mode combinations:

ExchangeSpotIsolated MarginCross MarginFutures (perpetual)
Binance✅ production only
KuCoin
Bybit✅ (UTA spot margin)
Other ccxt spot exchanges

Support for other combinations is planned but not yet built. If your exchange and mode aren't supported, use paper trading or backtesting instead.

The product type is determined by the blocks in your strategy. Make sure your strategy's blocks match a supported cell for the exchange you're running it on — otherwise the strategy will refuse to start in live mode.

What "production only" means

For most exchange × mode cells you can run in either of two environments:

  • Testnet — the exchange's sandbox. Same APIs, same UI, fake money. Ideal for verifying a strategy's behaviour against the real exchange before risking real funds.
  • Production — the exchange's real, live environment with real money.

A cell marked production only has no testnet for that specific mode. Binance, for example, runs a spot testnet and a futures testnet, but does not run a margin testnet — so isolated margin trading on Binance can only be verified with minimum-size real-money trades on the live exchange. That's a constraint set by the exchange, not by BrighterTrading.

If a cell you want to use is production-only, the safest path is:

  1. Backtest the strategy thoroughly
  2. Paper trade it with realistic prices
  3. Run it live with the smallest possible position size first, with a tight stop loss
  4. Scale up only once you've verified live behaviour matches paper

Bybit's "spot margin" appears as cross-only in the table because Bybit doesn't offer isolated spot margin — its spot-margin product runs under the Unified Trading Account, which pools collateral across spot margin and futures. See Bybit Unified Trading Account cross-collateralization under Known limitations for details.

Starting a live strategy

  1. Open the Strategies panel
  2. Find the strategy you want to run
  3. Start it in live mode
  4. Select the exchange and trading pair
  5. The strategy will begin executing against real market data and placing real orders

If your strategy relies on a mode your exchange doesn't yet support, the live runtime will reject it at start time. Check the supported product types above to confirm your combination is available.

Monitoring live trades

The Statistics panel shows live trade activity:

  • Active Trades — Count of live trades currently open
  • Total P/L — Combined profit/loss across all live trades
  • Running Strategies — Which strategies are currently active
  • Recent Trades — Latest completed trades
  • Activity Log — Detailed log of strategy actions

The Exchange Info panel shows:

  • Balances — Your exchange account balances
  • Active Trades — Open positions
  • Open Orders — Pending orders on the exchange

Risk management

BrighterTrading's strategy builder includes a Risk Management block category with tools for:

  • Stop losses
  • Take profits
  • Position sizing limits
Never trade live without risk management

Always include stop loss and position sizing blocks in your live strategies. A strategy without risk management can lose your entire balance in a single bad trade. This goes double for leveraged strategies -- a futures position at 10x leverage can be liquidated by a 10% price move.

How stop loss and take profit are placed

When your strategy attaches a stop loss or take profit — either at position open (inside Open Position's options) or via Update Stop Loss / Update Take Profit mid-position — BrighterTrading uses one of two approaches depending on the exchange and trading mode:

  • Native exchange-side protection. The platform places a real conditional order on the exchange (a stop-limit, take-profit-limit, OCO, or futures stop-market). Once placed, the protection lives on the exchange's order book and fires regardless of what your strategy is doing — paused, restarted, or even fully stopped. This is the safer default and we use it wherever the exchange + mode combination supports it.

  • In-process protection. The platform tracks the stop or target price internally and places a market order from your strategy's runtime when the trigger price is hit. This means the protection only fires while the strategy is actively running. If you pause the strategy, stop it, or BrighterTrading itself goes down, an in-process stop will not fire until the strategy resumes.

Today, native protection is supported across the major exchange × mode cells we ship with — Binance spot, Binance futures, KuCoin spot, KuCoin isolated margin, KuCoin futures, and Bybit spot. KuCoin cross margin and any other cells fall back to in-process protection.

The practical takeaway

For any strategy you trust to run while you sleep, prefer exchanges and modes that support native protection. If you must use a cell that uses in-process protection, do not pause or stop the strategy without first manually closing the position — your stop loss won't fire on its own.

Known limitations

A few areas where live trading behaves differently from paper or backtest. None are funds-unsafe — but you should know about them before building strategies that depend on specific behaviour.

Live futures limit orders are fill-or-cancel-on-timeout

When you attach a limit trade option to Open Position on a futures strategy, the order is placed as a limit on the exchange, but if it hasn't filled by the time the strategy polls for the result, it's cancelled rather than left resting.

What this means: a GTC limit that would normally sit on the order book for hours is treated as "fill now or don't trade." The strategy never sees a position from it.

Why: live futures doesn't yet have a locally-tracked pending-order ledger, so leaving an order resting exchange-side would create state the strategy can't see on restart. Cancel-on-timeout is the honest choice.

Workaround: if your strategy relies on resting limit entries:

  • Paper and backtest modes handle resting limits correctly — use them to develop the idea.
  • Margin mode has real resting-limit support on live. Consider margin if the strategy needs it and the exchange supports it.
  • Futures with market entries works normally — only limit entries hit this limitation.

Trailing stops pause on connection loss

Trailing stops in live mode are client-side — BrighterTrading tracks the trail distance in memory and closes the position when the trigger is breached. This works seamlessly when the connection is healthy, but if the service restarts or loses connection to the exchange, the trail stops advancing until reconnect.

What this means:

  • The trail's watermark (highest price seen for a long) is frozen during the disconnect.
  • When you reconnect, the trail catches up to the current price and resumes from there — you don't lose protection, but any profit locked-in during the disconnect isn't captured.

The critical detail: a conventional stop_loss you set at position open goes to the exchange directly (when your cell has native SL enabled). That fixed stop stays active even during a disconnect. So if you pair a trailing stop with a fixed stop, you always have an absolute floor:

Open Position (long)
└── stop_loss: 48000 ← Fixed. Exchange-side. Protects during disconnects.
└── trailing_stop: 2% ← Dynamic. Client-side. Pauses during disconnects.

If the service is down when price drops 10%, the trailing stop doesn't fire (it's paused), but the fixed stop at 48000 triggers on the exchange and closes the position.

Recommendation: always combine trailing_stop with a fixed stop_loss for live strategies. Treat the fixed stop as your worst-case exit and the trail as the "give me more" optimisation on top.

Native SL/TP rollout status

When you call Update Stop Loss or Update Take Profit mid-trade on a live position, the protection is placed on the exchange only if that exchange × product cell's native SL/TP gate is enabled. When disabled, updates are tracked in-process and protection depends on the strategy runtime polling prices.

Check your protection status: the Position Unrealized PnL block and the position's display in the UI both reflect the current protection status. If you see metadata_only where you expected native_active, the exchange isn't enforcing the level — your service restart would drop it.

Native SL/TP support is now implemented for the supported live cells, including KuCoin cross margin, but it remains gated per cell until each exchange path is verified with testnet or minimum-size production trades. Over time, every supported exchange will default to native_active and this limitation will go away.

Bybit Unified Trading Account cross-collateralization

Bybit spot margin and Bybit linear futures both run under Bybit's Unified Trading Account. BrighterTrading shows them through separate broker surfaces, but Bybit calculates risk at the account level. A losing Bybit futures position can reduce the collateral available to a Bybit cross spot-margin position, and vice versa.

What this means: if you run multiple Bybit strategies at the same time, monitor your total Bybit account risk, not just the individual strategy position. This is exchange behavior, not a BrighterTrading isolation layer.