OptiNod Academy

Công thức Kelly — vì sao tỷ lệ tối ưu về mặt toán học hầu như luôn quá lớn trong thực chiến

Cái \"tối ưu\" của Kelly chỉ tới một điểm duy nhất nơi tốc độ tăng trưởng lãi kép dài hạn đạt cực đại. Muốn đứng đúng vào điểm đó thì phải biết chính xác tỷ lệ thắng và tỷ lệ lời lỗ, mà trong giao dịch cả hai chỉ là giá trị ước lượng, nên chỉ cần nhỉnh lên một chút là lập tức thành đặt cược quá tay. Vì vậy trong thực chiến người ta cắt xuống từ half-kelly trở xuống.

> Cái "tối ưu" của Kelly chỉ tới một điểm duy nhất nơi tốc độ tăng trưởng lãi kép dài hạn đạt cực đại. Muốn khớp đúng tỷ lệ đó thì phải biết chính xác tỷ lệ thắng và tỷ lệ lời/lỗ, mà trong giao dịch cả hai luôn luôn chỉ là giá trị ước lượng.

Công thức Kelly là tỷ lệ đặt cược do John Kelly ở phòng thí nghiệm Bell suy ra vào năm 1956 trong lúc nghiên cứu tốc độ truyền thông tin của một kênh truyền dẫn. Nó đặt câu hỏi: đặt bao nhiêu phần trăm tài sản vào một lần cược thì giúp tốc độ tăng trưởng dài hạn của tài sản lớn lên nhanh nhất, và câu trả lời gói gọn trong một dòng công thức. Gọi tỷ lệ thắng là p, tỷ lệ thua là q=1−p, tỷ lệ lời/lỗ (tỷ lệ giữa số tiền kiếm được khi thắng so với số tiền mất khi thua) là b, thì tỷ lệ tối ưu là f* = p − q/b. Với tỷ lệ thắng 55% và tỷ lệ lời/lỗ 1.5 thì f* = 0.55 − 0.45/1.5 = 0.25, tức là đặt 25% tài sản vào một lần cược.

Theo cách hiểu phổ biến, công thức này được xem là "kích thước đặt cược tối ưu đã được toán học chứng minh". Khi ra con số 25%, người ta đọc rằng đặt cược theo tỷ lệ đó là con đường nhanh nhất. Thế nhưng đối tượng mà Kelly cực đại hóa là kỳ vọng của logarit tài sản, tức tốc độ tăng trưởng lãi kép. Đó không phải *lợi nhuận kỳ vọng* của một ván. Điểm này gần như không bao giờ được nhắc tới.

Hiểu theo cách trên thì cái giá phải trả hiện ra ngay trên đường cong tài sản. Tài khoản đặt cược theo tỷ lệ full-Kelly có tốc độ tăng trưởng cao nhất, nhưng biến động và drawdown cũng cùng lúc phình lên cực độ. Và quan trọng nhất, nếu p và b đưa vào tính f* được ước lượng nhỉnh hơn giá trị thực dù chỉ một chút, thì 25% lập tức trở thành đặt cược quá tay. Đọc xong bài này, khi đã tính ra tỷ lệ Kelly của hệ thống mình, bạn sẽ không coi con số đó là mục tiêu mà coi nó là giới hạn trên tuyệt đối không được vượt qua.

Sự bất đối xứng khiến tốc độ tăng trưởng sụp đổ dốc đứng ngay sau full-Kelly
Sự bất đối xứng khiến tốc độ tăng trưởng sụp đổ dốc đứng ngay sau full-KellyĐường cong Kelly leo lên thoai thoải cho tới đỉnh, nhưng qua khỏi đỉnh thì tốc độ tăng trưởng nhanh chóng rơi xuống dưới 0, dễ tổn thương trước việc đặt cược quá tay.

Đối tượng mà Kelly cực đại hóa là tốc độ tăng trưởng lãi kép

Công thức Kelly không giải bài toán nuôi lớn lợi nhuận kỳ vọng của một ván. Nếu chỉ cần nuôi lớn lợi nhuận kỳ vọng thì hễ tỷ lệ thắng vượt 50% là câu trả lời sẽ là đặt toàn bộ tài sản vào mỗi ván. Cái Kelly đi tìm là tỷ lệ giúp tài khoản phình lên nhanh nhất khi lặp lại cùng một lần cược vô hạn lần, tức tỷ lệ cực đại hóa kỳ vọng của logarit tài sản.

Sự phân biệt này quan trọng vì trong lãi kép, một lần thua lớn sẽ kéo tụt toàn bộ tốc độ tăng trưởng. Để hồi phục khoản lỗ 50% thì cần lãi 100%. Vì vậy đỉnh Kelly bất đối xứng giữa hai phía trái phải. Ở phía trái đỉnh (đặt cược quá ít) tốc độ tăng trưởng giảm thoai thoải, còn ở phía phải đỉnh (đặt cược quá tay) thì tổn thất do biến động tích lũy dần và tốc độ tăng trưởng nhanh chóng rơi xuống số âm. Trong giả định cược Bernoulli đơn giản, nếu nâng tỷ lệ đặt cược lên gấp đôi full-Kelly thì tốc độ tăng trưởng dài hạn gần như bằng 0. Tính theo hệ thống tỷ lệ thắng 55% · tỷ lệ lời/lỗ 1.5 ở trên thì tốc độ tăng trưởng mỗi lần cược của full-Kelly khoảng 0.0457 sẽ rơi xuống tới −0.004 ở tỷ lệ gấp đôi.

Trong ví dụ BTC, sự bất đối xứng này hiện ra rõ ràng. Ngày 19 tháng 5 năm 2021, BTC rơi khoảng 30% chỉ trong một ngày, từ giá mở cửa nến ngày khoảng 42.850 USD xuống đáy trong ngày 30.000 USD. Đỉnh ngay trước đó hôm 14 tháng 4 là 64.854 USD, nên so với đỉnh thì còn sâu hơn. Một tài khoản đã dùng đòn bẩy theo tỷ lệ gần với full-Kelly thì chỉ trong một ngày này đã bị đẩy sang đoạn phải dốc đứng của đường cong tăng trưởng. Nếu đã tính ra tỷ lệ Kelly, trước hết hãy xác nhận rằng tỷ lệ đó ứng với đỉnh của đường cong. Càng đặt cược nhiều hơn vượt qua đỉnh thì tốc độ tăng trưởng dài hạn lại càng giảm.

Drawdown của full-Kelly sâu đến mức phần lớn trader không chịu nổi

Tỷ lệ full-Kelly cực đại hóa tốc độ tăng trưởng nhưng đổi lại đẩy drawdown của đường cong tài sản lên cực độ. Vận hành bằng full-Kelly thì việc mức sụt giảm tối đa (maximum drawdown) xóa đi hơn nửa tài sản không phải là chuyện hiếm. Mức drawdown kỳ vọng chính xác thay đổi tùy theo phân phối cược và tần suất giao dịch, nhưng hướng đi thì rõ ràng: full-Kelly đặt nền trên giả định một drawdown sâu. Dù đứng đúng đỉnh của đường cong tăng trưởng thì đường cong tài sản vẫn gập ghềnh đến vậy.

Lý do drawdown sâu đến thế là vì công thức Kelly không tính nỗi đau tâm lý mà trader cảm nhận thành một chi phí. Trong công thức chỉ có kỳ vọng của logarit tài sản. Nếu một lộ trình đi qua drawdown 60% rồi rốt cuộc lập đỉnh mới và một lộ trình tăng thoai thoải với drawdown 20% cùng tới một điểm đích, thì công thức Kelly không phân biệt hai lộ trình. Nhưng với trader, hai lộ trình là hai trải nghiệm hoàn toàn khác nhau. Nếu trong đoạn drawdown 60% mà nghi ngờ hệ thống rồi cắt bỏ, thì ngay khoảnh khắc đó giả định về tốc độ tăng trưởng dài hạn sụp đổ.

Nhìn tuần FTX sụp đổ tháng 11 năm 2022 thì khác biệt này hiện rõ. BTC rơi khoảng 27% chỉ trong 3 phiên, từ giá mở cửa khoảng 21.300 USD ngày 6 tháng 11 xuống đáy 17.167 USD ngày 8 tháng 11 rồi đáy 15.588 USD ngày 9 tháng 11. Một tài khoản dùng định cỡ full-Kelly thì chỉ riêng đoạn này đã bốc hơi vài chục phần trăm, và nếu trước đó còn chồng thêm một đợt drawdown nữa thì rơi vào drawdown sâu đến mức khó mà giữ được hệ thống về mặt tâm lý. Vì vậy, trước khi quyết định có áp dụng nguyên xi tỷ lệ Kelly hay không, hãy kiểm tra trước dưới góc nhìn định cỡ vị thế (position sizing) xem mình có chịu nổi mức drawdown mà tỷ lệ đó tạo ra hay không.

Một dòng f\* chỉ tối ưu khi p và b chính xác

Cái bẫy lớn nhất của công thức Kelly là nó giả định p và b đưa vào công thức là các hằng số đã biết. Với roulette ở sòng bài thì xác suất được cố định bằng luật chơi nên giả định này thành lập. Trong giao dịch, tỷ lệ thắng và tỷ lệ lời/lỗ là giá trị ước lượng từ dữ liệu quá khứ, và không có gì bảo đảm tương lai vẫn sẽ y như vậy.

Sai số ước lượng nguy hiểm vì công thức f* khuếch đại sai số đầu vào. Nếu nhìn tỷ lệ thắng là 55% mà thực tế là 50%, thì số hạng q/b lớn lên và tỷ lệ tính ra trở thành giá trị lớn hơn mức tối ưu thực. Hơn nữa phía phải của đỉnh Kelly lại dốc đứng, nên chỉ cần vượt đỉnh một chút là tốc độ tăng trưởng đã bị cắt nhiều. Ước lượng nhỉnh lên thì cái giá phải trả nằm ở đúng đoạn dốc đứng của đường cong tăng trưởng. Tỷ lệ thắng trong backtest gần như luôn ra nhỉnh hơn so với giao dịch thật, vì sự chênh lệch giữa backtest và giao dịch thật (backtest vs live) làm giảm tỷ lệ lời/lỗ b.

Cú lao dốc do giải chấp yen carry ngày 5 tháng 8 năm 2024 cho thấy rõ điểm này. BTC rơi khoảng 16% chỉ trong một ngày, từ giá mở cửa nến ngày khoảng 58.161 USD xuống đáy 49.000 USD. Dù là một hệ thống đã ước lượng tỷ lệ lời/lỗ thường ngày là 1.5, thì trong những cú rơi tạo gap như thế này, do trượt giá khi cắt lỗ mà kích thước một lần thua lại lớn hơn giả định. Khi kích thước thực của một lần thua lớn lên thì b giảm, và khi b giảm thì tỷ lệ Kelly phù hợp cũng phải giảm theo. Hãy đo lại kỳ vọng và tỷ lệ lời/lỗ (risk-reward expectancy) của hệ thống mình theo giá khớp lệnh thật, rồi mới đưa giá trị đó vào công thức f*.

Vì sao half-Kelly là chuẩn thực chiến: giữ gần như nguyên tốc độ tăng trưởng mà cắt biến động đi một nửa

Trong thực chiến, người vận hành dùng nguyên xi full-Kelly rất hiếm. Đa số dùng half-Kelly (một nửa của full-Kelly) hoặc thấp hơn. Cắt tỷ lệ đi một nửa thì nhờ sự bất đối xứng của đường cong đỉnh, tốc độ tăng trưởng bị mất đi rất ít trong khi biến động giảm đi rất nhiều.

Nhìn bằng con số thì như sau. Vì đỉnh Kelly bằng phẳng quanh đỉnh nên dù cắt tỷ lệ đặt cược đi một nửa thì tốc độ tăng trưởng dài hạn cũng không giảm nhiều. Trong hệ thống tỷ lệ thắng 55% · tỷ lệ lời/lỗ 1.5 ở trên, half-Kelly giữ được khoảng 75% tốc độ tăng trưởng của full-Kelly.

| Phân loại | Tỷ lệ đặt cược | Tốc độ tăng trưởng mỗi lần cược | Biến động đường cong tài sản |

|---|---|---|---|

| full-Kelly | 0.25 | 0.0457 | Mốc chuẩn |

| half-Kelly | 0.125 | 0.0344 | Khoảng một nửa |

Ngược lại, biến động của đường cong tài sản gần như tỷ lệ thuận với tỷ lệ đặt cược nên nhỏ đi gần một nửa (drawdown có xu hướng giảm nhiều hơn cả biến động). Tức là đánh đổi một phần tư tốc độ tăng trưởng để cắt biến động đi một nửa. Tính cả sai số ước lượng vào thì cuộc trao đổi này càng có lợi hơn. Bởi vì dù p và b bị ước lượng nhỉnh khiến full-Kelly trên thực tế đã vượt qua đỉnh, thì half-Kelly nhiều khả năng vẫn là một tỷ lệ an toàn chưa chạm tới đỉnh.

Ở đây phải nhắc lại "tối ưu" mà Kelly nói tới là gì. Tỷ lệ Kelly chỉ tới điểm nơi tốc độ tăng trưởng đạt cực đại, và giá trị này chỉ có ý nghĩa khi tỷ lệ thắng và tỷ lệ lời/lỗ đưa vào là chính xác. Chỉ riêng full-Kelly thôi cũng đã đủ tạo ra drawdown sâu khiến ta phải ngừng vận hành. Vì thế trong thực chiến người ta không lấy tỷ lệ đó làm mục tiêu mà chỉ đặt nó làm giới hạn trên, và vận hành ở mức half-Kelly trở xuống. Nếu tính xác suất phá sản (risk of ruin) của hệ thống mình ở tỷ lệ Kelly và ở tỷ lệ half-Kelly riêng rẽ, thì chênh lệch giữa hai con số chính là khoảng đệm an toàn.

Khác biệt đường cong vốn giữa full-Kelly và half-Kelly
Khác biệt đường cong vốn giữa full-Kelly và half-KellyHalf-Kelly từ bỏ một phần tốc độ tăng trưởng cuối cùng để đổi lấy việc giảm mạnh drawdown và biến động, qua đó nâng cao khả năng duy trì trong thực chiến.

Khi tỷ lệ lời/lỗ thay đổi theo từng lần cược thì không thể có một tỷ lệ Kelly duy nhất

Công thức Kelly giả định rằng mọi lần cược đều có cùng p và b. Trong giao dịch, vì khoảng cách cắt lỗ và mục tiêu khác nhau ở mỗi lệnh nên b thay đổi mỗi lần. Giá trị b của một lệnh đặt mục tiêu xa với cắt lỗ hẹp và giá trị b của một lệnh đặt mục tiêu gần với cắt lỗ rộng là hai giá trị hoàn toàn khác nhau.

Điểm này quan trọng vì nếu gộp các b khác nhau ở từng lệnh thành một giá trị trung bình để tính ra một tỷ lệ Kelly duy nhất, thì mỗi lệnh đều lệch khỏi tỷ lệ phù hợp của riêng nó. Ở lệnh có b lớn thì đặt cược quá ít, còn ở lệnh có b nhỏ thì đặt cược quá tay. Trong thực chiến người ta không áp tỷ lệ Kelly một cách máy móc thành kích thước đặt cược cố định trên vốn, mà dùng nó làm chuẩn để định ra một đơn vị rủi ro mỗi lệnh. Sau khi cố định rủi ro thua lỗ của một lệnh thành một tỷ lệ nhất định của vốn, rồi tính ngược kích thước vị thế theo khoảng cách cắt lỗ, thì dù b có thay đổi, rủi ro mỗi lệnh vẫn được giữ ổn định.

Ví dụ giả sử cố định rủi ro mỗi lệnh ở mức 1% vốn. Trong đoạn BTC lập đỉnh cao nhất lịch sử 73.777 USD ngày 14 tháng 3 năm 2024, nếu đặt cắt lỗ ở vị trí dưới đáy cấu trúc ngay trước đó 3%, thì kích thước vị thế là khoảng 33% vốn (1% ÷ 3%). Cùng rủi ro 1% đó nhưng nếu thu cắt lỗ hẹp lại ở vị trí 1.5% thì vị thế tăng gấp đôi thành khoảng 66%. Đặt tỷ lệ Kelly làm chuẩn cấp trên để quyết định nên giảm rủi ro mỗi lệnh 1% này xuống 0.5% hay nâng lên 1.5% sẽ hợp với thực chiến hơn. Nếu khoảng cách cắt lỗ khác nhau ở mỗi lệnh, thì đừng nhìn tỷ lệ Kelly như kích thước vị thế mà hãy diễn giải nó như giới hạn trên của tỷ lệ rủi ro mỗi lệnh.

Setup áp dụng Kelly cho hệ thống tỷ lệ lời/lỗ 1.5, tỷ lệ thắng 55%

Hãy giải đến cùng một trong những ví dụ áp dụng phổ biến nhất. Đây là quy trình áp dụng Kelly cho một hệ thống bám theo xu hướng đã qua kiểm tra backtest và giao dịch thật để bảo đảm tỷ lệ thắng 55%, tỷ lệ lời/lỗ 1.5 theo chuẩn giao dịch thật. Mọi con số phải là giá trị đo theo giá khớp lệnh thật.

  • Tính full-Kelly: f* = 0.55 − 0.45/1.5 = 0.25. Full-Kelly là giá trị bảo đặt rủi ro mỗi lệnh ở mức 25% vốn, và giá trị này không áp vào lệnh thật mà chỉ đặt làm chuẩn giới hạn trên.
  • Tỷ lệ thực chiến: half-Kelly = 0.25 × 0.5 = 0.125. Tính cả sai số ước lượng, cắt thêm từ đây xuống, cố định rủi ro mỗi lệnh ở mức 1% vốn. 1% là một tỷ lệ thận trọng, tương ứng khoảng 4% của full-Kelly 25%.
  • Kích thước vị thế: Tính ngược bằng cách chia rủi ro mỗi lệnh 1% cho khoảng cách cắt lỗ. Nếu cắt lỗ cách giá vào lệnh 2.5% thì vị thế là 40% vốn (1% ÷ 2.5%), nếu cắt lỗ 1.5% thì khoảng 66%.
  • Chốt lời: Đóng lệnh khi đạt tỷ lệ lời/lỗ mục tiêu 1.5R. Nếu từ giá vào lệnh tới cắt lỗ là 2.5% thì giá mục tiêu ở vị trí giá vào lệnh +3.75% (2.5% × 1.5).
  • Điều kiện nâng tỷ lệ: Chỉ khi tỷ lệ thắng · tỷ lệ lời/lỗ đo trên từ 50 lệnh thật trở lên vẫn giữ đúng giá trị đầu vào và xác suất phá sản (risk of ruin) dưới 1%, thì mới nâng rủi ro mỗi lệnh từ 1% lên 1.5% một nấc.
  • Vô hiệu hóa: Nếu tỷ lệ thắng thật rơi xuống dưới 50% hoặc tỷ lệ lời/lỗ giảm xuống dưới 1.2, thì lập tức hạ rủi ro mỗi lệnh xuống 0.5% và đo lại các giá trị đầu vào.

Cốt lõi của setup này là không dùng con số full-Kelly 25% vào lệnh thật. Con số đó chỉ tồn tại như giới hạn trên không được vượt qua, còn việc vận hành thực tế diễn ra ở mức một phần tư của nó.

Tỷ lệ Kelly còn phải cắt thêm lần nữa theo tính độc lập của các lệnh và số vị thế đồng thời

Giả định cuối cùng của Kelly là mỗi lần cược độc lập với nhau. Tung đồng xu thì kết quả lần trước không ảnh hưởng tới lần sau. Trên thị trường, khi đang giữ nhiều vị thế cùng lúc, các vị thế đó thường di chuyển cùng chiều với nhau.

Đây là lý do phải cắt thêm tỷ lệ Kelly nữa. Nếu đang giữ đồng thời long BTC và long ETH thì hai lệnh không độc lập. Trong đợt giảm bắt đầu sau khi BTC lập đỉnh 69.000 USD ngày 10 tháng 11 năm 2021, hay trong đoạn FTX sụp đổ năm 2022, altcoin di chuyển gần như y hệt BTC. Nếu áp tỷ lệ Kelly tính theo giả định độc lập cho từng lệnh, thì tổng rủi ro thực tế lớn hơn giá trị tính ra. Đặt full-Kelly riêng cho mỗi trong ba vị thế tương quan cao với nhau thì thực chất giống như đặt gấp ba lần full-Kelly vào một lệnh.

Trong thực chiến người ta quản lý tổng rủi ro của toàn bộ các vị thế đang giữ đồng thời trong cùng một hạn mức Kelly. Nếu đã định rủi ro mỗi lệnh là 1%, thì giữ cho tổng rủi ro của các vị thế tương quan cao không vượt quá hạn mức đó bằng cách lấy mỗi vị thế nhỏ hơn. Nếu đo trước tương quan giữa các tài sản đang nắm, thì có thể nắm được mấy vị thế thực chất chỉ là một lần cược. Khi vào nhiều mã cùng lúc trên biểu đồ, trước khi cộng các tỷ lệ Kelly lại, hãy kiểm tra trước xác suất các mã đó cùng lao dốc trong một ngày. Xác suất đó càng cao thì tổng Kelly càng phải cắt nhiều hơn, và chỉ tỷ lệ đã cắt như vậy mới dùng được trong thực chiến.