Kỹ thuật đặc trưng từ khối lượng giao dịch
Chúng ta sẽ dùng các mô hình phi tuyến để dự đoán chính xác hơn. Với mô hình tuyến tính, đặc trưng phải tương quan tuyến tính với biến mục tiêu. Các mô hình Machine Learning khác có thể kết hợp đặc trưng theo cách phi tuyến. Ví dụ: điều gì xảy ra nếu giá tăng khi đường trung bình động của giá tăng, còn đường trung bình động của khối lượng lại giảm? Cách duy nhất để nắm bắt các tương tác đó là nhân các đặc trưng với nhau, hoặc dùng thuật toán Machine Learning có thể xử lý tính phi tuyến (ví dụ: random forests).
Để bổ sung thêm thông tin có thể tương tác với các đặc trưng khác, ta có thể thêm các đặc trưng có tương quan yếu. Đầu tiên, ta sẽ thêm dữ liệu khối lượng, vốn có trong lng_df ở cột Adj_Volume.
Trước khi bắt đầu, nhớ rằng với các hàm của TA-Lib (như SMA()), bạn cần cung cấp mảng Numpy, không phải đối tượng pandas. Bạn có thể dùng thuộc tính .values của pandas Series hoặc DataFrame để trả về dưới dạng mảng Numpy.
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 phần trăm thay đổi theo 1 ngày của khối lượng (dùng
pct_change()từ pandas) và gán vào cộtAdj_Volume_1d_changetronglng_df. - Tạo đường trung bình động 5 ngày của phần trăm thay đổi 1 ngày của khối lượng và gán vào cột
Adj_Volume_1d_change_SMAtronglng_df. - Vẽ biểu đồ histogram cho hai đặc trưng mới này bằng danh sách
new_features.
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.
# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
timeperiod=____)
# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()