I am trying to model some data using a random walk, but after the standard increment and log (financial data) transformations for stationarity have found that, over long time frames, there is still not constant variance. What is the best way to now proceed? Or, are there further transformations I could consider to address the non-stationarity the standard transforms didnt address.


2 Answers 2


After taking log and differencing, the next step is to account for heteroscedasticity. The are many ways to do this, the simplest approach is to estimate the running standard deviation by exponential smoothing(a simple variation of GARCH actually).


msft.ret <- na.omit(diff(log(Cl(MSFT))))

you can see a few volatility clusters


and reject the stationarity hypothesis, with p≈0:


now calculate the running std deviation for the period of one month

msft.ret.sd <- sqrt(EMA(msft.ret^2, 30))

and standardise the returns by running deviation:

msft.ret.st <- na.omit(msft.ret / msft.ret.sd)

now the stationarity hypothesis can't be rejected:


and the graph is much nicer:

  • $\begingroup$ Exponential smoothing is not a variation of garch and its parameter can't even be estimated. $\endgroup$
    – Aksakal
    Apr 24, 2014 at 1:29

There's a lot of literature on financial time series, e.g. Tsay's book on subject. also Carol Alexander book called "market risk analysis" where she has step by step excel examples with popular methods like stochastic volatility, GARCH and exponential smoothing.

For a beginner ARCH is the good place to start.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.