Chúng ta có tự tin cổ phiếu này quay về trung bình?
Trong chương trước, bạn thấy tự tương quan của lợi nhuận tuần cổ phiếu MSFT là -0.16. Con số này có vẻ lớn, nhưng liệu nó có ý nghĩa thống kê không? Nói cách khác, bạn có thể khẳng định xác suất nhỏ hơn 5% để quan sát được tự tương quan âm lớn như vậy nếu tự tương quan thật sự bằng không? Và có tự tương quan nào ở các độ trễ khác khác không một cách có ý nghĩa thống kê không?
Ngay cả khi tự tương quan thật sự bằng không ở mọi độ trễ, trong một mẫu hữu hạn của lợi nhuận, ước lượng tự tương quan cũng sẽ không đúng bằng không. Thực tế, độ lệch chuẩn của tự tương quan mẫu là \(\small 1/\sqrt{N}\), trong đó \(\small N\) là số quan sát, nên nếu \(\small N=100\) chẳng hạn, độ lệch chuẩn của ACF là 0.1, và vì 95% phân phối chuẩn nằm giữa +1.96 và -1.96 độ lệch chuẩn quanh trung bình, nên khoảng tin cậy 95% là \(\small \pm 1.96/\sqrt{N}\). Xấp xỉ này chỉ đúng khi tất cả các tự tương quan thật sự đều bằng không.
Bạn sẽ tính khoảng tin cậy thực tế và xấp xỉ cho ACF, và so sánh với tự tương quan độ trễ một là -0.16 từ chương trước. Lợi nhuận theo tuần của Microsoft đã được nạp sẵn trong DataFrame tên returns.
Bài tập này là một phần của khóa học
Phân tích chuỗi thời gian với Python
Hướng dẫn bài tập
- Tính lại tự tương quan của lợi nhuận tuần trong Series
'Adj Close'của DataFramereturns. - Tìm số lượng quan sát trong DataFrame
returnsbằng hàmlen(). - Xấp xỉ khoảng tin cậy 95% của tự tương quan ước lượng. Hàm toán
sqrt()đã được import và có thể dùng. - Vẽ hàm tự tương quan của
returnsbằngplot_acftừ statsmodels. Đặtalpha=0.05cho các khoảng tin cậy (đó là mặc định) vàlags=20.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()