Tạo đặc trưng trung bình động và RSI
Chúng ta muốn thêm dữ liệu lịch sử vào các mô hình Machine Learning để dự đoán tốt hơn, nhưng thêm quá nhiều bước thời gian lịch sử thì phức tạp. Thay vào đó, bạn có thể cô đọng thông tin từ các điểm trước đó vào một bước thời gian duy nhất bằng các chỉ báo.
Trung bình động là một trong những chỉ báo đơn giản nhất — đó là trung bình của các điểm dữ liệu trước đây. Đây là hàm talib.SMA() từ thư viện TAlib.
Một chỉ báo kỹ thuật phổ biến khác là chỉ số sức mạnh tương đối (RSI). Chỉ số này được định nghĩa bởi:
\(RSI = 100 - \frac{100} {1 + RS}\)
\(RS = \frac{\text{mức tăng trung bình trong } n \text{ chu kỳ}} {\text{mức giảm trung bình trong } n \text{ chu kỳ}}\)
Số chu kỳ n được thiết lập trong talib.RSI() bằng tham số timeperiod.
Một khoảng thời gian thường dùng cho RSI là 14, nên chúng ta sẽ dùng giá trị đó như một thiết lập trong các phép tính.
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Tạo một danh sách tên đặc trưng (bắt đầu với danh sách chỉ chứa
'5d_close_pct'). - Dùng các
timeperiod14, 30, 50 và 200 để tính trung bình động vớitalib.SMA()từ giá đóng cửa điều chỉnh (lng_df['Adj_Close']). - Chuẩn hóa các đường trung bình động bằng giá đóng cửa điều chỉnh bằng cách chia cho
Adj_Close. - Trong vòng lặp, tính RSI với
talib.RSI()từAdj_Closevà dùngncho tham số timeperiod.
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.
feature_names = ____ # a list of the feature names for later
# Create moving averages and rsi for timeperiods of 14, 30, 50, and 200
for n in [____]:
# Create the moving average indicator and divide by Adj_Close
lng_df['ma' + str(n)] = talib.SMA(lng_df['Adj_Close'].values,
timeperiod=n) / lng_df[____]
# Create the RSI indicator
lng_df['rsi' + str(n)] = talib.____(lng_df['Adj_Close'].____, timeperiod=____)
# Add rsi and moving average to the feature name list
feature_names = feature_names + ['ma' + str(n), 'rsi' + str(n)]
print(feature_names)