Several papers by Stephen J Taylor and Brian G Kingsma, “Non-stationarity in Sugar Prices” http://www.jstor.org/pss/3009471 and “An Analysis of the Variance and Distribution of Commodity Price Changes” deal with a method of pre-processing price data which is suitable for many cycles analysis applications.
They note that the most common forms of pre-processing are doing nothing (lambda=1) or taking logs (lambda=0) and have determined a function which provides other values of lambda which are more suitable for particular commodities. This is desirable because many commodities have faster movements at the highs than at the lows, even after a log transformation.
Zlambda(t) = (Z(t)^lambda-1)/lamdba . . . except when lambda=0, then use log(Z(t))
Edward R Dewey was aware that sunspot numbers were skewed, with fast fluctuations at highs than at lows. He realized that taking logs went to the other extreme (even apart from the problem of log(0)) and so used a function:
Z(t) = log(SSN(t)+20)
which solves the worst of the skewness. However this lambda function should do a better job.
In this case I think a few pictures are worth a thousand words.
In the above graph the smaller fluctuations at sunspot lows are evident. However taking logs as below reverses the problem, making the fluctuations larger at the lows.
Dewey solved this problem by adding 20 before taking the logs. That is quite a good approximation to using the lambda function, shown below. In both cases the fluctuations are now about equally large at highs and lows.
When the monthly change of raw sunspot numbers are used the results are heavily modulated by the 11 year sunspot number as seem above. Below we see that after applying a lambda=0.4 function to sunspot numbers the strong 11 year modulation is removed. This data is suitable for looking for shorter term cycles.
The same principle applies to commodities. About 21 years ago I did an analysis of many commodity markets and worked out the best lambda values to use for each, but don’t have those results available.
A word of caution however regarding commodity prices. Commodity prices vary because of two conditions, long term inflation and short term supply and demand. Applying a lamdba function without recognizing this will not get proper results. It is best to remove the inflationary component first (by dividing by a suitable deflator) and then apply the lambda function.
The lambda function is available in CATS – Cycles Analysis & Timeseries Software which is a free package downloadable at http://www.cyclesresearchinstitute.org/cats.html.