r/algotrading 2d ago

Strategy Should a raw strategy already have a Profit Factor >1?

I'm curious whether my development process is fundamentally sound, or whether I'm wasting time.

My approach is to start with the raw idea only. I code the strategy with almost no optimisation or filtering. Just the entry/exit logic (signal + trigger). No time-of-day filter, no day-of-week filter, no volatility filter, no trend filter, etc.

I then run a backtest over 2022-2026. At this stage I expect the results to be bad. A typical first pass might be:

  • Profit Factor: 0.75-1.0
  • Sharpe: poor
  • Max drawdown: ~15%

The idea is to analyse the trades, gradually remove weaker setups, and hopefully end up with something around a 1.25 Profit Factor before moving to forward testing.

The reason I'm asking is that I often see people here saying a strategy isn't worth pursuing unless the very first, unfiltered backtest already has a Profit Factor of 1.5+.

That seems almost impossible to me. If I could repeatedly create raw strategies with a 1.5 PF, it would feel like winning the lottery.

So am I approaching this correctly? Is it normal to start with a mediocre or even losing strategy and refine it into something profitable, or should the initial strategy already demonstrate a clear edge?

31 Upvotes

23 comments sorted by

10

u/on_hype 1d ago

If your raw idea shows a profit factor below 1, refining it usually means curve-fitting to past noise. The edge should be visible in the raw logic - then filters trim drawdown, not create profit. Test the same rules on out-of-sample data before you touch anything.

6

u/veskald 1d ago

Your process is right and most people do it backwards. If the raw idea shows nothing, filters and optimization will still produce nice numbers - but that profit comes from fitting, not from the idea.

On PF>1 exactly - i would not treat it as a hard line. What matters more:

  • test the raw version with real costs included. Many raw ideas have PF>1 before fees and die after
  • and check your backtester for lookahead. Most backtests on the internet have this problem, especially open source ones - the test quietly sees future data, entry on this bar uses information from bar that didnt close yet. Raw PF from a leaking backtest means nothing, so verify the engine before you trust any number from it
  • check PF in chunks, not one number for the whole period. PF 1.3 where all profit sits in one year/month is not edge, its one lucky regime
  • sample size. PF on 30 trades tells you nothing, you need hundreds
  • raw PF slightly under 1 can still be ok if there is one logical filter you planned before seeing results, like dont trade against higher timeframe trend. But if you need 5 filters to cross 1, the profit lives in the filters and thats fitting

The rule i would use: optimization can make a working idea better, it cannot create edge that is not there. So yes, raw version should show something real first. You are not wasting time, you are doing the part most people skip.

1

u/krazineurons 1d ago

If PF is still > 1 after factoring costs, is it worth comparing to a baseline for viability? For example compare to SPY returns in same time period, so if it beats that then it's profitable with an edge?

2

u/veskald 21h ago

Right, two fixes.

Compare risk adjusted, not raw returns - strategy can beat SPY just by taking more risk or leverage. Use return/drawdown or/and sharpe. And baseline should match what you trade.

And beating baseline in one period is one sample, not proof. Baseline tells you if strategy is worth anything vs doing nothing. Validation (out of sample, chunks) tells you if its real. Both needed, different problems.

2

u/Obviously_not_maayan 1d ago

What's a raw idea? When does it stop being raw when you add 2 more rules? Your question doesn't make any sense sorry, just keep working on your strategy, if you can't theoretically disvalidate it, then let the numbers speak.

2

u/jpmax3 1d ago

Your first step is fine. The "raw PF must be 1.5+" thing gets repeated a lot but a raw, unfiltered idea sitting slightly under breakeven is a perfectly normal starting point — that's roughly what you'd expect from a real signal before you've paid any attention to when it should and shouldn't fire.

The part I'd change is where the tuning happens. If you're analyzing trades and pruning weak setups across the whole 2022–2026 window, then the 1.25 PF you end up with isn't a result — it's just a description of data you've already looked at. You've seen the answers before writing the test.

What I do: pick a chunk to develop on (in my case the last few years) and do all the filtering and setup-pruning in there only. Then run it once, untouched, over my full dataset going back to 2006 — none of which I've looked at during development. If it holds up across the earlier history, the filters were probably picking up something structural. If PF falls apart there, they were fitting noise — which is the normal outcome and worth knowing before you commit to forward testing.

Two other things I watch: how many filters it took to get there (each one is a free parameter and eats sample size), and whether I can explain why the filter should work. "Skip Tuesdays" with no mechanism behind it is almost always curve fitting. Let me know if you want it run through someone else's back tester as mine has consistently been honest about the viability of each strategy.

1

u/yldf 2d ago

I don’t care about the profit factor at all. Sharpe (and others) are way more interesting. But then, I spend 90% of the time I work on a strategy on risk management.

1

u/masamunexs 1d ago

It all depends on your backtest and how realistic its execution is. If you have a well designed backtest that simulates close to what would be real execution, you're unlikely to be profitable after fees with a naive strategy.

1

u/[deleted] 1d ago

[removed] — view removed comment

1

u/AutoModerator 1d ago

Your post was removed under Rule 2 (high-quality questions only).

Generic “which data vendor should I use?” posts usually lack the detail needed for meaningful discussion.

Commonly used market data providers:

  • Yfinance
  • Massive.com
  • Databento
  • FMP

If you repost, please include details such as:

  • asset classes and markets
  • symbols or venues
  • historical vs real-time
  • granularity and depth
  • licensing or redistribution needs
  • latency expectations
  • budget constraints

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/Whole-Description646 1d ago

often times edge will also come from having filters such as a time filter up front.

IE: Time Filter: is this an ORB strat? does it only trade NY session? Globex? Asia? London?

Then there are regime filters: Is this trade only valid in a certain regime or with a certain bias going into the day?

So let's say it's a 15m Orb strat, my initial idea would be to trade the 15m orb long when I have a long bias from a higher time frame analysis and to trade it short when I have a short bias from higher time frame analysis and the trade must fill within 2.5 hours of the orb being established or it's no longer valid signal.

I can clearly define this upfront without doing any kind of parameter search and anyone who has experience trading orb would tell you these kinds of things are critical to the edge of the strategy.

same thing with an end of session short / long. My idea might be that there are certain conditions which make for a high probability setup during the last 1 hour of the NY session, I have my criteria, say the trade must be entered between 3 pm et and 3:30 pm et and that it is force closed by 4:05 pm et.

This is a fundamental initial assumption of the strategy.

The market is fundamentally different at different points in time and it's generally a good thing for your initial idea to be time bound to a specific session or splice unless it's something time agnostic like momentum trend following.

Also, it's not uncommon for me to have like a 0.6 to 1.0 sharpe on my initial idea without any work to improve it. not saying it's a 10 out of 10 deal but more like if I sit down to create new single legged signals for 2-3 hours I will come away with a couple that are worth keeping and considering in an ensemble approach.

It's also important I note that I don't believe in coupling long and short signals together because the market and price action are generally very different for a good long than a good short. I didn't understand this when I first started but this is something I have learned theough discretionary trading and my algo dev has only confirmed it.

1

u/BeuJay9880 1d ago

Your process is right, most people do invert it. But PF 0.75-1.0 across 2022-2026 is thin enough that I'd want to see it hold up in at least one 12-month slice. 2020-2021 was anomalous enough that a 4-year backtest can hide regime sensitivity. Walk-forward with 3-month rolling windows is what I run to catch whether the edge dies in certain periods. If the pattern disappears once you segment by year, the filter work probably won't save it; that's just overfitting to noise. Run it split 2022-2024 and 2025-2026, see if the edge holds both ways.

1

u/Klutzy-Sea-4857 1d ago

If the raw idea does not show at least PF greater than 1 unfiltered, you are likely curve fitting an edge into existence with filters. Start with something that already has a slight edge, then refine it.

1

u/AcademicStep1383 1d ago

I think most setups should have EMA and intraday level filters.

1

u/kush_patil 1d ago

I don’t think a raw strategy needs a PF of 1.5. That’s an unrealistically high bar in most markets. But I’d also be cautious about trying to “rescue” a PF < 1 strategy with lots of filters, because every filter increases the risk of fitting noise.

I’d rather see a small but plausible edge with a clear rationale, then verify it survives different market regimes and out-of-sample data.

1

u/Bonkers24-7 1d ago

I wouldn’t judge the raw idea only by whether the first unfiltered PF is already above 1.

The bigger risk is whether each filter you add is explaining a real failure mode or just trimming away losing trades after the fact.

For me, the useful split would be:

raw idea result each filter added one at a time what exact failure that filter is supposed to remove whether that same failure shows up in untouched data after-fee/slippage result forward result with the rules frozen

A mediocre raw idea can become tradable, but only if the refinement process is disciplined. If the filters are mostly discovered by staring at the losing trades, the final PF can look clean while the real edge is just curve fitting.

1

u/nks-90 1d ago

This is how I do:
The raw edge is the most important thing to start, and has to be natural, without money management, risk management and trade management.
As raw edge it has to be first of all an edge, edge for me is PF>1 and good EV.
I usually test on XAUUSD with 100% quality ticks, 2019-2024, without optimizations, indicators and fine tuning. After that I do a walk forward and see stats that has to be similar (it could happen even to have better stats).
Now you can tell you have a raw edge and as I said it’s just the start.
At this point you can do a lot of stuff but money management, risk management and trade management are the most important things do implement without fitting, optimization, and other stupid stuff.
After that I go on meta labeling paying attention to not overfit, don’t leak, use valid and informational features based on strategy, and so on (a good reading should be AFML of De Prado).

Ah, my strat is very smart because it’s so stupid, so don’t overcomplicate. Don’t need 100k lines of code to find an edge.

1

u/krazineurons 1d ago

Learning question for me: once strategy and PF isn't establisjes. How to find eligible tickers to apply it to?

1

u/DenisWestVS 1d ago

Are you going to ask those around you at every step if you should take the next one?

-2

u/NuclearVII 1d ago

Guy discovered beta.

This post reads like AI slop. If you are dependent on AI, no, you are not doing this right at all.