Just saw your point about doing the calculation at the end of the backtest.
The problem with this is, again, markets moving into the backtest halfway through.,
If you're using a fixed IDM then it will be too high in earlier periods with fewer markets. So if you calculate the IDM based on realised vol over the whole period then you'll get an answer that is too low. By using the final correlation matrix you get an IDM that is correct for live trading, albeit too high in the earlier part of the backtest. The most correct solution is to use a varying IDM, which you recalculate periodically using correlation matrices rather than a rolling window of vol estimation, for the reasons below.
GAT
The problem with this is, again, markets moving into the backtest halfway through.,
If you're using a fixed IDM then it will be too high in earlier periods with fewer markets. So if you calculate the IDM based on realised vol over the whole period then you'll get an answer that is too low. By using the final correlation matrix you get an IDM that is correct for live trading, albeit too high in the earlier part of the backtest. The most correct solution is to use a varying IDM, which you recalculate periodically using correlation matrices rather than a rolling window of vol estimation, for the reasons below.
GAT
In your book, you propose to calculate the Instrument Diversification Multiplier (let's call it IDM to prevent RSI (https://en.wikipedia.org/wiki/Repetitive_strain_injury) by measuring or estimating the correlations and calculating 1 / sqrt(W x H x W_t) where W are the weights and H is the correlation matrix.
Don't you assume a gaussian return distribution here?
Could we calculate the IDM also like this:
Backtest the system with IDM = 1 and a given volatility target, like 20%, then calculate the realized volatility for the system and setting IDM = Vol_desired / Vol_realized.
The calculation could be done at the end, that would be the same as your calculation where you are using measured correlations for the whole backtest or on an expanding/rolling window base, only using not-seen data.
I think, this should work, since the IDM is linear in your position calculation and stddev(a * x) = |a| * stddev(x) for a constant a.
The calculation/backtest for the IDM should be done with otherwise unrealistic fractional positions (without rounding to full contracts), I think.
You could do the same for the Forecast Diversification Multiplier (FDM), by backtesting with FDM = 1, calculating combined forecasts and calculating the FDM, so that the mean combined signal over all instruments is 10 on average.