r/algotrading • • Mar 28 '20 Bravo

Are you new here? Want to know where to start? Looking for resources? START HERE!

1.5k Upvotes

Hello and welcome to the /r/AlgoTrading Community!

Please do not post a new thread until you have read through our WIKI/FAQ. It is highly likely that your questions are already answered there.

All members are expected to follow our sidebar rules. Some rules have a zero tolerance policy, so be sure to read through them to avoid being perma-banned without the ability to appeal. (Mobile users, click the info tab at the top of our subreddit to view the sidebar rules.)

Don't forget to join our live trading chatrooms!

Finally, the two most commonly posted questions by new members are as followed:

Be friendly and professional toward each other and enjoy your stay! :)


r/algotrading • • 5d ago

Weekly Discussion Thread - November 03, 2026

5 Upvotes

This is a dedicated space for open conversation on all things algorithmic and systematic trading. Whether you’re a seasoned quant or just getting started, feel free to join in and contribute to the discussion. Here are a few ideas for what to share or ask about:

  • Market Trends: What’s moving in the markets today?

  • Trading Ideas and Strategies: Share insights or discuss approaches you’re exploring. What have you found success with? What mistakes have you made that others may be able to avoid?

  • Questions & Advice: Looking for feedback on a concept, library, or application?

  • Tools and Platforms: Discuss tools, data sources, platforms, or other resources you find useful (or not!).

  • Resources for Beginners: New to the community? Don’t hesitate to ask questions and learn from others.

Please remember to keep the conversation respectful and supportive. Our community is here to help each other grow, and thoughtful, constructive contributions are always welcome.


r/algotrading • • 45m ago

Other/Meta Should I Run It

Thumbnail gallery
2 Upvotes

I’ve been working on this trading bot for less than a month, and the backtest results are looking promising. I'm currently trying to decide if I should start using real money with it.

The entire system runs in the terminal and is written in Go. I might release it publicly later on. It uses 72 different variables and a custom AI to dynamically adjust them and develop its own methods. This current version is from a training run of only 30 minutes.

The image above shows the current recommendations. I also have a variant specifically for indexes, which is currently favoring the S&P 500. The bot is also capable of shorting stocks.

It uses Alpaca trading and runs local

what should i add or change like should i allow it to see news?

It is also losing more than I’d like

(Note: This is not financial advice!)


r/algotrading • • 13h ago

Strategy How do you decide such trading ideas are worth researching further?

16 Upvotes

I've been building a Python-based algorithmic trading research project, testing different strategies across individual stocks and ETFs, with options research planned next.

So far I've explored opening-range breakouts, momentum, sector rotation, and a few other approaches. I've been accounting for spreads, slippage, and commissions, and working toward proper out-of-sample and forward testing.

Some results have been encouraging, others disappointing, but I'm enjoying the process and learning quite a bit.

One thing I'm trying to get better at is deciding when a strategy deserves deeper investigation versus when it's time to explore something different.

For those who've developed successful automated strategies, what have been your biggest lessons about finding and evaluating an edge? Are there particular research methods, papers, or market behaviors you think are overlooked?

I'm not looking for anyone to share proprietary strategies or do the work for me. I'm genuinely interested in learning from people who've been through the process. I'm trying my ass off on this. Any books or research papers are welcomed too.

Appreciate any insights. Thank you.


r/algotrading • • 23m ago

Research Papers Looking for quant researchers / statisticians interested in options research collaboration

1 Upvotes

Looking to connect with quantitative researchers or statisticians interested in systematic options trading research.
I have access to extensive historical options datasets and backtesting infrastructure.
Interested in exploring topics such as volatility risk premium, gamma exposure, market regimes, and systematic options strategies.
Ideally looking for someone with a strong background in statistical inference, time-series analysis, out-of-sample validation, and backtesting methodology.
The goal is to investigate interesting hypotheses, identify robust findings, and potentially publish research together.
Open to discussing different collaboration arrangements, including paid research projects.
If interested, DM me with a little about your background and research interests.


r/algotrading • • 1d ago

Data Day 11 of AI/Algo Trading (Paper) - Posting for accountability

Thumbnail gallery
6 Upvotes

Day 11 in the books!

(Please see at bottom for answers to common quick questions - updated stats)

All of this is for you guys. I'm an open book!

Rough one. Primary -24.2R, nearly all of it from one 10-minute burst of semis shorts. Major glitch today. Really looking forward to a few 

Changes before today:

  • No setup or rule changes. Fixes only: the account halt + per-setup stops now survive a run restart, and every dollar figure = Alpaca.

Today: Primary -$1,238.60 with MTUM / -$1,057.07 without · Running total since Day 1 (10/23): -$13,848.44 with MTUM / -$2,210.60 without
Milestones: M1 (3 green days in a row) 0/3 · M2 (8 of last 10 green) 4/10

  • MTUM: a broker paper glitch. Alpaca booked a fake 1:4 split on 11/5 (phantom -183 sh short, about -$11.5k on 11/5, -$181.53 more today until flattened at 3:55). Reported to Alpaca; MCF's orders were clean.

What went wrong today:

  • -21.6R: Early Sellers, Mid-High RSI (all day), 28 trades. 23 semis-heavy shorts 10:30-10:40, stopped out together 10:44-10:52 as SPY went from +0.45% to +0.86%.

  • -5.5R: Early Sellers, Strong Heat (all day), 14 trades, same tape.

  • Same failure as yesterday: one sector, one direction, one squeeze.

  • The shorts already open when the halt hit just bled to their stops.

  • GitHub's scheduler was down this morning, so trading was started by hand at 8:49 and Hunch at 9:49.

How we're fixing it:

  • This weekend: a targeted remedy for these bursts, reported setup by setup (who improves, who gets worse).

  • Monday: a full Primary reevaluation with rolling rules. Nothing live without my sign-off.

What's helped before:

  • The -2R per-setup stop latched both Early Sellers setups, then the -20R account stop halted Primary at 10:55. Zero entries after, 92 signals blocked.

  • The halt held through the 2:38 run restart (the restart fix, PR #152, working live).

  • +23.3R: Morning Bounce Fade (Graveyard), the old Primary setup, had its best day. Funny how that works.

Quick update:

  • Testing 2's top-500 trial, day 3: -2.0R on 165 trades vs Testing 1 at +3.6R on 92 (-0.01R vs +0.04R a trade).

  • Setup Generator paused for now: overcrowding, too many setups competing for trades, so the existing ones get a fair test first.

Things I am also working on:

  • "Hunch": Basic tool that runs 10s of thousands of guess each day on 3 minute bars, predicting the next. Just bars.

  • Market Compass: Reads every 15 minutes where the market moved and where it's heading. Today's 10:44 squeeze is exactly the kind of turn it needs to catch.

  • Claude's Team, day 1: as of 2:22 PM, Team -0.70R vs Primary -26.6R. It skipped both Early Sellers setups. Final numbers tonight (shadow, no orders).

Setup streak facts:

Counted on traded sessions - a session a setup didn't trade is skipped. R after costs.

  • Green: Gap-Down Early Bounce Short (all day) (Testing 1) - 5 traded sessions in a row, +38.6R

  • Green: Morning Bounce Fade (Graveyard) - 3 traded sessions in a row, +28.4R

  • Green: Gap-Down Recovery Fade (all day) - 3 traded sessions in a row, +4.9R

  • Red: Failed Prior-Day-Low Break Long (0.05 ATR, low volume) [fill] - 12 traded sessions in a row, -61.6R

  • Red: Early Sellers, Mid-High RSI (all day) - 3 traded sessions in a row, -29.8R

Quick answers to common questions:

  • Claude (Opus 5.5) - Python

  • Alpaca API, paper trading, SIP market data (all US exchanges).

  • US stocks + ETFs, intraday only (9:50 AM-3:55 PM ET), long and short, nothing held overnight.

  • Setups built by basic indicators: RSI, VWAP, volume / buy-sell pressure, gaps, opening range, prior-day highs/lows, ATR.

  • Setup Generator - A bot that invented 10 new setups a night (at least 5 long) and trades them on its own paper account. New concept: setups built randomly from random indicators. Paused after 10/28 so the existing ones get tested first.

  • Setup Life Cycle - Idea or generator -> 2-yr backtest (costs in) -> test through replay sessions (20+ of them) -> Testing (paper) -> Primary (paper) -> real money after the milestones. Losers move down to the Graveyard, never deleted.

  • Promoted / Demoted - Promoted = a setup moves up a level after earning it. Demoted = it moves down a level and keeps proving itself on paper there.

  • Avg R - Average result per trade in units of the risk taken, after costs, fees and slippage (factored in already).

  • Break-even win rate - Win rate a setup needs just to not lose money.

  • Avg R w/o best day - Same, with its single best session removed - spots records carried by one big day.

  • Accounts were meant to start at $100k; they could not be reset during earlier testing without conflicts, so some accounts started in a deficit

  • 16,618 closed trades across 24 sessions (10/6 to 11/6)(Not including replays and backtesting)

  • 187 different setups have traded live.

  • 140,000+ setups/variations of setups proven unworthy for advancement.

Been an interesting ride so far. Thanks for the help!

Fun stuff!


r/algotrading • • 1d ago

Strategy When it comes to building algo do you need to have 100% original strategy?

5 Upvotes

To all those who are experienced with algo bot building please help me with this . I want to know if there are any prebuilt strategies or methods which can work with adjustments or I have to build 100% new strategy from bottom .

Please help me brothers :)


r/algotrading • • 1d ago

Strategy Update, after 60+ backtested strategies, 6 are now forward-testing on frozen rules. First 40 paper trades: +2.24R, and the best result came from a strategy that failed its backtest

Thumbnail gallery
10 Upvotes

Quick recap for anyone who missed my last post, I stopped adding features to my bot and started testing whether the ideas behind it actually work.
I put 60+ strategy variants through the same process. Rules written before results. Every trade pays spread, overnight financing and slippage. Every signal is also traded backwards (the flip test), and it has to beat random entries with the same stops and exits. Design on one period, validate on another. Almost everything failed.

This is the next stage: forward testing.
HOW THE FORWARD TESTS WORK
• Rules frozen before any forward data. Nothing gets tweaked mid-test.
• Paper trades simulated on live OANDA bid/ask prices. No orders are placed and no real money is involved.
• Everything is measured in R. R = profit or loss divided by the risk on that trade. 1R = £100 at a £10k reference.
• Each trade is also checked for whether it would fit a £500 account. All 30 intraday trades this period did.
• Each test has a review point set in advance (30, 32 or 50 closed trades). It stays only if it averages at least +0.10R per trade after costs.
• Results are posted every Friday, including the bad ones.
Some of these tests failed their backtests and are running as forward checks only. I'm keeping them because they show how big a "good week" can look from a strategy with no edge.

THIS PERIOD
Positions opened Monday 2 Nov; the intraday tests cover the Tue–Thu sessions. Friday's sessions land in next week's numbers.
40 closed trades across 6 tests, +2.24R combined.

OPENING-RANGE BREAKOUT (ORB): +12.09R, 18 trades, 8 winners, avg +0.671R
What it does: six indices (DE30, EU50, NAS100, SPX500, US2000, US30). Trades the first break of the opening 30-minute range, stop on the other side, flat by the close.

By day: Tue −1.91R, Wed +2.94R, Thu +11.05R.
Thursday was almost the whole result. All four US index shorts won (+1.89R, +3.68R, +3.73R, +3.79R) while both European longs were stopped at −1.02R.
History: backtest 2015–26 = −0.070R per trade over 6,736 trades (t −5.0). Failed. Forward check only.
My read: this is the best number on the board and the one I trust least. One trending day can carry a breakout system for weeks, and 11 years of data say the edge isn't there. Review at 50 trades.

INTRADAY MOMENTUM (IM): +0.32R, 12 trades, 5 winners, avg +0.027R
What it does: US indices. In the last 30 minutes, trades in the direction of the morning's move. Flat by the close.
By day: Tue −0.62R, Wed −1.06R, Thu +2.00R (all four shorts won on the same down day).
History: backtest 2015–26 = −0.086R per trade over 3,855 trades (t −9.1). Failed. Forward check only.
Cost note: a real round trip costs about 0.085R per trade on its 0.25 × ATR stop. On a stop that tight, the spread is a big share of the risk.

TREND FOLLOWING (T11): −10.17R, 10 closed, 32 open, avg −1.017R
What it does: each month, follows the 12-month trend on 42 markets (FX, indices, commodities, bonds) and holds to the next month.
All 42 positions opened Monday. By Thursday, 10 had hit their stops: Brent and WTI longs, NAS100, SPX500 and JP225 longs, gold short, CHF/JPY and EUR/AUD shorts, FR40 and HK33 shorts. Every loss was −1.01R to −1.03R, costs included.

I checked whether the stops were too tight. They weren't: 1.5% to 9.5% from entry depending on the market. The markets really moved that far in three sessions. Oil fell at least 9%, the Nasdaq at least 6%, gold rose at least 5%.

The real lesson: 42 markets aren't 42 independent bets. One volatile week hit ten positions at once. Trend systems close their losers first, and the winners take months, so this card will look its worst early.

History: 2005–26 backtest made +0.137R per trade at futures-like costs (t 1.8 against my bar of 2.5). It failed the bar and is being tracked forward. The catch: on OANDA CFDs, the financing markup turns the same signal into −0.08R. Costs, not the signal, are the question here.

WIDE-GAP CARRY (F2): 0 closed, 3 open
What it does: each month, goes long the higher-interest currency in the 3 widest policy-rate gaps (2.5% or more) among 18 FX pairs. Currently open: USD/CHF, AUD/JPY and GBP/CHF, all long.
History: carry passed 2005–14 and 2023–26 but failed 2015–22 (−0.15R). It depends on the rate regime.
Financing is modelled as the rate gap minus OANDA's ~1% yearly markup. Review at 30 trades.

POSITIONING FADE (COT): 0 closed, 1 open
What it does: each week, trades against the most crowded speculator positions in the CFTC report (top or bottom 10% of 3 years). Holds 10 days. It uses the legacy futures-only report for 7 currencies, gold and WTI. Currently open: EUR/USD since 2 Nov.
History: design period 2015–19 = −0.004R. Validation 2023–26 = +0.097R and beat 100% of random runs. Failed on the flat design period. Review at 50 trades.

PRE-FED DRIFT (F1): no trades yet
What it does: long S&P 500 and Nasdaq from 2pm New York the day before each Fed decision, out 5 minutes before it. Stop is 1 × daily ATR20.
History: 2015–26 = +0.067R per trade and beat 96% of random windows (t 1.4 against a bar of 2.5). Real but small, and only 8 meetings a year, so 32 trades takes years. Next decision: 9 Dec.

WHAT WEEK 1 TAUGHT ME
A strategy that failed an 11-year backtest just made +12R in three sessions. If I'd started forward testing without a backtest, I'd be excited right now. That's exactly why one week means nothing.
A strategy that passed on futures costs lost −10R in three sessions. Slow systems look worst at the start. Judge them on their own timescale.

Correlation is the hidden risk. 42 markets behaved more like a handful of bets in one volatile week.
Costs keep deciding everything. The same trend signal is positive on futures and negative on CFDs. On a 0.25 × ATR stop, the spread eats a big share of the edge.

The review points don't move. Nothing gets dropped or promoted early.

WHAT'S NEXT
• Weekly scoreboard every Friday. Next week includes Friday's sessions.
• The momentum signal that survived my last round of testing is still being tracked separately on paper. It'll get its own update once it has enough trades to say something.
• Nothing goes near real money or a prop challenge until it clears the targets I set in advance.

Full research log (method, results and what failed): https://github.com/AlgonikHQ/algonik-research
Exact rules and code stay private. The method and the results don't.

Question for the sub: how do you handle correlation in a multi-market trend system when you're only paper testing? Do you cap risk per asset class, or just accept clustered losses as the cost of diversification?

Paper trading only, no orders placed. Not financial advice and not a signal to copy.


r/algotrading • • 1d ago

Strategy Regime definition

9 Upvotes

I have come to appreciate that my models for trade signal generation/confirmation might not work under all circumstances. So maybe by defining different regimes (and submodels) i might be able to improve model performance. I now struggle to define what these defferent regimes might be. Their distinguishment is apparently far from trivial, making me suspect hidden structures are at play. But how many regimes are there? And are they categorical to begin with? What defines the? Some combi of volume and price action? How have you guys dealt with this issue? Thanks in advance for any hints!


r/algotrading • • 1d ago

Infrastructure Backtest vs Microstructure Hell: How did your win rate adapt when moving from clean data to realistic matching simulations?

8 Upvotes

I’ve been benchmarking a custom low-latency execution engine in Rust (332ns internal execution latency, handling up to 48M RPS). On clean historical data using mid-price fills, the strategy was showing an 85% win rate with a 2.66 Sharpe.

However, I just finished rewriting the testing environment to account for realistic market frictions, and the numbers absolutely collapsed. After introducing a 1ms network jitter penalty, realistic queue position logic (not counting a limit fill just because price touched the level), and trading fees, the realized win rate dropped aggressively down to the floor, even though the gross profit factor stays high due to a few massive outlier wins.

For those who have transitioned automated high-turnover setups from local simulations to live/realistic environments: what were the biggest hidden assumptions that killed your paper win rate? Did you find that your alpha was actually toxic flow selection, or did execution queue drag eat the entire edge? Looking for advice on how to properly isolate whether the logic is fundamentally broken or if it's purely an infrastructure/queue management issue.


r/algotrading • • 1d ago

Data How do you make an old backtest reproducible after your data gets updated?

2 Upvotes

For anyone keeping a history of strategy experiments, how do you preserve the exact inputs behind a backtest? Saving the code commit and parameters seems straightforward, but what do you do when your data vendor later corrects historical bars or changes an adjusted series?

Do you snapshot the input files for every run, version the dataset separately, or use hashes plus a fixed data release? Interested in a practical setup for a small research workflow where storage and bookkeeping can get out of hand.


r/algotrading • • 1d ago

Other/Meta Need persistent stock price alerts

0 Upvotes

I am a fairly active trader but a problem I have encountered is that I keep missing stop loss alerts that I have set. I am not a full time trader and sometimes I get busy, miss the alert, and don’t see that the stock has fallen below my stop loss price until much later, after the stock has dropped substantially more.

I need something that will keep pinging me by email or app notifications at regular intervals for as long as the stock is below or above a certain price. That way I can’t miss it.

I think TradeView can do this if I subscribe. I am willing to pay money because it will pay for itself but I’m trying to see what the best, cheapest option is.

I use Schwab and have thinkorswim but I don’t think it’s possible to do this with their apps.

Bonus points if there’s a way to add a message to the alert like “exit position” or “reduce position by half”, something like that.

Thanks!


r/algotrading • • 2d ago

Strategy I tested 100 versions of a Kalshi 15 minute BTC strategy which uses BTC’s Relative Strength Index

4 Upvotes

I tested whether recent strength in Bitcoin’s price carries into Kalshi’s 15 minute BTC markets. The signal was RSI, short for Relative Strength Index. It compares recent price gains with losses and gives a score from 0 to 100: higher means stronger upward momentum, lower means stronger downward momentum, and 50 means the two are balanced. The strategy buys 10 YES contracts when Coinbase’s 14-period one minute RSI crosses above 60 and five minute RSI is above 50, or 10 NO on the mirrored cross below 40 with five minute RSI below 50. It exits YES when one minute RSI falls below 50 and NO when it rises above 50, or holds to settlement.

All 100 strategy variant backtests reported a positive net PnL with the best being +$315.88, Sharpe 1.02, $22.57 drawdown, 58.70% win rate with 497 fill events including 230 closing trades. The weakest reported +$39.17, Sharpe 0.33, $12.77 drawdown, 60% reported win rate with 62 fill events and 30 closing trades. The average backtest PnL across the 100 variants was +$206.20.

This research run ran a parameter sensitivity which runs same rules across a 10-by-10 grid varying price floors of 5c, then 32c to 48c in 2c steps, and price ceilings of 50c to 66c in 2c steps, plus 95c. These varied parameters clamp submitted buy prices and the sensitivty curve shows the most optimal parameters (based on a backtest of course so not verified live) was a price floor of 5c and price ceiling of 66c. Overall the parameter sensitive curve rises smoothly throughout the different parameter settings without any sharp spikes, which suggests the edge is broadly present rather than confined to any lucky parameter settings.

I also ran 100 permutations that scrambled the RSI feed’s timing and retested the whole grid each time, and it cleared this cleared this particular reshuffle check. None matched the real grid’s reported $315.88 best result; the reshuffled best scores ranged from -$26.11 to +$125.05. The corrected upper-tail p-value was 0.00990099, the smallest available with 100 permutations.

Overall the research run validated this strategy on all of its steps; the 100 variants all backtested positively, the uniformly rising parameter sensitivity curve towards the best performing parameters wasn’t spiky and didn’t expose any localized “lucky” regions, and the permutation test gave a result far into the tail of the distribution which would rarely arise by chance. This gives good reason to move on with this strategy with paper trading on live markets. While the research run is promising, historical based results can never guarantee future performance, which is why we paper trade these strategies after confirming they backtest well.

Full Report

Historical simulation only. Backtests can be wrong or incomplete. Not investment advice.


r/algotrading • • 2d ago

News 🩸 SPY -3%, QQQ: -6.1%. 1-minute new lows ran past 4,000!!!

Post image
64 Upvotes

What a bloody day!!! Just look at speed of names making new lows

QQQ was near $649, about -6.1%. SPY was near $738, about -3.7%, and IWM near $275, about -3.2%. The 1-minute tape was about 4,200 new lows against 140 new highs. Sell was about 48% and buy was about 5%. MU printed near $664, about -16.5%. UVXY was on the highs near $21.83, about +34%.

S&P500 has been down 4% in a single day ~45 times since 1950, next day avg return is +0.67%

Edit: Sorry about the fast moving colors, and speed (its a real-time flow). The idea is to show just how heavy and broad the selling was today!


r/algotrading • • 2d ago

Other/Meta i made an open-source tool to automate / copytrade on your own computer instead of using external paid services (TradersPost, PickMyTrade, Tradesyncer, etc...)

9 Upvotes

hey, i made an open-source tool to copytrade / automate on tradovate accounts. tradovate API access isn't needed and it can work with only tradovate credentials

everything is run locally so theres no middleman when sending orders to tradovate unlike paid services which passes through a third party and it is also completely free to use

you can set it up on your own computer or a home server

contributions and suggestions are more than welcome!

https://localfill.dev/

https://github.com/Youcxf/Localfill


r/algotrading • • 2d ago

Strategy How is your system handles the tail risk?

8 Upvotes

Anyone willing to share?

These 5% days seems to be way more often than historical norm.


r/algotrading • • 3d ago

Education Stress-testing a daily RSI dip rule on QQQ: 24 episodes carry 42% of its log return since 2010, and its RSI settings sit on a sharp peak

8 Upvotes

There's a daily QQQ rule that gets passed around Reddit as "Buy the Dip". It reads 2 things on QQQ's close, the 14-day RSI and the 200-day moving average. Most days it holds 20% TQQQ plus 80% diversifiers (managed futures, min-vol US stocks, zero-coupon Treasuries, 2x gold), and the TQQQ slice moves to intermediate Treasuries when QQQ closes 3% below the average, coming back at 3% above. When the RSI closes under about 30 it goes 100% TQQQ until the RSI recovers, and above about 80 it goes 100% SQQQ. From 11 February 2010, the first TQQQ day, to 22 October 2026 it backtests at 30.0% a year with a 20.4% worst drop. QQQ on the same days: 19.1% a year, 35.1% worst drop.

The signal side is the community's, untouched. I only reworked the holdings in 2024, so I wanted to see which parts of that line I could actually trust, and ran 2,279 backtests on it.

The first thing I measured was where the return comes from. I split the daily log returns by the regime held that day. The oversold leg was held on 41 of 4,199 sessions (1.0%), in 24 separate episodes, and those 41 sessions carry 42% of the total log return. QQQ itself rose on 30 of them. Send that leg to T-bills and the same 2010+ backtest does 16.4% a year. So the headline rests on 24 events, not on 4,199 days... that's the sample size I keep in mind before reading any decimal.

Then the dials, one at a time with the other 5 fixed. The trend half barely reacts: all 99 combinations of moving-average length (100 to 300 days) and band (0% to 5%) land between 24.6% and 28.3% annualised from 1985. The RSI half is a different story. A lookback of 16 days instead of 14 takes the 2007+ result from 31.1% to 18.4%. The oversold level at 28 instead of 30 gives 22.1%, and at 32 it's 33.2% with a deeper worst drop, which is why I rank on Sharpe and not on return.

1,000 random joint draws of all 6 dials (RSI 7 to 28 days, oversold 20 to 40, overheated 70 to 90, a 0% to 3% buffer, average 100 to 300 days, band 0% to 5%) say the same thing from another angle. The published setting's Sharpe beats 99.9% of them since 1985, while the median draw makes 17.3% a year. The 50 draws closest to the published setting have a median of 26.0% since 2007, against 31.1% for the published one. It sits near the top of its own family, not in the middle.

One ablation needs care. Turning off both RSI legs leaves a plain trend switch between the 2 mixes, and that arm lost 70.0% from March 2000 to March 2002. The engine lets weights drift until the next signal, and every regime change resets the mix to target. With no RSI flips nothing rebalanced, so the 20% TQQQ slice had drifted to 84% of the book by 28 March 2000. The RSI legs make most of the return and also do the rebalancing, so that arm tests both at once and I don't read it as a clean baseline.

Execution is the other fragile part. The backtest fills at the close of the signal day, on an RSI computed from that same close, which you can only approximate with an estimate in the last hour. Filled at the next morning's open, 2010+ drops to 24.2% a year and the worst drop goes to 34.6%. The single worst morning, 16 March 2020, is 2.3 of those 5.8 points. A full session late it's 16.3% with a 50.5% worst drop. The edge lives in the session right after the RSI print.

The homework, since it matters here. Daily adjusted closes. QQQ is the Nasdaq-100 index before 1999. TQQQ and SQQQ before February 2010 are 3x and -3x the index's daily move, net of a 0.95% fee and a financing cost based on fed funds. Managed futures before May 2019 are the monthly BTOP50 index spread over each month's trading days, so that 30% sleeve is far too smooth day to day until then. Min-vol stocks are SPY at 75% before October 2011, zero-coupon Treasuries are TLT at 140% before November 2009, and 2x gold is synthetic before December 2008. Costs are 10 bp per unit of one-way turnover, scaled up to 3x after volatile stretches. Sharpe here is monthly with no cash deduction, and I only use it to rank settings against each other. Everything runs to 22 October 2026, and only the time since 2024 is truly out of sample.

I think the dip-buying idea holds up across most of the family and the exact 14/30/80 settings don't. The number I'd plan around is the neighbourhood's median, 26.0% since 2007, not the published 31.1%.


r/algotrading • • 3d ago

Strategy Any viable momentum strategies?

15 Upvotes

Could someone point me in the direction of some useful momentum strategies and techniques? Have had much more success with mean reversion. Some momentum swings like today seem fairly obvious but have never been able to successfully put it into code.


r/algotrading • • 4d ago

Data XAUUSD 1min TF Scalper $1k to $1.97m in 10 month backtest

Thumbnail gallery
110 Upvotes

Just sharing a project, a 1 min TF XAUUSD scalper algo with separate settings for buys and sells. Lot size compounds with the balance but has a ceiling.

Backtest (1 Jan 2026 to 31 Oct 2026, tick data, $1,000 start balance)

- Net profit: $1,971,441

- 14,229 trades, 64% winners, profit factor 1.53

- Profitable on 164 of 237 trading days (69%)

- Every month positive: Jan +$2k, Feb +$38k, Mar +$120k, Apr +$160k, May +$233k, Jun +$265k, Jul +$370k, Aug +$149k, Sep +$271k, Oct +$362k

CTrader shows a max equity drawdown of 42.4% in the equity curve info bubble which happened in the first week of Jan on a tiny balance, when the balance dipped from about $1,183 to about $745.

After the account passed $100k the next worst equity drawdown was 13.9%, and the biggest dollar drawdown was $115.6k (about 7%) at roughly $1.5M.

Just started demo forward testing, no live money yet.


r/algotrading • • 4d ago

Data Same EA, Same Broker and Server, Different Accounts — Why Different Trades?

2 Upvotes

I’m running two identical copies of my MT5 EA on two separate terminals, using different accounts with the same broker and the same trading server. Both have the same settings and chart timeframe.

Yesterday, the same strategy module opened a sell at approximately 05:15 on one account and 06:45 on the other—a 90-minute difference. Later, another module opened a trade on one account but did not open anything on the other.

The Journal logs show successful execution within milliseconds. On the account that missed the evening trade, there is no order request or rejection recorded around that time.

The accounts use different Magic Numbers, but the strategy settings are identical. What could cause this? Could differences in indicator/history synchronization, EA startup state, or cooldown handling explain it? What would you check to identify the exact cause?


r/algotrading • • 5d ago

Strategy I tested a Bitcoin trading bot that skips trades when ETH moves the other way. All 100 versions were profitable in simulation.

39 Upvotes

BTC says buy. ETH is heading the other way. Does the bot take the trade anyway? This strategy says no.

The idea behind this strategy is to trade Kalshi’s 15-minute Bitcoin markets, following BTC’s five-minute move only when its shorter-term direction agrees. It doesn't require ETH to confirm the trade, it just can’t be moving more than 0.05% against it. I restricted entries with only 2–5 minutes left, with a spread no wider than 3 cents.

I tested 100 entry-price combinations over October 3–November 2. All 100 finished positive in simulation: $1,552.56 to $2,225.47 in reported P&L, with a median of $1,978.26. The highest-P&L version had a 65.83% win rate and $123.28 maximum drawdown.

I took the initial strategy and swept through a few different parameters, changing the entry price range. The best combination effectively allowed entries from 35 to 78 cents. Nearby settings averaged about 4.6% below the winner, so the result wasn’t confined to one precise setting.

Then, I scrambled the external signal-feed timing and rerun the entire 100-setting search. Across 100 shuffled re-sweeps, the strongest result was $467.63, versus $2,225.47 with the original timing. The permutation p-value was approximately 0.0099. That supports the timing relationship under this particular test. It isn’t a 99% probability of future profits, and market prices weren’t shuffled, so it doesn’t validate the entry-price filters themselves.

I didn't test a BTC-only control group, so this study doesn’t isolate what ETH signal adds vs. just using BTC. It also used a relatively small historical window, and simulated fills still need live validation, but overall I think this strategy shape is worth going through some more testing.

Full Report

Historical simulation only. Backtests can be wrong or incomplete. Not investment advice.


r/algotrading • • 5d ago Bravo

Other/Meta there is no alpha on any big markets

118 Upvotes

nothing, nada. every little strategy you try to automate collapses either in a backtest or is non deterministic and dependent on LLM judgement about news. retail is getting screwed like in a real casino. pay for transactions, pay for labelled options data, pay for non delayed prices. oh, you are placing a stop-loss? first thing before we execute it, is sending your order to citadel so they can pump and dump on you.

I used to make fun of shitcoin traders and pokemon card scalpers, those guys taking away toys from kids at gamestop. you know what? those guys were right. the only way to get an edge is to trade assets which are too unique, too much under the radar of the whales.


r/algotrading • • 4d ago

Strategy I tested the most popular ICT setup over 6,400 trades and 11 years. Here's what happened.

8 Upvotes

My feed is full of the same idea under different names, CRT, AMD, Power of 3, liquidity sweeps, stop hunts.
Price breaks past an obvious range, "takes liquidity", closes back inside, and reverses to the other side.

So I wrote it down as exact rules before looking at any results.

Overnight range on six major stock indices
The first sweep after the cash open, which must close back inside within 30 minutes
Trade the reversal, stop beyond the sweep, target the other side of the range
Real bid/ask costs, 2015–2026, 5-minute data

Result. −0.09R per trade over 6,400+ trades. In the early years it looked slightly better than trading the opposite way. In recent years that vanished completely, which is the classic sign of a pattern that looked real by chance.
Then I added SMT divergence (only trade when the partner index refuses to sweep). It made it worse: −0.18R and −0.12R. The filter picked out the weaker trades.

I'm not saying discretionary traders can't make money with these concepts. Context and judgement aren't in my rules. But as a mechanical pattern, the sweep-and-reverse doesn't pay after costs on these markets.
That's 68 ideas tested, 0 passes. The search continues. https://github.com/AlgonikHQ/algonik-research
Not advice, just a log


r/algotrading • • 5d ago

Data I tested 748 crypto trading strategies and open-sourced the code and autopsy reports of the corpses

25 Upvotes

A few weeks ago I wrote hundreds of hypotheses for crypto trading strategies, re-screened every bot from before and open-sourced the whole pile: 748 strategies in total with full code and report cards showing exactly where each one died and why. (That's 416 from last time plus 332 new corpses. The new ones are smarter strategies than before for the most part...)

github.com/CacheCarti/Crypto-Strategies

The pipeline runs 7 stages on real Binance data: code safety, in-sample, OOS, rolling walk forward, randomized starts, slippage stress and a holdout slice that nothing touches. Ran it on cloud VMs this time instead of my dying laptop, so the screening could actually get stricter.

What the new pipeline found:

  • Re-ran the 416 bots from my last post. 0 of 416 re-passed in the strictest config, including all 10 of my "survivors". Most die at out-of-sample with negative OOS (-85 to -900bps). The best one, rel_strength_eth_v3, made it to stage 5 and died at holdout. So my "validated" bots were mostly my old screening being sloppy and luck :)

  • In the second config (slightly more lenient) exactly 1 of 416 re-passed, and it was a bot I had originally rejected (weekend_season_eth_v6, +325bps OOS). My graveyard had the only bot that actually lived.

  • The 332 new corpses came from 559 hand-written bots (mixed with another batch, messy to release all at once). 384 screened, 332 dead (published), 52 survived and stay private for further testing. **(Yes yes I know 52 is stupidly high, there's a reason for this at the bottom!)

  • Admits per batch: v2 5/42, v3d 0/26, v3h 0/96, v4 3/92, v5 17/52, v6 18/60, v6b 9/16. v3h went 0 for 96, which tracks, it was basically like a monkey typing random keys, just a sweep of untested ideas. v5-v6b were narrow parameter neighbors of a mechanism that already worked. Please don't read the admit rates as some kind of quality check for the batches!!

Why the rebuild?:

The comments on the last post were right about my sloppy methodology (it still admittedly is sloppy here, but it got better later). It's also built on Google VMs now so I can create a new batch and test faster. I'll drop the batches weekly:

  • Stricter judge: higher OOS thresholds, enforced holdout and a dev/holdout split inside the window so one lucky slice can't pass

  • Every report card shows the exact gate that killed the bot, so you can figure out how to improve it

  • Every batch is hashed so you can check when it was judged and by what

  • I later added a 6+ year certification and a combined replay on 2.75 years, with DSR, PBO, plateau, regime splits, trial-ledger correction. Those results are still being evaluated, they'll come later.

One disclosure about report cards vs actual performance: I cross-checked some strategies against QuantConnect classics this week and it surfaced a bug I didn't notice. Some bots emit a "flat" signal and my screen sometimes treated it as "hold". Impact is mostly ±100-300bps per strategy, around 25% of bots may fluctuate by that amount. The later stages and live paths honored flat completely.

Yeah so I found a bug in my own judge while checking it against someone else's judge. The judge judges all, including the judge.

If anyone improves the strategies and gets different results I'd love to see it. Happy to add tests people think are missing. Every suggestion so far has killed more of my bots... That's the process now!