Kiểm tra lại các chiến lược giao dịch với Amazon Kinesis Data Streams lưu giữ lâu dài và Amazon SageMaker

Nút nguồn: 1883045

Thông tin chi tiết về thời gian thực là rất quan trọng khi xây dựng chiến lược giao dịch. Bất kỳ sự chậm trễ nào trong việc tìm hiểu thông tin chi tiết về dữ liệu có thể khiến các nhà giao dịch phải trả giá rất đắt. Thông thường, bạn cần xem xét xu hướng thị trường lịch sử để dự đoán mô hình giao dịch trong tương lai và đưa ra giá thầu phù hợp. Thêm dữ liệu lịch sử bạn phân tích, bạn nhận được dự đoán giao dịch tốt hơn. Dữ liệu phát trực tuyến theo dõi ngược có thể phức tạp vì nó yêu cầu cơ chế lưu trữ và phân tích phức tạp.

Luồng dữ liệu Amazon Kinesis cho phép khách hàng của chúng tôi lưu trữ dữ liệu phát trực tuyến trong tối đa một năm. Dữ liệu Amazon Kinesis Lưu giữ lâu dài (LTR) của dữ liệu truyền trực tuyến cho phép sử dụng cùng một nền tảng cho cả dữ liệu thời gian thực và dữ liệu cũ hơn được lưu giữ trong Luồng dữ liệu Amazon Kinesis. Ví dụ: người ta có thể đào tạo các thuật toán máy học cho các mô hình giao dịch tài chính, cá nhân hóa tiếp thị và đề xuất mà không cần chuyển dữ liệu vào một kho lưu trữ dữ liệu khác hoặc viết một ứng dụng mới. Khách hàng cũng có thể đáp ứng các quy định lưu giữ dữ liệu nhất định, bao gồm cả theo HIPAA và FedRAMP, sử dụng tính năng lưu giữ lâu dài. Do đó, điều này đơn giản hóa kiến ​​trúc nhập dữ liệu cho trường hợp sử dụng giao dịch của chúng tôi mà chúng tôi sẽ thảo luận trong bài đăng này.

Trong bài Xây dựng chiến lược giao dịch theo thuật toán với Amazon SageMaker, chúng tôi đã trình bày cách kiểm tra lại các chiến lược giao dịch với Amazon SageMaker với dữ liệu giá cổ phiếu lịch sử được lưu trữ trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Trong bài đăng này, chúng tôi mở rộng giải pháp này để truyền dữ liệu trực tuyến và mô tả cách sử dụng Amazon Kinesis.

Ngoài ra, chúng tôi muốn sử dụng Điều chỉnh tự động Amazon SageMaker để tìm ra cấu hình tối ưu cho chiến lược giao nhau trung bình động. Trong chiến lược này, hai đường trung bình động trong một khoảng thời gian chậm và nhanh được tính toán và giao dịch được thực hiện khi xảy ra sự giao nhau. Nếu đường trung bình nhanh vượt lên trên đường trung bình chậm, thì chiến lược sẽ đặt một giao dịch dài, nếu không thì chiến lược sẽ mua bán ngắn hạn. Chúng tôi tìm độ dài khoảng thời gian tối ưu cho các đường trung bình động này bằng cách chạy nhiều kiểm tra ngược với các độ dài khác nhau trên một tập dữ liệu lịch sử.

Cuối cùng, chúng tôi chạy cấu hình tối ưu cho chiến lược giao nhau trung bình động này trên một tập dữ liệu thử nghiệm khác và phân tích kết quả hiệu suất. Nếu hiệu suất được đo lường bằng lãi và lỗ (P&L) là tích cực trong giai đoạn thử nghiệm, chúng ta có thể xem xét chiến lược giao dịch này để thử nghiệm trong tương lai.

Để cho bạn thấy việc bắt đầu sử dụng AWS dễ dàng và nhanh chóng như thế nào, chúng tôi cung cấp triển khai bằng một cú nhấp chuột cho giải pháp hỗ trợ giao dịch có thể mở rộng sử dụng tính năng lưu giữ lâu dài của Kinesis để truyền dữ liệu.

Tổng quan về giải pháp

Chúng tôi sử dụng Luồng dữ liệu Kinesis để lưu trữ luồng theo thời gian thực cũng như dữ liệu thị trường lịch sử. Chúng tôi sử dụng sổ ghi chép Jupyter làm giao diện trung tâm để khám phá và phản hồi các chiến lược giao dịch mới. SageMaker cho phép bạn thiết lập sổ ghi chép Jupyter và tích hợp chúng với Cam kết mã AWS để lưu trữ các phiên bản chiến lược khác nhau và chia sẻ chúng với các thành viên khác trong nhóm.

Chúng tôi sử dụng Amazon S3 để lưu trữ các tạo tác mô hình và các kết quả phản hồi.

Đối với các chiến lược giao dịch của chúng tôi, chúng tôi tạo các vùng chứa Docker chứa các thư viện cần thiết cho backtesting và chính chiến lược đó. Các vùng chứa này tuân theo cấu trúc vùng chứa SageMaker Docker để chạy chúng bên trong SageMaker. Để biết thêm thông tin về cấu trúc của vùng chứa SageMaker, hãy xem Sử dụng Bộ công cụ đào tạo và suy luận SageMaker.

Sơ đồ sau minh họa kiến ​​trúc này.

Chúng tôi chạy bước chuẩn bị dữ liệu từ sổ ghi chép SageMaker. Thao tác này sao chép dữ liệu thị trường lịch sử vào nhóm S3.

Chúng tôi sử dụng Dịch vụ di chuyển dữ liệu AWS (AWS DMS) để tải dữ liệu thị trường vào luồng dữ liệu. Các

Máy tính xách tay SageMaker kết nối với Kinesis Data Streams và chạy thuật toán chiến lược giao dịch thông qua công việc đào tạo của SageMaker. Thuật toán sử dụng một phần dữ liệu để huấn luyện nhằm tìm ra cấu hình chiến lược tối ưu.

Cuối cùng, chúng tôi chạy chiến lược giao dịch bằng cách sử dụng cấu hình đã xác định trước đó trên tập dữ liệu thử nghiệm.

Điều kiện tiên quyết

Trước khi bắt đầu, chúng tôi thiết lập tài nguyên của mình. Trong bài đăng này, chúng tôi sử dụng us-east-2 Vùng làm ví dụ.

  1. Triển khai các tài nguyên AWS bằng cách sử dụng Hình thành đám mây AWS bản mẫu.
  2. Trong Tên ngăn xếp, nhập tên cho ngăn xếp của bạn.
  3. Cung cấp tên nhóm S3 hiện có để lưu trữ dữ liệu thị trường lịch sử.

Dữ liệu được tải trong Kinesis Data Streams từ nhóm S3 này. Nhóm của bạn cần phải ở cùng Khu vực nơi ngăn xếp của bạn được thiết lập.

  1. Chấp nhận tất cả các giá trị mặc định và chọn Sau.
  2. Thừa nhận rằng AWS CloudFormation có thể tạo Quản lý truy cập và nhận dạng AWS (IAM) tài nguyên có tên tùy chỉnh.
  3. Chọn Tạo ngăn xếp.

Điều này tạo ra tất cả các tài nguyên cần thiết.

Tải dữ liệu vào Luồng dữ liệu Kinesis

Để thực hiện tải dữ liệu, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển SageMaker, dưới Sổ tay trong ngăn điều hướng, chọn Trường hợp máy tính xách tay.
  2. Định vị phiên bản sổ tay AlgorithmicTradingInstance-*.
  3. Chọn Mở Jupyter cho trường hợp này.
  4. Tới algorithmic-trading->4_Kinesis chọn và chọn Chiến lược_Kinesis_EMA_HPO.pynb.

Bây giờ bạn chạy bước chuẩn bị dữ liệu trong sổ ghi chép.

  1. Tải tập dữ liệu.

Chỉ định nhóm hiện có nơi dữ liệu thử nghiệm được lưu trữ. Đảm bảo rằng nhóm thử nghiệm nằm trong cùng Khu vực nơi bạn thiết lập ngăn xếp.

  1. Chạy tất cả các bước trong sổ tay cho đến khi Bước 2 Chuẩn bị dữ liệu.
  2. Trên bảng điều khiển AWS DMS, hãy chọn Nhiệm vụ di chuyển cơ sở dữ liệu.
  3. Chọn tác vụ AWS DMS dmsreplicationtask-*.
  4. trên Hoạt động menu, chọn Khởi động lại / Tiếp tục.

Thao tác này bắt đầu tải dữ liệu từ nhóm S3 đến luồng dữ liệu.

Chờ cho đến khi tác vụ nhân bản hiển thị trạng thái Load complete.

  1. Tiếp tục các bước trong sổ ghi chép Jupyter.

Đọc dữ liệu từ Kinesis lưu giữ lâu dài

Chúng tôi đọc dữ liệu mở hàng ngày, cao, thấp, giá đóng cửa và khối lượng từ việc lưu giữ lâu dài của luồng với AWS SDK cho Python (Boto3).

Mặc dù chúng tôi không sử dụng tăng cường quạt ra (EFO) trong bài đăng này, có thể bạn nên làm như vậy một ứng dụng hiện có đang đọc từ luồng. Bằng cách đó, ứng dụng backtesting này không ảnh hưởng đến ứng dụng hiện có.

Bạn có thể trực quan hóa dữ liệu của mình, như được hiển thị trong ảnh chụp màn hình sau.

Xác định chiến lược giao dịch của bạn

Trong bước này, chúng tôi xác định chiến lược giao dịch chéo trung bình động của mình.

Xây dựng hình ảnh Docker

Chúng tôi xây dựng công việc phản hồi của mình dưới dạng hình ảnh Docker và đẩy nó lên Amazon ECR.

Tối ưu hóa siêu tham số với SageMaker trên dữ liệu đào tạo

Đối với chiến lược giao dịch đường trung bình động chéo nhau, chúng tôi muốn tìm khoảng thời gian nhanh và khoảng thời gian chậm tối ưu của chiến lược này và chúng tôi cung cấp phạm vi ngày để tìm kiếm.

Chúng tôi sử dụng lãi và lỗ (P&L) của chiến lược làm thước đo để tìm các siêu tham số được tối ưu hóa.

Bạn có thể thấy công việc điều chỉnh được đề xuất giá trị là 7 và 21 ngày cho khoảng thời gian nhanh và chậm cho chiến lược giao dịch này dựa trên tập dữ liệu đào tạo.

Chạy chiến lược với siêu tham số tối ưu trên dữ liệu thử nghiệm

Bây giờ chúng tôi chạy chiến lược này với các siêu tham số tối ưu trên dữ liệu thử nghiệm.

Khi công việc hoàn tất, kết quả hiệu suất được lưu trữ trong Amazon S3 và bạn có thể xem lại các chỉ số hiệu suất trong biểu đồ và phân tích các lệnh mua và bán cho chiến lược của mình.

Kết luận

Trong bài đăng này, chúng tôi đã mô tả cách sử dụng tính năng lưu giữ lâu dài của Kinesis Data Streams để lưu trữ dữ liệu giá cổ phiếu lịch sử và cách sử dụng dữ liệu truyền trực tuyến để hỗ trợ chiến lược giao dịch với SageMaker.

Việc lưu giữ lâu dài dữ liệu truyền trực tuyến cho phép bạn sử dụng cùng một nền tảng cho cả dữ liệu thời gian thực và dữ liệu cũ hơn được lưu giữ trong Luồng dữ liệu Kinesis. Điều này cho phép bạn sử dụng luồng dữ liệu này cho các trường hợp sử dụng tài chính như sao lưu hoặc cho học máy mà không cần di chuyển dữ liệu vào một kho lưu trữ dữ liệu khác hoặc viết một ứng dụng mới. Bạn cũng có thể đáp ứng các quy định lưu giữ dữ liệu nhất định, bao gồm cả theo HIPAA và FedRAMP, sử dụng tính năng lưu giữ lâu dài. Để biết thêm thông tin, hãy xem Luồng dữ liệu Amazon Kinesis cho phép lưu giữ luồng dữ liệu lên đến một năm.

Tuyên bố từ chối trách nhiệm về rủi ro

Bài đăng này chỉ dành cho mục đích giáo dục và hiệu suất giao dịch trong quá khứ không đảm bảo hiệu suất trong tương lai.


Về các tác giả

Sachin Thakkar là Kiến trúc sư Giải pháp Cấp cao tại Amazon Web Services, làm việc với một Nhà tích hợp Hệ thống Toàn cầu (GSI) hàng đầu. Ông có hơn 22 năm kinh nghiệm với tư cách là Kiến trúc sư CNTT và Tư vấn Công nghệ cho các tổ chức lớn. Lĩnh vực trọng tâm của anh ấy là Dữ liệu & Phân tích. Sachin cung cấp hướng dẫn kiến ​​trúc và hỗ trợ đối tác GSI trong việc xây dựng các giải pháp ngành chiến lược trên AWS

Amgh Gaikwad là Nhà phát triển giải pháp trong Nhóm tạo mẫu. Anh ấy chuyên về học máy và phân tích và có nhiều kinh nghiệm phát triển các mô hình ML trong môi trường thế giới thực và tích hợp AI / ML và các dịch vụ AWS khác vào các ứng dụng sản xuất quy mô lớn. Trước khi gia nhập Amazon, anh làm việc với tư cách là nhà phát triển phần mềm, phát triển các ứng dụng doanh nghiệp tập trung vào Hoạch định Nguồn lực Doanh nghiệp (ERP) và Quản lý Chuỗi Cung ứng (SCM). Amogh đã nhận bằng thạc sĩ về Khoa học máy tính chuyên về Phân tích dữ liệu lớn và Học máy.

Dhiraj Thakur là một Kiến trúc sư Giải pháp với Dịch vụ Web của Amazon. Anh ấy làm việc với các khách hàng và đối tác của AWS để cung cấp hướng dẫn về chiến lược, di chuyển và áp dụng đám mây dành cho doanh nghiệp. Anh ấy đam mê công nghệ và thích xây dựng và thử nghiệm trong không gian Analytics và AI / ML.

Oliver Steffmann là Kiến trúc sư Giải pháp Doanh nghiệp tại AWS có trụ sở tại New York. Ông có hơn 18 năm kinh nghiệm với tư cách là Kiến trúc sư CNTT, Giám đốc Phát triển Phần mềm và Tư vấn Quản lý cho các tổ chức tài chính quốc tế. Trong thời gian làm tư vấn, anh ấy đã tận dụng kiến ​​thức sâu rộng của mình về Dữ liệu lớn, Máy học và công nghệ đám mây để giúp khách hàng của mình bắt đầu chuyển đổi kỹ thuật số. Trước đó, ông là giám đốc công nghệ giao dịch đô thị tại một ngân hàng đầu tư cấp một ở New York và bắt đầu sự nghiệp của mình trong công ty khởi nghiệp của riêng mình ở Đức.

Nguồn: https://aws.amazon.com/blogs/big-data/backtest-trading-strategies-with-amazon-kinesis-data-streams-long-term-retention-and-amazon-sagemaker/

Dấu thời gian:

Thêm từ AWS