Normally a strategy uses historic price data for parameter optimizing - even if it's a parameter-free strategy that calculates them itself. We found that applying a weight slope to the price data in the optimization process can remarkably improve the annual return and the Sharpe ratio.
We're using the following weight formula:
w = 2(1+t(s-1))/(s+1)
where t is the position into the price data in the 0..1 range, and s is the weight slope. At s = 2, the end of the price data set has twice the weight than the begin.
The weight determines the contribution of this part of the price data to the objective function of the optimizer. The theory behind this is that the markets change over time, and thus the last part of the price data affects your trading more than the first part. Giving it a higher weight improves the parameter quality.
We found that an s value between 1.5 and 2 can noticeably increase the Sharpe ratio on unseen data. At too large weight differences we're getting effects that amount to data reduction and overfitting, and the Sharpe ratio goes down again.
This method works with almost all strategies that use bars in the hour to days range. It does not work with very short bars in the minute range, because long term market changes have no effect on those strategies. The Zorro platform has this weight slope function built in, but the method can also be sort of simulated with other platforms. You just have to multiply all trade results with the above formula when optimizing. Note that it would not do to multiply the trade size - the trade result must be multiplied.
Has someone else also experimented with price data weights?
We're using the following weight formula:
w = 2(1+t(s-1))/(s+1)
where t is the position into the price data in the 0..1 range, and s is the weight slope. At s = 2, the end of the price data set has twice the weight than the begin.
The weight determines the contribution of this part of the price data to the objective function of the optimizer. The theory behind this is that the markets change over time, and thus the last part of the price data affects your trading more than the first part. Giving it a higher weight improves the parameter quality.
We found that an s value between 1.5 and 2 can noticeably increase the Sharpe ratio on unseen data. At too large weight differences we're getting effects that amount to data reduction and overfitting, and the Sharpe ratio goes down again.
This method works with almost all strategies that use bars in the hour to days range. It does not work with very short bars in the minute range, because long term market changes have no effect on those strategies. The Zorro platform has this weight slope function built in, but the method can also be sort of simulated with other platforms. You just have to multiply all trade results with the above formula when optimizing. Note that it would not do to multiply the trade size - the trade result must be multiplied.
Has someone else also experimented with price data weights?