NineFifteenAM

The journey

Paper trading vs live trading: what actually changes

7 min readBy NineFifteenAM

More than 10,000 paper trades and about 400 live ones since April. What changed when real money was on the line: fills, rejections, plumbing, and me.

Short answer

The strategy code doesn't change when you go live, but almost everything around it does. Orders meet a real order book, so fills can be worse and sometimes don't happen. The broker and exchange can reject orders that paper mode always accepts. Infrastructure problems like expired tokens and IP rules start to matter. And the biggest change was me: in my log, I closed live trades by hand about eight times as often as paper ones.

My bot placed its first live trade on 9 April. Since then it has logged more than 10,000 paper trade records and about 400 live ones, often with the same strategy running in both modes on the same day.

The short version: the market treated my live trades better than I expected. The biggest difference between paper and live wasn't the order book. It was the person with the dashboard open.

The strategy code doesn't change when a strategy goes live. It's the same function either way. But going live changed nearly everything around that code, including how I behave. These are the differences that mattered.

1. The fill is no longer yours to choose

In paper mode, my bot records a fill at the last traded price the moment the signal fires. That price is a fact about the past: someone traded there a moment ago. It isn't an offer to you.

A real buy order meets the lowest seller in the order book. On a Nifty option that can be a rupee or two above the last price on a calm morning, and much more when the market is moving fast, which is exactly when breakout strategies tend to fire. On a small target, that gap is a large share of the trade.

My log has a column called slippage, and I expected it to settle this. When I checked what it holds, it isn't execution slippage at all. It measures signal latency: how many index points the market moved between the moment a signal fired and the moment the order went out. It is recorded on paper trades as well as live ones, so it can't tell me what the order book cost me. It's a good example of a journal field that didn't mean what I assumed.

What the data does show is encouraging. I took the two strategies with the most live trades and compared their live trades with their paper trades on the same days:

Live records Live win rate Paper win rate, same days
Strategy A 40 45.0% 44.1% (34 records)
Strategy B 180 68.3% 66.9% (275 records)

In both cases live won about as often as paper, and slightly more. The fill gap I braced for didn't show up in how often trades won. Two caveats keep this honest: a win rate says nothing about how much each trade made, which is where fills bite, and both strategies trade liquid contracts. On a thin contract or a fast market I'd expect fills to matter more. I just haven't measured that yet.

2. Orders can be refused

Paper mode never says no. Live trading says no in more ways than I expected:

Each of these has to be handled in code: the bot needs to notice the rejection, record why, and decide what to do next. Paper mode will never show you any of it, which is why it's worth adding the same "would this be accepted?" checks to paper mode, so a paper trade that live trading would have refused gets flagged instead of counted.

3. Partial fills and orders that don't fill

A paper limit order either fills or it doesn't. A live limit order can fill 65 of 130 units (one lot of two) and then sit there while the price walks away. Now the bot holds a position of an odd size, with a stop and a target that were calculated for the full quantity.

A live stop-loss order can also trigger and not fill straight away if the price gaps through it. Paper mode assumes you got out at your stop. The market doesn't promise that.

4. The plumbing starts to matter

On paper, a missed login just means a gap in the log. Live, it means a position the bot may not be able to manage. Going live forced me to deal with things I had been putting off:

If you're about to go live, placing your first order with the Kite Connect API walks through the order calls and a paper switch.

5. The biggest change was me

This is the one I didn't expect to see so clearly in the data.

Paper Live
Trade records since April 10,298 405
Closed by hand from the dashboard about 1% about 8.6%
Average (mean) time in the trade about 13 minutes about 8 minutes
Median time in the trade about 4 minutes under 2 minutes

With no money at stake, I almost never touched a paper trade. With money at stake, I closed about one live trade in twelve myself. In August it was worse: 16 of 63 live trade records that month ended with me pressing the button.

Were those manual exits good decisions? Some were. Most of them were in profit when I closed them. But a manual exit also means the trade no longer tests the strategy. It tests my nerves on that particular afternoon, and there's no way to backtest that.

Some of the shorter holding time comes from which strategies I allowed to go live, not only from me. But the direction is the same: real money made both me and my choices more impatient.

What helped:

6. Comparing paper and live fairly

It's tempting to put all paper trades next to all live trades and draw a conclusion. That comparison is biased from the start: the strategies I let go live are the ones that had already looked good on paper, so the live group is hand-picked.

The fair comparison is the same strategy, on the same day, in both modes. That's why every row in my log is marked paper or live, and why I never blend the two in one result.

What I'd tell myself in March

  1. Treat paper results as the best case, not the expected case.
  2. Make paper mode stricter: add the checks live trading would apply, and simulate fills at the other side of the book rather than the last price.
  3. Record the price you wanted and the price you got on every live trade, and check the field actually holds what you think. Mine didn't.
  4. Go live with the smallest size you can, one strategy at a time.
  5. Watch yourself as closely as the bot. In my data, the biggest difference between paper and live wasn't the market. It was the person with the dashboard open.

Earlier in the story: how I analyse my trading bot's trades.

This post describes my own experience building and running a trading system, for information only. It is not investment advice, and past results say nothing certain about the future. I am not registered with SEBI as an investment adviser or research analyst.

Questions people ask me

Is paper trading a good way to test a trading bot?

Yes, for checking that the logic does what you think and for comparing ideas side by side. It's a poor guide to exact profits, because paper fills are kinder than real ones and paper orders are never rejected. Treat paper results as an upper bound.

Why might live results be worse than paper?

Usually fills and costs. A paper fill at the last traded price ignores the spread and the other side of the order book. Live orders also pay charges, get rejected, and sometimes fill only in part. Record the price your signal wanted and the price you actually got, and check that the field really holds that. In my own log the gap in win rate between paper and live was tiny, so measure yours before assuming.

How long should I paper trade before going live?

There's no fixed period. I'd wait until the paper version has run through different kinds of market days and you've checked the log trade by trade, then go live with the smallest size possible. My bot paper traded for weeks before its first live trade, and new strategies still start on paper.

Should I compare all my paper trades with all my live trades?

No. The strategies that go live are usually the ones that already looked best on paper, so a straight comparison flatters live trading. Compare the same strategy on the same days in both modes.

paper tradinglive tradingslippagealgo tradingnifty optionstrading psychology
N

NineFifteenAM

One trader building an options bot for Indian index markets since early 2026. I write down how it is built, what broke, and what it cost — no tips, no calls, no returns.

Related

29 Sept 2026
A day in the life of a trading botWhat my Nifty options trading bot does from 6 AM to the evening: the login, the 7 AM data pull, the health checks, the open, the close and the log review.
The journey
27 Sept 2026
Opening range breakout on Nifty: I tested 25 versionsMy first trading bot traded one classic idea, the opening range breakout. I built 25 versions of it on Nifty options. Here's what made the good ones good.
The journey
27 Sept 2026
GPT vs Claude in a live trading bot: letting two AIs voteI asked GPT and Claude to read the same Nifty chart thousands of times and made them vote on my trades. What I learned about using AI in a trading bot.
The journey