Request A Free Quote

MFE/MAE Tracker Explained: What the Ratio Tells You (and What It Doesn’t)

MFE and MAE measured from the signal bar close, and the tracker dashboard with median MFE/MAE ratios for long and short signals across holding periods

In February a trader posted a screenshot of his NinjaTrader performance report and wrote three letters with a question mark: “MAE, MFE, ETD?” (Caesar_Samsi, NinjaTrader forum, Feb 2026). That was the whole post. He had the columns on his screen and no idea what they were telling him.

He isn’t the only one. A year earlier another trader asked the same thing about the same report: “Is there an explanation of MAE, MFE, ETD and bars somewhere?” (James_Archer, NinjaTrader forum, Jun 2025). One reply told him to ask an AI assistant, which is fair enough for a definition. The next day he came back with the real answer: “I didn’t realize that NT staff no longer participates here. I opened a case and they explained.”

So the numbers are already on your screen and the definitions are a search away. What nobody hands you is the part that matters: what to do with them. In this article I’ll show you what the tracker measures after every signal and how the ratio on the dashboard is actually built. Then how to read it across holding periods, and the six things it ignores on purpose. By the end you’ll know which decisions this number can support and which it can’t.

What your chart forgets

A signal fires. Price moves. Some of that movement goes your way and some goes against you. By the time you look back at the chart, all you remember is where price ended up.

That gap is what the tracker fills. It records how far price swung in each direction after every signal, for every holding period you enable. Most indicators tell you when a signal happened. This module tells you what happened next, in numbers instead of impressions.

See the behaviour, not the memoryHow price has tended to move after your signals across a large sample, rather than the three examples you happen to remember.
Compare parameter setsChange one setting and watch how the balance between favourable and adverse movement changes with it, before you run it live.
Context for targets and stopsYou see how the balance shifts across holding periods. You don’t get an exact distance, and this article is clear about why.
Long against shortThe same logic often behaves differently by direction. Here the difference is visible instead of assumed.
Timing over several periodsSide-by-side periods show whether the balance builds slowly, peaks early or fades. One fixed exit can’t show you that.

None of this replaces a backtest or live testing. It is a diagnostic layer. It tells you what price did around your signal, so your decisions about targets, stops and holding time start from observed behaviour.

What Are MFE and MAE?

MFE, Maximum Favourable Excursion, is the largest move price made in the direction of your signal before the observation ended. It is the best unrealised outcome that signal produced.

MAE, Maximum Adverse Excursion, is the largest move against your signal over the same period. It is the worst drawdown you would have sat through.

Both are measured from one reference point: the close of the bar where the signal is confirmed. Together they describe the whole range price travelled, not just where it finished.

MFE/MAE Ratio = MFE ÷ MAE for a single observation. Above 1, the favourable move was bigger than the adverse one. Below 1, the opposite. The dashboard then takes the median of those individual ratios across every completed observation. That is not the same as dividing one median by another, and the Dashboard section below explains why the difference matters to you.

How MFE and MAE Are Calculated

Entry price

Every observation uses the close of the confirmed signal bar as its entry price. MFE, MAE and the ratio are all measured against that one fixed value. It does not move as the observation runs.

Tracking price movement

Once an observation starts, the tracker follows price on every bar after it. The precision is minute or tick, depending on your Calculation Precision setting. The signal bar’s own high and low are left out, because they happened before the entry price existed.

Long observationsMFE comes from the highest price reached since entry. MAE comes from the lowest.
Short observationsMFE comes from the lowest price reached since entry. MAE comes from the highest.

Both values update on the same pass through the same price data. MFE and MAE are two sides of one tracked range, not two separate calculations.

Internally, once an observation closes:

LongMFE= Max(Highest Price − Entry Price, 0)
LongMAE= Max(Entry Price − Lowest Price, 0)
ShortMFE= Max(Entry Price − Lowest Price, 0)
ShortMAE= Max(Highest Price − Entry Price, 0)

MAE is always a positive distance, whichever direction you traded. It is the size of the adverse move, not a signed loss. Those raw distances stay internal. The dashboard and the CSV show you the ratio they produce, not the distances themselves.

Why high and low, not the close

Using each bar’s high and low catches the extremes inside the bar. A signal is often followed by a sharp move that reverses before the bar closes. If the tracker only checked closing prices, that excursion would never be recorded, even though you lived through it.

Calculation Precision changes something else. Minute precision reads the high and low of the one-minute bar, which already covers the full range inside it. Tick precision rarely pushes MFE or MAE further. What it buys you is exact timing: cleaner observation boundaries and the right order of events. That matters for periods shorter than a minute, and for signals that land mid-bar.

How an observation ends

Fixed-period observationsThey close once the configured time has passed since entry, whether that is 30 minutes, an hour or four. The final numbers are locked in and stop updating.
Opposite-signal observationsThey close when a signal in the other direction appears. You are measuring price for as long as your original signal is still in force.

How the Tracker Works

Each time the indicator produces a signal, the tracker opens a separate observation for every period you enabled. They run in parallel from the same entry. This is not one observation checked at intervals.

1

30 min

Its own observation, its own MFE and MAE.

2

1 hour

Not an extension of the 30-minute one.

3

4 hours

Runs alongside both, from the same signal.

4

Opposite signal

Closes on the next opposing signal instead.

This is why the numbers across your columns don’t add up to each other. A signal can look strong at 30 minutes and weak at four hours, or the other way round. Both readings are true. They describe the same signal at different horizons.

The same independence applies across bars. If a new signal appears while observations from an earlier one are still running, both sets carry on separately. Nothing is merged or restarted. Within a single bar, though, you get one set of observations per direction. A repeated signal on that same bar does not open another.

Settings

The tracker has its own group in the indicator’s parameters panel. Here is what each field does, in the order you’ll meet them.

Setting What it does
Enable Tracker Turns the module on or off. With it off, no observations are created and no table is drawn.
Enable Opposite Signal Adds one more observation per signal. It closes on the next opposing signal instead of after a fixed period.
Calculation Precision Minute or Tick. Tick gives exact boundaries and keeps the order of events inside a bar. Minute is lighter on your machine. How far back tick data goes depends on your data provider, and it is usually shorter than minute history.
Period 1–4 Up to four independent windows. Each has Enable, a Type of Seconds, Minutes or Days, and a duration for that type.
Track Long / Track Short Signals Which direction the tracker follows. Switching one off stops observations for that side only.
Table Width (%) / Table Font Size How big the dashboard table is drawn on your chart.

Period duration is calendar time, not market time. A one-day period that starts late on a Friday reaches its end during the weekend. There is no price to check then, so the observation closes on the first price update after the market reopens. On Minute precision, a period shorter than a minute closes on the next minute update rather than at the exact second. For sub-minute periods, use Tick precision.

Dashboard

With the tracker enabled, a table appears on your chart with the aggregated result of every completed observation.

It has two rows, Long MFE/MAE Ratio and Short MFE/MAE Ratio, filled independently according to your Track Long and Track Short settings. Each column is one enabled period, plus an Opposite Signal column if you turned it on. Disabled periods don’t get a column.

Every cell holds the median ratio for that direction and period, colour-coded so you can read it at a glance.

Green — ratio above 1The favourable excursion outweighed the adverse one, on a median basis.
Red — ratio below 1The adverse excursion outweighed the favourable one.
White — no data, or exactly 1Both states share a colour, and the text tells them apart. A dash means nothing has completed yet. A “1” means favourable and adverse movement were equal. Expect blank cells on longer periods early on, or on any period that hasn’t gathered enough closed observations.

The calculation is cumulative. There is no rolling window and no time limit. Every completed observation is added and stays, from whatever chart history was loaded when you started the tracker through everything that happens live afterwards, until you change a setting.

How the ratio is calculated:
Ratio = Median(MFE₁/MAE₁, MFE₂/MAE₂, …, MFEₙ/MAEₙ)
Each completed observation gets its own ratio first. Only then does the tracker take the median of those ratios. Dividing a median MFE by a median MAE would give you a different number. Doing it this way keeps one extreme observation from dragging the whole figure, which an arithmetic mean would not. If an observation had no adverse movement at all, an internal epsilon stands in for zero, so the ratio stays a very large finite number instead of breaking. Those observations still count. In the rare case where price didn’t move either way, the ratio comes out as zero.

Export. A small control next to the table writes the current results to a CSV. You get the same ratios you see, for all periods and both directions, plus a full dump of the indicator’s settings at that moment. The underlying distances and the individual observations are not included. The file mirrors your dashboard, not the raw data behind it.

How to Interpret the Results in Practice

A ratio above 1 is a description, not a promise

A median above 1 means that, across the observations measured, favourable movement after your signal tended to be larger than adverse movement. That is a description of how price behaves around the signal. It says nothing about your entry timing, your exits, your position management or your costs, and those decide whether the movement ever reaches your account.

Here is the honest version of what this number is. It does not tell you whether a signal is profitable. It tells you how much you had to sit through before the move went your way. Those are different questions, and only the second one is measured here.

Reading the periods against each other

Looking along one row shows you how the balance shifts with time. Strong at 30 minutes and weaker at four hours suggests the good part happens early. Stronger at the longer periods suggests it builds. Neither result hands you an optimal holding time, and both are worth testing before you change how long you hold.

Long against short

The two rows are tracked separately and often disagree. A signal that behaves well long is not guaranteed to behave the same way short. Check both rows before you treat your signal as symmetric.

The Opposite Signal column

This column measures price from your signal until the indicator produces one in the other direction, rather than over a fixed window. When that opposite signal arrives, it closes every active Opposite Signal observation on the side it replaces. Your fixed periods are untouched and keep running on their own clock.

Using this for targets and stops

The ratio will not give you a distance. It shows the balance between favourable and adverse movement, not how large either was in ticks. What you can take from it is relative: whether a longer hold tends to help or hurt, and whether long and short differ enough to treat separately. Sizing the actual target and stop still comes from your own read of the instrument you trade.

Sample size, and what we don’t show you

A ratio built on a handful of observations deserves less weight than one built on hundreds. There is a catch here worth knowing. Neither the dashboard nor the CSV shows how many observations are behind a figure, so you have to judge that from how long the tracker has been running.

The cumulative design has the same edge. Nothing ages out, so last month’s signals and this morning’s sit in the same median. Values also belong to the instrument, the loaded history and the settings that produced them, precision included. Two charts with different setups are not comparable, however similar the numbers look.

Limitations

The tracker measures how price moved after a signal. It does not simulate a trade. Six things it leaves out, deliberately.

CommissionRaw price movement only. Broker fees are not taken off MFE, MAE or the ratio.
SlippageEntry sits at the signal bar’s price, with no allowance for the fill you’d really get.
SpreadMeasured against one price series, not the bid and ask separately.
Partial exitsOne observation runs from start to finish. Scaling out along the way isn’t modelled.
Trailing stopsMAE records the deepest adverse move at any point, even if a trailing stop would have taken you out first.
Position scalingEach observation is one fixed-size hypothetical position. Adding or reducing isn’t modelled.
Real executionNo orders are placed. The tracker works from price data alone, so fill rates, rejections and requotes never appear in it.

So read the ratio as a description of price behaviour after your signal, useful for comparing signals, periods and directions against each other. It is not a projection of what your strategy, with its own entries, exits and risk rules, would have made.

One thing you can do this week: run the tracker on the signal you already trade, with your usual holding time as one period and double that as another. If the second column is the better one, your exits are early. That is a question the chart alone was never going to answer.

The module ships inside the Nordman indicators that produce signals, including the Liquidity Sweeps Indicator and the CVD Trapped Traders Indicator. The settings and the dashboard are identical wherever you find it. Need this logic wired into your own strategy? We develop NinjaScript to order → NinjaTrader developers

FAQ

Can several observations run at once?

Yes. Every enabled period, up to four plus Opposite Signal, starts its own observation the moment a signal appears. They all run in parallel and none of them share data.

What if a new signal appears before the last one finishes?

On a different bar, both sets continue independently. A new signal in the same direction doesn’t cancel, restart or merge anything. On the same bar you get one set per direction, and a repeated signal there adds nothing.

Why are some cells empty?

Nothing has completed yet for that direction and period. Expect it on longer periods soon after you enable the tracker, and on signals that fire rarely.

Does it work on historical signals?

Yes. It processes the signals inside the history loaded on your chart. How far back that goes depends on your loaded data, and on tick precision it depends on how much tick history your provider keeps.

Why doesn’t a high ratio guarantee a profitable strategy?

Because it only compares favourable movement with adverse movement after a signal. Whether a real position captures that movement depends on your entry timing, your exit rules, commission, slippage and spread.

Are active observations in the dashboard?

No. Only completed ones count towards the median. Active observations keep updating internally and change nothing on screen until they close.

What happens when I change a setting?

The tracker recalculates from scratch with the new settings. Results from before the change are not mixed into the new figures.

Sources referenced in this article:

  1. NinjaTrader Community Forum, “What are these in Strategy Performance?”, Feb 2026, posts by Caesar_Samsi (#1) and Mark (#2): discourse.ninjatrader.com/t/5800
  2. NinjaTrader Community Forum, “Understand the trade performance report”, Jun 2025, posts by James_Archer (#1, #3) and vipinb (#2): discourse.ninjatrader.com/t/3125
  3. Nordman Algorithms. MFE/MAE Tracker module, settings reference and dashboard behaviour, product documentation.

This article describes how the MFE/MAE Tracker module is calculated and displayed. It is provided for informational purposes and does not constitute trading advice. The MFE/MAE Ratio reflects historical price behaviour around signals and does not account for commission, slippage, spread or real order execution, as set out under Limitations above. Forum quotations are reproduced verbatim from public threads for illustration and do not constitute endorsement. Past price behaviour is not indicative of future results. Trading leveraged instruments carries a high level of risk and may not be suitable for all investors. Full Risk Disclosure