Rank Your Trading System With Expectancy Score

About the Author Jeff Swanson

Jeff is the founder of System Trader Success - a website and mission to empowering the retail trader with the proper knowledge and tools to become a profitable trader the world of quantitative/automated trading.

follow me on:
  • Hi Jeff, this article reminds me of one I wrote several years ago at http://unicorn.us.com/trading/expectancy.html. 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 http://unicorn.us.com/trading/src/_SystemQuality.txt

    • 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!

  • Francesco says:

    Hi Jeff

    Could you please explain which is the difference between Expetancy Score and Profit/year ?

    • 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.

  • Enrique Moreno says:

    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.

  • Eugene says:

    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.

  • Oliver says:

    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.

  • Lii says:

    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 :-).


  • >