Investment Strategies & Instruments

Which Algorithmic Trading Strategies Are Actually Profitable? Evidence, Costs and a Backtest (2026)

Key takeaway

No algorithmic trading strategy is profitable in itself. Trend following, momentum, mean reversion and pairs trading each have published evidence, but whether an edge survives depends on costs, capacity and out-of-sample testing. On 33 years of SPY data, a breakout rule this article once recommended returned 3% a year; a 10-month moving average kept most of the index return at half the drawdown.

Published by AssetWhisper Editorial Desk
Profitable Algorithmic Trading Strategies

Correction, 10 September 2026. This article replaces an earlier version that quoted an annual return range, a Sharpe ratio range and a win rate for each of five strategies without any methodology behind them, published a Kelly position-sizing function that was mathematically wrong, gave a 60–90 day timetable to profitability that we had no data for, and stated several broker and software details that were out of date. The figures have been removed rather than corrected, because they were never measurements, and the headline has been changed because the old one was no longer supportable. What changed, and why, is recorded on our corrections page.

No algorithmic trading strategy is profitable in itself. Trend following, momentum, mean reversion and pairs trading each have decades of published evidence behind them, and each has also lost money for long stretches. Whether a strategy makes money for you depends on things the signal does not control: transaction costs, how much capital it can absorb, how it was tested, and how it is sized. This article reviews what the research actually supports for five strategy families, then runs a backtest you can reproduce line by line — including the breakout rule an earlier version of this article recommended, which turns out to have spent 85% of the last 33 years in cash.

If you want the broader map — what algorithmic trading is, how a system is put together, the full menu of strategy types — that lives in our complete guide to algorithmic trading strategies. This piece answers one narrower question: which of those strategies have evidence of profitability after costs, and how can a retail trader tell whether an apparent edge is real?

What “profitable” has to mean before you test anything

Most published strategy results are not lies. They are answers to a different question than the one you are asking. A gross return over a hand-picked period, on data the author could see while choosing the parameters, tells you that a rule would have made money. It does not tell you that the rule will. For a strategy to count as profitable in any sense that matters to your account, five conditions have to hold at the same time.

  • After costs. Spread, slippage and commission, at the turnover the strategy actually generates. A rule that trades daily pays roughly 250 round trips a year; at 5 basis points per side that is a 25% annual drag before it earns anything.
  • Out of sample. Measured on data the parameters were not chosen on. A rule tuned on 2010–2020 and then reported on 2010–2020 has been graded on its own homework.
  • Against the benchmark. A long-only equity strategy that made 8% a year in a decade when the index made 13% did not have an edge. It had exposure, and less of it.
  • With a large enough sample. Thirty trades is not evidence. The standard error on a win rate estimated from 30 trades is about nine percentage points, which is the difference between a strategy and a coin.
  • At your capital. Some edges exist only in small size, others only in large. A pairs trade in two illiquid small caps may be real and still be unusable with $200,000.

The reason this bar is high is that the alternative is not neutral. Bailey, Borwein, López de Prado and Zhu showed in “Pseudo-Mathematics and Financial Charlatanism” (Notices of the AMS, 2014) that with enough parameter combinations tried, a spectacular in-sample Sharpe ratio is not just possible but nearly guaranteed, on pure noise. Harvey, Liu and Zhu, surveying hundreds of published factors in “…and the Cross-Section of Expected Returns” (Review of Financial Studies, 2016), concluded that a newly discovered effect should clear a t-statistic of 3, not the conventional 2, to correct for how many things have already been tried. Your own backtests deserve the same haircut.

Five strategy families and what the evidence says

The table summarises the state of the published evidence for the five approaches a retail trader with a standard Python stack can realistically implement. “Evidence” here means peer-reviewed work on broad samples, not vendor backtests. Every one of these has a documented mechanism and a documented way of failing.

StrategyWhy an edge may existEvidenceHow it failsRetail feasibility
Trend following (time-series momentum)Slow diffusion of information; investors under-react, then herdStrong, across a century and 50+ marketsWhipsaws in range-bound markets; lags V-shaped recoveriesHigh
Cross-sectional momentumUnder-reaction to news; institutional flowsStrong, but with rare, severe crashesMomentum crashes at market turning points; turnoverHigh (ETF universe)
Mean reversionOver-reaction; liquidity provisionMixed; strong at long horizons, fragile at short ones after costsStructural breaks; costs at high turnoverHigh to implement, hard to keep profitable
Pairs / statistical arbitrageRelative mispricing between related securitiesStrong historically, clearly decayingRelationship breaks; capacity; crowdingMedium
Sentiment / NLPFaster processing of text than the marketEmerging; small effects, hard to replicateOverfitting; data cost; signal decayMedium

1. Trend following

The best-documented of the five. Moskowitz, Ooi and Pedersen’s “Time Series Momentum” (Journal of Financial Economics, 2012) found that the past twelve months’ return predicted the next month’s across 58 futures contracts in equities, currencies, commodities and bonds, from 1985 to 2009. Hurst, Ooi and Pedersen extended the sample back to 1880 in “A Century of Evidence on Trend-Following Investing” (Journal of Portfolio Management, 2017) and found the effect in every decade. For a single equity index, the simplest version is Mebane Faber’s 10-month moving average rule (2007): hold the asset when it closes the month above its 10-month average, hold cash otherwise.

The evidence is also clear about what trend following is not. It is not a return enhancer on a long-only equity position. In strong bull markets with sharp, short corrections — the 2010s were the textbook case — it sells at the bottom of each dip and buys back higher. What it reliably does is cut the depth of the worst drawdowns. That is insurance, and insurance has a premium. The backtest below puts numbers on both halves.

2. Cross-sectional momentum

Buy what has gone up relative to its peers over the past 3 to 12 months, skip the most recent month, sell what has gone down. Jegadeesh and Titman documented it in US stocks in “Returns to Buying Winners and Selling Losers” (Journal of Finance, 1993), and it has since been found in most equity markets, in country indices, in currencies and in commodities. It is one of the few anomalies that survived being published.

Its failure mode is specific and brutal. Daniel and Moskowitz’s “Momentum Crashes” (Journal of Financial Economics, 2016) shows that the strategy’s worst months cluster at market turning points, when the losers it is short rebound violently: the long–short portfolio lost 73% in a few months in 2009. A retail version built on sector or country ETFs is long-only and avoids the short leg, at the cost of most of the return. The second problem is turnover. Novy-Marx and Velikov’s “A Taxonomy of Anomalies and Their Trading Costs” (Review of Financial Studies, 2016) estimates that monthly-rebalanced momentum keeps a positive net return after realistic costs, but that the high-turnover variants do not.

3. Mean reversion

Here the evidence splits by horizon, and the split is the whole story. At horizons of three to five years, Poterba and Summers found in “Mean Reversion in Stock Prices” (Journal of Financial Economics, 1988) that returns are negatively autocorrelated: long periods of outperformance tend to be followed by underperformance. That is a real effect. It is also useless for an algorithm that trades daily, because it plays out over years.

At horizons of days to weeks, short-term reversal is also real — Lo and MacKinlay documented it in “When Are Contrarian Profits Due to Stock Market Overreaction?” (Review of Financial Studies, 1990) — and it is the anomaly that dies first when costs are counted. In Novy-Marx and Velikov’s taxonomy it sits in the highest-turnover group, where net returns after costs are close to zero or negative. The reason is mechanical: a strategy that buys yesterday’s losers and sells them a few days later is providing liquidity, and the profit it earns is the spread it is also paying.

Illustrative research rule — not a trading signal. The version most retail articles describe, including an earlier version of this one, is: buy when the close falls below the lower Bollinger Band (20-day, 2 standard deviations) and the 14-day RSI is below 30; exit at the middle band. It is a reasonable hypothesis to test. It is not a strategy until you have measured its turnover, priced that turnover at your broker, and checked that what is left is distinguishable from zero.

4. Pairs trading and statistical arbitrage

Gatev, Goetzmann and Rouwenhorst’s “Pairs Trading: Performance of a Relative-Value Arbitrage Rule” (Review of Financial Studies, 2006) is the reference study: a simple distance-based rule earned around 11% a year on US stocks from 1962 to 2002, with low correlation to the market. The same paper notes the return was already declining in the later part of the sample. Do and Faff followed up in “Does Simple Pairs Trading Still Work?” (Financial Analysts Journal, 2010) and found that it did, barely: profits kept falling through the 2000s as more capital chased the same pairs, with brief revivals in crises.

The most common retail mistake is to select pairs by correlation. A correlation above 0.8 over 90 days tells you two assets moved together recently. It says nothing about whether the spread between them is stationary, which is the property the trade depends on. Two stocks can be 0.9 correlated while their price ratio trends steadily in one direction for years — and a pairs trade on that ratio loses steadily for years. The sequence that holds up is: correlation to shortlist candidates; a cointegration test (Engle–Granger for two series, Johansen for more) to confirm a stable relationship; a stationarity test on the resulting spread; a rolling hedge ratio for implementation; and an out-of-sample period to check the relationship did not exist only in the data you fitted it on. Our complete guide walks through Engle–Granger, Johansen and Kalman-filter hedge ratios in more detail.

5. Sentiment and text-based signals

Tetlock’s “Giving Content to Investor Sentiment” (Journal of Finance, 2007) established that the tone of a daily Wall Street Journal column predicted next-day returns and reversed within a week. The effect was statistically real and economically small. Most of what has followed — Twitter mood, Reddit volume, news-embedding models — reports in-sample results on short histories, and the replication record is thin. The 2025 study by Sukma and Namahoot in Computational Economics is representative of the honest end of this literature: a multi-indicator system on S&P 500 data generated “notable returns” that nevertheless fell short of the benchmark. Text signals belong in the “emerging” column. They are the family most exposed to overfitting, because the feature space is unbounded and the data is expensive, which means few people check anyone else’s work.

One reproducible backtest: two rules, 33 years of SPY

Rather than quote return ranges with no methodology, here is a test anyone can rerun in an afternoon. Everything below was fixed before the code was run. Nothing was optimised, and the results are reported for every period, not the flattering ones.

Setup

  • Instrument and data: SPY, daily, 1 February 1993 (the ETF’s first full month) to 9 September 2026 — 8,459 trading days. Dividend-adjusted closes from Yahoo Finance via the yfinance library, so returns are total returns.
  • Cash: earns the 13-week Treasury bill yield (Yahoo ticker ^IRX), so sitting out is not modelled as earning zero.
  • Execution: a signal computed at the close of day t is executed at the close of day t+1. No same-day fills.
  • Costs: 5 basis points per side for spread and slippage as the base case; 0, 10 and 20 basis points reported as sensitivity. Commission zero, which is what IBKR Lite and Alpaca charge on US equities.
  • Constraints: long only, no leverage, no shorting, whole position in or out.
  • Benchmark: buy and hold SPY over the same days.
  • Sharpe and Sortino: computed on returns in excess of the T-bill, annualised from daily data.

Rule A — the breakout rule this article used to recommend. Enter long when the close exceeds the highest high of the prior 20 days and volume exceeds 1.5 times its 20-day average. Exit when the close falls below the lowest low of the prior 10 days. This is a Donchian 20/10 channel with a volume filter, the Turtle-style rule that appears in most retail guides, and it appeared here too, attached to a claimed “25–35% annual return”. The parameters are the ones the earlier text stated.

Rule B — the 10-month moving average. Faber’s rule: at each month end, hold SPY if it closed above the average of the last ten month-end closes, otherwise hold T-bills. One decision a month. The parameter is the one in the 2007 paper.

Results, full period (February 1993 – September 2026)

All strategy rows assume 5 basis points per side. “Invested” is the share of trading days with a position; “Trades/yr” is round trips per year.

StrategyCAGRVol.SharpeSortinoMax DDInvestedTrades/yr
Buy and hold SPY10.8%18.5%0.520.66−55.2%100%
Rule A: Donchian 20/10 + volume3.0%4.9%0.140.07−11.5%15%1.1
Rule B: 10-month moving average9.7%12.7%0.610.68−24.2%76%0.7

Results by sub-period

Each cell shows CAGR / maximum drawdown, at 5 basis points per side.

PeriodBuy & holdRule ARule B
1993 – 2009 (two bear markets)7.6% / −55.2%4.2% / −11.5%11.2% / −19.1%
2010 – 2019 (long bull market)13.5% / −19.3%1.2% / −7.5%6.7% / −20.9%
2020 – Sept 2026 (pandemic crash, recovery, 2022)15.4% / −33.7%2.9% / −8.2%10.0% / −24.2%

Sensitivity to transaction costs (full period CAGR)

Cost per side0 bps5 bps10 bps20 bps
Rule A3.16%3.04%2.92%2.69%
Rule B9.80%9.72%9.64%9.49%

What the numbers say

Rule A barely trades, and its trade statistics would have fooled you. The volume filter and the breakout rarely coincide on an index ETF, so the rule was in the market only 15% of the time and made 38 round trips in 33 years. Judged trade by trade, it looks respectable: a 53% win rate, an average winner of 4.1% against an average loser of 2.3%, a gross profit factor of 2.0. Judged as an account, it compounded at 3.0% a year while T-bills alone would have paid about 2.5% and the index paid 10.8%. This is the most important lesson in the article. Win rate and profit factor describe what happens when you are in a trade. They say nothing about how often you are in one, and a strategy that is right 53% of the time on 15% of the days is mostly a cash account with occasional excitement. Any claimed “25–35% annual return” for this rule was not a measurement of anything.

Rule B did what the literature says trend following does: it bought less return with much less drawdown. Over the full period it gave up about one percentage point of CAGR against buy and hold (9.7% versus 10.8%) and in exchange cut the worst drawdown from 55% to 24%. The Sharpe ratio is higher (0.61 against 0.52) because the volatility fell more than the return did. Read the sub-periods, though, and the trade-off is not stable. In 1993–2009, with two 50% bear markets to sidestep, the rule beat the index outright: 11.2% against 7.6%. In 2010–2019, a decade of sharp dips and fast recoveries, it was whipsawed eight times and gave up nearly seven points a year: 6.7% against 13.5%. Whether you would have held it through that decade is a question about you, not about the rule.

Costs were irrelevant here and would be decisive elsewhere. At 0.7 round trips a year, quadrupling the assumed cost from 5 to 20 basis points moved Rule B’s CAGR by 0.23 points. A daily-rebalanced strategy pays the same per-trade cost roughly 350 times more often. The mean reversion rule described above, if it traded on average once a week, would give up about 5% a year at 5 basis points per side and about 10% at 10. Very few documented edges are that large. This is why the transaction-cost column, not the return column, is where most retail strategies are actually decided.

What this test does not show. It is one instrument. Trend following’s published evidence rests on diversification across dozens of uncorrelated markets, and a single equity index is its weakest case, not its strongest. It uses freely available adjusted prices, which are fine for research and not adequate for execution. And it covers a period in which US equities were among the best-performing assets in the world; the same rule on Japanese equities from 1990 would tell a different story about buy and hold. None of that is a caveat on the method. It is a description of what one backtest can and cannot establish.

How to reproduce it

Rule B fits in a dozen lines of pandas. Rule A adds a loop for the entry-and-exit state. Both are specified fully above; the core of Rule B is:

import yfinance as yf, pandas as pd

spy = yf.download("SPY", start="1993-01-01", auto_adjust=False)["Adj Close"]
irx = yf.download("^IRX", start="1993-01-01", auto_adjust=False)["Close"]

ret   = spy.pct_change()
rf    = ((1 + irx / 100) ** (1 / 252) - 1).reindex(ret.index).ffill()

month = spy.resample("ME").last()
signal_m = (month > month.rolling(10).mean()).astype(int)
signal   = signal_m.reindex(ret.index, method="ffill").fillna(0)

held   = signal.shift(1).fillna(0)            # act at the next close
cost   = held.diff().abs().fillna(0) * 0.0005 # 5 bps per side
strat  = held * ret + (1 - held) * rf - cost

cagr = (1 + strat.dropna()).prod() ** (252 / strat.dropna().size) - 1

Change the instrument, the lookback or the cost assumption and rerun. If a small change in the lookback — 8 months, 12 months — changes the conclusion, you have learned something more valuable than the original result.

Position sizing: the Kelly formula, done correctly

Once a strategy has survived the tests above, the question becomes how much of the account to risk on it. The Kelly criterion, from John Kelly’s 1956 paper at Bell Labs, gives the fraction that maximises long-run compound growth. For a trade that wins with probability p, gains W (as a fraction of the stake) when it wins and loses L when it loses:

f* = p − (1 − p) × L / W

An earlier version of this article published a Python function for this that was wrong. It computed edge / odds with edge = p·W − (1−p)·L and odds = W / L, which simplifies to f* × L — the right answer multiplied by the average loss. It agrees with Kelly only when the average loss happens to equal 1. With W and L expressed as returns, it understates the fraction by a factor of one over L: a hundredfold for a 1% average loss. A cap of 2% per trade on the output hid the error, because the function almost never produced a number large enough to hit it. The corrected version:

def kelly_fraction(p, avg_win, avg_loss, fraction=0.25):
    """
    p         probability of a winning trade
    avg_win   average gain on winners, as a fraction of the stake (0.041 = 4.1%)
    avg_loss  average loss on losers, as a positive fraction (0.023 = 2.3%)
    fraction  how much of full Kelly to bet; 0.25 to 0.5 is common practice
    Returns the fraction of capital to risk. Negative means: no edge, do not trade.
    """
    full = p - (1 - p) * avg_loss / avg_win
    return max(full, 0.0) * fraction

Put Rule A’s actual trade statistics through it: p = 0.526, W = 4.13%, L = 2.27%. Full Kelly is 0.526 − 0.474 × 0.549 = 26.6% of capital per trade. The broken formula returned 0.6%. That is not a rounding difference; it is the difference between a position and a typo.

Now the reason nobody who understands Kelly bets full Kelly. Those three inputs are estimates from 38 trades. The standard error on the win rate alone is about 8 percentage points, so p is somewhere between roughly 0.45 and 0.61 at one standard error — and across that range the Kelly fraction runs from 14% to 39%. Overestimate the edge and bet full Kelly, and you are betting more than optimal, which on Kelly’s own curve means lower growth with much higher variance; bet twice the optimal fraction and the expected growth rate is zero. Edward Thorp’s practical guidance, and MacLean, Thorp and Ziemba’s later work on fractional Kelly, is to bet a quarter to a half of the computed fraction precisely because the inputs are uncertain. At quarter Kelly, Rule A’s sizing comes to about 6.6% of capital per trade, which a 2% hard cap — a perfectly reasonable rule of its own — would then override. Both numbers are defensible. “Whatever the buggy function returned” was not.

Sizing is where most accounts are actually lost, which is why we treat it as a separate subject. The arithmetic of drawdown and recovery is in position sizing and risk of ruin, and the spreadsheet below does the calculations, including fractional Kelly and a losing-streak table, on your own numbers.

How to tell a real edge from a lucky backtest

None of the tests below is exotic. Together they are the difference between a result and a finding, and skipping any one of them is how the “25–35%” figures get written.

  1. Write the hypothesis before touching data. “Prices under-react to information over months” is a hypothesis. “Whatever lookback maximises the Sharpe ratio” is a search. Bailey and colleagues’ result is that the search will always find something.
  2. Fix the parameters from the literature or from a separate training period. Then test on data neither you nor the paper had seen. If the training period is 2000–2015, the test is 2016 onward, once.
  3. Use point-in-time data. Survivorship bias — testing on today’s index constituents — flatters any stock-selection rule, because the failures have already been removed. For a single ETF this does not arise; for a stock universe it is the first thing to check.
  4. Charge costs at the turnover you actually generate, using your broker’s spreads on the instruments you actually trade, and add a slippage estimate you would be embarrassed to defend as too high.
  5. Apply a multiple-testing haircut. If you looked at twenty variants before settling on one, demand a t-statistic near 3 (Harvey, Liu and Zhu), or compute the deflated Sharpe ratio Bailey and López de Prado propose. The more you searched, the higher the bar.
  6. Check the neighbours. A 10-month rule that works while 9- and 11-month rules do not is a coincidence, not a strategy.
  7. Paper trade with real data feeds and real fill logic long enough to see the strategy in more than one regime, then deploy at a size where being wrong is a lesson and not an event.

There is no universal threshold for Sharpe ratio, win rate or drawdown that makes a strategy “ready”, and any article that gives one is guessing. A trend follower can be excellent with a 38% win rate; a mean-reversion rule can be worthless at 72%. A Sharpe of 0.8 on a hypothesis with a century of independent evidence is worth more than a Sharpe of 2.5 on one you found last Tuesday. The relevant question is never whether a number clears a line. It is how much independent evidence — trades, regimes, markets — the number rests on. Our piece on the Sharpe ratio covers what it does and does not measure.

Tools: what a retail stack looks like in 2026

This section is illustrative, not an endorsement, and the details change; the dates below are when we checked them.

  • Brokers with APIs. Interactive Brokers has no minimum deposit on IBKR Lite or Pro individual accounts (a $2,000 balance is needed to enable margin), and offers the official TWS API with a Python client. The popular ib_insync wrapper was archived in March 2024 after its author’s death; the maintained community continuation is ib_async. Alpaca offers commission-free API trading of US equities, options and crypto, with a paper-trading environment; it covers US markets only. Checked September 2026.
  • Python. 3.9 reached end of life on 31 October 2025. Use 3.12 to 3.14, subject to what your backtesting framework supports.
  • Research. pandas and NumPy are enough for everything in this article. Event-driven frameworks such as Backtrader or Zipline-reloaded become worth their setup cost once you need realistic order handling, partial fills or portfolio-level rules.
  • Data. Free adjusted daily prices from Yahoo Finance are adequate for research on liquid ETFs and inadequate for anything intraday or for execution, where you should be using your broker’s feed. Check adjusted prices against a second source before trusting a result that depends on a few days.

Frequently Asked Questions

Which algorithmic trading strategy is the most profitable?
There is no answer that holds across markets and periods. The family with the strongest and longest published evidence is trend following, followed by cross-sectional momentum, but in the 2010s a plain index fund beat both. The right question is which strategy has evidence you can verify, at a turnover your broker’s costs allow, and that you would keep running through its bad decade.

How long does it take for an algorithm to become profitable?
There is no reliable timetable, and any source that gives one in days or weeks is guessing. A strategy is judged by the independent evidence it accumulates — number of trades, number of market regimes, out-of-sample periods — not by whether it has made money after 30, 60 or 90 days. A monthly rule needs years of live data before its results mean anything; that is the cost of trading rarely.

Can algorithmic trading replace a salary?
For the great majority of retail traders, no, and the arithmetic explains why. A strategy with a genuinely good long-run Sharpe ratio of 0.6 on a $100,000 account produces returns whose year-to-year variability is larger than the expected return itself. Living from it means selling assets during drawdowns, which is the one thing that turns a temporary loss into a permanent one. Treat algorithmic trading as a way to run a rules-based portfolio without emotion, not as an income.

How much capital do I need to start?
Technically, very little: the brokers above have no minimum and fractional shares exist. Practically, enough that a realistic position size is a whole number of shares and that fixed costs, data subscriptions and your own time are a small fraction of the amount at risk. Below a few thousand dollars, paper trading teaches you the same lessons for free.

Do I need to be able to program?
Yes, at the level of the code in this article, and mostly for the testing rather than the trading. No-code platforms can execute a rule; they cannot tell you whether the rule survived an honest backtest, and the platforms that report backtests for you are the ones with the strongest incentive to report flattering ones.

What is a good Sharpe ratio or win rate for an algorithmic strategy?
Neither has a good value in isolation. Trend-following strategies with strong long-run records commonly win fewer than 40% of trades; mean-reversion rules often win more than 70% and lose money after costs. A Sharpe ratio is only comparable between strategies with similar turnover, similar histories and similar amounts of searching behind them. Buy and hold on the S&P 500 delivered about 0.5 over the 33 years tested above; treat claims well above 1.5 on a simple daily rule as a sign of a problem with the test.

Sources

Advertisement

Join the discussion

Your email address will not be published. Required fields are marked *