Giao dịch FMEX mở khóa tối ưu hóa khối lượng đơn đặt hàng Phần 2

Tác giả:Tốt, Tạo: 2020-07-07 10:47:04, Cập nhật: 2023-10-28 15:31:38

img

Sự sụp đổ của FMEX đã làm tổn thương nhiều người, nhưng nó gần đây đã đưa ra một kế hoạch khởi động lại và xây dựng các quy tắc tương tự như khai thác mỏ ban đầu để mở khóa nợ của họ.https://www.fmz.com/bbs-topic/5834. Đồng thời, có không gian tối ưu hóa trong khai thác phân loại. Mặc dù mọi người không nên bước vào cùng một hố hai lần, những người có yêu cầu tài chính trên FMEX có thể muốn thử, các chiến lược thị trường thực tế cụ thể cũng sẽ được phát hành.

Quy tắc mở khóa sắp xếp FMEX

Định nghĩa mỗi 5 phút trong mỗi ngày như một chu kỳ mở khóa sắp xếp, và mỗi chu kỳ phân bổ 1/288 số tiền mở khóa sắp xếp của cặp giao dịch trong ngày. Trong mỗi chu kỳ, một thời điểm được chọn ngẫu nhiên để chụp ảnh chụp của giao dịch trên các lệnh đang chờ của các lệnh giao dịch, trong đó:

  • Mua 1 Theo tỷ lệ số tiền đặt hàng đang chờ của người dùng, phân bổ 1/4 số tiền hoàn trả của chu kỳ mở khóa sắp xếp

  • Bán 1 Theo tỷ lệ số tiền đặt hàng đang chờ của người dùng, phân bổ 1/4 số tiền hoàn trả của chu kỳ mở khóa phân loại

  • Mua 2 để mua 5 của bốn lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, việc phân bổ chu kỳ mở khóa lệnh được chia thành 1/40

  • Bán 2 để bán 5 của bốn lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, việc phân bổ chu kỳ mở khóa lệnh được chia thành 1/40

  • Mua 6 để mua 10 của năm lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, việc phân bổ các lệnh mở khóa chu kỳ được chia thành 1/50

  • Bán 5 để bán 10 của năm lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, phân bổ chu kỳ mở khóa lệnh được chia thành 1/50

  • Mua 11 để mua 15 của năm lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, việc phân bổ các lệnh mở khóa chu kỳ được chia thành 1/100

  • bán 5 để bán 15 của năm lớp lệnh đang chờ, theo tỷ lệ của số tiền của người dùng lệnh trong mỗi lệnh, phân bổ của các lệnh mở khóa chu kỳ được chia thành 1/100

Tổng số tiền hoàn lại của lệnh mở khóa của người dùng trong một cặp giao dịch nhất định trong cùng một ngày là tổng số tín dụng được trả lại bởi lệnh mở khóa của người dùng trong mỗi chu kỳ trong giao dịch.

Loại bỏ thu nhập mở khóa

Đầu tiên, tổng doanh thu phân loại và mở khóa là:

img

Ở đâu?iđại diện cho một trong những vị trí, và có 30 vị trí ở cả hai bên,alà số lượng các đơn đặt hàng đang chờ,Rlà số tiền hoàn lại chưa bị khóa, vàVlà tổng số đơn đặt hàng hiện có.

Không giống như việc mở khóa giao dịch, không có chi phí cho các đơn đặt hàng đang chờ.RNếu chúng ta xác định tổng số lệnh đang chờ, câu hỏi trở thành làm thế nào để phân bổ các lệnh vào các vị trí khác nhau để tối đa hóa lợi nhuậnGĐơn giản là tìm kiếm vị trí với số lượng nhỏ nhất của lệnh chờ và chờ tất cả chúng lên rõ ràng không phải là giải pháp tối ưu.RNếu chỉ chọn một vị trí, tổng lợi nhuận cuối cùng là 0.75R. Nếu mỗi vị trí được đặt 10, lợi nhuận cuối cùng là 1.5R, điều này cho thấy đôi khi lợi nhuận từ sự lây lan của các lệnh đang chờ là tốt hơn.

Tối ưu hóa giải khóa sắp xếp

Cuối cùng, mục tiêu và hạn chế tối ưu hóa của chúng tôi là:

img

Ở đâu?Mlà tổng số lệnh đang chờ. Đây là một vấn đề tối ưu hóa cong hình vuông có chứa bất bình đẳng, đáp ứng điều kiện KTT và được giải quyết như một số nguyên. Sử dụng gói tương ứng và trình giải tối ưu hóa cong nên có thể trực tiếp nhận được kết quả và trả về số lượng tối ưu các lệnh đang chờ cho mỗi vị trí. Nhưng rõ ràng đây không phải là câu trả lời chúng tôi muốn, chúng tôi cần đơn giản hóa vấn đề và nhận được các bước giải quyết cụ thể.

Bắt đầu với một ví dụ đơn giản

Chỉ có hai lớp giá được xem xét. các đơn đặt hàng đang chờ là 10 và 20 (được gọi là lớp đầu tiên và thứ hai, tương ứng), và số tiền mở khóa của họ làR, và tổng số tiền của chiến lược chờ đặt hàng là 30. Làm thế nào để phân bổ các quỹ đạt đến số tiền mở khóa tối đa? Câu hỏi này có vẻ đơn giản, nhưng rất khó để rút ra kết luận chính xác mà không tính toán.

Kế hoạch 1:

Tìm vị trí của đơn đặt hàng nhỏ nhất đang chờ, treo tất cả chúng, tổng lợi nhuận sẽ làG=30/(30+10)=0.75RĐây cũng là giải pháp dễ nhất để nghĩ ra.

Kế hoạch 2:

Mỗi lần nó được phân bổ 1 nhân dân tệ, và được phân bổ vào nơi có thể tạo ra lợi nhuận lớn nhất, tức là vị trí có số lượng lệnh chờ ít nhất. Sau đó, nhân dân tệ đầu tiên sẽ được phân bổ cho tầng giá đầu tiên, số lượng lệnh chờ trong tầng giá đầu tiên sẽ trở thành 10 + 1, và nhân dân tệ thứ hai cũng sẽ được phân bổ cho tầng giá đầu tiên... và vân vân, cho đến khi tổng được phân bổ cho tầng giá đầu tiên là 10 nhân dân tệ, sau đó bạn có thể chọn một tùy chọn ngẫu nhiên. Khi tổng số lệnh chờ trong tầng giá đầu tiên vượt quá 20, tầng giá tiếp theo sẽ được phân bổ cho tầng giá thứ hai. Kết quả cuối cùng là 20 nhân dân tệ cho tầng giá đầu tiên và 10 nhân dân tệ cho tầng giá thứ hai. Số lượng lệnh chờ cuối cùng của họ là tất cả 30. Tổng lợi nhuận G=20/30+10/30R. Đây cũng là lựa chọn tốt hơn nhiều so với 1 và cũng dễ tính toán.

Kế hoạch 3:

Bạn có thể thiết lập lớp giá đầu tiên để phân bổa, và tầng giá thứ hai là30-a, sau đó bạn có thể trực tiếp liệt kê phương trình và dẫn ra nó như 0 (quá trình bị bỏ qua, tương tự như bài viết của mở khóa giao dịch), tính toán kết quả cuối cùng, công thức là:

img

Mang vào làm tròn để tìma=15. Tổng lợi nhuậnG=15/25+15/35=1.0286R, mà là tốt hơn so với Kế hoạch 2. Vì nó trực tiếp bắt nguồn từ công thức, đây là lựa chọn tối ưu, độc giả có thể kiểm tra nó.

Kết quả có thể khác với mong đợi của mọi người. Kế hoạch 2 cho thấy rõ rằng việc phân bổ từng yếu tố là giải pháp tối ưu trong tình huống hiện tại. Tại sao không phải là giải pháp tối ưu tổng thể? Tình huống này rất phổ biến, và tối ưu địa phương không nhất thiết là tối ưu tổng thể, bởi vì trước khi phân bổ, số lượng đơn đặt hàng đang chờ đã được đầu tư, và hiệu quả tổng thể cần xem xét chi phí chìm. Mục tiêu của chúng tôi cho mỗi bước tối ưu hóa là đạt được hiệu quả tổng thể cao nhất chứ không phải là lợi nhuận duy nhất cao nhất.

Kế hoạch tối ưu hóa cụ thể

Cuối cùng, các hoạt động thực tế khả thi bắt đầu, hoặc đơn giản hóa vấn đề bằng cách phân bổ 1 nhân mỗi lần.ađếnG. đóng góp này tính đến chi phí tích lũy, thay vì thu nhập của một phân phối duy nhất. giá trị lớn hơn, đóng góp tổng thể cho lợi ích cuối cùng càng lớn. rõ ràng, theo hình ảnh của chức năng,a=1, từ sự hiện diện đến sự vắng mặt, hiệu quả cao nhất, và sau đó giảm dần.

img

Tương tự như vậy, lấy ví dụ đơn giản ở trên làm ví dụ, tính toán hiệu quả của chúng sau khi phân bổ các quỹ riêng biệt và liệt kê các bảng:

Quỹ 1 2
1 0.0826 0.0454
2 0.069 0.0413
3 0.0592 0.0378
4 0.051 0.0347
5 0.0444 0.032
12 0.0207 0.0195
13 0.0189 0.0184
14 0.0174 0.0173
15 0.016 0.0163
16 0.0148 0.0154
17 0.0137 0.0146
18 0.0128 0.0139

Theo bảng, đồng nhân đầu tiên được gán cho lớp giá đầu tiên, đồng nhân thứ hai được gán cho lớp giá đầu tiên... đồng nhân thứ năm được gán cho lớp giá thứ hai... và vân vân, và cuối cùng được gán cho lớp giá đầu tiên 15 đồng nhân, lớp giá thứ hai 15 đồng nhân chính xác là giải pháp tối ưu mà chúng tôi tính toán theo phương trình.

  1. Kiểm tra tất cả các lớp giá đầu tiên, nếuV=0Vậy thìa=1, không còn phân bổ tiền dư thừa.
  2. Phân bổ tổng số tiền vàoNvà chọn một lớp giá để phân bổ tại một thời điểm.
  3. Tính toán hiệu quả của mỗi lớp giá =RV/pow(a+V, 2), ađại diện cho tổng số tiền được phân bổ tại vị trí này + số tiền được phân bổ lần này.
  4. Phân bổ tiền cho các lớp giá hiệu quả nhất, và chọn một loại ngẫu nhiên với hiệu quả tương tự.
  5. Chu kỳ 3-4 cho đến khi phân bổ quỹ được hoàn thành.

Nếu tổng số lệnh đang chờ của chúng tôi lớn và hiệu quả phân bổ mỗi nhân dân tệ quá thấp, chúng tôi có thể chia tiền thành 100 và phân bổ một lần mỗi lần. Vì nó chỉ là một hoạt động sắp xếp đơn giản, hiệu quả của thuật toán rất cao. Đặc biệt với cấp độ thực thi, vẫn còn chỗ cho tối ưu hóa, chẳng hạn như chia các đơn đặt hàng của chúng tôi thành 100, do đó mỗi khi bạn điều chỉnh, bạn chỉ cần phân bổ lại đơn đặt hàng và không cần phải hủy tất cả.RCó các phần chồng chéo cho sắp xếp mở khóa và chờ lệnh mở khóa, mà có thể được xem xét cùng nhau, và như vậy.


Có liên quan

Thêm nữa