Lời nói đầu
Tại sao nên học khóa học này?
Bạn đã đạt được gì khi học khóa học này? Trước hết, khóa học này dựa trên ngôn ngữ lập trình JavaScript và Python. Ngôn ngữ chỉ là một công nghệ và cuối cùng chúng ta vẫn phải áp dụng công nghệ này vào một ngành công nghiệp. Giao dịch định lượng là một ngành công nghiệp mới nổi hiện đang trong giai đoạn phát triển nhanh chóng và có nhu cầu nhân lực rất lớn.
Thông qua việc nghiên cứu có hệ thống khóa học này, bạn có thể hiểu sâu hơn về lĩnh vực giao dịch định lượng. Nếu bạn là sinh viên đang chuẩn bị bước vào lĩnh vực giao dịch định lượng, khóa học này cũng sẽ hữu ích cho bạn. Nếu bạn là một nhà đầu tư chứng khoán hoặc những người đam mê đầu tư tương lai, thì Giao dịch định lượng có thể hỗ trợ hoàn toàn cho giao dịch chủ quan của bạn. Bằng cách phát triển các chiến lược giao dịch, bạn có thể kiếm được lợi nhuận trên thị trường tài chính và mở rộng các kênh và nền tảng đầu tư và quản lý tài chính của mình.
Trước đó, tôi xin nói về kinh nghiệm giao dịch cá nhân của tôi. Tôi không phải là chuyên gia tài chính, mà là chuyên gia thống kê. Anh bắt đầu tham gia giao dịch chứng khoán chủ quan khi còn là sinh viên. Sau đó, tình cờ anh trở thành chuyên viên giao dịch định lượng của một quỹ đầu tư tư nhân trong nước, chủ yếu tham gia nghiên cứu và phát triển chiến lược.
Tôi đã hoạt động trong lĩnh vực giao dịch hơn mười năm và đã phát triển nhiều loại chiến lược khác nhau. Triết lý đầu tư của tôi là: kiểm soát rủi ro trên hết, tập trung vào lợi nhuận tuyệt đối. Tên khóa học của chúng tôi là: Từ giao dịch định lượng đến quản lý tài sản – Phát triển chiến lược CTA để đạt được lợi nhuận tuyệt đối.
1. Logic kiếm tiền với các chiến lược CTA tương lai
1.1 Hiểu về CTA tương lai
Một số người có thể hỏi CTA là gì? CTA chính xác là gì? CTA được gọi là cố vấn giao dịch hàng hóa ở nước ngoài và thường được gọi là nhà quản lý đầu tư trong nước. CTA truyền thống tập hợp tiền của một số lượng lớn các nhà đầu tư, sau đó ủy thác cho các tổ chức đầu tư chuyên nghiệp và cuối cùng đầu tư vào hợp đồng tương lai chỉ số chứng khoán, hợp đồng tương lai hàng hóa và hợp đồng tương lai trái phiếu kho bạc thông qua các cố vấn giao dịch (tức là CTA).
Nhưng trên thực tế, khi thị trường tương lai toàn cầu tiếp tục phát triển, khái niệm CTA cũng không ngừng mở rộng và phạm vi của nó vượt xa các hợp đồng tương lai truyền thống. Nó không chỉ có thể đầu tư vào thị trường tương lai mà còn có thể đầu tư vào thị trường lãi suất, thị trường chứng khoán, thị trường ngoại hối, thị trường quyền chọn, v.v. Chỉ cần sản phẩm này có một lượng dữ liệu lịch sử nhất định thì có thể áp dụng chiến lược CTA tương ứng. được phát triển dựa trên những dữ liệu lịch sử này.
Trước những năm 1980, công nghệ giao dịch điện tử chưa thực sự phát triển. Vào thời điểm đó, hầu hết các nhà giao dịch đều tự tay vẽ các chỉ báo kỹ thuật như chỉ báo Williams, KDJ, RSI, MACD, CCI, v.v. để đánh giá xu hướng tương lai của hợp đồng tương lai hàng hóa. Sau đó, một số nhà giao dịch thành lập các quỹ CTA đặc biệt để giúp khách hàng quản lý tài sản. Phải đến khi giao dịch điện tử trở nên phổ biến vào những năm 1980 thì quỹ CTA mới thực sự xuất hiện.
Thay đổi trong Quy mô Quản lý Quỹ CTA

Đơn vị: Tỷ đô la Mỹ
Nếu chúng ta xem biểu đồ trên, đặc biệt là với sự gia tăng của giao dịch định lượng, quy mô của các quỹ CTA toàn cầu đã tăng từ 130,6 tỷ đô la Mỹ vào năm 2005 lên hơn 300 tỷ đô la Mỹ vào năm 2015. Ngoài ra, chiến lược CTA cũng đã trở thành một trong những chiến lược đầu tư phổ biến nhất của các quỹ đầu cơ toàn cầu.
Hiệu suất của các quỹ CTA cũng tăng theo quy mô của chúng. Chúng ta hãy xem Chỉ số CTA Barlake trong hình bên dưới. Chỉ số CTA Barlake là chuẩn mực tiêu biểu của ngành cho các cố vấn giao dịch hàng hóa toàn cầu. Từ cuối năm 1979 đến cuối năm 2016, lợi nhuận tích lũy của Chỉ số Quỹ Barlake CTA lên tới 28,95 lần, với lợi nhuận hàng năm là 9,59%, tỷ lệ Sharpe là 0,37 và mức giảm tối đa là 15,66%.
Bởi vì trong danh mục phân bổ tài sản, các chiến lược CTA thường có mối tương quan cực kỳ thấp với các chiến lược khác. Như thể hiện trong vòng tròn màu đỏ trong hình bên dưới, trong thị trường chứng khoán toàn cầu giảm giá từ năm 2000 đến năm 2002 và cuộc khủng hoảng thế chấp dưới chuẩn toàn cầu năm 2008, Chỉ số Quỹ CTA Barlake không những không giảm mà còn đạt được lợi nhuận dương. Khi khủng hoảng xảy ra ở Trên thị trường chứng khoán và trái phiếu, CTA có thể mang lại thu nhập mạnh mẽ. Ngoài ra, chúng ta cũng có thể thấy rằng mức lợi nhuận của Chỉ số CTA hàng hóa Barclays kể từ năm 1980 luôn cao hơn S&P 500 và mức giảm cũng thấp hơn nhiều so với S&P 500.
Sự phát triển của CTA ở nước tôi chỉ mới diễn ra trong thập kỷ qua, nhưng động lực rất mạnh mẽ. Điều này chủ yếu là do môi trường giao dịch tương đối cởi mở của hợp đồng tương lai hàng hóa trong nước, ngưỡng vốn giao dịch thấp, hệ thống ký quỹ cho phép mua và bán hai - Giao dịch theo chiều ngang và phí giao dịch thấp. Kiến trúc kỹ thuật của sàn giao dịch tiên tiến hơn so với cổ phiếu và dễ giao dịch hơn trong hệ thống, v.v.
Từ năm 2010, các quỹ CTA chủ yếu tồn tại dưới hình thức quỹ đầu tư tư nhân. Khi chính sách trong nước dần mở rộng phạm vi đầu tư của các tài khoản đặc biệt của quỹ, các quỹ CTA bắt đầu tồn tại dưới hình thức các tài khoản đặc biệt của quỹ. Các phương thức hoạt động minh bạch và cởi mở hơn của chúng cũng đã trở thành một công cụ cần thiết để phân bổ tài sản cho nhiều nhà đầu tư hơn.
Như thể hiện trong hình trên, xét về độ khó khi bắt đầu, ngưỡng vốn, phương pháp thực hiện chiến lược giao dịch và kết nối API, chiến lược CTA cũng phù hợp hơn với các nhà giao dịch cá nhân so với các chiến lược giao dịch khác. Hợp đồng tương lai trong nước rất nhỏ. Ví dụ, một lô ngô hoặc bột đậu nành có thể được giao dịch với giá vài nghìn nhân dân tệ, hầu như không có ngưỡng vốn. Ngoài ra, vì một số chiến lược CTA xuất phát từ phân tích kỹ thuật truyền thống, nên chúng tương đối dễ sử dụng so với các chiến lược khác.
Quá trình thiết kế chiến lược CTA cũng tương đối đơn giản. Đầu tiên, dữ liệu lịch sử được xử lý sơ bộ và sau đó nhập vào mô hình định lượng. Mô hình định lượng bao gồm các chiến lược giao dịch được hình thành bởi mô hình toán học, thiết kế lập trình và các công cụ khác, và tạo ra các tín hiệu giao dịch bằng cách tính toán và phân tích những dữ liệu này. Tất nhiên, trong quá trình phát triển thực tế, nó không đơn giản như hình trên. Đây chỉ là để cung cấp cho mọi người một khái niệm chung.
1.2 Các loại chiến lược CTA tương lai
Theo quan điểm của các chiến lược giao dịch, các chiến lược CTA cũng đa dạng: chúng có thể là các chiến lược xu hướng hoặc chiến lược chênh lệch giá; chúng có thể là các chiến lược trung và dài hạn trong các chu kỳ lớn hoặc các chiến lược ngắn hạn trong một ngày; logic chiến lược có thể dựa trên phân tích kỹ thuật hoặc cơ bản. Phân tích bề mặt; có thể là giao dịch chủ quan hoặc giao dịch có hệ thống.
Có nhiều phương pháp phân loại khác nhau cho các chiến lược CTA. Theo phương pháp giao dịch, có thể chia thành: giao dịch chủ quan và giao dịch có hệ thống. Sự phát triển của các chiến lược CTA ở nước ngoài tương đối tiên tiến và chiến lược CTA giao dịch có hệ thống đã đạt gần 100%. Theo phương pháp phân tích có thể chia thành: phân tích cơ bản và phân tích kỹ thuật. Theo nguồn thu nhập, có thể chia thành: giao dịch theo xu hướng và giao dịch theo sóng.
Nhìn chung, trên toàn bộ thị trường giao dịch, các chiến lược xu hướng chiếm khoảng 70% các chiến lược CTA, các chiến lược đảo ngược xu hướng trung bình chiếm khoảng 25% và các chiến lược ngược xu hướng hoặc đảo ngược xu hướng chiếm khoảng 5%. Trong đó, chiến lược xu hướng chiếm tỷ trọng lớn nhất có thể chia thành: giao dịch tần suất cao, giao dịch trong ngày, giao dịch trung hạn ngắn hạn và giao dịch trung hạn dài hạn theo thời gian nắm giữ.
Chiến lược tạo lập thị trường tần suất cao
Hiện nay có hai chiến lược giao dịch tần suất cao phổ biến trên thị trường, một là chiến lược tạo lập thị trường tần suất cao và chiến lược còn lại là chiến lược chênh lệch giá tần suất cao. Chiến lược tạo lập thị trường là cung cấp tính thanh khoản cho thị trường giao dịch. Nghĩa là, trong một thị trường giao dịch có nhà tạo lập thị trường, nếu ai đó muốn mua hoặc bán, nhà tạo lập thị trường phải đảm bảo rằng lệnh của mình có thể được thực hiện. Nếu thị trường không đủ thanh khoản và lệnh không thể được thực hiện, nhà tạo lập thị trường phải mua và bán các đối tác của người khác.
Chiến lược chênh lệch giá tần suất cao
Trọng tài tần suất cao là giao dịch của hai cổ phiếu hoặc ETF có mối tương quan cao và các tổ hợp ETF. Dựa trên phương pháp tính toán của ETF, có thể sử dụng phương pháp tương tự để tính giá dự kiến của ETF. Giá chỉ số ETF có thể được trừ khỏi giá kỳ vọng của ETF để có được chênh lệch giá. Thông thường, chênh lệch giá này sẽ hoạt động trong một kênh giá. Nếu chênh lệch giá vượt qua các kênh trên và dưới, bạn có thể giao dịch chênh lệch giá này và chờ để chênh lệch giá quay trở lại và kiếm được lợi nhuận từ đó.
Chiến lược trong ngày
Nếu hiểu theo nghĩa đen, miễn là các vị thế không được giữ qua đêm thì có thể gọi đây là chiến lược giao dịch trong ngày. Vì thời gian nắm giữ trong giao dịch trong ngày tương đối ngắn, thường thì sau khi vào thị trường, nhà đầu tư không thể kiếm được lợi nhuận ngay lập tức và sẽ nhanh chóng thoát khỏi thị trường. Do đó, phương pháp giao dịch này có rủi ro thị trường thấp hơn. Tuy nhiên, vì thị trường thay đổi nhanh chóng trong thời gian ngắn nên các chiến lược trong ngày thường có yêu cầu cao hơn đối với các nhà giao dịch.
Chiến lược trung và dài hạn
Về lý thuyết, thời gian nắm giữ càng dài thì khả năng chiến lược càng lớn và tỷ lệ rủi ro-lợi nhuận càng thấp. Đặc biệt trong các giao dịch tổ chức, do năng lực của các chiến lược ngắn hạn bị hạn chế và các quỹ lớn không thể ra vào thị trường trong thời gian ngắn nên sẽ phân bổ nhiều chiến lược trung và dài hạn hơn. Thông thường thời gian giữ là vài ngày, vài tháng hoặc thậm chí lâu hơn.
Dữ liệu chiến lược CTA
Nói chung, các chiến lược CTA sử dụng dữ liệu phút, giờ và ngày làm đối tượng nghiên cứu, bao gồm giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa, khối lượng giao dịch, v.v. Chỉ một số ít chiến lược CTA sử dụng dữ liệu tích tắc. Ví dụ, trong dữ liệu chuyên sâu như giá mua, giá bán, khối lượng mua, khối lượng bán, v.v. trong dữ liệu L2.
Khi nói đến những ý tưởng cơ bản của chiến lược CTA, điều đầu tiên chúng ta nghĩ đến là các chỉ số kỹ thuật truyền thống, vì có nhiều tài liệu tham khảo công khai về vấn đề này, logic thường đơn giản hơn và hầu hết đều dựa trên các nguyên tắc thống kê. Ví dụ, các chỉ báo kỹ thuật khác nhau mà mọi người đều quen thuộc: MA, SMA, EMA, MACD, KDJ, RSI, BOLL, W&R, DMI, ATR, SAR, BIAS, OBV, v.v.
Ngoài ra, trên thị trường còn có một số mô hình giao dịch cổ điển có thể được sử dụng làm tài liệu tham khảo và cải thiện, bao gồm: kết hợp nhiều đường trung bình động, DualThrust, R-Breaker, Phương pháp giao dịch Turtle, Phương pháp giao dịch Grid, v.v.
Tất cả những điều trên đều là chiến lược giao dịch dựa trên phân tích kỹ thuật truyền thống. Quá trình này là trích xuất các yếu tố hoặc điều kiện mua và bán với lợi thế xác suất dựa trên dữ liệu lịch sử và các khái niệm giao dịch chính xác, và giả định rằng thị trường vẫn sẽ có mô hình này trong tương lai. Cuối cùng, hãy sử dụng mã để triển khai các chiến lược giao dịch và tự động hóa hoàn toàn giao dịch của bạn. Mở vị thế, chốt lời, dừng lỗ, thêm vị thế, giảm vị thế, v.v., những việc này thường không cần sự can thiệp của con người. Trên thực tế, đây là chiến lược mua cao và bán thấp bằng cách tận dụng hệ số tự tương quan dương của chuỗi giá theo thời gian.
Ưu điểm lớn nhất của chiến lược CTA là nó có thể đạt được lợi nhuận tuyệt đối bất kể thị trường hiện tại đang tăng hay giảm, đặc biệt là khi thị trường thay đổi nhanh chóng giữa thị trường tăng giá và giảm giá, hoặc khi xu hướng thị trường rõ ràng là trơn tru. Ưu điểm của Chiến lược này rất lớn. Tóm lại, có một xu hướng. Trong lợi nhuận có. Tuy nhiên, nếu thị trường đang trong trạng thái biến động hoặc xu hướng không rõ ràng, chiến lược này có thể dẫn đến việc mua ở mức cao và bán ở mức thấp, liên tục di chuyển qua lại để ngăn chặn thua lỗ.
1.3 Nguyên tắc lợi nhuận của Chiến lược CTA tương lai
Lý do tại sao các chiến lược CTA tương lai có thể kiếm được tiền chủ yếu là vì những lý do sau:
- Biến động giá mang tính phản xạ và luôn tiếp diễn theo xu hướng. Khi các nhà đầu tư quan sát giá tăng, họ sẽ mua vào, khiến giá tăng cao hơn nữa. Điều tương tự cũng đúng với giá cả giảm. Vì các nhà đầu tư hành động thiếu lý trí nên đôi khi chúng ta thấy giá tăng đến mức bất thường khi giá tăng và giảm đến mức bất thường khi giá giảm.
- Mỗi nhà đầu tư có mức độ chấp nhận không cân xứng đối với tỷ lệ lãi lỗ và khả năng chấp nhận rủi ro khác nhau. Đối với hầu hết các nhà đầu tư bán lẻ, họ thích chọn phương pháp giao dịch theo xu hướng bảo thủ hơn và thị trường có nhiều khả năng di chuyển theo xu hướng.
- Sự hình thành giá được xác định bởi các giao dịch và các giao dịch được thúc đẩy bởi con người. Tuy nhiên, bản chất con người khó thay đổi, đó là lý do tại sao các mô hình cố định xuất hiện nhiều lần. Chiến lược này có hiệu quả khi được kiểm tra ngược trên dữ liệu lịch sử. Điều này chỉ ra rằng nó có thể hiệu quả trong tương lai.
Một đặc điểm khác của giao dịch theo xu hướng là bạn mất một khoản tiền nhỏ khi không có thị trường và kiếm được rất nhiều tiền khi thị trường xuất hiện. Tuy nhiên, tất cả những ai đã từng giao dịch đều biết rằng thị trường đang trong trạng thái biến động nhất của thời điểm đó, và chỉ trong một khoảng thời gian ngắn thì nó mới trở thành xu hướng. Trích dẫn. Do đó, chiến lược theo xu hướng có tỷ lệ chiến thắng thấp hơn khi giao dịch, nhưng nhìn chung lợi nhuận và thua lỗ của mỗi giao dịch là tương đối lớn.
Vì các chiến lược theo xu hướng có lợi nhuận không ổn định nên nhiều tổ chức đầu tư sẽ xây dựng danh mục đầu tư bằng nhiều loại hình và nhiều chiến lược khác nhau, trong đó cũng bao gồm một số chiến lược đảo ngược nhất định. Chiến lược đảo ngược là chuỗi giá theo thời gian có hệ số tự tương quan âm, nghĩa là bán ở mức cao và mua ở mức thấp.
Mối tương quan giữa CTA và tài sản truyền thống

Nếu chúng ta nhìn vào biểu đồ trên, về mặt lý thuyết, khi đối mặt với nhiều thay đổi về giá thị trường cùng một lúc, nhiều chiến lược với nhiều phong cách khác nhau hoặc có mối tương quan thấp sẽ tạo ra các tín hiệu giao dịch đôi khi giống nhau và đôi khi khác nhau. Khi nhiều đường cong lợi suất chồng lên nhau, tổng lợi nhuận sẽ bổ sung cho nhau và đường cong lợi suất trở nên phẳng hơn, do đó làm giảm sự biến động của lợi nhuận.
Từ những quan điểm trên, có thể kết luận rằng thay vì phát triển một chiến lược cấp độ tổng thể, tốt hơn là phát triển nhiều chiến lược phụ tầm thường. Vậy làm thế nào để kiểm soát những chiến lược này? Ở đây chúng ta có thể tham khảo thuật toán random forest trong học máy. Random forest không phải là một thuật toán độc lập, mà là một khuôn khổ ra quyết định bao gồm nhiều cây quyết định. Nó tương đương với chiến lược cha ở trên chiến lược con của cây quyết định. Tổ chức và kiểm soát các nhóm chính sách con thông qua các chính sách cha.
Tiếp theo, chúng ta cần thiết kế một chiến lược tổng thể. Chúng ta có thể đánh giá tính thanh khoản, lợi nhuận và tính ổn định của nhiều loại hàng hóa khác nhau trong toàn bộ thị trường tương lai hàng hóa, sàng lọc các tổ hợp tương lai hàng hóa có tính biến động thấp, sau đó tiến hành trung lập trong ngành. Thông qua việc lựa chọn đa dạng ngành công nghiệp, sự biến động chung có thể được giảm bớt hơn nữa. Cuối cùng, danh mục đầu tư đa dạng hàng hóa tương lai thực tế được xây dựng thông qua việc khớp giá trị thị trường để giao dịch.
Mỗi sản phẩm cũng có thể được cấu hình với nhiều chiến lược tham số. Bạn có thể chọn một tổ hợp tham số hoạt động tốt trong backtest. Khi xu hướng thị trường rõ ràng, nhiều chiến lược tham số thường hoạt động nhất quán, tương đương với việc thêm vị thế. Khi thị trường đang một thị trường biến động, có thể sử dụng nhiều chiến lược tham số để điều chỉnh hiệu suất của chiến lược. Các chiến lược thường hoạt động không nhất quán, do đó, mỗi chiến lược sẽ mua hoặc bán để phòng ngừa rủi ro, tương đương với việc giảm vị thế. Điều này có thể làm giảm thêm tỷ lệ lợi nhuận tối đa của danh mục đầu tư trong khi vẫn giữ nguyên tỷ lệ lợi nhuận chung.
2. Trường hợp chiến lược CTA tương lai cổ điển
Newton đã từng nói: Nếu tôi có thể nhìn xa hơn người khác, đó là vì tôi đang đứng trên vai những người khổng lồ.
Các chiến lược CTA có sẵn trên thị trường bao gồm chiến lược trung bình động, chiến lược Bollinger Band, Phương pháp giao dịch Turtle, chiến lược động lượng, chiến lược chênh lệch giá, v.v. Tất cả các chiến lược giao dịch định lượng đều có một đặc điểm là chúng sẽ chết yểu. Một khi chiến lược được công khai, nó sẽ dần trở nên không hiệu quả. Nhưng điều này không ảnh hưởng đến việc chúng ta học các chiến lược này và rút ra bản chất của chúng, để chúng ta có thể nhìn nhận vấn đề theo góc nhìn của người đứng trên vai những người khổng lồ.
2.1 Phân tích cơ bản về tương lai (hàng tồn kho, cơ sở, giá)
Phân tích cơ bản không cần phải lo lắng về xu hướng giá ngắn hạn. Nó tin rằng giá trị cuối cùng sẽ được phản ánh trong giá. Nó liên quan nhiều hơn đến việc phân tích các yếu tố đằng sau giá và đánh giá giá trị của loại này. Nói chung, phương pháp phân tích từ trên xuống được áp dụng: từ các yếu tố vĩ mô, các yếu tố đa dạng và các yếu tố khác.
Nếu chúng ta nhìn vào hình ảnh trên, có rất nhiều yếu tố ảnh hưởng đến giá hàng hóa, tổng cộng có tới hàng chục mặt hàng. Nếu chúng ta phân tích sâu hơn nữa, còn có hàng chục mặt hàng nữa và những dữ liệu này liên tục thay đổi. Các nhà đầu tư cá nhân không có khả năng thu thập được lượng dữ liệu khổng lồ như vậy, chứ đừng nói đến việc tiến hành phân tích khách quan.
Trên thực tế, phân tích cơ bản về hàng hóa tương lai không có nghĩa là phân tích tất cả các yếu tố. Chúng ta chỉ cần nắm bắt các yếu tố cốt lõi của phân tích cơ bản để tìm ra các mô hình từ thông tin phức tạp.
Các yếu tố vĩ mô
Dữ liệu kinh tế vĩ mô phức tạp và thay đổi liên tục. Mỗi ngày và mỗi khoảnh khắc, rất nhiều dữ liệu kinh tế được các chính trị gia, ngân hàng trung ương và ngân hàng đầu tư ở nhiều quốc gia công bố, cả chính thức và không chính thức. Ngoài các cuộc khủng hoảng chính trị và kinh tế, phân tích vĩ mô là tài liệu hay để thảo luận nhưng không thực tế lắm. Peter Lynch, một chuyên gia quản lý quỹ nổi tiếng người Mỹ, đã từng bày tỏ quan điểm của mình: "Tôi dành không quá mười lăm phút mỗi năm để phân tích xu hướng kinh tế".
Các yếu tố đa dạng
Trong phân tích cơ bản, phân tích sản phẩm chủ yếu phân tích mức phí bảo hiểm và chiết khấu, mối quan hệ cung cầu, hàng tồn kho hàng hóa, lợi nhuận của ngành, v.v. Có thể nói rằng việc thành thạo phân tích các yếu tố sản phẩm tương lai hàng hóa về cơ bản có thể xác định hầu hết các xu hướng thị trường.
Những người bạn đã tham gia giao dịch tương lai đều biết rằng hợp đồng tương lai hàng hóa trong nước có thể được chia thành: sản phẩm công nghiệp và sản phẩm nông nghiệp. Phương pháp phân tích đối với sản phẩm công nghiệp và sản phẩm nông nghiệp là khác nhau. Chúng tôi sẽ giải thích từ hai khía cạnh cung và cầu. Đối với sản phẩm công nghiệp, nguồn cung tương đối ổn định. Trừ khi có đột phá công nghệ lớn, nếu không thì khả năng sản xuất sẽ không tăng. tăng trong ngắn hạn. Có những thay đổi lớn theo thời gian, vì vậy yếu tố ảnh hưởng đến giá sản phẩm công nghiệp chủ yếu là nhu cầu. Nhu cầu về sản phẩm nông nghiệp tương đối ổn định. Về lâu dài, có những thay đổi về nhu cầu đối với sản phẩm nông nghiệp, nhưng về ngắn hạn, nhu cầu đối với sản phẩm nông nghiệp có xu hướng ổn định. Do đó, yếu tố ảnh hưởng đến giá sản phẩm nông nghiệp chủ yếu là cung cấp.
Do đó, theo quy luật kinh tế, mối quan hệ cung cầu cuối cùng quyết định giá cả của một mặt hàng. Về lý thuyết, chỉ cần có được dữ liệu cung cầu, chúng ta có thể phán đoán giá cả tương lai của mặt hàng đó. Đối với sản phẩm công nghiệp, dữ liệu cung tương đối dễ có, nhưng dữ liệu cầu lại khó có. Đối với sản phẩm nông nghiệp, dữ liệu cầu tương đối dễ có, nhưng dữ liệu cung lại khó có.
Trên thực tế, chúng ta có thể đi xa hơn và thực hiện phép trừ. Kết quả chung của cung và cầu trên thị trường kinh tế là hàng tồn kho. Chúng ta có thể sử dụng dữ liệu hàng tồn kho để đánh giá sức mạnh của mối quan hệ giữa cung và cầu trên thị trường. Nếu lượng hàng tồn kho của một mặt hàng nào đó rất cao, điều đó có nghĩa là sức cung của thị trường lớn hơn cầu và giá của mặt hàng đó sẽ giảm nếu các điều kiện bên ngoài không thay đổi. Nếu lượng hàng tồn kho của một mặt hàng nào đó rất thấp, điều đó có nghĩa là lực cầu thị trường lớn hơn lực cung và giá của mặt hàng đó sẽ sớm tăng nếu các điều kiện bên ngoài không thay đổi.
Ngoài việc phân tích hàng tồn kho, còn cần phải phân tích chênh lệch giá giữa thị trường giao ngay và thị trường tương lai, đây chính là cái gọi là cơ sở. Nếu giá tương lai cao hơn giá giao ngay, chúng ta gọi đó là phí bảo hiểm; nếu giá tương lai thấp hơn giá giao ngay, chúng ta gọi đó là chiết khấu. Theo hệ thống giao hàng tương lai, vào ngày giao hàng tương lai, giá tương lai phải bằng giá giao ngay.
Bất kể là giá cao hay giá thấp, do những hạn chế của hệ thống giao hàng tương lai, về mặt lý thuyết, giá tương lai vào ngày giao hàng phải bằng giá giao ngay. Khi ngày giao hàng đến gần, giá giao ngay và giá tương lai sẽ có xu hướng ổn định, một bên là lợi nhuận tương lai so với giá giao ngay, bên kia là lợi nhuận giao ngay so với giá tương lai.
Dựa trên các nguyên tắc trên, chúng ta có thể sử dụng hàng tồn kho và cơ sở để đồng thời xác định giá tương lai. Nếu lượng hàng tồn kho của một mặt hàng thấp và nếu giá tương lai thấp hơn nhiều so với giá giao ngay thì chúng ta có thể kết luận rằng cầu trên thị trường giao ngay lớn hơn cung và khả năng giá giao ngay trong tương lai tăng là cao. Khi ngày giao hàng đến gần, giá tương lai sẽ tăng theo giá giao ngay và khả năng giá tương lai tăng trong tương lai sẽ lớn hơn.
Cuối cùng, chúng ta đã xác định được hướng đi có khả năng xảy ra nhất của giá trong tương lai thông qua hàng tồn kho và cơ sở, nhưng không có điểm mua và bán chính xác hơn, do đó cần phân tích kỹ thuật để đưa ra tín hiệu vào và ra rõ ràng. Toàn bộ khuôn khổ của phân tích cơ bản là: hàng tồn kho thấp + chiết khấu sâu + phân tích kỹ thuật tín hiệu tăng giá = mua; hàng tồn kho cao + phí bảo hiểm lớn + phân tích kỹ thuật tín hiệu giảm giá = bán.
2.2 Quy tắc giao dịch rùa
Khi nói đến chiến lược giao dịch, chúng ta phải nói đến Quy tắc giao dịch Turtle tiêu biểu. Quy tắc giao dịch của Turtle xuất phát từ một trong những thí nghiệm nổi tiếng nhất trong lịch sử giao dịch, khi nhà đầu cơ hàng hóa Richard Dennis muốn tìm hiểu xem liệu những nhà giao dịch vĩ đại được sinh ra hay được rèn luyện. Để đạt được mục đích này, vào năm 1983, ông đã tuyển dụng 13 người và dạy họ những khái niệm cơ bản về giao dịch tương lai, cũng như các phương pháp và nguyên tắc giao dịch của riêng ông. Những sinh viên này được gọi là "rùa biển".
Trong bốn năm tiếp theo, Turtles đã đạt được mức lợi nhuận kép trung bình hàng năm là 80%. Dennis cũng chứng minh rằng bằng cách sử dụng một hệ thống và quy tắc đơn giản, những người có ít hoặc không có kinh nghiệm giao dịch cũng có thể trở thành nhà giao dịch xuất sắc. Tuy nhiên, một số Rùa bán Quy tắc giao dịch Rùa trên trang web để kiếm lời. Để ngăn chặn hành vi này, hai thành viên sáng lập của Turtles, Curtis Faith và Arthur Maddock, đã quyết định công bố miễn phí Quy tắc buôn bán Turtles cho công chúng trên một trang web.
Sau khi sự thật được sáng tỏ, mọi người phát hiện ra rằng Turtle Trading Rules đã áp dụng Kênh Donchian được tối ưu hóa và sử dụng chỉ báo ATR để quản lý vị thế. Sau nhiều thập kỷ thử nghiệm trong lịch sử, nó đã trở thành phương pháp giao dịch mà các nhà đầu tư bán lẻ thông thường có thể sử dụng để kiếm tiền dễ dàng và vẫn hiệu quả đối với một số sản phẩm nhất định.
Nguyên tắc cốt lõi của Turtle
- Nắm bắt lợi thế: Tìm một chiến lược giao dịch có giá trị kỳ vọng dương vì nó sẽ tạo ra lợi nhuận dương trong thời gian dài.
- Quản lý rủi ro: Kiểm soát rủi ro và giữ vững lập trường, nếu không bạn có thể không sống đến ngày tạo ra kết quả.
- Cam kết kiên định: Chỉ bằng cách thực hiện chiến lược một cách kiên định, bạn mới có thể thực sự đạt được kết quả có hệ thống.
- Tính đơn giản và rõ ràng: Về lâu dài, các hệ thống đơn giản sẽ khả thi hơn các hệ thống phức tạp.
Vậy tiếp theo, chúng ta hãy cùng xem Luật giao dịch rùa thực sự nói gì?
- Thị trường - về cơ bản là mua và bán gì, ở thị trường nào để giao dịch. The Turtles là những nhà giao dịch tương lai, và họ chỉ chọn những thị trường có khối lượng giao dịch lớn và thanh khoản cao, vì việc chọn những thị trường có khối lượng giao dịch thấp sẽ làm tăng nguy cơ thua lỗ tiền. Sự trượt giá thêm khi thoát khỏi thị trường cũng sẽ khiến bạn bỏ lỡ nhiều cơ hội theo xu hướng.
- Quy mô vị thế - Mua hoặc bán bao nhiêu là một phần rất quan trọng của toàn bộ chiến lược, nhưng hầu hết mọi người thường bỏ qua hoặc xử lý không đúng cách. Quy tắc giao dịch của Turtle sử dụng ATR hoặc chỉ báo Average True Range để tính toán các vị thế mở, thêm tín hiệu và tín hiệu dừng lỗ. Đây là một thiết kế rất thông minh, nhằm mục đích điều chỉnh quy mô vị thế theo mức độ biến động tuyệt đối của thị trường. Khi mức độ biến động của thị trường mạnh, quy mô vị thế sẽ giảm và khi mức độ biến động của thị trường yếu, quy mô vị thế sẽ tăng. . Đầu tiên nó định nghĩa một đơn vị, công thức của đơn vị này là: (tổng tài sản*1%)/ATR. Vị thế ban đầu là 1 đơn vị. Ngay cả khi mức giảm của sản phẩm vào ngày đó đạt đến mức ATR, mức lỗ vào ngày đó vẫn có thể được kiểm soát trong phạm vi 1% tổng tài sản. Nếu giá tăng 0,5 đơn vị, vị thế mua sẽ tăng thêm 1 đơn vị, tối đa là 4 đơn vị.
- Tham gia thị trường - Rùa tham gia thị trường dựa trên Kênh Donchian. Khi giá tăng trên mức giá cao nhất của 20 hoặc 55 đường K trước đó, nó tham gia thị trường để thực hiện lệnh mua. Khi giá giảm xuống dưới giá thấp nhất của 20 hoặc 55 dòng K trước đó, nó vào thị trường để thực hiện lệnh mua dài hạn. , chỉ cần vào thị trường và bán ngắn hạn. Vào lệnh giao dịch khi tín hiệu xuất hiện, không cần chờ giá đóng cửa hoặc đường K tiếp theo.
- Dừng lỗ - Về lâu dài, các giao dịch không có lệnh dừng lỗ sẽ không thành công, nhưng hầu hết các nhà giao dịch vẫn giữ các vị thế thua lỗ với hy vọng thị trường sẽ đảo chiều. The Turtles có những quy tắc nghiêm ngặt về thời điểm thoát khỏi vị thế thua lỗ. Nếu giữ vị thế mua và giá giảm 2 đơn vị, vị thế mua sẽ được đóng lại bằng lệnh dừng lỗ. Nếu bạn giữ vị thế bán khống và giá tăng 2 đơn vị, vị thế bán khống sẽ được đóng lại bằng lệnh dừng lỗ.
- Chốt lời - Chốt lời của Rùa có nghĩa là mất rất nhiều lợi nhuận đang lưu thông, đây cũng là điều mà nhiều nhà giao dịch thấy khó chấp nhận. Nếu hiện tại bạn đang nắm giữ một vị thế mua và giá giảm xuống dưới đường dưới của Kênh Donchian 10 ngày, hãy đóng tất cả các vị thế mua; nếu hiện tại bạn đang nắm giữ một vị thế bán và giá tăng lên trên đường trên của Kênh Donchian 10 ngày Kênh Donchian, đóng tất cả các vị thế bán.
Từ đó, chúng ta có thể thấy rằng mặc dù Quy tắc giao dịch của Turtle có vẻ đơn giản, nhưng thực tế, chúng đã hình thành nên nguyên mẫu của một hệ thống giao dịch thực sự. Nó bao gồm tất cả các khía cạnh của một hệ thống giao dịch hoàn chỉnh và không để lại chỗ cho các nhà giao dịch. Có chỗ cho trí tưởng tượng chủ quan và ra quyết định, giúp phát huy lợi thế của hoạt động được lập trình của hệ thống. Bao gồm: quy tắc ra vào, quản lý quỹ và kiểm soát rủi ro, v.v.
Ưu điểm lớn nhất của Phương pháp giao dịch Turtle là giúp chúng ta thiết lập một phương pháp giao dịch hiệu quả. Đây là một chiến lược kết hợp mở lệnh theo lô, dừng lỗ và dừng lỗ động, và theo dõi xu hướng thị trường, đặc biệt là sử dụng giá trị ATR và vị thế quản lý. Khái niệm này đáng để học. Tất nhiên, nó cũng có một vấn đề chung với các chiến lược theo xu hướng, đó là việc thu lợi nhuận chưa thực hiện. Lợi nhuận nổi có được từ việc theo đuổi mức tăng rất có thể sẽ bị mất do mức giảm mạnh sau đó. Nó rất mạnh trong xu hướng lớn nhưng lại hoạt động kém trong thị trường biến động.
3. Phát triển thực tế các chiến lược CTA tương lai
3.1 Chiến lược phát triển xu hướng CTA dựa trên ngôn ngữ Mai
Vào cuối thế kỷ trước, một phương pháp giao dịch kỳ diệu bắt đầu trở nên phổ biến trong lĩnh vực đầu tư tài chính tại Hoa Kỳ. Sau khi hàng ngàn người thực hành, mọi người thấy rằng phương pháp này có hiệu quả và có giá trị thực tế lớn. Đồng thời , nó đã được nhiều chuyên gia đầu tư công nhận. Nó được các nhà giao dịch chuyên nghiệp công nhận và vẫn có thể được áp dụng hoàn hảo cho hầu hết các lĩnh vực đầu tư tài chính, cho dù đó là ngoại hối, vàng, cổ phiếu, tương lai, dầu thô hay chỉ số và trái phiếu. Đây là phương pháp vận hành hỗn loạn.
Từ hỗn loạn ban đầu ám chỉ đến mô tả trạng thái hỗn loạn của vũ trụ. Ý tưởng là kết quả là không thể tránh khỏi, nhưng không thể tính toán được do kiến thức hiện có, vì bản thân phép tính cũng đang thay đổi kết quả, và giá trị tối đa hoặc tối thiểu Kết quả có thể xuất hiện ở cuối cùng, nhưng không có gì là không thể tránh khỏi. kết quả. Điều này rất giống với giao dịch trên thị trường, nơi những người tham gia thay đổi thị trường khi họ phân tích thị trường và thực hiện giao dịch mua và bán. Thị trường luôn biến đổi. Khi những người tham gia tìm hiểu về một hình thức thị trường mới, thị trường cũng biết rằng nó được những người tham gia công nhận, và sau đó đột biến xảy ra. Và nó chắc chắn sẽ có xu hướng đột biến theo hướng mà những người tham gia không biết. Nó có đủ trí tuệ để ngăn cản những người tham gia nắm bắt được các mô hình thay đổi của nó. Nói cách khác, thị trường không ổn định và sự hiểu biết về quá khứ của thị trường không thể đại diện cho tương lai.
Phương pháp vận hành hỗn loạn là một bộ hoàn chỉnh các ý tưởng đầu tư, chiến lược giao dịch và tín hiệu vào và ra do Bill Williams phát minh. Hiện nay, nhiều nhà đầu tư quốc tế sử dụng phương pháp hoạt động hỗn loạn để tham gia giao dịch thị trường. Do thị trường tài chính của nước tôi phát triển chậm và lý thuyết hỗn loạn là một ý tưởng tương đối mới nên có rất ít người ở Trung Quốc nghiên cứu phương pháp hoạt động hỗn loạn. Vì phương pháp hoạt động hỗn loạn là một chiến lược giao dịch có tính phổ biến cao có thể áp dụng cho hầu hết mọi lĩnh vực đầu tư tài chính, bao gồm cổ phiếu, trái phiếu, tương lai, ngoại hối và tiền kỹ thuật số, nên khóa học này sử dụng phiên bản đơn giản hóa của chiến lược hỗn loạn làm điểm khởi đầu . Cải thiện sự quan tâm và lợi nhuận đầu tư của mọi người.
Như tên gọi của nó, cơ sở lý thuyết của phương pháp vận hành hỗn loạn là lý thuyết hỗn loạn, được nhà khí tượng học Edward Lorenz đề xuất và là một trong những khám phá khoa học vĩ đại nhất vào cuối thế kỷ 20. Ông là người đưa ra "hiệu ứng cánh bướm" nổi tiếng. Bill Williams đã sáng tạo khi áp dụng lý thuyết hỗn loạn vào lĩnh vực đầu tư tài chính và kết hợp nó với hình học fractal, động lực học phi tuyến tính và các chuyên ngành khác để tạo ra một loạt các chỉ báo phân tích kỹ thuật rất hiệu quả.
Toàn bộ phương pháp vận hành hỗn loạn bao gồm năm chiều (chỉ báo kỹ thuật):
Hãy xem hình ảnh trên. Đường Alligator là một tập hợp các đường cân bằng sử dụng hình học fractal và động lực học phi tuyến tính. Bản chất của nó là đường trung bình động có trọng số theo hàm mũ mở rộng, đây là một loại đường trung bình động, nhưng phương pháp tính toán phức tạp hơn một chút hơn đường trung bình động thông thường. Một số. Tiếp theo, chúng ta hãy xem cách định nghĩa dòng Alligator trong ngôn ngữ Mai:
// 参数
N1:=11;
N2:=21;
// 定义价格中线
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;
// 鳄鱼线
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);
Đầu tiên, chúng tôi xác định hai tham số bên ngoài N1 và N2, sau đó tính toán HL trung bình của giá cao nhất và giá thấp nhất dựa trên các tham số bên ngoài. Sau đó, chúng tôi tính toán HL trung bình với các tham số khác nhau tương ứng. Đối với nụ hôn môi, đó là chu kỳ nhỏ của đường giữa. Để tính trung bình một lần nữa, răng là trung bình của chu kỳ trung bình của đường giữa, và hàm là trung bình của chu kỳ lớn của đường giữa. Trong chiến lược này, chúng ta sử dụng hàm.
Khái niệm fractal được định nghĩa rất rõ ràng trong Phương pháp vận hành hỗn loạn. Chúng ta có thể sử dụng một phép so sánh: mở lòng bàn tay với các ngón tay hướng lên trên. Ngón giữa là fractal trên cùng, ngón út và ngón đeo nhẫn ở bên trái, và ngón trỏ ngón tay và ngón cái bên phải tượng trưng cho vùng không bị thương. Đường K của mức cao mới. Một fractal cơ bản được tạo thành từ 5 đường K này. Sau đó, bạn có thể định nghĩa một fractal bằng đoạn mã sau:
// 分形
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;
TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);
MAX_YRG^^MAX(MAX(Y,R),G);
MIN_YRG^^MIN(MIN(Y,R),G);
TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);
Sau khi tính toán đường Alligator và fractal, chúng ta có thể viết một chiến lược hoạt động hỗn loạn đơn giản dựa trên hai điều kiện này, sử dụng một tập hợp các đường trung bình động có trọng số theo hàm mũ làm giá chuẩn để tính toán đường Alligator và các chỉ báo fractal. Tất nhiên, chiến lược hoạt động hỗn loạn ban đầu phức tạp hơn nhiều. Mã như sau:
// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// 如果当前无空单,并且收盘价跌破下分形,并且下分形在鳄鱼线下方时,空头开仓
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);
// 如果收盘价跌破鳄鱼的下巴时,多头平仓
C<Y,SP(BKVOL);
// 如果收盘价升破鳄鱼的下巴时,空头平仓
C>Y,BP(SKVOL);
Để dễ hiểu, tôi đã đưa vào các bình luận chi tiết trong mã. Chúng ta có thể chỉ cần liệt kê logic giao dịch của chiến lược này như sau:
- Mở vị thế mua: Nếu hiện tại không có lệnh mua nào và giá đóng cửa vượt qua đường fractal trên và đường fractal trên nằm trên đường Alligator.
- Mở vị thế bán khống: Nếu hiện tại không có lệnh bán khống nào và giá đóng cửa giảm xuống dưới đường fractal dưới và đường fractal dưới nằm dưới đường Alligator.
- Thoát khỏi vị thế mua: Nếu giá đóng cửa giảm xuống dưới hàm cá sấu.
- Thoát vị thế bán: Nếu giá đóng cửa vượt qua mức hàm cá sấu.
Tiếp theo, chúng ta hãy xem xét kết quả kiểm tra ngược của chiến lược hoạt động hỗn loạn đơn giản này. Để quá trình kiểm tra ngược gần hơn với môi trường giao dịch thực tế, phí giao dịch được đặt gấp đôi phí giao dịch của sàn giao dịch và thêm mức trượt giá 2 lần cho các vị thế mở và đóng. Kiểu dữ liệu để kiểm tra ngược là chỉ số cốt thép, kiểu giao dịch là cốt thép chính liên tục và vị thế mở được cố định ở 1 lô. Dưới đây là báo cáo hiệu suất kiểm tra ngược sơ bộ ở mức 1 giờ.
Đánh giá từ đường cong vốn và dữ liệu hiệu suất kiểm tra ngược, chiến lược này hoạt động tốt và đường cong vốn tổng thể đang tăng dần. Tuy nhiên, đặc điểm thị trường thép cây đã thay đổi kể từ cuối năm 2016, từ xu hướng đơn phương có tính biến động cao trước đây sang biến động rộng khắp. Xét theo đường cong vốn, lợi nhuận rõ ràng đã yếu kể từ năm 2017.
Tóm lại, bản chất của phương pháp hoạt động hỗn loạn là tìm ra điểm ngoặt. Bạn không cần phải lo lắng về việc thị trường diễn biến như thế nào, hoặc liệu đó có phải là đột phá thực sự hay không. Nếu bạn đột phá qua fractal, bạn có thể vào trực tiếp ra thị trường. Đừng bao giờ cố gắng dự đoán thị trường mà hãy là người quan sát và theo dõi.
3.2 Phát triển chiến lược CTA dựa trên ngôn ngữ JavaScript
Trong cuốn sách "Thuật giả kim tài chính" viết năm 1987, Soros đã từng đưa ra một đề xuất quan trọng: Tôi tin rằng giá thị trường luôn sai theo nghĩa là chúng thiên vị tương lai. Ông tin rằng giả thuyết về hiệu quả thị trường chỉ là một giả định lý thuyết. Trên thực tế, những người tham gia thị trường không phải lúc nào cũng lý trí, và tại mọi thời điểm, những người tham gia không thể có được đầy đủ và diễn giải khách quan mọi thông tin. Hơn nữa, ngay cả khi cùng một Thông tin, phản hồi của mỗi người là khác nhau. Nói cách khác, bản thân giá cả đã bao gồm những kỳ vọng sai lầm của những người tham gia thị trường, do đó về bản chất, giá thị trường luôn sai. Đây có thể là nguồn lợi nhuận cho những người kinh doanh chênh lệch giá.
Dựa trên các nguyên tắc trên, chúng ta biết rằng trong một thị trường tương lai không hiệu quả, tác động của thị trường lên hợp đồng giao hàng trong các giai đoạn khác nhau không phải lúc nào cũng đồng bộ và giá của chúng không hoàn toàn hiệu quả. Sau đó, dựa trên giá hợp đồng giao dịch của cùng một đối tượng giao dịch ở các thời điểm khác nhau, nếu có sự chênh lệch giá lớn giữa hai mức giá, bạn có thể mua và bán hợp đồng tương lai của các thời điểm khác nhau cùng một lúc để tiến hành giao dịch chênh lệch giá chéo thời điểm.
Giống như hợp đồng tương lai hàng hóa, tiền kỹ thuật số cũng có sự kết hợp của các hợp đồng chênh lệch giá xuyên thời kỳ liên quan đến chúng. Ví dụ, trên sàn giao dịch OkEX, có: ETC Weekly, ETC Biweekly và ETC Quarterly. Ví dụ, giả sử chênh lệch giá giữa ETC hàng tuần và ETC hàng quý vẫn ở mức khoảng 5 trong một thời gian dài. Nếu mức chênh lệch đạt 7 vào một ngày nào đó, chúng tôi dự kiến mức chênh lệch sẽ trở lại mức 5 vào một thời điểm nào đó trong tương lai. Sau đó, bạn có thể bán ETC hàng tuần và mua ETC hàng quý để bán khống chênh lệch. ngược lại.
Mặc dù có sự chênh lệch giá này, nhưng hoạt động kinh doanh chênh lệch giá thủ công thường tiềm ẩn nhiều yếu tố không chắc chắn do thao tác thủ công tốn thời gian, độ chính xác kém và tác động của những thay đổi về giá. Sự hấp dẫn của giao dịch chênh lệch giá định lượng nằm ở việc nắm bắt cơ hội chênh lệch giá thông qua các mô hình định lượng và xây dựng chiến lược giao dịch chênh lệch giá, cũng như tự động đặt lệnh giao dịch vào các sàn giao dịch thông qua các thuật toán được lập trình, nhằm nắm bắt cơ hội một cách nhanh chóng, chính xác và kiếm lợi nhuận một cách hiệu quả và ổn định.
Khóa học này sẽ hướng dẫn bạn cách sử dụng Nền tảng giao dịch định lượng Inventor và hợp đồng tương lai ETC trên sàn giao dịch OkEX trong giao dịch tiền kỹ thuật số và sử dụng chiến lược chênh lệch giá đơn giản để chứng minh cách nắm bắt cơ hội chênh lệch giá tức thời và nắm bắt mọi cơ hội để thấy được lợi nhuận trong khi phòng ngừa những rủi ro có thể xảy ra.
Tạo chiến lược chênh lệch giá xuyên thời kỳ tiền điện tử
Độ khó: Bình thường
Môi trường chiến lược
- Chủ thể giao dịch: Ethereum Classic (ETC)
- Dữ liệu chênh lệch giá: ETC hàng tuần - ETC hàng quý (bỏ qua thử nghiệm đồng tích hợp)
- Chu kỳ giao dịch: 5 phút
- Vị trí phù hợp: 1:1
- Loại giao dịch: Cùng một sản phẩm trong nhiều giai đoạn
Chiến lược Logic
- Điều kiện mở lệnh chênh lệch giá dài: Nếu tài khoản hiện tại không có vị thế nào và chênh lệch giá nhỏ hơn đường boll dưới, hãy mua vào chênh lệch giá. Nghĩa là: mua ETC trong tuần và bán ETC trong quý.
- Điều kiện để mở vị thế chênh lệch giá bán khống: Nếu tài khoản vãng lai không có vị thế nào và chênh lệch giá lớn hơn đường biên trên của boll, hãy bán khống chênh lệch giá. Nghĩa là: bán ETC trong tuần và mua ETC trong quý.
- Điều kiện để đóng chênh lệch giá mua: Nếu tài khoản vãng lai nắm giữ vị thế mua hàng tuần trong ETC và vị thế bán hàng quý trong ETC, và chênh lệch lớn hơn đường trung bình của boll, thì chênh lệch giá mua sẽ bị đóng. Nghĩa là: bán ETC trong tuần và mua ETC trong quý.
- Điều kiện để đóng chênh lệch giá bán khống: Nếu tài khoản hiện tại giữ vị thế bán khống ETC trong tuần này và vị thế mua vào ETC trong quý, và chênh lệch giá thấp hơn đường trung bình của boll, thì chênh lệch giá bán khống sẽ được đóng lại. Nghĩa là: mua ETC trong tuần và bán ETC trong quý.
Trên đây là mô tả đơn giản về logic của chiến lược chênh lệch giá xuyên thời kỳ tiền kỹ thuật số. Vậy bạn triển khai ý tưởng của mình vào chương trình như thế nào? Đầu tiên, chúng tôi đã thử xây dựng khuôn khổ trên Nền tảng giao dịch định lượng Inventor.
function Data() {} // 基础数据函数
Data.prototype.mp = function () {} // 持仓函数
Data.prototype.boll = function () {} // 指标函数
Data.prototype.trade = function () {} // 下单函数
Data.prototype.cancelOrders = function () {} // 撤单函数
Data.prototype.isEven = function () {} // 处理单只合约函数
Data.prototype.drawingChart = function () {} // 画图函数
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 计算boll技术指标
data.trade(); // 计算交易条件下单
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
}
//入口函数
function main() {
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
Hãy tưởng tượng xem quy trình giao dịch của chúng ta trong giao dịch giám sát sẽ như thế nào? Không có sự khác biệt cơ bản nào trong giao dịch hệ thống, nó chỉ là: thu thập dữ liệu, tính toán dữ liệu, đặt lệnh và xử lý sau khi đặt lệnh. Tương tự như vậy trong chương trình. Đầu tiên, chương trình sẽ thực hiện hàm chính ở dòng 20. Đây là một quy ước. Khi chương trình hoàn tất quá trình tiền xử lý chiến lược giao dịch (nếu có), nó sẽ vào chế độ vòng lặp vô hạn, nghĩa là, Chế độ thăm dò vòng. Ở chế độ thăm dò, hàm onTick sẽ được thực hiện lặp đi lặp lại.
Sau đó, trong hàm onTick, chúng ta có quy trình giao dịch trong giao dịch chủ quan: đầu tiên lấy dữ liệu giá cơ bản, sau đó lấy số dư tài khoản, sau đó tính toán chỉ báo, sau đó bắt đầu tính toán các điều kiện giao dịch và đặt lệnh, và cuối cùng là xử lý sau khi đặt lệnh. đơn hàng, bao gồm: Hủy đơn hàng, vẽ hình ảnh và xử lý hợp đồng đơn lẻ.
Bằng cách so sánh các ý tưởng chiến lược và quy trình giao dịch, bạn có thể dễ dàng xây dựng một khuôn khổ chiến lược. Toàn bộ chiến lược có thể được đơn giản hóa thành ba bước:
- Xử lý trước giao dịch.
- Nhận và tính toán dữ liệu.
- Đặt hàng và xử lý theo dõi.
Sau khi xây dựng xong khung chiến lược giao dịch, bạn cần điền mã chi tiết cần thiết vào khung chiến lược dựa trên quy trình giao dịch thực tế và thông tin chi tiết về giao dịch.
1. Xử lý trước giao dịch
1. Khai báo các biến toàn cục cần thiết
- Khai báo một đối tượng biểu đồ để cấu hình biểu đồ
var chart = {} - Gọi hàm Chart để khởi tạo biểu đồ
var ObjChart = Chart ( chart ) - Khai báo một mảng rỗng để lưu trữ chuỗi chênh lệch giá
var bars = [] - Khai báo một biến để ghi lại dấu thời gian dữ liệu lịch sử
var oldTime = 0
2. Cấu hình các tham số bên ngoài của chiến lược
var tradeTypeA = "this_week"; // 套利A合约
var tradeTypeB = "quarter"; // 套利B合约
var dataLength = 10; //指标周期长度
var timeCycle = 1; // K线周期
var name = "ETC"; // 币种
var unit = 1; // 下单量
3. Xác định các chức năng xử lý dữ liệu
- Hàm dữ liệu cơ bản: Data ( )
Tạo một hàm tạo Data và xác định các thuộc tính bên trong của nó. Bao gồm: dữ liệu tài khoản, dữ liệu vị thế, dấu thời gian dữ liệu K-line, giá mua/bán hợp đồng A/B chênh lệch giá và chênh lệch giá kỳ hạn/ngược lại.
function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约
this.accountData = _C(exchange.GetAccount); // 获取账户信息
this.positionData = _C(exchange.GetPosition); // 获取持仓信息
var recordsData = _C(exchange.GetRecords); //获取K线数据
exchange.SetContractType(tradeTypeA); // 订阅套利A合约
var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据
exchange.SetContractType(tradeTypeB); // 订阅套利B合约
var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据
this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间
this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价
this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价
this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价
this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价
// 正套价差(合约A卖一价 - 合约B买一价)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// 反套价差(合约A买一价 - 合约B卖一价)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
- Hàm lấy vị trí: mp ( )
Duyệt toàn bộ mảng vị trí và trả về số vị trí của hợp đồng và hướng đã chỉ định. Nếu không có, trả về false
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // 获取持仓信息
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
- Chức năng của đường K và chỉ báo: boll ( )
Tổng hợp chuỗi K-line mới dựa trên dữ liệu chênh lệch giá thuận/ngược. Và trả về dữ liệu thanh ray trên, thanh ray giữa và thanh ray dưới được tính toán bởi chỉ báo boll.
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // 临时对象
// 正套价差和反套价差中间值
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // 对比两个深度数据时间戳
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // 根据指定时间周期,在K线数组里面传入价差数据对象
if (bars.length > num * 2) {
bars.shift(); // 控制K线数组长度
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标
return {
up: boll[0][boll[0].length - 1], // boll指标上轨
middle: boll[1][boll[1].length - 1], // boll指标中轨
down: boll[2][boll[2].length - 1] // boll指标下轨
} // 返回一个处理好的boll指标数据
}
- Hàm lệnh: trade ( )
Nhập tên hợp đồng lệnh và loại lệnh, sau đó đặt lệnh theo giá cần xem xét và trả về kết quả sau khi đặt lệnh. Vì cần phải đặt hai lệnh theo các hướng khác nhau cùng một lúc nên giá mua/bán được chuyển đổi trong hàm theo tên hợp đồng lệnh.
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // 下单前先重新订阅合约
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // 如果是A合约下单
askPrice = this.askA; // 设置askPrice
bidPrice = this.bidA; // 设置bidPrice
} else if (tradeType == tradeTypeB) { // 如果是B合约下单
askPrice = this.askB; // 设置askPrice
bidPrice = this.bidB; // 设置bidPrice
}
switch (type) { // 匹配下单模式
case "buy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
- Hủy chức năng đơn hàng: cancelOrders()
Lấy một mảng gồm tất cả các đơn hàng chưa hoàn thành và hủy từng đơn hàng một. Và nếu có lệnh chưa được thực hiện, nó sẽ trả về false, và nếu không có lệnh nào chưa được thực hiện, nó sẽ trả về true.
Data.prototype.cancelOrders = function () {
Sleep(500); // 撤单前先延时,因为有些交易所你懂的
var orders = _C(exchange.GetOrders); // 获取未成交订单数组
if (orders.length > 0) { // 如果有未成交的订单
for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组
exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单
Sleep(500); //延时0.5秒
}
return false; // 如果取消了未成交的单子就返回false
}
return true; //如果没有未成交的订单就返回true
}
- Xử lý việc giữ một hợp đồng duy nhất: isEven()
Khi xử lý tình huống một chân trong giao dịch chênh lệch giá, chúng ta chỉ cần đóng tất cả các vị thế để xử lý. Tất nhiên, bạn cũng có thể thay đổi sang phương thức đặt hàng tiếp theo.
Data.prototype.isEven = function () {
var positionData = this.positionData; // 获取持仓信息
var type = null; // 转换持仓方向
// 如果持仓数组长度余2不等于0或者持仓数组长度不等于2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组
if (positionData[i].Type == 0) { // 如果是多单
type = 10; // 设置下单参数
} else if (positionData[i].Type == 1) { // 如果是空单
type = -10; // 设置下单参数
}
// 平掉所有仓位
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
- Hàm vẽ: drawingChart ( )
Gọi phương thức ObjChart.add() để vẽ dữ liệu thị trường và dữ liệu chỉ báo cần thiết trong biểu đồ: đường trên, đường giữa, đường dưới và chênh lệch dương/âm.
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3, [nowTime, this.basb]]);
ObjChart.add([4, [nowTime, this.sabb]]);
ObjChart.update(chart);
}
4. Trong hàm nhập main(), thực thi mã tiền xử lý trước giao dịch. Mã này chỉ chạy một lần sau khi chương trình bắt đầu. bao gồm:
- Lọc thông tin ít quan trọng hơn trong bảng điều khiển
SetErrorFilter ( ) - Thiết lập loại tiền kỹ thuật số để giao dịch
exchange.IO ( ) - Xóa biểu đồ đã vẽ trước đó trước khi chương trình bắt đầu
ObjChart.reset ( ) - Xóa thông tin thanh trạng thái trước đó trước khi chương trình bắt đầu
LogProfitReset ( )
Sau khi xác định quá trình xử lý trước giao dịch ở trên, chúng ta sẽ chuyển sang bước tiếp theo, vào chế độ thăm dò và thực hiện hàm onTick() nhiều lần. Và đặt thời gian ngủ khi Sleep() thăm dò, vì một số API trao đổi tiền điện tử có giới hạn truy cập tích hợp trong một khoảng thời gian nhất định.
function main() {
// 过滤控制台中不是很重要的信息
SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP");
exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种
ObjChart.reset(); //程序启动前清空之前绘制的图表
LogProfitReset(); //程序启动前清空之前的状态栏信息
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
2. Thu thập và tính toán dữ liệu
- Nhận các đối tượng dữ liệu cơ bản, số dư tài khoản và dữ liệu chỉ báo boll để sử dụng trong logic giao dịch.
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据
if (!boll) return; // 如果没有boll数据就返回
}
3. Đặt hàng và theo dõi
- Theo logic chiến lược trên, hãy thực hiện các hoạt động mua và bán. Đầu tiên, nó xác định xem các điều kiện về giá và chỉ báo có được đáp ứng hay không, sau đó xác định xem các điều kiện về vị thế có được đáp ứng hay không và cuối cùng thực hiện hàm lệnh trade ( ).
// 价差说明
// basb = (合约A卖一价 - 合约B买一价)
// sabb = (合约A买一价 - 合约B卖一价)
if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨
if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "closebuy"); // 合约A平多
}
if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "closesell"); // 合约B平空
}
} else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨
if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "closesell"); // 合约A平空
}
if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "closebuy"); // 合约B平多
}
}
if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额
if (data.basb < boll.down) { // 如果basb价差低于下轨
if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "buy"); // 合约A开多
}
if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "sell"); // 合约B开空
}
} else if (data.sabb > boll.up) { // 如果sabb价差高于上轨
if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "sell"); // 合约A开空
}
if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "buy"); // 合约B开多
}
}
}
- Sau khi đặt hàng, cần xử lý các tình huống bất thường như đơn hàng chưa hoàn thành và giữ một hợp đồng duy nhất. và vẽ biểu đồ.
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
Ở trên, chúng tôi đã tạo ra một chiến lược chênh lệch giá liên thời kỳ tiền kỹ thuật số đơn giản chỉ trong hơn 200 dòng. Mã đầy đủ như sau:
// 全局变量
// 声明一个配置图表的 chart 对象
var chart = {
__isStock: true,
tooltip: {
xDateFormat: '%Y-%m-%d %H:%M:%S, %A'
},
title: {
text: '交易盈亏曲线图(详细)'
},
rangeSelector: {
buttons: [{
type: 'hour',
count: 1,
text: '1h'
}, {
type: 'hour',
count: 2,
text: '3h'
}, {
type: 'hour',
count: 8,
text: '8h'
}, {
type: 'all',
text: 'All'
}],
selected: 0,
inputEnabled: false
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: '价差'
},
opposite: false,
},
series: [{
name: "上轨",
id: "线1,up",
data: []
}, {
name: "中轨",
id: "线2,middle",
data: []
}, {
name: "下轨",
id: "线3,down",
data: []
}, {
name: "basb",
id: "线4,basb",
data: []
}, {
name: "sabb",
id: "线5,sabb",
data: []
}]
};
var ObjChart = Chart(chart); // 画图对象
var bars = []; // 存储价差序列
var oldTime = 0; // 记录历史数据时间戳
// 参数
var tradeTypeA = "this_week"; // 套利A合约
var tradeTypeB = "quarter"; // 套利B合约
var dataLength = 10; //指标周期长度
var timeCycle = 1; // K线周期
var name = "ETC"; // 币种
var unit = 1; // 下单量
// 基础数据
function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约
this.accountData = _C(exchange.GetAccount); // 获取账户信息
this.positionData = _C(exchange.GetPosition); // 获取持仓信息
var recordsData = _C(exchange.GetRecords); //获取K线数据
exchange.SetContractType(tradeTypeA); // 订阅套利A合约
var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据
exchange.SetContractType(tradeTypeB); // 订阅套利B合约
var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据
this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间
this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价
this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价
this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价
this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价
// 正套价差(合约A卖一价 - 合约B买一价)
this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
// 反套价差(合约A买一价 - 合约B卖一价)
this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
// 获取持仓
Data.prototype.mp = function (tradeType, type) {
var positionData = this.positionData; // 获取持仓信息
for (var i = 0; i < positionData.length; i++) {
if (positionData[i].ContractType == tradeType) {
if (positionData[i].Type == type) {
if (positionData[i].Amount > 0) {
return positionData[i].Amount;
}
}
}
}
return false;
}
// 合成新K线数据和boll指标数据
Data.prototype.boll = function (num, timeCycle) {
var self = {}; // 临时对象
// 正套价差和反套价差中间值
self.Close = (this.basb + this.sabb) / 2;
if (this.timeA == this.timeB) {
self.Time = this.time;
} // 对比两个深度数据时间戳
if (this.time - oldTime > timeCycle * 60000) {
bars.push(self);
oldTime = this.time;
} // 根据指定时间周期,在K线数组里面传入价差数据对象
if (bars.length > num * 2) {
bars.shift(); // 控制K线数组长度
} else {
return;
}
var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标
return {
up: boll[0][boll[0].length - 1], // boll指标上轨
middle: boll[1][boll[1].length - 1], // boll指标中轨
down: boll[2][boll[2].length - 1] // boll指标下轨
} // 返回一个处理好的boll指标数据
}
// 下单
Data.prototype.trade = function (tradeType, type) {
exchange.SetContractType(tradeType); // 下单前先重新订阅合约
var askPrice, bidPrice;
if (tradeType == tradeTypeA) { // 如果是A合约下单
askPrice = this.askA; // 设置askPrice
bidPrice = this.bidA; // 设置bidPrice
} else if (tradeType == tradeTypeB) { // 如果是B合约下单
askPrice = this.askB; // 设置askPrice
bidPrice = this.bidB; // 设置bidPrice
}
switch (type) { // 匹配下单模式
case "buy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
case "sell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closebuy":
exchange.SetDirection(type); // 设置下单模式
return exchange.Sell(bidPrice, unit);
case "closesell":
exchange.SetDirection(type); // 设置下单模式
return exchange.Buy(askPrice, unit);
default:
return false;
}
}
// 取消订单
Data.prototype.cancelOrders = function () {
Sleep(500); // 撤单前先延时,因为有些交易所你懂的
var orders = _C(exchange.GetOrders); // 获取未成交订单数组
if (orders.length > 0) { // 如果有未成交的订单
for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组
exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单
Sleep(500); //延时0.5秒
}
return false; // 如果取消了未成交的单子就返回false
}
return true; //如果没有未成交的订单就返回true
}
// 处理持有单个合约
Data.prototype.isEven = function () {
var positionData = this.positionData; // 获取持仓信息
var type = null; // 转换持仓方向
// 如果持仓数组长度余2不等于0或者持仓数组长度不等于2
if (positionData.length % 2 != 0 || positionData.length != 2) {
for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组
if (positionData[i].Type == 0) { // 如果是多单
type = 10; // 设置下单参数
} else if (positionData[i].Type == 1) { // 如果是空单
type = -10; // 设置下单参数
}
// 平掉所有仓位
this.trade(positionData[i].ContractType, type, positionData[i].Amount);
}
}
}
// 画图
Data.prototype.drawingChart = function (boll) {
var nowTime = new Date().getTime();
ObjChart.add([0, [nowTime, boll.up]]);
ObjChart.add([1, [nowTime, boll.middle]]);
ObjChart.add([2, [nowTime, boll.down]]);
ObjChart.add([3, [nowTime, this.basb]]);
ObjChart.add([4, [nowTime, this.sabb]]);
ObjChart.update(chart);
}
// 交易条件
function onTick() {
var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象
var accountStocks = data.accountData.Stocks; // 账户余额
var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据
if (!boll) return; // 如果没有boll数据就返回
// 价差说明
// basb = (合约A卖一价 - 合约B买一价)
// sabb = (合约A买一价 - 合约B卖一价)
if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨
if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "closebuy"); // 合约A平多
}
if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "closesell"); // 合约B平空
}
} else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨
if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "closesell"); // 合约A平空
}
if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "closebuy"); // 合约B平多
}
}
if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额
if (data.basb < boll.down) { // 如果basb价差低于下轨
if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单
data.trade(tradeTypeA, "buy"); // 合约A开多
}
if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单
data.trade(tradeTypeB, "sell"); // 合约B开空
}
} else if (data.sabb > boll.up) { // 如果sabb价差高于上轨
if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单
data.trade(tradeTypeA, "sell"); // 合约A开空
}
if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单
data.trade(tradeTypeB, "buy"); // 合约B开多
}
}
}
data.cancelOrders(); // 撤单
data.drawingChart(boll); // 画图
data.isEven(); // 处理持有单个合约
}
//入口函数
function main() {
// 过滤控制台中不是很重要的信息
SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP");
exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种
ObjChart.reset(); //程序启动前清空之前绘制的图表
LogProfitReset(); //程序启动前清空之前的状态栏信息
while (true) { // 进入轮询模式
onTick(); // 执行onTick函数
Sleep(500); // 休眠0.5秒
}
}
Giao dịch chênh lệch giá bắt nguồn từ chiến lược giao dịch chứng khoán của Morgan Stanley. Khái niệm của nó là: sự biến động chênh lệch giá của hai sản phẩm có mối tương quan cao tuân theo "quy trình bỏng ngô", tức là chênh lệch giá liên tục trở về giá trị trung bình từ vị trí lệch khỏi giá trị trung bình lịch sử và sau đó là một độ lệch khác so với giá trị trung bình.
Từ đó, chúng ta có thể kiếm lời bằng cách mua thấp và bán cao dựa trên chênh lệch giá. Sau đó, theo nguyên lý độ lệch chuẩn trong thống kê, Dải Bollinger bao gồm một thanh ray giữa và các thanh ray trên và dưới được tính theo độ lệch chuẩn, tạo thành ba lưới. Nó rất hữu ích trong giao dịch chênh lệch giá.
Sau khi thử nghiệm, người ta thấy rằng nếu thực hiện theo chiến lược này, không tính đến phí xử lý và chi phí tác động thì mặc dù lợi nhuận mỗi lần không cao lắm nhưng lợi nhuận chung lại tương đối ổn định. Cần lưu ý rằng vì đây là hình thức chênh lệch giá thống kê nên có nguy cơ chênh lệch giá sẽ tăng theo hướng ngược lại và chúng ta phải cân nhắc vấn đề dừng lỗ khi thiết kế. Thứ hai, chúng ta cũng cần chú ý đến chi phí tác động. Khi tính thanh khoản của hai hợp đồng liên quan đến giao dịch giảm, nó sẽ có tác động đáng kể đến lợi nhuận và các nhà đầu tư nên tránh nó khi thích hợp.
4. Lặp lại nâng cao của chiến lược phát triển CTA
4.1 Tránh những cạm bẫy của chiến lược CTA tương lai
Trong hai lớp học trước, chúng tôi đã viết một chiến lược xu hướng bằng ngôn ngữ Mai và một chiến lược chênh lệch giá bằng JavaScript và không tìm thấy bất kỳ vấn đề nào trong quá trình kiểm tra ngược chiến lược. Tuy nhiên, giao dịch định lượng không chỉ là viết một chương trình rồi giao dịch trực tiếp sau khi thử nghiệm ngược thành công.
Trên thực tế, backtesting chỉ là mô phỏng một chiến lược, chỉ được sử dụng để đánh giá hiệu suất của chiến lược trong dữ liệu lịch sử, cho phép các nhà giao dịch nhanh chóng đánh giá và từ bỏ một số chiến lược giao dịch.
Trong nhiều trường hợp, các chiến lược có vẻ tuyệt vời khi kiểm tra ngược thường không đáp ứng được các tiêu chuẩn kiểm tra ngược trong giao dịch thực tế. Có nhiều lý do, một số lý do nằm ngoài tầm kiểm soát của nhà giao dịch, nhưng một số thất bại là do các lỗi phổ biến hoặc tiềm ẩn .
Dữ liệu tĩnh so với dữ liệu động
Khi chúng ta thực hiện phân tích định lượng, trước tiên chúng ta phải có khái niệm về dữ liệu tĩnh và dữ liệu động. Trong quá trình kiểm tra ngược, chúng ta sử dụng dữ liệu lịch sử tĩnh. Giá của mỗi đường K là hoàn chỉnh và mỗi tín hiệu giao dịch có thể được bán 100%. Nhưng dữ liệu trên thị trường thực tế lại thay đổi. Ví dụ, nếu giá cao nhất lớn hơn giá cao nhất trong vòng 1 giờ sau khi mở cửa, thì hãy mua. Tuy nhiên, nếu đường K hiện tại chưa hoàn thành, thì giá cao nhất là động và tín hiệu giao dịch có thể nhấp nháy qua lại . Tình huống này cho thấy chiến lược sử dụng các chức năng tương lai để xác định các điều kiện cho giao dịch mua và bán.
Chức năng tương lai
Hàm tương lai là gì? Trước tiên, chúng ta hãy xem Bách khoa toàn thư Baidu giải thích như thế nào: Nếu một đại lượng phụ thuộc vào một đại lượng khác, chẳng hạn như đại lượng A và đại lượng B, và sự thay đổi trong B gây ra sự thay đổi trong A, thì A là hàm số của B. Nếu B là một đại lượng sau số lượng, A là Đối với một số lượng trước đó, A thay đổi theo B và A là hàm tương lai của B. Mọi người có thể đều bối rối.
Nói một cách dễ hiểu, đây là một chức năng tham chiếu đến dữ liệu trong tương lai, chẳng hạn như sử dụng giá ngày mai để dự đoán giá ngày mai. Nếu một chỉ báo kỹ thuật chứa một chức năng trong tương lai, tín hiệu của nó không chắc chắn. Thông thường, tín hiệu giao dịch được đưa ra tại thời điểm đó, nhưng khi đường K tiếp theo xuất hiện, tín hiệu biến mất hoặc thay đổi vị trí.
Giá đóng cửa là một hàm tương lai. Trước khi đường K-line mới nhất hoàn thành, giá đóng cửa luôn thay đổi. Bạn phải đợi cho đến khi đường K-line hoàn thành để xác định giá đóng cửa. Vì giá đóng cửa là một chức năng của tương lai nên mọi chỉ báo kỹ thuật dựa trên giá đóng cửa cũng là chức năng của tương lai.
Do đó, nếu một chỉ báo kỹ thuật sử dụng giá đóng cửa đã xác nhận làm dữ liệu cơ bản và các tín hiệu mua và bán không thay đổi bất kể thời gian trôi qua bao lâu thì có thể nói rằng chỉ báo kỹ thuật này không tham chiếu đến chức năng tương lai. Tuy nhiên, dữ liệu cơ bản mà nó sử dụng là giá đóng cửa vẫn chưa được xác nhận, do đó chỉ báo kỹ thuật này đề cập đến chức năng tương lai và tín hiệu mua và bán có thể thay đổi trong các ứng dụng thực tế.
Giá quá khứ
Hàm future sử dụng giá tương lai, nhưng cũng có thể sử dụng giá quá khứ. Đây là vấn đề mà nhiều người mới bắt đầu thường bỏ qua. Để minh họa rõ hơn vấn đề này trong tương lai, chúng ta hãy lấy một ví dụ: nếu giá cao nhất hiện tại cao hơn giá cao nhất trong vòng 1 giờ sau khi mở cửa, hãy mua ở giá mở cửa. Rõ ràng là không có gì sai với các điều kiện của tín hiệu mua và bán này, nhưng giá được sử dụng để đặt lệnh là giá trong quá khứ.
Trong backtest, chiến lược là bình thường, vì công cụ backtest dựa trên dữ liệu tĩnh có thể hoàn thành giao dịch 100% thời gian miễn là có tín hiệu mua. Tuy nhiên, trong thị trường thực tế, khi giá cao nhất lớn hơn giá cao nhất trong vòng 1 giờ sau khi mở cửa, Lúc này, chắc chắn bạn không thể sử dụng giá mở cửa trước đó để đặt lệnh nữa.
Giá chân không
Cái gọi là giá chân không là giá hiển thị trên biểu đồ K-line, nhưng giá không thể giao dịch trên thị trường thực tế. Chủ yếu chia thành các tình huống sau:
- Bất kỳ ai đã giao dịch đều biết rằng rất khó để mua khi giá đạt đến giới hạn trên và rất khó để bán khi giá đạt đến giới hạn dưới. Tuy nhiên, vẫn có thể giao dịch trong quá trình kiểm tra ngược.
- Cơ chế khớp lệnh của sàn giao dịch là: ưu tiên về giá và ưu tiên về thời gian. Thường có những lệnh lớn đối với một số sản phẩm. Nếu bạn đặt lệnh mua hoặc bán theo thời gian thực, bạn phải chờ lệnh của người khác và đợi cho đến khi lệnh của người khác được thực hiện trước khi bạn có thể hoàn tất giao dịch. Trong một số trường hợp, giá có thể đã thay đổi trước khi bạn có thể hoàn tất giao dịch. Tuy nhiên, trong quá trình kiểm tra ngược, nếu chiến lược của bạn là đặt lệnh, thì giao dịch sẽ được hoàn thành kịp thời, khác với môi trường giao dịch thực tế.
- Nếu bạn sử dụng chiến lược chênh lệch giá, thì lợi nhuận từ việc kiểm tra ngược sẽ rất cao, vì mỗi lần bạn kiểm tra ngược, bạn cho rằng mình đã nắm bắt được những chênh lệch giá này. Trên thực tế, nhiều mức chênh lệch không khả dụng hoặc chỉ có một chân khả dụng. Nói chung, chân không thuận lợi cho hướng của bạn sẽ được giao dịch trước, vì vậy bạn cần phải lấp đầy chân còn lại ngay lập tức. Lúc này, sự trượt giá đã đã xảy ra. Không phải là 1 hoặc 2 điểm, mà chính chiến lược chênh lệch giá kiếm được tiền từ chênh lệch giá của những điểm này. Tình huống này không thể mô phỏng được trong quá trình kiểm tra ngược. Lợi nhuận thực tế không tốt bằng kết quả kiểm tra ngược.
- Mặc dù sự kiện thiên nga đen không phổ biến, nhưng chúng vẫn có tác động lớn đến giao dịch định lượng. Ví dụ, trong sự kiện thiên nga đen của đồng franc Thụy Sĩ, biểu đồ cho thấy có cả mức mở cửa cao và mức đóng cửa thấp. Trên thực tế, ở mức cực đoan điều kiện thị trường trong ngày, Giá ở giữa là khoảng trống, số lượng lớn lệnh dừng lỗ gây ra tình trạng hỗn loạn, thanh khoản bằng không và giao dịch rất khó khăn, nhưng có thể đạt được lệnh dừng lỗ khi kiểm tra lại.

Quá phù hợp
Overfitting là một lỗi thường gặp của những người mới bắt đầu giao dịch định lượng. Overfitting là gì? Hãy lấy một ví dụ đơn giản: khi làm bài kiểm tra ở trường, một số người sử dụng chiến thuật làm nhiều câu hỏi và ghi nhớ mọi câu hỏi. Nếu câu hỏi bị thay đổi đôi chút trong khi làm bài thi, anh ta sẽ không thể trả lời được. Bởi vì ông đã ghi nhớ cách tiếp cận từng câu hỏi một cách rất phức tạp, nhưng lại không tóm tắt được các quy tắc chung.

Như hình minh họa ở trên, chỉ cần mô hình đủ phức tạp thì nó có thể thích ứng hoàn hảo với dữ liệu. Tương tự như vậy đối với việc quá khớp trong giao dịch định lượng. Nếu chiến lược của bạn phức tạp và có nhiều tham số bên ngoài, thì trong thử nghiệm ngược dữ liệu lịch sử hạn chế, sẽ luôn có một hoặc một số tham số có thể phù hợp hoàn hảo với chiến lược. Phù hợp với điều kiện thị trường lịch sử .
Tuy nhiên, trong tương lai giao dịch thực tế, giá thay đổi có thể vượt quá giới hạn của chiến lược của bạn. Trên thực tế, bản chất của việc phát triển chiến lược giao dịch định lượng là quá trình khớp dữ liệu cục bộ không ngẫu nhiên với một lượng lớn dữ liệu có vẻ ngẫu nhiên. Do đó, chúng ta cần sử dụng số liệu thống kê. Làm thế nào chúng ta có thể sử dụng kiến thức để tránh cái bẫy này?
Một giải pháp thỏa hiệp là sử dụng cả dữ liệu trong và ngoài mẫu. Chia toàn bộ dữ liệu thành hai phần, sử dụng dữ liệu trong mẫu làm tập huấn luyện và chịu trách nhiệm kiểm tra ngược dữ liệu. Dữ liệu ngoài mẫu được sử dụng làm bộ dữ liệu thử nghiệm để xác minh. Nếu có ít dữ liệu lịch sử, bạn cũng có thể sử dụng phương pháp kiểm tra chéo.
Nếu bạn thấy dữ liệu ngoài mẫu không hoạt động tốt, nhưng bạn nghĩ rằng thật đáng tiếc khi loại bỏ mô hình hoặc bạn không muốn thừa nhận rằng mô hình của mình không tốt và bạn tiếp tục tối ưu hóa mô hình trên dữ liệu ngoài mẫu -dữ liệu mẫu cho đến khi nó hoạt động tốt như trên dữ liệu ngoài mẫu, thì người bị tổn thương cuối cùng phải là Bạn phải trả tiền thật.
Sự thiên vị sống sót
Xu hướng thiên vị người sống sót có thể được giải thích bằng các ví dụ sau:
- Nếu bạn đứng đúng chỗ, ngay cả lợn cũng có thể bay.
- Tất cả các đánh giá về dù được bán trực tuyến đều tích cực, vì không có ai gặp vấn đề gì với dù của họ.
- Các phóng viên đã phỏng vấn những người trên xe buýt để xem họ có mua vé hay không, vì những người không mua được vé sẽ không được lên xe buýt.
- Các phương tiện truyền thông quảng bá khả năng trúng số, vì các phương tiện truyền thông sẽ không tích cực quảng bá cho những người chưa trúng số.
Từ các ví dụ trên, chúng ta có thể thấy rằng thông tin mà mọi người thường nhận được thực sự đã được sàng lọc, điều này khiến một lượng lớn dữ liệu hoặc mẫu bị bỏ qua một cách có chọn lọc. Kết quả là các kết luận dựa trên sự thiên vị của người sống sót đã đi chệch khỏi thời gian thực. Sau đó, trong giao dịch định lượng, chúng ta cũng cần xem xét liệu kết quả kiểm tra ngược có phải do may mắn hay không. Trong nhiều trường hợp, kết quả kiểm tra ngược có thể là hiệu suất tốt nhất trong toàn bộ kiểm tra ngược. Hãy chú ý đến hình ảnh sau:

Hình ảnh bên trái là một chiến lược giao dịch rất tốt với đường cong vốn tốt và không có mức giảm lớn, có thể đạt được lợi nhuận ổn định. Nhưng hãy nhìn vào hình ảnh bên phải, nó chỉ là hình ảnh có hiệu suất tốt nhất trong số hàng trăm lần kiểm tra ngược giao dịch. Mặt khác, khi chúng ta nhìn vào thị trường tài chính, luôn có nhiều ngôi sao hơn là những ngôi sao tồn tại lâu dài. Nếu chiến lược của nhà giao dịch phù hợp với điều kiện thị trường, thì điều kiện thị trường hàng năm có thể tạo ra một loạt các ngôi sao, nhưng nó hiếm khi thấy một ngôi sao nào có thể sống lâu hơn ba năm liên tiếp. Một người sinh nhật có lợi nhuận ổn định.
Tác động chi phí
Trừ khi bạn đang đặt lệnh chờ, bạn có thể gặp phải tình trạng trượt giá khi giao dịch. Đối với các sản phẩm được giao dịch tích cực, giá thầu và giá chào bán thường chênh lệch một điểm. Đối với các sản phẩm ít được giao dịch tích cực hơn, mức chênh lệch có thể lớn hơn. Mỗi khi bạn muốn giao dịch tích cực, bạn cần ít nhất một mức chênh lệch giá hoặc thậm chí nhiều hơn. Tuy nhiên, trong quá trình kiểm tra ngược, chúng ta không cần phải xem xét vấn đề giao dịch. Chỉ cần có tín hiệu, giao dịch có thể hoàn tất. Do đó, để mô phỏng môi trường giao dịch thực tế, ít nhất phải thêm một lần trượt giá.
Đặc biệt đối với các chiến lược có tần suất giao dịch tương đối cao, khi kiểm tra lại chiến lược, nếu không tính đến trượt giá, đường cong vốn sẽ luôn nghiêng lên trên. Một khi thêm một trượt giá hợp lý, nó sẽ ngay lập tức biến thành thua lỗ. Ngoài ra, hiện tượng này không chỉ do vấn đề chênh lệch gây ra. Trong môi trường giao dịch thực tế, các vấn đề như độ trễ mạng, hệ thống phần mềm và phần cứng, phản hồi của máy chủ cũng cần được xem xét.
Năng lực chính sách
Cùng một chiến lược có thể có tác động rất khác nhau, thậm chí hoàn toàn trái ngược nhau, ở thị trường hiệu quả và không hiệu quả. Ví dụ, trong các thị trường không hiệu quả như thị trường chứng khoán trong nước, hợp đồng tương lai hàng hóa và tiền kỹ thuật số nước ngoài, khả năng của các chiến lược tần suất cao không lớn lắm do khối lượng giao dịch cơ sở nhỏ. Nếu nhiều người sử dụng chúng hơn, sẽ có không có biên lợi nhuận, và ngay cả các chiến lược tần suất cao ban đầu cũng sẽ không có lợi nhuận. Một chiến lược có lợi nhuận sẽ trở thành một chiến lược thua lỗ. Nhưng trong một thị trường ngoại hối hiệu quả, vẫn có chỗ cho nhiều loại chiến lược tần suất cao khác nhau.
Trên đây là những vấn đề và cạm bẫy có thể phát sinh trong quá trình phát triển và sử dụng chiến lược. Đối với một nhà phát triển hệ thống giao dịch có kinh nghiệm, việc kiểm tra ngược là điều bắt buộc. Bởi vì nó có thể cho bạn biết liệu một ý tưởng chiến lược có thể được xác minh là có hiệu quả trong các giao dịch lịch sử hay không. Nhưng nhiều khi việc kiểm tra ngược không có nghĩa là sẽ có lợi nhuận trong tương lai. Bởi vì có quá nhiều cạm bẫy trong quá trình kiểm tra ngược, bạn sẽ không hiểu được trừ khi bạn chi tiền để học một số bài học. Và những bài học này được rút ra bằng tiền thật. Khóa học này ít nhất có thể giúp bạn tránh được nhiều sai lầm và cạm bẫy về mặt định lượng.
4.2 Thiết lập quản lý vị trí tối ưu
Trong Reminiscences of a Stock Operator, có một tập phim thú vị: Old Turkey (tên ban đầu là Partridge), người làm việc trong cùng một công ty chứng khoán với nhân vật chính Livermore, luôn thực hiện các giao dịch mua và bán lớn. Bất cứ khi nào có ai đó đề nghị anh ta Bán nó sau kiếm lời, sau đó mua lại khi giá cổ phiếu giảm. Old Turkey luôn nói một cách nghiêm túc: Không, bạn biết đấy, đây là thị trường tăng giá!
Ngay cả Livermore cuối cùng cũng thở dài: Không có gì tuyệt vời khi dự đoán đúng xu hướng. Trên thị trường, bạn luôn có thể tìm thấy nhiều người lạc quan trong thị trường tăng giá và bi quan trong thị trường giảm giá. Nhưng họ luôn giỏi mặc cả với thị trường, cố gắng mua ở mức giá thấp nhất và bán ở mức giá cao nhất. Giống như gà tây già, những người thực sự kiếm được nhiều tiền là những người nhìn nhận thị trường đúng đắn và giữ chặt vị thế của mình. Đây cũng là điều khó học nhất. Điều này không chỉ liên quan đến việc lựa chọn mục tiêu và thời điểm, mà còn là một câu hỏi quan trọng hơn: nên nắm giữ (thực hiện) vị thế (rủi ro) lớn đến mức nào?
Những nhà giao dịch thất bại đều có suy nghĩ phiến diện. Khi giao dịch, những người tham lam chỉ nhìn vào lợi ích chứ không nhìn vào rủi ro, trong khi những người nhút nhát chỉ nhìn vào rủi ro chứ không nhìn vào lợi ích. Những người vừa tham lam vừa nhút nhát quên mất rủi ro khi thị trường đang tăng. Hãy quên đi những khoản lợi nhuận trên đường đi xuống. Nhưng các nhà giao dịch thành công sẽ cân nhắc cả rủi ro và phần thưởng, nghĩa là với mỗi đô la kiếm được, họ sẽ phải chịu nhiều đô la rủi ro. Sau đó, chỉ số để đo lường lợi nhuận và rủi ro là tỷ lệ lợi nhuận trên rủi ro.
Nhiều người biết rằng lợi nhuận càng lớn thì rủi ro càng lớn, tức là lợi nhuận tỉ lệ thuận với rủi ro. Theo ý kiến của một số người, mối quan hệ giữa lợi nhuận và rủi ro phải như sau, với trục ngang biểu thị tỷ lệ rủi ro và trục dọc biểu thị tỷ lệ lợi nhuận:

Tuy nhiên, trong các giao dịch thực tế, lợi nhuận và rủi ro không hề đơn giản như một đường thẳng nối hai điểm, ít nhất là chúng không phải lúc nào cũng di chuyển theo đường thẳng. Rủi ro thực sự là mức lỗ tối đa mà bạn có thể phải chịu theo lợi nhuận dự kiến, hay còn gọi là độ biến động tối đa. Mặc dù đôi khi mức lỗ thả nổi tối đa không nhất thiết phải bằng mức lỗ đóng cửa từ kết quả giao dịch, nhưng mức lỗ thả nổi tối đa là có thật.
Từ đó, chúng ta có thể biết rằng tỷ lệ lợi nhuận-rủi ro trong hình trên không phải là biểu diễn thực sự. Trong môi trường giao dịch thực tế, tỷ lệ lợi nhuận-rủi ro phải như trong hình dưới đây:

Hãy xem hình ảnh trên. Đường cong màu vàng biểu thị sự biến động của giá trị ròng dưới các rủi ro khác nhau. Khi lợi nhuận kỳ vọng tiếp tục tăng, rủi ro cũng dần dần tăng. Nếu chúng ta đặt mức phá sản ở mức 0,5, nghĩa là mức lỗ tối đa đạt 50%, thì đây là một chiến lược giao dịch thất bại. Mặc dù lợi nhuận cuối cùng của chiến lược này là tích cực, nhưng thực tế là nó đã phá sản ở giữa chừng.
Ngay cả khi chiến lược của bạn là chiến lược kỳ vọng tích cực, nó vẫn có thể phá sản do quản lý vị thế không đúng cách. Vì vậy, theo quan điểm này, mua hay bán bao nhiêu quan trọng hơn là thời điểm mua hay bán. Cách quản lý vị thế một cách khoa học đã trở thành vấn đề cơ bản trong các giao dịch tài chính. Vì vậy, trước khi cố gắng giải quyết vấn đề này, chúng ta hãy xem cách đặt cược một cách khoa học trong cờ bạc.

Hãy lấy trò tung đồng xu làm ví dụ. Giả sử hai mặt của đồng xu có trọng lượng bằng nhau, nếu mặt trước xuất hiện, lợi nhuận là 2 nhân dân tệ, và nếu mặt sau xuất hiện, tổn thất là 1 nhân dân tệ. Rõ ràng, đây là một trò chơi có kỳ vọng tích cực, với tỷ lệ thắng là 50% và thua 2 nhân dân tệ. Câu hỏi đặt ra là: Bây giờ bạn có 100 nhân dân tệ, vậy làm thế nào bạn có thể đặt cược nhiều lần để 100 nhân dân tệ có thể đạt tới 1 triệu nhân dân tệ nhanh nhất có thể.
Nếu chúng ta không suy nghĩ kỹ về điều đó, chúng ta sẽ nghĩ rằng vì lợi nhuận của mỗi lần cược là 50%,*2-50%*1, tức là 50%. Để nhanh chóng nhận được lợi nhuận tối đa, bạn nên đầu tư càng nhiều vốn càng tốt vào mỗi lần đánh bạc. Mức cược nên là 100%.
Nhưng rõ ràng là không hợp lý khi đầu tư 100% vốn vào mọi ván cờ bạc, vì chỉ cần thua một lần là hết vốn, dù khả năng thua là rất nhỏ. Bởi vì chỉ cần bạn đánh bạc đủ nhiều lần thì việc mất tiền là điều chắc chắn xảy ra.
Có người có thể hỏi, vì cược 100% là không hợp lý, vậy cược 90% hoặc thấp hơn thì sao? Trên thực tế, để giải quyết vấn đề này, chúng ta có thể làm một thí nghiệm để mô phỏng trò chơi cờ bạc này và xem kết quả của mỗi lần cược là gì. Như thể hiện trong hình ảnh sau:
Từ hình vẽ, chúng ta có thể thấy rằng khi chúng ta giảm dần vị thế từ 90%, 80%, 70%, 60% và 50%, kết quả của cùng một lần cược là hoàn toàn khác nhau. Những người bạn cẩn thận có thể đã nhận thấy rằng khi vị thế dần thu hẹp, số tiền cuối cùng thực tế lại dần tăng lên.
Có người có thể hỏi, liệu có tốt hơn nếu cược nhỏ hơn mỗi lần, chẳng hạn như 10%? Bạn không thể tính toán mọi tỷ lệ cược, đúng không? Đây là vấn đề mà công thức Kelly nổi tiếng được thiết kế để giải quyết. Trong thống kê, công thức Kelly có thể tối đa hóa tốc độ tăng trưởng dài hạn của một chiến lược với kỳ vọng đặt cược lặp lại tích cực bằng cách tính toán tỷ lệ đặt cược tối ưu trong mỗi lần cược.
Không chỉ vậy, giả sử rằng số tiền gốc và số tiền cược có thể chia vô hạn thì việc sử dụng công thức Kelly sẽ khiến bạn không thể phá sản trong bất kỳ canh bạc nào. Đặc biệt trong ứng dụng thực tế của các giao dịch tài chính, đây là chiến lược quản lý vị thế kết hợp cả tấn công và phòng thủ. Chúng ta hãy cùng xem công thức Kelly được tính toán như thế nào, hãy xem hình ảnh sau:
- f là tỷ lệ cược tối ưu của vốn gốc hiện tại
- b là tỷ lệ cược, còn được gọi là tỷ lệ lãi lỗ trong giao dịch.
- p là tỷ lệ thành công
- q là tỷ lệ thất bại
Sau đó, chúng ta có thể sử dụng công thức Kelly để tính ví dụ về cờ bạc trong lớp này. Với số vốn ban đầu là 100 nhân dân tệ, nếu tỷ lệ thắng là 50% và tỷ lệ cược là 2, thì nên sử dụng tỷ lệ cược nào để làm cho số vốn có lợi nhất? có lợi nhuận? Tốc độ nhanh nhất đạt 1 triệu nhân dân tệ. Sử dụng công thức Kelly, quá trình tính toán là:
(0.5*(2+1) -1)/2=0.25
Tỷ lệ thắng 50% là 0,5, nhân với tỷ lệ cược 2 cộng 1, sau đó trừ 1, cuối cùng chia cho 2. Kết quả là 0,25, nghĩa là trong mỗi ván cờ bạc, 25% số tiền gốc được dùng để cá cược. Nó có thể đạt tới 1 triệu nhân dân tệ ở tốc độ nhanh nhất. Chúng ta có thể mô phỏng thủ công dựa trên kết quả tính toán để xem nó có chính xác không.
Hình ảnh trên là kết quả mô phỏng thủ công. Xin hãy xem dòng cuối cùng. Đối với cùng một cược, sau hơn 100 vòng, 25% vị trí đạt 1 triệu nhân dân tệ đầu tiên. Kết quả của 90%, 80%, 70% và 60% các vị thế là tiêu cực, điều này chứng minh đầy đủ rằng ngay cả một chiến lược giao dịch với kỳ vọng tích cực cũng sẽ bị phá sản do quản lý vị thế không đúng cách.
Chúng ta cũng có thể thấy rằng 50% các vị thế cuối cùng sẽ không lỗ cũng không lãi, điều này cũng phù hợp với kết quả của quy luật số lớn. Để minh họa thêm cho vấn đề, một vị thế 10% cũng được thêm vào trong quá trình mô phỏng thủ công. Mặc dù kết quả cuối cùng là lợi nhuận dương, nhưng hiệu ứng tệ hơn nhiều lần so với vị thế 25%.
Bạn đã thấy sức mạnh của công thức Kelly. Nếu bạn chọn vị trí gốc 10% trong ứng dụng thực tế, thì trong hơn 100 lần cược, gốc của bạn sẽ trở thành hơn 30.000. Mặc dù lợi nhuận rất lớn, Tuy nhiên, so với kết quả của với vị trí chủ chốt là 25%, tương đương với việc không kiếm được tiền. Đây chính là sức mạnh của kiến thức.
Nếu bạn muốn sử dụng công thức Kelly để kiếm tiền trong cuộc sống, bạn cần phải đáp ứng các điều kiện áp dụng của công thức Kelly. Không còn nghi ngờ gì nữa, canh bạc này phải đến từ thị trường tài chính. Đặc biệt trong giao dịch định lượng, bằng cách kiểm tra ngược dữ liệu lịch sử, tỷ lệ chiến thắng và tỷ lệ cược tương ứng có thể được tính toán sơ bộ.
Tất nhiên, việc áp dụng thực tế công thức Kelly trong các giao dịch tài chính không đơn giản như vậy. Vẫn còn nhiều chi tiết cần phải giải quyết, chẳng hạn như chi phí vốn trong các giao dịch đòn bẩy, không thể tách biệt vốn và vị thế trong các giao dịch thực tế và sự khác biệt giữa tỷ lệ thắng và vị trí trong giao dịch. Tỷ lệ cược thay đổi linh hoạt, v.v. Nhưng dù thế nào đi nữa, công thức Kelly sẽ chỉ cho chúng ta cách thiết lập phương pháp quản lý vị trí tốt nhất.
















