Bước đầu tiên học để dự đoán thời gian tài chính bằng cách sử dụng máy học


12

Tôi đang cố gắng nắm bắt cách sử dụng máy học để dự đoán thời gian tài chính 1 hoặc nhiều bước trong tương lai.

Tôi có một thời gian tài chính với một số dữ liệu mô tả và tôi muốn tạo thành một mô hình và sau đó sử dụng mô hình để dự đoán n bước trước.

Những gì tôi đã làm cho đến nay là:

getSymbols("GOOG")

GOOG$sma <- SMA(Cl(GOOG))
GOOG$range <- GOOG$GOOG.High-GOOG$GOOG.Low

tail(GOOG)

           GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted     sma range
2013-05-07    863.01    863.87   850.67     857.23     1959000        857.23 828.214 13.20
2013-05-08    857.00    873.88   852.91     873.63     2468300        873.63 834.232 20.97
2013-05-09    870.84    879.66   868.23     871.48     2200600        871.48 840.470 11.43
2013-05-10    875.31    880.54   872.16     880.23     1897700        880.23 848.351  8.38
2013-05-13    878.89    882.47   873.38     877.53     1448500        877.53 854.198  9.09
2013-05-14    877.50    888.69   877.14     887.10     1579300        887.10 860.451 11.55

Sau đó, tôi đã trang bị một mô hình RandomForest cho dữ liệu này.

fit <- randomForest(GOOG$GOOG.Close ~ GOOG$sma + GOOG$range, GOOG)

Điều này dường như phù hợp với đáng ngạc nhiên:

> fit

Call:
 randomForest(formula = GOOG$GOOG.Close ~ GOOG$sma + GOOG$range,      data = GOOG) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 1

          Mean of squared residuals: 353.9844
                    % Var explained: 97.28

Và đã cố gắng sử dụng nó để dự đoán:

predict(fit, GOOG, n.ahead=2)

Nhưng dự đoán này đã không hoạt động.

Tôi cố gắng dự đoán Đóng, tôi có nên trễ các biến khác theo nhiều bước như tôi muốn dự đoán trước khi lắp mô hình không?

Có lẽ nhiều thứ khác tôi cũng nên tính đến nhưng đây thực sự là những bước đầu tiên của tôi để thử học máy.

Câu trả lời:


16

Quan sát đầu tiên của tôi là bạn đã không tụt hậu so với giá đóng cửa và đó là lý do tại sao bạn quan sát thấy sự phù hợp tốt như vậy. SMA (trung bình di chuyển đơn giản) sử dụng giá đóng cửa trong tính toán của nó và phạm vi thấp cao bao gồm giá đóng cửa, do đó, sử dụng chúng để dự đoán giá đóng cửa sẽ đưa ra một xu hướng trước. Ý kiến ​​của tôi là nếu bạn đang cố gắng dự đoán giá đóng cửa trước hai ngày, bạn nên xây dựng mô hình của mình với các đầu vào bị trễ so với giá đóng cửa ít nhất hai ngày. Một số đầu vào có thể bị trễ hơn hai ngày, nhưng tôi sẽ bắt đầu đơn giản và thử và chỉ sử dụng một số ít đầu vào.

Theo như mục tiêu của bạn để dự đoán giá đóng cửa, tôi nghĩ rằng giá đóng cửa quá ồn để được sử dụng làm biến mục tiêu và sử dụng chúng sẽ dẫn đến quá mức hoặc tối ưu hóa mục tiêu sai. Thay vào đó, tôi sẽ bắt đầu bằng cách làm mịn giá đóng cửa với đường trung bình động và sau đó dự đoán hướng thay đổi giá trong hai ngày tới. Ví dụ, tôi có thể thay thế mức đóng bằng SMA 5 ngày của lần đóng và sau đó mã hóa sự thay đổi giá của SMA là 1 nếu nó dương trong hai ngày tiếp theo và 0 khác. Vì biến đầu ra hiện được mã hóa là 1 hoặc 0, đây là một vấn đề tốt để thử và giải quyết với hàm rừng ngẫu nhiên bạn đang sử dụng. Bạn cũng có thể thử một số thuật toán phân loại khác như hồi quy logistic, mạng lưới thần kinh và SVM và có thể kết hợp một số thành một nhóm để cải thiện hiệu suất của bạn. Đây vẫn là một vấn đề khó giải quyết mà không cần quá nhiều, nhưng nó là một bước đi đúng hướng. Một lời cảnh báo khác là mô hình cuối cùng của bạn có thể có độ chính xác đáng kinh ngạc khi phân loại hai ngày tiếp theo là tích cực hoặc tiêu cực, nhưng vẫn mất tiền vì nó đã phân loại một vài động thái lớn không chính xác.

Tôi cũng sẽ khuyên bạn nên xây dựng mô hình của mình trên nhiều bảo mật để thuật toán học máy không phát triển theo các đặc điểm riêng của một cổ phiếu. Tôi sẽ bắt đầu với ít nhất 5 cổ phiếu không tương quan cao với nhau.

Giao dịch trên Edge của Guido Deboeck là một nơi tốt để bắt đầu khám phá các ứng dụng của máy học để dự đoán chuỗi thời gian tài chính. Đó là một cuốn sách cũ hơn vì vậy nó đi sau công nghệ chúng ta có ngày hôm nay nhưng đó là một khởi đầu tốt. Tôi cũng muốn giới thiệu các Hệ thống và Phương thức giao dịch mới của Kaufman và Expert Trading Systems của John Wolberg.


ok, cảm ơn bạn cho câu trả lời tốt này. Ví dụ này giúp tôi hiểu cách thiết lập dữ liệu để RandomForest có thể sử dụng nó. Nhưng bây giờ tôi biết tôi cần phải trì hoãn các đầu vào để làm cho nó hoạt động. Nó có ý nghĩa gì khi đặt giá SMA trong ví dụ của bạn làm biến đầu ra, hoặc nó sẽ phải là 0 hoặc 1? \ n Cũng xin cảm ơn các đề xuất sách sẽ làm quen với chúng.
nikke

Bạn chắc chắn có thể sử dụng giá của SMA làm biến đầu ra; vấn đề trở nên phức tạp hơn Thay vì dự đoán một hướng bạn đang cố gắng dự đoán một giá trị chính xác. Theo kinh nghiệm của tôi, đây là một điều rất khó để một thuật toán máy có thể làm tốt ngoài mẫu. Nhưng nếu bạn chỉ làm quen với quá trình thiết lập dữ liệu chuỗi thời gian để dự đoán thì đây có thể là một nơi tốt để bắt đầu, đặc biệt nếu nó trực quan hơn với bạn so với dự đoán định hướng. Bạn cũng có thể thử và dự đoán giá mà hai đường trung bình động sẽ giao nhau.
CrossValidatedTrading

Xin chào, đã tạo một số tính năng và tạo một mô hình: pastie.org/7958695 Tôi nghĩ rằng tôi đã tìm ra cơ học. Mô hình này tuy nhiên tất cả quá cong. Bạn đã làm bất cứ điều gì tương tự và có bất kỳ công dụng thực sự của nó? Sẽ rất tuyệt để nói chuyện nhiều hơn.
nikke

Tôi luôn luôn mở để trò chuyện chi tiết hơn. Thông tin liên lạc của tôi là trên hồ sơ của tôi. Bắn cho tôi một e-mail nếu bạn muốn.
CrossValidatedTrading

Đã thực hiện một số hồi quy đơn giản để dự đoán lợi nhuận sẽ hoạt động tốt, so với dự đoán giá trị giá. Bên cạnh việc dự đoán lợi nhuận phải dự đoán lợi nhuận đủ lớn để đánh bại sự lây lan và giao dịch, v.v. Sẽ rất tuyệt nếu nói nhiều hơn, không thể tìm thấy thư của bạn trong hồ sơ của bạn. Của tôi là trong pastie tôi đã đăng trong bình luận trước.
nikke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.