Markets › European Indices · DAX index CFD quotes (HistData, 1-minute)
DAX Fibonacci Pullback Strategy Backtest: a YouTube Trend Day-Trading Rule, 2011 to 2026
Daily and 1-hour trend, a break of the previous day's high, and a limit order at the 61.8% Fibonacci level, with a 50-point stop and a 100-point target: tested on every DAX trading day it allowed, with costs and a control.
Buried · No proven edgeIt bought the 61.8% dip after a break of yesterday's high. Random days did better.
Variants tried: 2 · Passed every gate: 0 · Holdout opened: yes (already used once)
Short answer: not in our test. The YouTube rule (daily and 1-hour EMA uptrend, a break of the previous day's high, a buy limit at the 61.8% Fibonacci level, a 50-point stop and a 100-point target) lost before costs on the DAX from 2012 to 2026, -3.32 points a trade over 327 trades, and the same entries on other days did better.
00The verdict in three lines
- The YouTube video "Easy Trend Day Trading Strategy DAX" (Mindfully Trading, December 2025) walks through one long DAX trade: a daily and 1-hour uptrend on the 50 and 200 EMAs, a new high above the previous day's high, then a buy limit at the 61.8% Fibonacci level of the morning move, a 50-point stop and a 2R target. The presenter says she did not take that trade herself. We turned the steps into fixed rules and tested them on every DAX trading day they allowed from late 2011 to October 2026, without 15 June 2020 to 1 December 2023, when our data file held another index (see the data section), long only as in the video and long and short, with 2 points of costs a trade.
- Both versions were buried, and both lost before costs: long only -1,739 points after costs over 327 trades (-3.32 a trade before costs), long and short -2,700 points over 391. In the development years the losses were steady enough to give t-statistics of -2.23 and -2.59.
- The same entries on other days did better (percentile 8.8 and 2.0 of the control): buying the dip after a break of yesterday's high picked worse days than chance. The 100-point target was reached on only 11.9% of the long trades.
01From the video to fixed rules
| Step in the video | Our rule |
|---|---|
| Daily: price above the 50 and 200 EMA, the 50 above the 200; a green background from the RSI of a paid indicator | Previous day's close > EMA(50) > EMA(200) on daily closes. The indicator's RSI rule is not shown, so it is left out. |
| 1-hour: a change of behaviour, a new high of day above the previous day's high, the 50 EMA above the 200 | The first 15-minute close above the previous day's high, between 09:15 and 12:00 Frankfurt, with EMA(50) > EMA(200) on the last completed 1-hour bar. |
| 15-minute: Fibonacci on candle bodies from the latest pullback low to the current high; a buy limit at 62% | On today's 15-minute bodies: H = the highest body top up to the trigger, L = the lowest body bottom from 09:00 up to and including the bar of H (often the same bar); a buy limit at H - 0.618 x (H - L), live until 13:59. |
| A 50-pip stop and a 2R target, London morning | A stop 50 points below the limit level and a target 100 points above it (2R), both measured from the level; otherwise closed at the 17:30 close. |
Shorts, in the long-and-short version, mirror every step. One trade a day at most. Two variants: DFIB-L and DFIB-LS. Fibonacci pullbacks have been tested before on this site (on EUR/USD and in an ES scalping rule), so the development t-statistic needed is 2.5. Our anchors and trigger are one reading of a discretionary method; on her chart she may have chosen differently on some days.
02Data and costs
The same DAX data as our opening range breakout test: HistData.com's 1-minute quotes of a DAX index CFD, 2011 to 30 October 2026, with the times checked against the 09:00 Frankfurt open, the Xetra holidays left out and missing minutes never filled. The EMAs use the cash session (09:00 to 17:30 Frankfurt), the same in every year; the video's chart also includes overnight hours. The 200-day EMA needs 200 days of data, so the first possible trade is in October 2011.
A coding error, found before publication: a review of this page found that both of our implementations measured the stop and the target from the fill price, while the specification measures them from the limit level (rule 6). The two differ on the 98 long trades that filled below the level. Both were fixed and the test was run again; the verdicts did not change, and this page reports the corrected run (the run log of the specification gives the numbers of both).
A data error, found after our first run: from 15 June 2020 to 1 December 2023 the file does not hold the DAX but another index, at the level of the Euro Stoxx 50 (about 2,900 to 4,500 points, while the DAX stayed above 11,000). It is why the long-only version of our first run found no trade in 2021: the 200-day average mixed the two price levels. We removed those days, kept every rule and the dates of the periods, and ran the test again; this page reports the second run, and both runs are in the run log of the specification. A 200-day average cannot run across a gap of three and a half years, so the daily and 1-hour averages start again after it and need 200 days and 200 hours, which puts the first possible trade after the gap on 17 September 2024. Periods: development 2011 to 2018, validation 2019 to 12 June 2020, holdout from December 2023 (trades from September 2024) to October 2026; the holdout had been used once, by the opening range test.
Costs: 2 index points a round trip (scenarios in the data notes), or 0.040 R of the 50-point risk. Engine check: dfib_selftest.js checked the EMAs by hand, the removed days and the restart of the averages after them, hand-built days (the trigger and its window, the anchors on bodies, the limit fill and its expiry, stops, targets, both in one minute, the close, a missing minute, a short), and both variants trade by trade against an independent re-implementation (dfib_selftest_result.txt).
03Results
Results in DAX index points. The 95% range is the Wilson interval for the win rate. The drawdown is on closed trades.
| Variant | Version | Trades | Net after costs | Net per trade | Gross per trade | Net per trade in R | Winners (95% range) | Profit factor | Drawdown on closed trades | Verdict |
|---|---|---|---|---|---|---|---|---|---|---|
| DFIB-L | long only, as in the video | 327 | -1,739 points | -5.32 | -3.32 | -0.106 R | 40.7% (35% to 46%) | 0.79 | -2,027 points | Buried |
| DFIB-LS | long and short | 391 | -2,700 points | -6.91 | -4.91 | -0.138 R | 37.9% (33% to 43%) | 0.74 | -2,859 points | Buried |
Cumulative net result by month, in index points. * Holdout already used once, by our DAX opening range test. The shaded months are not in the test.
By period
| Variant | Development 2011-2018 (trades) | Validation 2019 to June 2020 (trades) | Holdout* Sep 2024 to 2026 (trades) | Development t | Validation PF |
|---|---|---|---|---|---|
| DFIB-L | -1,358 points (193) | -340 points (42) | -41 points (92) | -2.23 | 0.65 |
| DFIB-LS | -1,984 points (250) | -676 points (49) | -41 points (92) | -2.59 | 0.48 |
Validation is short, January 2019 to 12 June 2020, and the long-only version traded 42 times in it, fewer than the 50 trades each period needs.
04From setups to trades
| Variant | Days with enough history | Daily trend in the trade's direction | Break of the previous day's high or low by 12:00 | Orders (1-hour trend agrees) | Filled (share of orders) |
|---|---|---|---|---|---|
| DFIB-L | 2,706 | 1,500 | 554 | 467 | 327 (70.0%) |
| DFIB-LS | 2,706 | 1,836 | 670 | 563 | 391 (69.4%) |
05Where the trades ended
| Variant | Target (100 points) | Stop (50 points) | Closed at 17:30 | Winners | Before costs, per trade | After costs, per trade |
|---|---|---|---|---|---|---|
| DFIB-L | 11.9% | 45.9% | 42.2% | 40.7% | -0.066 R | -0.106 R |
| DFIB-LS | 12.8% | 50.4% | 36.8% | 37.9% | -0.098 R | -0.138 R |
The video aims for two times the risk. After a fill early in the session (most long fills came in the first hour), 100 points was rarely reached before the close: most trades ended at the stop or at 17:30, often with a small gain or loss. A rule with a 2R target needs more than a third of winners before costs; here only 39 of the 133 winning long trades reached the full target.
06By year
| Year | DFIB-L trades | DFIB-L net | DFIB-LS trades | DFIB-LS net |
|---|---|---|---|---|
| 2011 | 0 | – | 3 | -129 points |
| 2012 | 33 | -104 points | 36 | -216 points |
| 2013 | 43 | -120 points | 43 | -120 points |
| 2014 | 30 | -645 points | 31 | -697 points |
| 2015 | 17 | +82 points | 22 | -170 points |
| 2016 | 20 | -89 points | 41 | -399 points |
| 2017 | 42 | -321 points | 42 | -321 points |
| 2018 | 8 | -162 points | 32 | +68 points |
| 2019 | 33 | -344 points | 36 | -495 points |
| 2020 | 9 | +4 points | 13 | -180 points |
| 2024 | 12 | +212 points | 12 | +212 points |
| 2025 | 54 | -68 points | 54 | -68 points |
| 2026 | 26 | -185 points | 26 | -185 points |
2020 counted to 12 June; no trade was possible from then until 17 September 2024 (the file holds another index until December 2023, then the averages need 200 days); 2026 counted to 30 October.
07Longs, shorts and the best trades
| Variant | Longs: trades / net | Shorts: trades / net | 10 best trades | Net without them |
|---|---|---|---|---|
| DFIB-L | 327 / -1,739 points | – | +1,028 points | -2,767 points |
| DFIB-LS | 327 / -1,739 points | 64 / -961 points | +1,041 points | -3,741 points |
08Is it the setup or the market?
The benchmark is a moved-entry control: each day's trade (its fill minute and direction, or no trade) is moved, with all days together, by one random offset of at least 5% of the days, and entered at that minute of the real day at the market, with the same 50-point stop, 100-point target, close and costs. 500 runs with fixed seeds; the bar is the 95th percentile of the average net result per trade. The real trades ranked near the bottom: the setup chose worse days than random ones.
| Variant | Trades | Real average per trade | Control median | Control 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| DFIB-L | 327 | -5.32 | -0.96 | -6.13 to +3.69 | 8.8 |
| DFIB-LS | 391 | -6.91 | -1.20 | -6.12 to +3.56 | 2.0 |
09The gates
| 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 the control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used once) |
|---|---|---|---|---|---|---|---|
| DFIB-L | 327 | fail | fail | fail | fail | fail | fail |
| DFIB-LS | 391 | fail | fail | fail | fail | fail | fail |
10Verdict by variant
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| DFIB-L | No proven edge | 1, 2, 3, 4, 5, 6 | Buried |
| DFIB-LS | No proven edge | 1, 2, 3, 4, 5, 6 | Buried |
Both versions lost before costs, so costs were not the cause, and both lost in the holdout too (-41 points each: no short trade came up in it).
Not tested: the 70% and 79% levels of her zone, other stops and targets, the overnight hours, the RSI of her indicator.
TWhat this shows, and what to take into your own tests
What the results show
- Buying the 61.8% pullback after the DAX broke the previous day's high lost money before costs: -3.32 points a trade long only, -4.91 long and short.
- The same entries placed on other days did better: the real trades ranked at percentile 8.8 and 2.0 of the control.
- The 2R target was reached on only 11.9% of the long trades; most ended at the stop or at the close.
What remains unknown
- The presenter's own chart reading: her structure, anchors and the RSI of her paid indicator are discretionary or not shown, so we test one mechanical reading.
- Other Fibonacci levels of her zone (70% and 79%), other stops, or trading with the overnight hours.
- Exchange prices: these are CFD quotes from one feed.
Why it failed
After a fill at the 61.8% level, the 50-point stop was hit 45.9% of the time and the 100-point target only 11.9%, and the fills lost 3.32 points a trade on average before costs. 40.7% of the long trades ended in profit, but only 39 of those 133 reached the target; the rest were gains at the close, smaller than 100 points.
What you can apply to your own tests
- Turn a chart example into rules and test it on every day the rules allow, not on the day in the video.
- Count how often the target is actually reached before the close; a 2R target that is rarely hit is not a 2R strategy.
- Compare with the same entries on other days: here random days did better than the setup.
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 Fibonacci 61.8% pullback work on the DAX?
Not in our test: after a break of the previous day's high, buying the 61.8% retracement of the morning move lost 3.32 points a trade before costs and 5.32 after, over 327 trades from 2012 to 2026.
How often did the 2R target get hit?
On 11.9% of the long trades. 45.9% ended at the 50-point stop and the rest at the 17:30 close.
What is the optimum trade entry (OTE) in Fibonacci trading?
A zone of the 62%, 70% (often given as 70.5%) and 79% retracement levels, where some traders expect a pullback to end. The video places its order at the top of that zone, about 62%; we tested a limit at 61.8%.
How was the DAX Fibonacci strategy tested?
On 1-minute DAX index CFD quotes from 2011 to 2026 with the times checked against the Frankfurt open and the days when the data file held another index (15 June 2020 to 1 December 2023) removed, 2 index points of costs a trade, rules written and dated before the data was run, results split into development, validation and holdout periods (the holdout used once before, by the DAX opening range test), a control that moves the same entries to other days as the benchmark, and every variant reported. Read the protocol.
11Check our arithmetic
dfib_spec.md
dax_data.js · dfib_lib.js · dfib_ref.js · orbd_ref.js · dfib_selftest.js · dfib_run.js
control_audit_lib.js · em_lib.js · gh_lib.js · hourly_lib.js · ma_lib.js · rb_lib.js · rsi2_protocol.js
dfib_selftest_result.txt · dfib_results.txt · dfib_summary.json
DFIB-L · DFIB-LS
data_manifest.md
Code provenance: our own code, written from the steps shown in the video. No third-party source code, and none of the paid indicator, is used or published.
12Data notes
Missing minutes (rule 3). A trade is flagged if a minute is missing between its trigger and its exit. Removing them changes no verdict:
| Variant | Trades | Flagged and removed | Net per trade, points | Verdict |
|---|---|---|---|---|
| DFIB-L | 327 | 28 | -5.32 → -6.35 | Buried → Buried |
| DFIB-LS | 391 | 28 | -6.91 → -7.88 | Buried → Buried |
Costs. The average net result per trade, in points, with other costs (the gates use 2 points):
| Variant | 1 point | 2 points (used) | 3 points |
|---|---|---|---|
| DFIB-L | -4.32 | -5.32 | -6.32 |
| DFIB-LS | -5.91 | -6.91 | -7.91 |
Both versions lose at every cost, including zero: the loss is in the entries.
13Corrections
None since publication.
+More tests and guides
- Dax opening range breakout strategy
- Fibonacci retracement strategy backtest
- Fibonacci scalping strategy
- Day trading strategies backtested: this test next to the other day-trading tests
- Free prop firm challenge calculator
- What all the backtests found so far
- The backtesting protocol
- How to backtest a trading strategy without fooling yourself
- Backtesting glossary