The bar interval you pick for a backtest looks like a settings dropdown, and people treat it that way. Daily because that is what they had lying around, or 1-minute because finer sounds more rigorous. But the candle size is a modeling decision, and it silently rewrites what your strategy is even measuring. I have watched the same rules turn a losing curve into a winning one purely by switching from hourly to daily bars, with no change to the logic at all. Nothing was fixed. The sampling just moved.
Here is the thing that took me too long to internalize. A candle is a lossy summary. Open, high, low, close, and volume for a window of time. Everything that happened inside that window, the order the high and low arrived in, the wick that briefly stopped you out and reversed, the spread widening for ninety seconds, all of it is gone. When you backtest on a given timeframe, you are not testing on the market. You are testing on a compression of the market, and the compression ratio is your choice.
What coarse candles hide and fine candles invent
Go too coarse and you hide intrabar risk. The classic version of this is a daily-bar backtest where a trade shows a clean win, but inside that day the price first dropped through your stop and then recovered to close green. On daily candles the engine never sees the stop get hit, so it books the full move. In reality you would have been flushed out at the low and left staring at a recovery you no longer had a position in. Every daily backtest with tight intraday stops is quietly optimistic for exactly this reason. The engine assumes the day happened in the friendly order.
Go too fine and you get the opposite problem. On 1-minute candles you are now modeling every microstructure twitch, most of which is noise you cannot actually trade around. Your signals fire more often, which sounds like more opportunity, but a lot of those fills are theoretical. The spread eats them, the exchange would not have filled you at that print, or the move reverses before your order round-trips. Fine candles also explode your compute and your overfitting surface. More bars means more parameters can be tuned to more wiggles, and a curve fit to 1-minute noise almost never survives contact with next month's noise.
So both ends lie to you, just in opposite directions. Coarse candles flatter your risk. Fine candles flatter your opportunity and your degrees of freedom.
Match resolution to holding period, not to your gut
The rule I actually use is simple and it keeps me out of most of this trouble. Your candle should be a good bit finer than your typical holding period, but not so fine that most bars are pure noise relative to your edge. Roughly one order of magnitude finer than how long you hold is a sane default.
- If you hold for weeks, backtest on daily candles. Hourly buys you almost nothing and multiplies your bar count for no gain.
- If you hold for a day or two, test on hourly or 4-hour. Daily is too coarse to see the intraday path that would have hit your stop or target.
- If you hold for hours, drop to 5-minute or 15-minute. This is where intrabar order starts to genuinely matter and you want the engine to see it.
- If you are scalping and holding for minutes, you need 1-minute or tick data, and you need to be honest that slippage and spread are now the dominant terms, not your signal.
The logic behind the ratio is that you want enough bars inside a typical trade to actually resolve the entry, the adverse excursion, and the exit as separate events. If your whole trade lives inside two or three candles, the engine is guessing at the path and your stop logic is basically decorative. If your trade spans a few thousand candles, you are paying for resolution you never use and inviting yourself to overfit the fuzz.
The intrabar order problem, and how to be conservative about it
Even once you pick a reasonable timeframe, there is a modeling assumption most engines make that you should know about. When a single candle contains both your stop and your target, the backtester has to decide which one hit first, and it cannot know from OHLC alone. Some engines assume the worst case, some assume the best, and a scary number quietly assume whichever helps your numbers. This one assumption can swing a strategy's win rate by a meaningful amount, especially for anything with tight stops.
My habit is to force the pessimistic assumption. If a bar could have hit my stop, I assume it did, before any target in that same bar. It makes the backtest uglier and it is almost always closer to what you would actually live through. If a strategy only works under the optimistic intrabar assumption, it does not work. You just have not paid for it yet.
The cheap two-resolution consistency check
Here is the practical part, and it costs you about twenty minutes. Never trust a result from a single timeframe. Run the exact same strategy on two adjacent resolutions and compare. Hourly and 4-hour. Daily and 4-hour. Whatever brackets your intended timeframe.
What you are looking for is not identical numbers, because you will never get those. You are looking for the same shape. Same rough direction of the equity curve, same ballpark drawdown, the trade count scaling in a way that makes sense. If the strategy is strongly profitable on one resolution and flat or negative on the neighbor right next to it, you have not found an edge. You have found a sampling artifact, and it will not travel to live trading where the market does not politely quantize itself to your candle boundaries. A real edge is boring here. It shows up on both, a little muddier on one, a little cleaner on the other, but recognizably the same animal.
Two failure modes this catches immediately. First, results that only exist because your entry and exit happen to land on convenient candle closes, which vanish the moment you nudge the grid. Second, stop logic that looks great on coarse bars purely because the coarse bars hid the adverse path. When you drop to the finer resolution and the strategy falls apart, that gap between the two is the intrabar risk you were pretending did not exist.
When I am building this out I keep a scratch table of the same rules across three timeframes and just eyeball the columns side by side. Blockcircle's backtester lets me flip the candle resolution and rerun without touching the strategy, which is the whole point, because the comparison is only honest if literally nothing else moved. If the three columns disagree wildly, the strategy goes back in the drawer.
None of this makes your backtest true. A backtest is a claim about the past under a pile of assumptions, and the timeframe is one of the load-bearing ones. But picking your candle deliberately, forcing the pessimistic intrabar call, and checking two resolutions before you believe anything will save you from the specific flavor of self-deception where you ship a strategy that only ever won inside a spreadsheet. Pick the candle that matches how long you hold, then go make it disagree with its neighbor. If it holds up, you have something worth trading. If it does not, better to find out now than with real size on.