I am working on proprerties of time series. I was trying to deduce an estimate of standard deviation of a process from the series of rolling standard deviation but I've got some issues when I deal with Leavy Process.

I report here a dummy code in Python I am using for this test:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def computeRollingStdMean(df, n, column):
    return df[column].rolling(n).std().mean()

N = 100
df = pd.DataFrame({ "noise": ( np.random.rand(N)*2-1)*0.1 })
df["StockA"] = ( [20]*(N/2)+[10]*(N/2) ) +df.noise
df["StockB"] = [15]*N + df.noise
df["StdRollingA"] = df.StockA.rolling(50).std()
df["StdRollingB"] = df.StockB.rolling(50).std()

result = pd.DataFrame({"Window" : [ 2, 5, 10, 20, 30, 40, 50, 100 ]})
result["sigmaTargetA"] = df.StockA.std()
result["sigmaTargetB"] = df.StockB.std()
result["sigmaMeanrollingA"] = [ computeRollingStdMean(df, x, column = "StockA") for x in result.Window ]
result["sigmaMeanrollingB"] = [ computeRollingStdMean(df, x, column = "StockB") for x in result.Window ]

From the result table you can see I have an issue with Stock A, that with jump.

In particular my guess would that the mean of the rolling standard deviation would be close to the global standard deviation. Infact this happen for Stock B where there are not jumps.

Of course my statement should depends on the rolling window and it is trivially true when the window has the same dimension of the time series $N$ (since there is no rolling process at the end in this case ).

By plotting rolling std time series I am not surprise of the plot of StockA. At the end rolling operator is like a convolution so that I would expect a "hill-like" plot when the rolling window hits the spyke.

enter image description here

But I also thought that, taking the mean, it would not change so much the std estimation.

Can you give a qualitative (or quantitative) meaning to this phenomena?

I am studying rolling standard deviation since I want to deduce other informations such as quantiles, and distriubtion behaviour in time but I must be sure that the std process I've build is coherent.

Thanks for your help,


  • $\begingroup$ does the jump you have actually look like that? i.e. a single high volatility return, and then "back to business as usual"? if so, are you sure it's not a stock split / corporate action? $\endgroup$
    – will
    Feb 10, 2019 at 11:48
  • $\begingroup$ Yes, I am sure of the structure of the time series. Take in account that Stock A and Stock B are rather the stock returns. However at this point I am I interested in understanding what happen to rolling std of jump process $\endgroup$
    – clarkmaio
    Feb 10, 2019 at 11:51


Your Answer

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