Чи можемо ми впевнено сказати, що ця акція має середнє повернення?
У попередньому розділі ви бачили, що автокореляція щотижневих доходностей акцій 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 уже завантажені в датафрейм returns.
Ця вправа є частиною курсу
Аналіз часових рядів у Python
Інструкції до вправи
- Повторно обчисліть автокореляцію щотижневих доходностей у Series
'Adj Close'у датафрейміreturns. - Знайдіть кількість спостережень у датафреймі
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()