Markets › European Indices · DAX index, daily closes (Yahoo Finance), dividends included
RSI(2) Strategy on the DAX: Does Connors' Rule Work Outside the US?
Larry Connors' RSI(2) rule passed every one of our gates on SPY. We ran it, unchanged, on the German DAX index from 1988 to 2026, with costs and a random control, to see whether it holds on a market outside the US.
Buried · No proven edgeIn Germany, any dip in an uptrend did just as well.
Variants tried: 2 · Passed every gate: 0 · Best: 3 of 6 · Holdout opened: yes (partly used before)
Short answer: not by our rules. Larry Connors' RSI(2) rule, which passed every gate on SPY, made +0.15% a trade after costs on the DAX from 1988 to 2026, but it lost from 2006 to 2015, and random buys on any dip in an uptrend did as well (45th percentile), so it passed three of our six gates.
00The verdict in three lines
- Does the RSI(2) strategy work on the DAX? Not by our rules. It made +0.154% a trade after costs on 270 trades from 1988 to 2026, with 66.3% winners, but it lost from 2006 to 2015 and passed only three of our six gates.
- Any dip did as well. Random buys on dips in an uptrend, with the same exit, made +0.168% a trade in the median run. On SPY the RSI(2) signal beat every random run; on the DAX it beat 45% of them.
- A second, partly independent market. Fewer than a third of the DAX trades started on or the day after a SPY trade. The SPY result stands, but it did not carry over to Germany; new data is still the real check.
01Why we ran it on the DAX
Our RSI(2) test on SPY passed all six gates, and a replication on QQQ pointed the same way, more weakly. QQQ shares many of its dips with SPY, so the owner asked for a new market. The DAX, Germany's largest listed companies (30 until 2021, 40 since), is another broad stock index with a long history, in another country and currency. We applied the same rules without changing anything: same thresholds, same exit, same costs, same period boundaries, gates and control.
- Buy at the close when the DAX closes above its 200-day average and its 2-day RSI is below 10 (RD2-10) or below 5 (RD2-5).
- Sell at the first close above the 5-day average. No stop, no target, no time limit.
The rules are explained step by step in the SPY article. Written into the specification before the run: the DAX lost more than half its value twice (2000 to 2003 and 2007 to 2009), so a rule with no stop can sit through deep open losses, and it closes at 17:30 Frankfurt, before the US session ends, so a US afternoon fall often reaches it the next day.
02How we tested it
Data: DAX daily closes from Yahoo Finance (^GDAXI), 30 December 1987 to 20 October 2026, the last day of the SPY test. The DAX is a performance index: dividends are reinvested in the index itself, so its daily changes are total returns, like our SPY returns with dividends. An automated check found no duplicate, weekend or stale day; 311 weekdays are missing, all exchange holidays (one of them Reformation Day 2017) except two Fridays at the end of 1988 and 1989, across which no trade was open. The closes match a separate DAX quote file within 0.07% on a typical day (3,088 days compared). Signals start on 27 December 1988, once the 200-day average exists. Costs: 0.04% per round trip, with 0.10% shown. Periods: 1988 to 2005, 2006 to 2015, and a holdout from 2016 that no daily DAX test had used, but it is only partly fresh: two of our intraday DAX tests covered those years, and we knew the SPY and QQQ results. First-period bar t ≥ 2.5. Control: random buys on days when the DAX is above its 200-day average and below its 5-day average, with the same exit and the same number of trades, 500 times. Engine: the SPY engine unchanged, with 24 checks of the DAX data and of the engine against an independent re-implementation (rdx_selftest_result.txt).
03Results: does the RSI(2) strategy work on the DAX?
| Variant | Buy when | Trades | Win rate | Gross per trade | Net per trade | Sum of trades | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|
| RD2-10 | RSI(2) below 10 | 270 | 66.3% | +0.194% | +0.154% | +41.5% | 1.22 | Buried |
| RD2-5 | RSI(2) below 5 | 138 | 72.5% | +0.392% | +0.352% | +48.6% | 1.58 | Buried |
| Variant | 1988 to 2005 (trades) | 2006 to 2015 (trades) | Holdout* 2016 to Oct 2026 (trades) | t, first period | PF, second period | PF, holdout |
|---|---|---|---|---|---|---|
| RD2-10 | +0.322% (119) | -0.131% (75) | +0.170% (76) | 1.80 | 0.87 | 1.30 |
| RD2-5 | +0.468% (63) | +0.272% (39) | +0.236% (36) | 1.90 | 1.34 | 1.44 |
* Partly used before: no daily DAX test had used these years, but two intraday DAX tests covered them, and the SPY and QQQ results were known.
RD2-10 made money in the first period, but not clearly enough (t 1.80), then lost from 2006 to 2015 (-0.131% a trade, profit factor 0.87), and earned +0.170% a trade in the holdout. RD2-5 was positive in every period, but with 63, 39, 36 trades it fell short of 50 in two of them.
04RSI(2), or any dip?
| Variant | Trades | Real net per trade | Random dips, median | Random dips, 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| RD2-10 | 270 | +0.154% | +0.168% | +0.006% to +0.320% | 45.0 |
| RD2-5 | 138 | +0.352% | +0.182% | -0.064% to +0.422% | 87.6 |
This is the gate that matters most here. Random buys on any day when the DAX was above its 200-day average and below its 5-day average, sold at the same exit, made +0.168% a trade in the median run, a little more than RD2-10's +0.154%. Buying dips in an uptrend paid on the DAX; waiting for the RSI(2) extreme added nothing. The stricter RD2-5 did better than most random runs (87.6%), not the 95% we require. On SPY both versions beat every random run.
05The DAX next to SPY and QQQ
| RSI(2) below 10 | SPY (RS2-10) | QQQ (RQ2-10) | DAX (RD2-10) |
|---|---|---|---|
| Years of signals | 1994 to 2026 | 2000 to 2026 | 1988 to 2026 |
| Trades | 257 | 213 | 270 |
| Net per trade | +0.616% | +0.492% | +0.154% |
| Win rate | 75.9% | 69.0% | 66.3% |
| Profit factor, all years | 2.91 | 1.99 | 1.22 |
| Percentile against random dips | 100.0 | 93.2 | 45.0 |
| Gates passed | 6 of 6 | 3 of 6 | 3 of 6 |
The edge shrinks from SPY to QQQ to the DAX. Of the 236 DAX trades from 1993, when the SPY data starts, 45 began on the same day as a SPY trade and 27 on the next DAX day, so the DAX is a more independent check than QQQ was; on it, the RSI(2) signal did no better than random dips.
06RSI(2) on the DAX against buy and hold
Growth of 1 euro from 27 December 1988, log scale. The strategy pays the cost on every trade and earns no interest while out of the market (we used no euro cash-rate series; the SPY test earned US T-bill interest); buy and hold is the DAX itself, dividends included.
| From December 1988 | Growth | Per year | Largest fall (at daily closes, open losses included) | Volatility | Time invested |
|---|---|---|---|---|---|
| RD2-10, no interest while out | ×1.40 | 0.9% | -28.5% | 7.6% | 11.2% |
| RD2-5, no interest while out | ×1.56 | 1.2% | -23.1% | 5.1% | 5.4% |
| Buy and hold the DAX | ×18.85 | 8.1% | -72.7% | 21.7% | 100.0% |
| Crash (the SPY test's dates) | RD2-10 | RD2-5 | Buy and hold |
|---|---|---|---|
| 2000-02 dot-com | +1.1% | +3.1% | -67.2% |
| 2008-09 financial crisis | -14.5% | +0.9% | -53.7% |
| 2020 Covid | -7.0% | -7.0% | -36.6% |
| 2022 rate hikes | +1.5% | +0.0% | -24.0% |
Holding the DAX fell 72.7% from March 2000 to March 2003; the strategy's largest fall, at daily closes with open losses included, was 28.5%, from October 2005 to August 2011. Over the whole period holding grew far more (×18.85 against ×1.40): a strategy in the market 11.2% of the time, earning nothing while out, gives up almost all of the long rise.
07How solid is it?
| Variant | Net per trade | At 0.10% cost | At the close, entries from 1994 | Next-open fills, entries from 1994 | Sum without the 10 best | Sum without the 20 best | Median days held | Longest | Worst open loss at a close (open positions included) |
|---|---|---|---|---|---|---|---|---|---|
| RD2-10 | +0.154% | +0.094% | +0.174% | +0.253% | +7% | -20% | 3 | 17 | -21.9% |
| RD2-5 | +0.352% | +0.292% | +0.426% | +0.601% | +18% | -4% | 3 | 11 | -21.6% |
Without its 10 best trades RD2-10 kept +7% in total; without the 20 best it was -20%. Buying at the next morning's open instead of the close did better on the same signals (+0.253% against +0.174% a trade, from 1994, when Yahoo's DAX opens start); this is a side result, not tested as a rule. The worst open loss (open positions included) came in the sell-off of August 2011: 21.9% down at a close, on a trade entered on 28 July 2011.
08By year
| Year | RD2-10: sum of trades (trades) | RD2-5: sum of trades (trades) |
|---|---|---|
| 1989 | -0.35% (12) | +0.66% (5) |
| 1990 | -1.31% (9) | -2.73% (5) |
| 1991 | -0.96% (7) | -0.82% (3) |
| 1992 | -2.04% (6) | -0.61% (4) |
| 1993 | +6.37% (8) | +2.67% (5) |
| 1994 | -4.96% (4) | -4.84% (2) |
| 1995 | +3.32% (5) | +3.37% (4) |
| 1996 | +1.14% (8) | -0.00% (4) |
| 1997 | +17.17% (9) | +14.33% (5) |
| 1998 | +1.64% (6) | +2.07% (4) |
| 1999 | -2.71% (7) | -0.16% (5) |
| 2000 | +7.10% (11) | +7.72% (6) |
| 2002 | -0.99% (2) | +1.60% (1) |
| 2003 | +4.91% (4) | +0.64% (1) |
| 2004 | +3.54% (9) | +0.28% (3) |
| 2005 | +6.48% (12) | +5.34% (6) |
| 2006 | -2.18% (5) | -4.42% (3) |
| 2007 | -2.73% (8) | +7.18% (7) |
| 2008 | -12.74% (1) | no trade |
| 2009 | +5.04% (6) | -2.19% (2) |
| 2010 | +7.74% (12) | +1.66% (2) |
| 2011 | -17.37% (6) | -16.78% (5) |
| 2012 | +12.69% (9) | +6.56% (5) |
| 2013 | +12.48% (12) | +9.39% (6) |
| 2014 | -7.51% (10) | +4.30% (5) |
| 2015 | -5.22% (6) | +4.91% (4) |
| 2016 | -0.32% (4) | -0.86% (2) |
| 2017 | +3.40% (11) | -0.59% (5) |
| 2018 | -6.55% (1) | -5.15% (1) |
| 2019 | +0.91% (6) | +1.39% (2) |
| 2020 | -7.71% (7) | -2.30% (3) |
| 2021 | +2.52% (7) | +1.35% (3) |
| 2022 | +2.98% (3) | no trade |
| 2023 | +6.68% (10) | +3.28% (5) |
| 2024 | +1.78% (8) | +3.53% (4) |
| 2025 | +5.62% (9) | +1.86% (5) |
| 2026 (to 20 Oct) | +3.62% (10) | +6.00% (6) |
RD2-10 lost in 16 of its 37 years with trades. It had no trade in 2001, when the DAX stayed below its 200-day average, and its worst years were 2011 and 2008.
09Verdict by variant
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| RD2-10 | No proven edge | 1, 3, 4 | Buried |
| RD2-5 | No proven edge | 2, 3, 4 | Buried |
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of random dips in an uptrend | 5. Positive without the 10 best trades | 6. Holdout net positive (partly used) |
|---|---|---|---|---|---|---|---|
| RD2-10 | 270 | fail | pass | fail | fail | pass | pass |
| RD2-5 | 138 | pass | fail | fail | fail | pass | pass |
No proven edge: a small profit, but not convincing by our bars, and no better than random dips in an uptrend. RD2-5 also failed the trade count, as on SPY and QQQ.
TWhat this shows, and what to take into your own tests
What the results show
- The RSI(2) rule that passed every gate on SPY made +0.154% a trade after costs on the DAX, on 270 trades from 1988 to 2026, with 66.3% winners, but it lost from 2006 to 2015.
- Random buys on any dip in an uptrend, with the same exit, made +0.168% a trade in the median run: the RSI(2) signal added nothing on the DAX (45th percentile), while on SPY it beat every random run.
- The stricter version (RSI(2) below 5) made +0.352% a trade and beat 87.6% of the random runs, short of the 95% we require, with too few trades (63, 39, 36).
What remains unknown
- Whether the SPY result is specific to the US market or partly luck: one other index does not settle it.
- Other European indices, thresholds or exits; we changed nothing from the SPY test.
- How the rule does after 20 October 2026: that data has not been looked at for any of the three markets.
Why it was buried
Three gates failed. The rule lost from 2006 to 2015 (profit factor 0.87), its first period was not clear enough (t 1.80, 2.5 needed), and random dips in an uptrend did as well (45th percentile). It made a small profit overall, so the label is no proven edge: on the DAX, buying a dip in an uptrend paid a little, and waiting for an RSI(2) extreme added nothing.
What you can apply to your own tests
- Test a rule that passed on one market on another market that does not share the same days. Fewer than a third of the DAX trades started on or just after a SPY trade, and the edge did not carry over.
- Compare with random entries in the same market state. On the DAX, being in an uptrend and buying any dip explained the whole result.
- Treat a rule that survived on one market as a hypothesis, not a law of markets.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
Does the RSI 2 strategy work on the DAX?
Not convincingly in our test: 270 trades from 1988 to 2026 at +0.15% each after costs, with 66% winners, against +0.62% on SPY with the same rules. It lost from 2006 to 2015 and passed three of our six gates.
Is the DAX a good market for buying dips?
Buying dips in an uptrend made a little: random buys on days when the DAX was above its 200-day average and below its 5-day average made +0.17% a trade with the same exit. The RSI(2) extreme added nothing on top of that.
Why did the RSI 2 strategy work on SPY but not on the DAX?
We do not know. The DAX is a different market (fewer than a third of its trades started on or right after a SPY trade), and on it the RSI(2) signal did no better than random dips; one market is not enough to say whether the SPY result is specific to the US or partly luck.
How was the RSI 2 strategy tested on the DAX?
With the SPY rules unchanged, on DAX daily closes from Yahoo Finance (a performance index, dividends included) from 1988 to 2026, 0.04% of costs per round trip, a control of random buys on dips in an uptrend, and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
10Check our arithmetic
rdx_spec.md
rdx_lib.js · rsy_lib.js · rsy_ref.js · rdx_selftest.js · rdx_run.js · rdx_parse.js · rdx_datacheck.js
control_audit_lib.js · dax_data.js · gh_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · sma200_lib.js
rdx_datacheck.txt · rdx_selftest_result.txt · rdx_results.txt · rdx_summary.json
Code provenance: our own code; the engine is the one of the SPY test, unchanged.
11Data notes
Source. Yahoo Finance daily values of the DAX (^GDAXI), downloaded once on 12 November 2026; Yahoo has no separate opening prices before 14 December 1993. Cross-check against the DAX index CFD quotes of our intraday DAX tests (HistData.com) on the days both hold. Fills at the close (and, as a check, at the next open from 1994); a fixed 0.04% cost. No interest while out of the market. The holdout is only partly fresh.
12Corrections
None since publication.