Published September 23, 2026

MFE and MAE Analysis: How to Measure Trade Excursions Without Optimizing in Hindsight

Measure maximum favorable and adverse excursion consistently, read capture and give-back correctly, and test stop or management ideas without fitting them to past trades.


Maximum favorable excursion (MFE) is the largest open profit a trade reached between entry and exit. Maximum adverse excursion (MAE) is the largest open loss it reached over the same window. MFE and MAE analysis records both for every closed trade in one consistent unit, usually multiples of the planned risk (R), and then compares them with what each trade actually returned. From those numbers you can see how far winners went against you before working, how much open profit was given back, and whether losing trades were in profit first. The comparison describes how your past trades moved. It does not tell you where a stop or target should sit, because excursions are recorded only inside the exits you actually used, and a threshold chosen by looking at them is fitted to that sample.

This article covers how to measure excursions and read them. Whether a particular exit followed the rule written before entry is a separate, process question, answered by exit quality diagnosis. Recomputing past trades under a different stop or target is covered by stop-loss and profit-target simulation. Excursion data feeds both, but it is not the same as either.

What are MFE and MAE in trading?

For a long trade, MFE is how far the highest price reached while the position was open rose above the entry price. MAE is how far the lowest price over the same period fell below it. For a short trade the directions reverse. Each is a distance, so it cannot be negative: a long trade that never traded above entry has an MFE of zero, not a negative MFE, and a trade that never went against you has an MAE of zero.

  • Long: MFE = max(0, highest price while open − entry price); MAE = max(0, entry price − lowest price while open).
  • Short: MFE = max(0, entry price − lowest price while open); MAE = max(0, highest price while open − entry price).

Both are recorded as positive distances (or zero), then converted into a unit that can be compared across trades.

The concept is older than most trading-journal software. John Sweeney’s 1997 book on maximum adverse excursion presented it as a way to measure price excursion from a fixed entry point and check whether that behavior showed any consistency, before using it to set loss points.1 That order matters. Excursion data is a description of how price moved around your entries, and it is useful only to the extent that the description is stable.

Platforms use different names and definitions for the same idea:

  • TradeStation’s strategy performance report calls the two measures run-up and drawdown, defined as a trade’s maximum profit or maximum loss potential during the trade, including commissions and slippage if specified.2
  • Tradervue separates position MFE and MAE (the largest interim profit and loss for the position) from price MFE and MAE (the largest favorable and adverse price movement, independent of position size).3
  • TradeStation also reports exit efficiency: how close the exit price was to the best possible exit price during the trade, from 0% to 100%.4

Because the definitions differ, excursion figures exported from two tools, or from one tool with different settings, are not directly comparable. Decide on one definition and keep it.

How to measure MFE and MAE consistently

An excursion number depends on choices that are easy to leave implicit. Write each one down once and apply it to every trade.

  1. Window. Measure from the entry fill to the final exit fill. Price movement after the exit is not part of MFE or MAE. If you want to know what happened afterward, that is a replay question and needs data from after the exit.
  2. Unit. Convert each excursion into R, the distance from entry to the stop that was planned before entry. That requires the planned stop to be written down at entry, which is one reason a pre-trade checklist that records it is worth the extra field. Where no stop was planned, a volatility unit such as a multiple of average true range at entry is a workable substitute, but do not mix units within one sample.
  3. Price data resolution. Excursions read from bars inherit the bars’ resolution. The high or low of the bar containing your entry may have printed before you were filled, and the extreme of the exit bar may have printed after you were out. Tradervue, for example, calculates MFE and MAE from 1-minute price data and does not count the extremes of the 1-minute bars in which the entry and exit occur.3 Whatever rule you use, use the same resolution for every trade.
  4. Price series. State whether excursions are measured on traded prices or on the side of the quote the position would have exited on. The two can differ by the spread, which is material on small excursions.
  5. Scale-ins and partial exits. When size changes during a trade, price excursion (per unit), position-level MFE and MAE (in currency, over the changing position), and a size-weighted excursion are different quantities and can disagree. Pick one for the analysis. One simple convention for scaled positions is to measure price excursion from the initial entry and normalize it by the initial planned-risk distance. Label it as price excursion, because it is not the same as position-level MFE or MAE after size changes.
  6. Costs. Decide whether fees and slippage are included, and record realized results on the same basis as the excursions.
  7. Gaps. An excursion that happened across an overnight or weekend gap was real exposure, even if no trade printed at the intermediate prices. Keep it, and mark it so the gap trades can be reviewed separately.

A trade record that supports the analysis needs, at minimum: entry and exit time and price, direction, the planned stop and target, the realized result in R, MFE and MAE in R, and how the trade ended (stop, target, time rule, or manual exit). If you already classify exits with the five-state diagnostic, keep that classification as a separate field.

Which measures to derive from MFE and MAE

Raw excursions become useful when they are set against the realized result. Four derived measures cover most questions.

MeasureDefinitionWhat it describesWhere it breaks down
Heat (MAE in R)MAE divided by planned riskHow far a trade went against you before it endedCapped near 1R on every trade that hit its stop
MFE in RMFE divided by planned riskHow much open profit the trade offeredCapped at the target on every trade that hit its target
Capture ratioRealized result ÷ MFE, for trades with a positive resultHow much of the available open profit a winner keptMeaningless for losers: negative, and unstable when MFE is small
Give-back (peak-to-exit deterioration)MFE − realized result, in RHow far the result fell from the trade’s best open point before the exitEquals open profit surrendered only on profitable trades; on a losing trade it also includes the move from breakeven into the loss, so read winners and losers separately

Two of those limits come from the same source. MFE and MAE are conditional on the observation window created by the exit actually taken: once a trade is closed, there is no excursion observation beyond that point. Fixed stop and target exits additionally bound one side of the observed excursion at those levels. A trade stopped at 1R cannot show an MAE much beyond 1R, and the stop exit provides no information about adverse excursion after it. A trade closed at its target cannot show an MFE beyond the target, and provides no information about favorable excursion past it. Those observations are censored: the excursion over a longer holding period would be at least what was recorded, by an unknown amount. Manual and time-based exits also end the window, but not at a preset price level, so they cut the observation short without capping it at a known threshold. That distinction decides which questions excursion data can answer, and it comes up again below.

How to read excursion patterns

The two standard views plot each trade’s excursion against its realized result: MAE on one axis and result on the other, then MFE against result. TradeStation’s report draws both as scatter graphs, with winning and losing trades marked separately.5 Three patterns are worth checking for.

Winners that ran well inside the stop. If almost every winning trade’s MAE stayed far below 1R, the sample suggests that trades which later worked rarely needed the full stop distance. That is a hypothesis about the stop, not a finding. The winners’ heat was observed under the stop actually used. It can help screen a tighter fixed stop, by showing which trades’ adverse excursion crossed the proposed level, but it cannot show what would have happened beyond the original exit, so it says nothing about a wider stop. Rules that move the stop during the trade depend on the order of events inside it, which the MFE and MAE extremes do not record.

Losers that were in profit first. A losing trade with a large MFE went meaningfully in your favor before reversing through the stop. A cluster of these is the pattern that management rules, such as moving the stop after a given open profit, are meant to address. Whether such a rule would have helped depends on the order of events inside each trade and on the winners it would also have cut short, which excursions alone do not settle.

Low capture on a particular kind of exit. If trades closed by a time rule or by hand keep a much smaller share of their MFE than trades closed at the target, the difference is worth a closer look. Capture on target exits is at or near 100% by construction, because the measurement window ends at the target, so compare like with like: manual exits against manual exits over time, not manual exits against target exits.

Worked example: twelve trades

Consider a hypothetical sample of twelve long trades. Each was planned with a stop at 1R below entry, a target at 2R above it, and a flat-by-session-close rule. The trader also closed some trades by hand. Figures are in R; trade 7’s stop filled with slippage.

TradeHow it endedResultMFEMAECaptureGive-back
1Target+2.0R2.0R0.3R100%0.0R
2Target+2.0R2.0R0.7R100%0.0R
3Stop−1.0R0.4R1.0R—1.4R
4Manual+0.8R1.6R0.2R50%0.8R
5Stop−1.0R1.4R1.0R—2.4R
6Session close+0.5R0.9R0.4R56%0.4R
7Stop−1.1R0.1R1.1R—1.2R
8Target+2.0R2.0R0.5R100%0.0R
9Manual+0.6R1.2R0.1R50%0.6R
10Stop−1.0R0.2R1.0R—1.2R
11Session close−0.4R0.3R0.8R—0.7R
12Manual+1.1R1.3R0.6R85%0.2R

The sample returned +4.5R. Several readings are supported by the table itself:

  • Winners’ heat stayed at or below 0.7R. All seven winners had an MAE of 0.7R or less.
  • One loser was well in profit first. Trade 5 reached +1.4R before reversing to the stop. Its 2.4R give-back is the largest in the sample, but only 1.4R of it was open profit surrendered; the other 1.0R is the move from breakeven into the loss.
  • Manual exits kept about 61% of their open profit. Trades 4, 9, and 12 offered 4.1R of combined MFE and kept 2.5R. Two of the three kept exactly half.
  • Capture is undefined for five trades. Four of them lost the full stop, and trade 11 closed at a loss by the session rule. Averaging a capture ratio across all twelve would mix those in and produce a number with no meaning.

Now the tempting step. Winners never went more than 0.7R against, so a trader might propose a 0.75R stop. The MAE column makes that proposal easy to score, because a tighter stop only changes trades whose MAE reached the new level, and every excursion in the table happened before the trade’s actual exit. Trades 3, 5, 7, and 10 would have lost 0.75R instead of 1.0R or 1.1R. Trade 11 would have been stopped for −0.75R instead of closing at −0.4R. On these twelve trades, before any additional slippage, the result improves by 0.75R.

That number is weaker evidence than it looks, for three reasons:

  1. The level was chosen from the same data it is scored on. 0.75R was picked because it sits just above the largest winner’s heat. Trade 2 cleared it by 0.05R. On the next winner that goes 0.8R against before working, the new rule converts a +2R trade into a −0.75R loss.
  2. The data cannot test the opposite change. Four losers are censored at the stop. Their MAE says nothing about whether any of them would have recovered under a 1.25R stop, so the sample can compare tighter stops with the current one, but not wider ones.
  3. A twelve-trade sample provides too little evidence to treat a 0.75R in-sample improvement as a stable effect. How many trades a comparison of this kind needs is the subject of trading data statistical reliability.

The example shows what excursion data does well: it identifies which trades a proposed change would touch, and in which direction. It does not show that the change is an improvement.

How to test a management idea without optimizing in hindsight

Excursion charts make it tempting to read the right stop straight off the plot. TradeStation’s documentation, for instance, describes its MAE graph as best used to determine trailing stops, placed where they capture most winning trades while limiting profit erosion.5 That is a reasonable place to start looking. The risk is in how the level gets chosen. A stop placed just outside the winners’ heat on one sample is, by construction, the level that sample favored.

Two known effects push in the same direction. Bailey, Borwein, López de Prado, and Zhu showed that the probability of an overfit backtest rises with the number of configurations tried on the same data, and that a spuriously strong result can be reached after testing relatively few alternatives.6 Scanning an excursion chart for the best stop level is a form of that search, even when no software is involved. And once outcomes are known, they look more predictable than they were: Fischhoff found that people told how an event turned out judged that outcome as more likely than people who were not told, and were largely unaware of the shift.7 Every price path in an excursion chart is already known.

A short protocol keeps the analysis useful:

  1. Write the hypothesis in terms of the rule, with a reason that does not come from the chart. For example, “moving the stop to breakeven after +1R will reduce losses on trades like trade 5.” The reason might be where the setup’s premise fails, or a volatility measure you already use.
  2. Check which direction the data is censored in. A tighter fixed stop or a closer fixed target can be screened from the excursions you have, because a trade is affected only if its MAE or MFE reached the new level. Wider stops and farther targets cannot, because trades that ended at the current levels carry no information past them. Dynamic rules, such as breakeven, trailing, or move-the-stop-after-X rules, and changes to both levels at once, depend on which level was reached first, so they need the intratrade price path, not only its extremes.
  3. Count both sides. List the trades the change would help and the trades it would hurt. A breakeven rule that saves trade 5 would also stop out any winner that came back to entry before working. With MFE and MAE alone you often cannot tell which came first, so those trades need the bars in order.
  4. Split the sample. Form the hypothesis on older trades and check it on recent ones that played no part in forming it. Or treat the whole analysis as hypothesis generation and test the rule on trades that have not happened yet.
  5. Run the full replay separately. Scoring a changed rule trade by trade, with fill and ordering assumptions stated, is the job of a stop and target replay, not of the excursion table.
  6. Adopt changes prospectively. Write the new rule into the plan with a start date, and compare its results on trades taken under it with those taken under the old one.

Where excursion analysis meets exit review

Excursion data measures what price offered. It does not say whether the trader followed the plan, so it should not overwrite a process classification. A pressure-driven early exit that happened to close near the top of the move still departed from the plan. A target exit with low capture on a trade that ran far beyond the target still followed it.

The two records work well side by side. Once exits are classified against the written rule, as in a post-trade review, you can segment capture and give-back by classification. If exits that departed from the plan keep a consistently smaller share of MFE than exits that followed it, over a sample large enough to mean something, the gap is a measured description of what those departures cost in open profit. That result is a finding about behavior, and it supports revisiting how the plan handles open profit. It does not reclassify any individual exit after the fact.

Common mistakes in MFE and MAE analysis

MistakeWhat it looks likeRepair
Treating excursions as uncensored”No trade that hit my stop would have recovered”Remember stop exits bound MAE, target exits bound MFE, and no exit shows price after it; use post-exit data for wider-level questions
Averaging capture across all tradesA single capture ratio that includes losersCompute capture on winners only; use give-back for losers
Mixing unitsCurrency MFE on one trade, points on another, R on a thirdConvert every excursion to R of the risk planned at entry
Counting the entry and exit bars’ extremesMFE credits a high that printed before the fillUse finer data, or exclude those extremes consistently
Reading the stop off the chartA level placed just outside the largest winner’s heat, adopted immediatelyState the hypothesis and its reason first; check it on trades not used to form it
Comparing capture across exit typesManual-exit capture judged against target exits’ near-100%Compare within an exit type over time
Overwriting the exit classificationA high-capture pressure exit relabelled as good judgmentKeep excursion measures and process classification as separate fields

Where Costante fits

Costante supports the parts of this analysis that depend on the trader’s own record: writing the planned stop, target, and management rule before entry, logging in-session changes, and reviewing exits against the plan afterward. The planned stop is what makes R, and so every excursion in this article, comparable across trades. A reviewed exit classification is what allows capture to be segmented by behavior rather than by outcome.

Costante does not calculate MFE or MAE from broker or price feeds, import price data, run replays, or recommend where a stop or target should sit. Excursions come from a charting platform, a trading journal that computes them, or your own price data. Observed excursions are inputs to analysis, not proof of an optimal stop, and the decision to change an exit rule remains the trader’s.

Frequently asked questions

What is a good MFE to MAE ratio?

There is no general benchmark. The ratio depends on the market, the timeframe, where the stop and target sit, and how excursions were measured, and both terms are bounded by the exits you actually took. It is most useful as a comparison of your own trades over time, measured the same way, rather than against a figure from someone else’s sample.

Can MAE tell me where to put my stop?

It can suggest a hypothesis. Winners’ heat, measured under your current stop, shows how far trades that worked went against you first. It cannot show how trades would have behaved under a wider stop, and a level chosen to sit just outside past winners’ heat is fitted to that sample. Test the idea on trades that played no part in choosing it before adopting it.

Should MFE and MAE be measured in price, currency, or R?

In R wherever a stop was planned before entry, because it makes trades with different stop distances and position sizes comparable. Raw price or tick excursions are most interpretable within one instrument, or where contract specifications and price scale are genuinely comparable; across instruments, R, percentage, or a volatility-normalized unit is usually more defensible. Currency excursions mix in position size and change when you scale in or out.

Why do my MFE and MAE figures differ between two platforms?

Usually because the platforms measure them differently: bar resolution, whether the entry and exit bars count, traded prices versus quotes, costs included or excluded, and position versus price excursion. Check each tool’s documented definition, and do not mix exports measured under different rules in one analysis.

Sources

Costante provides educational workflow tools, not financial advice. Trading involves risk.

Footnotes

  1. Sweeney, J. (1997). Maximum Adverse Excursion: Analyzing Price Fluctuations for Trading Management. Wiley. ISBN 978-0-471-14152-5. Publisher description. Accessed September 23, 2026. ↩

  2. TradeStation. Trade Run-Up / Drawdown (Report Field), TradeStation Help. Accessed September 23, 2026. ↩

  3. Tradervue. Trade Statistics, Tradervue Help: sections on position and price MFE/MAE, and the note on 1-minute price data. Accessed September 23, 2026. ↩ ↩2

  4. TradeStation. Entry Efficiency/Exit Efficiency (Report Field), TradeStation Help. Accessed September 23, 2026. ↩

  5. TradeStation. Maximum Adverse Excursion (Graph), TradeStation Help. Accessed September 23, 2026. ↩ ↩2

  6. Bailey, D. H., Borwein, J. M., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471. ↩

  7. Fischhoff, B. (1975). Hindsight ≠ foresight: The effect of outcome knowledge on judgment under uncertainty. Journal of Experimental Psychology: Human Perception and Performance, 1(3), 288–299. ↩