September 24


Rank Your Trading System With Expectancy Score

By Jeff Swanson

September 24, 2012

Automated Trading Development, EasyLanguage, System Performance, TradeStation

In a previous article called, “System Performance and Confidence Interval“, I showed how a statistical method could be used to analyze historical trading results to give us an idea if the system would likely fail in the future. In this article I would like to introduce a mathematical formula which can be applied to any trading system and used as an objective score to compare and rank different trading systems.

When it comes to trading systems, no two are alike. There is a vast number of different trading styles that cover the range from simple tick scalping to multi year investment models. Of course, there is a huge number of different instruments and markets to trade. How would one determine if two different trading systems that trade different markets with different trading styles make an informed choice on which system was more profitable? How do you compare two trading systems’ performances? If two trading systems are both profitable and both seem like good systems, is there a single metric that can be used to compare the profitability between each?


Expectancy is a concept that was described in Van Tharp’s book, Trade Your Way To Financial Freedom. Expectancy tells you on average how much you expect to make per dollar at risk. For example, if you have a trading system that has a .50 Expectancy that means for every dollar you risk the trading system returns $.50.

There are two ways to compute Expectancy. Both methods are simple but one requires a little more explanation but does give a more conservative answer. The second method is a bit more straightforward to explain but only give an approximation of Expectancy. However, this approximation is good enough for what we are attempting to accomplish here.

Often you will find that expectancy is computed with the following formula:

Expectancy = (AW * PW + AL * PL ) / | AL |  
AW = Average winning trade in dollars
PW = Probability of winning trades
| AL | = Absolute value of the average losing trade in dollars
PL= Probability of losing trades

But if you look carefully at the calculation within the parenthesis you will see the value is nothing more than the trading system’s average net profit per trade. Substituting this value gives us the simplified formula of:

Expectancy = Average Net Profit Per Trade / | AL |

The two values you plug into the Expectancy formula can be found on most (if not all) strategy performance reports generated by backtesting. This is certainly true for TradeStation‘s strategy reports.

Now that we have our trading system’s Expectancy value are we ready to use this value to compare to other trading systems? Not yet. There is another step we must first take. Our Expectancy value simply tells us our historical profit per dollar risked for each trade. But we are missing something. Let’s imagine we have two trading systems that have two different Expectancy values:

Trading System #1 has an Expectancy of .25
Trading System #2 has an Expectancy of .50

Based on what we know it appears Trading System #2 produces more profit per dollar risked on each trade. In fact, it produces twice as much profit per dollar risked. Thus, if we risked $500 on each trade, Trading System 1 would generate $125 dollars while Trading System #2 would generate $250. But this is not the complete picture. We are missing the frequency at which each trading system operates. For example, maybe Trading System #1 trades once per day while Trading System #2 trades once per week. We need to take into account the number of times the trading system trades over the number of days the system was tested. In Van Tharp’s book he described that as Expectancy multiplied by opportunity. Opportunity is nothing more than how often does a given trading system trade. Opportunity times Expectancy leads us to our final calculation for Expectancy Score.

Expectancy Score

This value is an annualized Expectancy value which produces an objective number that can be used in comparing various trading systems. In essence the Expectancy Score factors in a trading system’s trade frequency. The higher the Expectancy Score the more profitable the system. This final score allows you to compare very different trading systems.

Expectancy Score = Expectancy * Number of Trades * 365 / Days in historical test

The Number of strategy trading days is nothing more than the number of days your backtesting was performed.


With the Expectancy Score in hand we have a metric to aid us in comparing different trading systems. Other uses for Expectancy Score might also include using this value as a target for optimization. Often optimization is performed on net profit, profit factor, Sharpe ratio or other metrics. Using Expectancy may also be something worth pursuing. But how would you do that using TradeStation? Unfortunately, there is no easy way to do it with TradeStation. However, I’m working on some EasyLanguage code that will help with a manual process. More on that in a future issue.

Jeff Swanson

About the author

Jeff has built and traded automated trading systems for the futures markets since 2008. He is the creator of the online courses System Development Master Class and Alpha Compass. Jeff is also the founder of EasyLanguage Mastery - a website and mission to empower the EasyLanguage trader with the proper knowledge and tools to become a profitable trader.

  • Hi Jeff, this article reminds me of one I wrote several years ago at You may be interested to know that I included a TradeStation EasyLanguage functions called _SystemQuality to calculate expectancy and expectancy score, and dump the results of an optimization to a .csv file for seeing which combination of parameters resulted in the highest score (since you can’t directly optimize on it in TradeStation). The _SystemQuality source code can be found from the page I mentioned above, or directly at

    • Hello Alex — Thanks a lot for the comment and for the helpful links. I was working on an EasyLanguage function that would compute the Expectancy and Expectancy Score during optimization but only report one input parameter. I’m not a big fan of optimizing multiple inputs at the same time. That function should be released in next weeks article. Your function will be more useful for those who wish to optimize more than one parameter. Thanks again for sharing!

    • Hello Francesco. Lets say you have a trading system that makes $10,000 per year trading one contract. What does that tell us? Not much other than the system does appear profitable. Profit per year tells us nothing about the frequency of trading (opportunity) or how much profit you can expect to make for every dollar put at risk (expectancy). What if two systems both provide $10,000 net profit per year but their expectancy score are 625 vs 2. Expectancy Score includes two important elements that is missing from net profit per year. One system may trade only 10 times per year while the other may trade 500 times per year. Or one system may have a much larger stop loss value. Thus, it’s possible to have two systems that produce the same profit per year, but have different expectancy scores. Expectancy score bakes into it’s calculation risk (stop loss) and opportunity which is not found in profit per year.

  • Alex,
    Great article. I’m observing that the latest TradeStation (9.1) has an “Expectancy Score” column within the Strategy Optimization Report. Since you wrote this article a year ago, has this column been recently added to the optimization report, before you wrote the article,or maybe when you say: “Unfortunately, there is no easy way to do it with TradeStation” you are indicating that the results provided by TS on this column are not the kind of Expectancy Score you refer to in you article –or not generally useful …? I’m confused, can you comment on the usefulness (as it relates to your article on Expectancy) of the “Expectancy Score” column within the Strategy Optimization Report of the current, 9.1 TS? Thank you very much.

    • It is my opinion the values provided in the Optimization Report are not correct. Or, at least confusing! The optimization report column states “Expectancy Score” but if you look at the definition within the help dialog there is no explanation for “Expectancy Score”. Instead they have “Expectancy”. So, which calculation is being displayed, expectancy or expectancy score? Furthermore, my numbers do not match there numbers. I’ve contact TradeStation in regards to this.

  • The expectancy score formula can actually be simplified.

    Start with these two equations:
    Expectancy Score = Expectancy * Number of Trades * 365 / (Days in historical)
    Expectancy = Average Net Profit Per Trade / | AL |

    Then substitute:
    Expectancy Score = (Average Net Profit Per Trade / | AL |) * Number of Trades * 365 / (Days in historical)

    Notice that (Average Net Profit Per Trade * Number of Trades) is simply the net profit.

    Expectancy Score = NetProfit / |AL| * 365 / (Days in historical)

    Furthermore, (365 / (Days in historical)) is just a constant when comparing trading systems with the same historical data size, so the entire thing can be reduced to:
    Expectancy Score = NetProfit / |AL|

    Not much to see there, in my opinion.

  • Hi Jeff,

    thanks a lot for your illuminating article!

    My question is: What is a “good” expectancy score? How high should a (short-term) strategy’s score be at least? Which value do you like to see in your backtesting?

    Best regards Oliver

    • Good question. When it comes to expectancy score, it’s all relative. I use expectancy score to help me gauge the difference between two different systems. In general, the higher the number, the better. This of course, is just one metric to look at.

  • Hi Jeff…
    Thanks for the article.
    Very interesting and am glad i came across it.

    Eugene… Interesting approach to it… never looked at it that way. Thanks for the idea.
    If am testing the same period then better to omit the 365/(day’s in historical) section of the formular as they are constant…

    But i have some quick questions:
    1. Does “Day’s historical” include weekends (Saturday’s and Sundays) or just weekdays(Mon-Friday)?
    2. Is it better to use 250 days (i.e the supposed number of actual trading day’s in a year) as opposed to 365? Will it make any difference?
    3. I had a similar view with Enrique Moreno above. Did TS get back to you with a response on how they compute their expectancy score?

    For now … i will settle for Eugene’s approach. Its very simple and quick way to compute the expectancy score…
    i.e Netprofit/|AL| = Expectancy Score.

    Otherwise, thanks alot of the explanations given above.
    Over to you Jeff :-).


  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Learn To Code & Build Strategies
    Using EasyLanguage.