Skip to content

Instantly share code, notes, and snippets.

@flare9x
Created June 12, 2018 01:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flare9x/57acfb7e83a5327632874663a0311d28 to your computer and use it in GitHub Desktop.
Save flare9x/57acfb7e83a5327632874663a0311d28 to your computer and use it in GitHub Desktop.
Rolling auto correlation
# Rolling Autocorrelation
# Sliding window (k width)
mean_out = zeros(size(d_es_close,1))
var_out = zeros(size(d_es_close,1))
cov_out = zeros(size(d_es_close,1))
autocor_out = zeros(size(d_es_close,1))
devmean_out = zeros(size(d_es_close,1))
n=1000
k = 1 # set lag
n_lag = 100 # return series lag
# Calculate 1 bar return series
rets = zeros(size(d_es_close,1))
for i in n_lag+1:length(d_es_close)
rets[i] = ((d_es_close[i] / d_es_close[i-n_lag])-1) # rets[i] = ((d_es_close[i] / d_es_close[i-n_lag+1])-1)
end
# lag the series by k
lagged_series = [fill(0,k); rets[1:end-k]]
# Calculate the mean of the rolling sample
for i = n:size(rets,1)
mean_out[i] = mean(rets[i-n+1:i])
end
# Calculate deviations from the mean
for i = n:size(rets,1)
devmean_out[i] = rets[i] - mean_out[i]
end
# Calculate rolling variance
for i = n:size(rets,1)
var_out[i] = var(rets[i-n+1:i])
end
# Calculate rolling covariance
for i = n:size(rets,1)
if i+k >= size(rets,1)
break
end
cov_out[i] = cov(rets[i-n+1:i],lagged_series[i-n+1:i])
end
# Rolling Autocorrelation
for i =n:size(rets,1)
autocor_out[i] = cov_out[i] / var_out[i]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment