Build Alpha


Edge Ratio or E-Ratio measures how much a trade goes in your favor vs. how much a trade goes against you. The x-axis is the number of bars since the trading signal. A higher y-value signifies more “edge” at that step in time.

Measurements are normalized for volatility; this allows us to use e-ratio across all markets and regimes. Once normalized for volatility, 1 signifies that we have equal amounts of favorable movement compared to adverse movement.

In other words, the y-axis is an expression of how many units of volatility more or against you your trade gets. A measure of 1.2 would indicate .2 units more of favorable volatility and a measure of 0.8 would indicate .2 units more of adverse movement.

The blue line is for the selected strategy’s signal and the red line is for a “random” strategy for the same market. The red line is to serve as a baseline to beat. Ideally, you’ll want to see a blue line above 1 and above the random line.

You may find many “good” strategies, but they may have an E-Ratio less than the red baseline or less than one. This would make us less confident that our signal will withstand the test of time.

Additionally, if E-Ratio falls off a cliff at bar 6… then it probably does not make sense to hold for 15 bars!

Another tool to make sure Build Alpha + Trader = Success.

How to calculate:

  1. Record Maximum Adverse Excursion and Maximum Favorable Excursion at each time step since signal.
  2. Normalize MAE and MFE for volatility. To compare across markets we need a common denominator. Let’s use ATR or a unit of volatility.
  3. Average all MFE and MAE values. Now you should have average MFE and average MAE at 1 bar since signal. Average MFE and average MAE at 2 bars since signal…
  4. Divide Average MFE by Average MAE at each time step.

Example. Calculate E-Ratio at one bar out from signal.

Signal 1:

MFE 1.50            ATR 1.27

MAE 1.00            ATR 1.27

Signal 2:

MFE 1.33            ATR 1.19

MAE 1.04            ATR 1.19

Signal 3:

MFE 1.83            ATR 1.67

MAE 1.27            ATR 1.67

Average MFE = ((1.50/1.27)+(1.33/1.19)+(1.83/1.67))/3 = 1.13

Average MAE = ((1.00/1.27)+(1.04/1.19)+(1.27/1.67))/3 = 0.81

E-Ratio at Bar One = 1.13/0.81 = 1.395

So in this example, one bar after our signal, we can expect ~.40 more units of volatility in our favor than against us. In other words, if ATR is 20 points then we can expect the trade to move on average 8 points (8/20 = .4) more in our favor than against us 1 bar after the signal is generated.

** Update **

I spoke quite a bit about E-Ratio or Edge Ratio in a recent podcast interview with Andrew over at

Please check it out and let me know what you think. Thanks.

Thanks for reading,

15 thoughts on “E-Ratio

  1. This is great stuff! Just one question. How do you generate the results for the “random” strategy to create the Baseline? What is the random strategy that you use?

    1. Thanks for reading! So Build Alpha actually creates a random signal and random set of price data for each signal the user selects from the input screen. So for example, if you run a simulation using 373 signals to find the best strategies then Build Alpha will create 373 random trading signals and 373 random sets of price data. If you select 4,719 signals then Build Alpha will create 4,719 random signals and sets of price data. Then Build Alpha will attempt to create the best possible strategy it can using the random signals on real price data and the random signals on the newly created price data. The best “random” strategy then serves as a bench mark for our real strategies to beat – creating more random signals as the user selects more real signals makes it harder for our real strategies to beat this random benchmark! However, the random e-ratio line you’re referring is the average e-ratio from all of these strategies the software built using the random signals on the real price data.


  2. If I have random signals I should get on average an 1 E-Ratio, am I right? I’m just guessing enters so the the average normalized MFA and the average normalized MFE should be roughly the same, so one over the other should be roughly 1. But the random line hardly gets near the 1 line. What am I missing here?

    Another question: if the max holding bar is 5, how can the chart show values up to 25?

    1. No, that is not correct. If you look at various markets and the random (red-line) e-ratio that is also generated in the plot you’ll see that an average of 1 is not always the case. However, most values do hover around 1 and you can attribute the deviations to market noise, upward drifts in the underlying data, etc.

      As far as holding time and e-ratio goes… e-ratio doesn’t take into consideration. It only monitors the ratio n bars after the signal regardless of when the exit should/does occur. That way you can use e-ratio to see how “efficient” your exits are. You don’t want to be holding a trade when the edge starts to dissipate, for example.

      Hope this helps.


  3. Why not just divide MFE by MAE for each bar without normalizing it?

    I mean, you are doing it like
    ERATIO1 = AVG(MFE1/ATR1, MFE2/ATR2…) / AVG (MAE1/ATR1, MAE2/ATR2…) at bar1, then at bar2, etc..

    Why not just
    ERATIO1 = AVG(MFE1/MAE1, MFE2/MAE2..) at bar1 then at bar2, etc

    1. Tomato, tomatoh

      They give just about the same result. The truth is I wind up calculating normalized movement for some other calculations, and when I want to compare market moves conditioned on some market regime (or hoping to find one). You’re right, though. A simplified calculation would make for an easier to read blog post specifically about e-ratio. I have emailed you a spreadsheet showing the differences (albeit small). If anyone else wants it don’t hesitate to request.

      Thanks for reading,

  4. Great stuff. Any chance you’d send the email describing the differences in calculation my way as well please? Thanks a lot, Dave.

  5. Great stuff,

    I have just discovered the e-ratio and I think is the best ever way to test strategies.

    Could you also send me the spreadsheet with the differences in calculating the e-ratio?

    Thank you in advance

    1. Thank you! Yes, E-Ratio is the most objective way to measure/quantify edge. Build Alpha now has it as a fitness function choice meaning we can now build strategies that optimize/maximize for E-Ratio!

      I’ve just emailed you the spreadsheet.


  6. Thanks for share Dave, I just came here thanks to your tweet “” and sound a great tool try to build strategies.

    Also, could you share the spreadsheet you were talking about above?


Leave a Reply

Your email address will not be published. Required fields are marked *