Worth talking through, because the answer depends on the shape of what you have. The thing to check first is whether your data has the fields the strategy engine expects at the resolution you want to test — a series that's missing a field your conditions reference will run but produce results that quietly mean something different. If you tell us the format and resolution you're holding, we can tell you what would be involved and whether it's a straightforward conversion.
Also check what your set has for bid/ask. Most collected data is trades or bars only, so any test on it fills you at the print and quietly hands you the spread for free. Fine for direction, useless for anything that trades often.
ok dumb question but how would you even notice the silent wrong one? like if it runs and gives you a number, what's the tell that the field was missing vs just a bad strategy? I feel like I'd just accept the number lol
One thing that saved me: before trusting any imported set, run a strategy you already know the behaviour of on it. If the results look nothing like what you expect, it's the data not the logic. Also check timestamps and timezone on your set, offset by an hour is the classic one and it looks perfectly plausible.
Thank you all. What I have is bar data with OHLCV, no quotes, so SpreadWatcher's point applies squarely — I would be assuming a fill quality I never observed. My intent was medium holding periods rather than anything frequent, so the spread cost is a smaller share of the expected move, but I take the point that it biases everything in one direction rather than symmetrically. FiveMinFiona, the known-strategy sanity check is a good idea, I'll do that first. Does anyone have a sense of how much of a gap you'd tolerate in a set before it stops being usable, missing sessions, holidays, that sort of thing?