Можно ли утверждать, что акция возвращается к среднему?
В предыдущей главе вы видели, что автокорреляция недельных доходностей акций MSFT равна -0,16. Это значение кажется довольно большим, но является ли оно статистически значимым? Иными словами, можно ли утверждать, что вероятность наблюдать столь большую отрицательную автокорреляцию при истинном нулевом значении составляет менее 5%? И есть ли другие лаги, на которых автокорреляция значимо отличается от нуля?
Даже если истинные автокорреляции равны нулю на всех лагах, на конечной выборке доходностей оценки автокорреляции не будут в точности равны нулю. Стандартное отклонение выборочной автокорреляции равно \(\small 1/\sqrt{N}\), где \(\small N\) — число наблюдений. Например, при \(\small N=100\) стандартное отклонение ACF равно 0,1, и поскольку 95% нормального распределения укладывается в диапазон от -1,96 до +1,96 стандартных отклонений от среднего, 95%-й доверительный интервал равен \(\small \pm 1,96/\sqrt{N}\). Это приближение справедливо только в том случае, когда все истинные автокорреляции равны нулю.
Вы вычислите фактический и приближённый доверительные интервалы для ACF и сравните их с автокорреляцией первого лага, равной -0,16, полученной в предыдущей главе. Недельные доходности Microsoft предварительно загружены в DataFrame под названием returns.
Это упражнение является частью курса
Анализ временных рядов на Python
Инструкции к упражнению
- Повторно вычислите автокорреляцию недельных доходностей для столбца
'Adj Close'в DataFramereturns. - Найдите количество наблюдений в DataFrame
returnsс помощью функцииlen(). - Вычислите приближённый 95%-й доверительный интервал для оценённой автокорреляции. Математическая функция
sqrt()уже импортирована и готова к использованию. - Постройте функцию автокорреляции для
returnsс помощьюplot_acf, импортированной из statsmodels. Задайтеalpha=0.05для доверительных интервалов (это значение по умолчанию) иlags=20.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import the plot_acf module from statsmodels and sqrt from math
from statsmodels.graphics.tsaplots import plot_acf
from math import sqrt
# Compute and print the autocorrelation of MSFT weekly returns
autocorrelation = returns['Adj Close'].___
print("The autocorrelation of weekly MSFT returns is %4.2f" %(autocorrelation))
# Find the number of observations by taking the length of the returns DataFrame
nobs = ___
# Compute the approximate confidence interval
conf = 1.96/___
print("The approximate confidence interval is +/- %4.2f" %(conf))
# Plot the autocorrelation function with 95% confidence intervals and 20 lags using plot_acf
plot_acf(___, alpha=0.05, ___)
plt.show()