Van K. Tharp's Expectancy Function

This is a function proposed by Van K. Tharp in his book Trading Your Way to Financial Freedom (1999) as a way to measure strategy performance.

Although Expectancy is not one of the objectives that the user can select when choosing how Tradestation will optimize a strategy (under View Chart Analysis Preferences), calculating Expectancy will allow the user to output this information for each strategy run to an external file which may contains the values of the variables being optimized along with several user defined objective functions for the strategy, such as Tharp's Expectancy, Tharp's System Quality Number or Sharpe Ratio.

This external output file may then be imported into Excel, sorted in descending order by Expectancy, Sharpe Ratio, or any other user defined objective for strategy performance, to determine which parameter values are likely to produce the greatest returns.

The Expectancy function is defined by Tharp as follows:


= - (AW * PW + AL * PL) / AL

= expected profit per dollar risked per trade


AW = average winning trade

PW = probably of winning (total wins / total trades )

AL = average losing trade

PL = probably of losing (total losses / total trades )

It is useful to annualize the result, making this objective more useful when comparing strategies that were run on different spans of time or on different trading vehicles that have been available for different periods of time:

Annualized Expectancy

= Expectancy * Trades Per year

= Expectancy * Total Trades * 365 / Strategy Calendar Days


= Expectancy * Total Trades * 252 / Strategy Trading Days


Note that there are 365 calendar days in a year, but only an average of 252 trading days per year when weekends and holidays are accounted for.

It is somewhat easier to count the number of days the strategy has been trading (StrategyTradingDays) than do deal with the date functions that calculate the number of calendar days between a Strategy Start Date and Strategy End Date, so my personal preference is to use StrategyTradingDays. However, either formula is equally valid.


This function is normally called from within the strategy when LastBarOnChart is reached. The following code illlustrates how the function may be called from within a strategy:


int TradingYears(0),

float oExpectPerTrade(0),

float oExpectancy(0);


Once begin

{ If StrategyStartdate or StrategyStopDate not specified }

If StrategyStartDate = 0 then StrategyStartDate = Date;

If StrategyStopDate = 0 then StrategyStopDate = CurrentDate;

TradingYears = (DateToJulian(StrategyStopDate) -




TradingYears = (DateToJulian(StrategyStopDate) - DateToJulian(StrategyStartDate))/365;


if LastBarOnChart then begin

value1 = _Expectancy(TradingYears, oExpectPerTrade, oExpectancy );





Initial posted version: 09/09/09

Latest Update: 09/17/09

*.ELD files are compiled for TS 8.6.

All ELD and code text files packaged here:


Users of earlier versions of Tradestation may compile the code
from the text files included in the above *.zip file.

The code may be visualized here:

Function Expectancy.txt

How to call this function from your strategy:

Sample Strategy Code to Call Function


Bookmark and Share