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.

DAX · daily closes, dividends included · buy when RSI(2) < 10 (or < 5) above the 200-day average, sell at the first close above the 5-day average · the SPY rules unchanged · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

In Germany, any dip in an uptrend did just as well.

BornFrozen 12 Nov 2026 (rdx_spec.md), before any RSI(2) value on the DAX was computed
Died12 Nov 2026

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?

VariantBuy whenTradesWin rateGross per tradeNet per tradeSum of tradesProfit factorVerdict
RD2-10RSI(2) below 1027066.3%+0.194%+0.154%+41.5%1.22Buried
RD2-5RSI(2) below 513872.5%+0.392%+0.352%+48.6%1.58Buried
Variant1988 to 2005 (trades)2006 to 2015 (trades)Holdout* 2016 to Oct 2026 (trades)t, first periodPF, second periodPF, holdout
RD2-10+0.322% (119)-0.131% (75)+0.170% (76)1.800.871.30
RD2-5+0.468% (63)+0.272% (39)+0.236% (36)1.901.341.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?

VariantTradesReal net per tradeRandom dips, medianRandom dips, 5th to 95thPercentile (95 needed)
RD2-10270+0.154%+0.168%+0.006% to +0.320%45.0
RD2-5138+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 10SPY (RS2-10)QQQ (RQ2-10)DAX (RD2-10)
Years of signals1994 to 20262000 to 20261988 to 2026
Trades257213270
Net per trade+0.616%+0.492%+0.154%
Win rate75.9%69.0%66.3%
Profit factor, all years2.911.991.22
Percentile against random dips100.093.245.0
Gates passed6 of 63 of 63 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

×1×2×5×10×2019901995200020052010201520202025validationholdout*RD2-10, no interest while outBuy and hold the DAX

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 1988GrowthPer yearLargest fall (at daily closes, open losses included)VolatilityTime invested
RD2-10, no interest while out×1.400.9%-28.5%7.6%11.2%
RD2-5, no interest while out×1.561.2%-23.1%5.1%5.4%
Buy and hold the DAX×18.858.1%-72.7%21.7%100.0%
Crash (the SPY test's dates)RD2-10RD2-5Buy 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?

VariantNet per tradeAt 0.10% costAt the close, entries from 1994Next-open fills, entries from 1994Sum without the 10 bestSum without the 20 bestMedian days heldLongestWorst open loss at a close (open positions included)
RD2-10+0.154%+0.094%+0.174%+0.253%+7%-20%317-21.9%
RD2-5+0.352%+0.292%+0.426%+0.601%+18%-4%311-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

YearRD2-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

VariantCauseGates failedVerdict
RD2-10No proven edge1, 3, 4Buried
RD2-5No proven edge2, 3, 4Buried
VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.5 on development4. Above the 95th percentile of random dips in an uptrend5. Positive without the 10 best trades6. Holdout net positive (partly used)
RD2-10270failpassfailfailpasspass
RD2-5138passfailfailfailpasspass

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

Frozen specificationWhy this test, what was known before (the SPY and QQQ results, the DAX crashes), the data check, the rules, costs, periods, gates and control, dated before any RSI(2) value on the DAX was computed.
rdx_spec.md
CodeThe DAX loader, the SPY engine it reuses unchanged, the independent re-implementation, the self-test, the run (node rdx_run.js), the script that reads the Yahoo file and the data check. Needs the DAX prices, which we do not republish.
rdx_lib.js · rsy_lib.js · rsy_ref.js · rdx_selftest.js · rdx_run.js · rdx_parse.js · rdx_datacheck.js
Shared codeLoaders and statistics shared with our other tests.
control_audit_lib.js · dax_data.js · gh_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · sma200_lib.js
ResultsThe data check, the self-test, the console output of the run and all numbers.
rdx_datacheck.txt · rdx_selftest_result.txt · rdx_results.txt · rdx_summary.json
Trade logs (CSV)Every trade: entry and exit close, trading days held, gross and net %, worst open loss.
RD2-10 · RD2-5

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.

+More tests and guides