April 4, 2006
Adding custom metric: Average adverse excursion
Here is a sample that shows how to create custom metric based on per-trade statisitics.
In this example we will calculate the average value of MAE (maximum adverse excursion) from all trades.SetCustomBacktestProc("");
/* Now custom-backtest procedure follows */
if( Status("action") == actionPortfolio )
{
bo = GetBacktesterObject();
bo.Backtest(); // run default backtest procedure
SumMAE = 0;
NumTrades = 0;
// iterate through closed trades first
for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() )
{
// here we sum up maximum adverse excursions
SumMAE = SumMAE + trade.GetMAE();
NumTrades++;
}
// iterate through eventually still open positions
for( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() )
{
SumMAE = SumMAE + trade.GetMAE();
NumTrades++;
}
averageMAE = SumMAE / NumTrades;
bo.AddCustomMetric( "Avg. adverse excursion", averageMAE );
}
// your trading system here
//..
Filed by Tomasz Janeczko at 3:20 pm under Custom Backtest
Comments Off on Adding custom metric: Average adverse excursion