Z-score normalization by date is better than raw excess returns but the difference is not practically significant on my testing

TL;DR: I went back to using raw excess returns as a target.

@dnevin123 got me thinking about target normalization in this post: AI Factor - Recreating Linear Model Predictions

Specifically, I wondered whether using z-scores normalized by date for excess returns as a target was superior to raw excess returns.

I ran 100 models with random selection of the variables used for each model and compared the out-of-sample performance for each model using the 2 targets.

To the far right is a count of which model gave the best out-of-sample returns (out of 100 runs). The rest is the average difference in the magnitude for various metrics. Z-score normalization by date of excess returns clearly won but there was little practical significance (higher vol is worse):

So with respect to the Sharpe ratio for example. Using daily z-score normalization for a 15 stock screen gave a better performing model just 54% of the time and the average difference in the Sharpe Ratio was just 0.023 (a practically insignificant difference)/

For returns a 15 stock screen using daily z-score normalization gave better out of sample result 60% of the time but the average annualized difference in returns was just 0.26%

Rank vs raw excess returns was similarly unimpressive (higher vol is worse):

2 Likes

Have you tried log transformation?

Recently I tested a matrix of dataset configurations for training:

Log target + Z-score norm. Features
Log target + Rank norm Features
Raw target + Z
Raw target + Rank

The feature normalization had much higher impact (in my case Z works great exUS and Rank works better in US most likely because ExUS datasets seem to behave more normally distributed and show many linear relationships... My ExUS dataset is the only one where Lin.regularized models can compete with tree-based ones)...

Nonetheless, I got some improvement out of using log transformation for US.

2 Likes

It does make a lot of sense and I have kind of played with log transformations in the past (a simple regression or something). But I have not used log transformation with a target in a AI/ML model. It is a good idea and I should try it.

Thanks! I think that is great advice.

1 Like