เกณฑ์เคลลี่ การกำหนดขนาดสถานะ
เกณฑ์เคลลี่กำหนดขนาดการเดิมพันจากอัตราต่อรองของคุณ ดูว่าผลตอบแทนรายวันของหุ้นสิบปีบ่งชี้ถึงเกณฑ์เคลลี่เต็ม การลดลง และครึ่งเกณฑ์เคลลี่ในทางปฏิบัติอย่างไร
เกณฑ์เคลลี่เป็นสูตรสำหรับขนาดการเดิมพัน ป้อนความน่าจะเป็นที่จะชนะ ขนาดของการชนะ และขนาดของการขาดทุน แล้วสูตรจะคืนค่าสัดส่วนของเงินทุนที่จะเพิ่มอัตราการเติบโตของความมั่งคั่งในระยะยาวให้สูงสุด จอห์น เคลลี่ ตีพิมพ์ในปี 1956 ที่ Bell Labs ในฐานะผลลัพธ์ของทฤษฎีสารสนเทศ และนักพนันและผู้ค้าก็นำไปใช้ในภายหลัง หน้าเว็บนี้จะอธิบายสูตรตั้งแต่หลักการพื้นฐาน จากนั้นวัดผลตามที่กำหนดจากการซื้อขายหุ้นจริงรายวันเป็นเวลาสิบปี ซึ่งผลลัพธ์ที่ได้นั้นไม่สามารถดำรงอยู่ได้
สิ่งที่เกณฑ์เคลลี่กล่าวถึงจริงๆ
พิจารณาการเดิมพันซ้ำๆ ที่ชนะเป็นเศษส่วน g ของจำนวนเงินที่วางเดิมพันด้วยความน่าจะเป็น p และเสียเป็นเศษส่วน l ของจำนวนเงินที่วางเดิมพันด้วยความน่าจะเป็น q โดยที่ q คือหนึ่งลบ p สัดส่วนของเงินทุนที่เหมาะสมที่สุดสำหรับการเติบโตที่จะจัดสรรในการทำซ้ำแต่ละครั้งคือ:
f* = p / l - q / g
ในกรณีการเดิมพันแบบเงินคู่แบบคลาสสิก ซึ่งการชนะจะจ่ายเท่ากับต้นทุนของการขาดทุน g และ l เท่ากับ 1 ทั้งคู่ และสูตรจะลดรูปเหลือ f* = p - q ส่วนต่างนั้นคือความได้เปรียบเอง การเดิมพันที่ชนะ 60% ของเวลาด้วยเงินคู่จะมีความได้เปรียบ 20 จุด และเคลลี่จะวางเดิมพัน 20% ของเงินทุนทั้งหมดในการเดิมพันนั้น
การอนุมานเป็นขั้นตอนเดียวของการคำนวณแคลคูลัสที่ใช้กับค่าเฉลี่ยลอการิทึมของความมั่งคั่ง การเพิ่มค่าเฉลี่ยลอการิทึมของความมั่งคั่งต่อการเดิมพันให้สูงสุด เทียบเท่ากับการเพิ่มอัตราการเติบโตแบบทบต้นในระยะยาว และสัดส่วนที่บรรลุผลคือสัดส่วนข้างต้น คุณสมบัติสองประการที่ได้จากสิ่งนั้น เคลลี่ไม่เคยวางเดิมพันทั้งบัญชีในการเดิมพันที่สามารถสูญเสียทุกอย่างได้ เนื่องจากลอการิทึมของศูนย์คือลบอนันต์ และสัดส่วนคงที่ใดๆ ที่ไม่ใช่ f เมื่อทำซ้ำนานพอ จะทบต้นช้ากว่า f
การโยนเหรียญที่คุณสามารถตรวจสอบได้ด้วยมือ
ตัวเลขในส่วนนี้เป็นสมมติฐานที่เลือกมาเพื่อให้การคำนวณมองเห็นได้ง่าย พิจารณาเหรียญที่ออกหัว 60% ของเวลาและจ่ายเงินคู่ โดยมีเงินทุนเริ่มต้น 1,000 ดอลลาร์
- วางเดิมพัน 20% ของเงินทุนในการโยนแต่ละครั้ง การชนะจะทำให้เงินจาก 1,000 ดอลลาร์ เป็น 1,200 ดอลลาร์ การขาดทุนจะทำให้เงินลดลงเหลือ 800 ดอลลาร์ การชนะหนึ่งครั้งและการขาดทุนหนึ่งครั้ง ในลำดับใดก็ตาม จะเหลือ 960 ดอลลาร์
- วางเดิมพัน 40% ของเงินทุนในการโยนแต่ละครั้ง การชนะแล้วขาดทุนคู่เดียวกันจะทำให้เงินจาก 1,000 ดอลลาร์ เป็น 1,400 ดอลลาร์ แล้วเหลือ 840 ดอลลาร์
- วางเดิมพันทั้งบัญชีในการโยนแต่ละครั้ง การออกก้อยเพียงครั้งเดียวจะสิ้นสุดลำดับอย่างถาวร ไม่ว่าความได้เปรียบจะเป็นเท่าใดก็ตาม
ต้นทุนไปกลับ 4% ที่การวางเดิมพัน 20% นี้คือราคาของการทบต้นเงินทุนที่ผันผวน และเหรียญ 60/40 สามารถครอบคลุมได้หลายครั้งตลอดลำดับที่ยาวนาน ที่การวางเดิมพัน 40% ต้นทุนไปกลับคือ 16% และเหรียญไม่สามารถครอบคลุมได้อีกต่อไป: อัตราการเติบโตที่สองเท่าของสัดส่วนเคลลี่จะอยู่ที่ประมาณศูนย์ หลังจากจุดนั้น การเดิมพันที่มีความได้เปรียบที่แท้จริงและได้รับการยืนยันจะไม่เพิ่มอะไรเลย ซึ่งเป็นข้อเท็จจริงที่สำคัญที่สุดที่สูตรนี้มีให้
สิ่งที่สูตรต้องการในการเดิมพันหุ้นรายวัน
ตอนนี้ลองใช้สูตรเดียวกันกับตลาด พิจารณาหนึ่งวันซื้อขายในหนึ่งหุ้นเป็นการเดิมพันซ้ำหนึ่งครั้ง: ความน่าจะเป็นที่จะชนะคือสัดส่วนของวันที่ปิดบวก ขนาดของการชนะคือการเคลื่อนไหวเฉลี่ยในวันบวก และขนาดของการขาดทุนคือการเคลื่อนไหวเฉลี่ยในวันลบ การปิดรายวันเต็มสิบปีปฏิทิน ตั้งแต่ปี 2016 ถึง 2025 สำหรับหุ้นที่คุ้นเคยหกชื่อ:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO', 'JNJ', 'MSFT', 'NVDA', 'TSLA')
AND window_start >= '2016-01-01 00:00:00'
AND window_start < '2026-01-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, dt
),
steps AS (
SELECT ticker, dt, c,
lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM daily
),
rets AS (
SELECT ticker, c / prev - 1 AS ret
FROM steps
WHERE prev > 0 AND c != prev
)
SELECT ticker,
round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
- countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY ticker
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY full_kelly_x DESCอ่านสามคอลัมน์แรก และความได้เปรียบดูเล็กน้อย อัตราการชนะใกล้เคียงกับการโยนเหรียญ และวันบวกเฉลี่ยกับวันลบเฉลี่ยมีขนาดใกล้เคียงกันสำหรับทุกชื่อในตาราง SPY ปิดสูงขึ้นใน 55.3% ของช่วงการซื้อขาย โดยได้ 0.71% ในวันบวกเฉลี่ย เทียบกับ 0.76% ในวันลบเฉลี่ย
คอลัมน์สุดท้ายคือจุดที่ปัญหาเริ่มต้น อินพุตขนาดเล็กที่เกือบจะสมดุลเหล่านี้อยู่ในตัวหารของสูตร และตัวหารขนาดเล็กจะให้ผลลัพธ์ขนาดใหญ่ สัดส่วนที่สูตรคืนค่าสำหรับ SPY คือ 10.1 เท่าของเงินทุน และค่าที่ต่ำที่สุดในบรรดาชื่อ 6 ยังคงอยู่ที่ 2 เท่า เคลลี่เต็มรูปแบบในการเดิมพันหุ้นรายวันไม่ใช่เปอร์เซ็นต์ของบัญชี แต่เป็นการเรียกร้องเลเวอเรจที่ไม่มีโบรกเกอร์ใดเสนอให้และไม่มีบัญชีใดอยู่รอดได้
รูปแบบของการแลกเปลี่ยน
นั่นคือทฤษฎี แผงถัดไปคือการทดลอง นำผลตอบแทนรายวันจริงของดัชนี S&P 500 ในช่วงสิบปีเดียวกัน ปรับขนาดผลตอบแทนของแต่ละวันด้วยขนาดการเดิมพันคงที่ และทบต้นผลลัพธ์ ขนาดการเดิมพัน 1.0x คือดัชนีที่ไม่ใช้เลเวอเรจ ขนาดการเดิมพัน 3.0x คือการผูกเงินสามดอลลาร์สำหรับทุกดอลลาร์ของเงินทุน ทุกวัน โดยปรับสมดุลทุกวัน แต่ละแถวคือเส้นทางเต็มสิบปี พร้อมด้วยความมั่งคั่งสุดท้ายและการลดลงสูงสุดจากจุดสูงสุดก่อนหน้า
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2016-01-01 00:00:00'
AND window_start < '2026-01-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
steps AS (
SELECT dt, c,
lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM daily
),
rets AS (
SELECT dt, c / prev - 1 AS ret
FROM steps
WHERE prev > 0
),
sizes AS (
SELECT arrayJoin([0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0]) AS bet
),
paths AS (
SELECT bet, dt,
exp(sum(log(greatest(1 + bet * ret, 0.0001)))
OVER (PARTITION BY bet ORDER BY dt
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS equity
FROM rets CROSS JOIN sizes
),
peaks AS (
SELECT bet, dt, equity,
max(equity) OVER (PARTITION BY bet ORDER BY dt
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak
FROM paths
)
SELECT concat(toString(bet), 'x') AS bet_size,
round(argMax(equity, dt), 2) AS ending_multiple,
round(100 * max(1 - equity / peak), 1) AS max_drawdown_pct
FROM peaks
GROUP BY bet
ORDER BY betที่ 0.5x เส้นทางสิ้นสุดลงที่ 1.92 เท่าของเงินทุนเริ่มต้น โดยมีการลดลงที่เลวร้ายที่สุด 18.2% จากจุดสูงสุดก่อนหน้า ที่ 5x ผลตอบแทนรายวันเดียวกันและทศวรรษเดียวกัน เส้นทางสิ้นสุดลงที่ 14.35 เท่า โดยมีการลดลงที่เลวร้ายที่สุด 94.5%
สองคอลัมน์เคลื่อนที่แตกต่างกัน และนั่นคือบทเรียนทั้งหมดของ fractional Kelly ความมั่งคั่งสุดท้ายเพิ่มขึ้นตามขนาดการเดิมพันไประยะหนึ่ง แล้วแบนลง จากนั้นจึงลดลงเนื่องจากแรงฉุดจากการทบต้นความผันผวนเข้ามาแทนที่การเปิดรับที่เพิ่มขึ้น คอลัมน์ drawdown ไม่มีจุดเปลี่ยนดังกล่าว มันเพิ่มขึ้นทุกขั้นตอนตลอดแถว 8 และมันเพิ่มขึ้นเร็วกว่าคอลัมน์ความมั่งคั่งที่เคยเป็นมา ครึ่งหนึ่งของการเติบโตของการเดิมพันที่เหมาะสมที่สุดสามารถหาได้ที่ครึ่งหนึ่งของขนาดการเดิมพันที่เหมาะสมที่สุด โดยมีต้นทุนน้อยกว่ามาก ความไม่สมมาตรนั้นคือข้อโต้แย้งสำหรับการวางเดิมพันน้อยกว่า f* และนั่นคือเหตุผลที่การกำหนดครึ่งเคลลี่มีอยู่จริง
การประมาณค่าคือส่วนที่อ่อนแอ ไม่ใช่สูตร
สูตรนี้แม่นยำสำหรับการเดิมพันที่มีอัตราต่อรองที่ทราบ ในคาสิโน อัตราต่อรองจะถูกพิมพ์ออกมา ในตลาด อัตราต่อรองจะถูกประมาณจากประวัติศาสตร์ และการประมาณค่าจะแกว่งไปมา นี่คือการคำนวณเดียวกันกับแผงแรกที่ดำเนินการแยกกันในแต่ละปีปฏิทินสำหรับตัวติดตามดัชนีเดียว
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2016-01-01 00:00:00'
AND window_start < '2026-01-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY dt
),
steps AS (
SELECT dt, c,
lagInFrame(c) OVER (ORDER BY dt ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM daily
),
rets AS (
SELECT dt, c / prev - 1 AS ret
FROM steps
WHERE prev > 0 AND c != prev
)
SELECT toString(toYear(dt)) AS year,
round(100 * countIf(ret > 0) / count(), 1) AS win_rate_pct,
round(100 * avgIf(ret, ret > 0), 2) AS avg_gain_pct,
round(100 * abs(avgIf(ret, ret < 0)), 2) AS avg_loss_pct,
round(countIf(ret > 0) / count() / abs(avgIf(ret, ret < 0))
- countIf(ret < 0) / count() / avgIf(ret, ret > 0), 1) AS full_kelly_x
FROM rets
GROUP BY year
HAVING countIf(ret > 0) > 0 AND countIf(ret < 0) > 0
ORDER BY yearแต่ละแถวคือการประมาณค่าของปริมาณที่ไม่ทราบค่าเดียวกัน ซึ่งสร้างขึ้นจากการสังเกตประมาณ 250 รายการ ปี 2016 ให้ผลตอบแทน 13.7 ด้วยอัตราการชนะ 53.8% ปี 2025 ให้ผลตอบแทน 12.3 ด้วยอัตราการชนะ 57.8% แผนภูมิจัดแสดงว่าการอ่านค่า 10 ของตัวเลขหนึ่งตัวสามารถแตกต่างกันได้มากเพียงใดเมื่อแต่ละค่าถูกดึงมาจากปีเดียว
การกระจายตัวนั้นมีความสำคัญมากกว่าการปรับปรุงสูตรใดๆ การประเมินความได้เปรียบของคุณเกินสองเท่า และสูตรจะคืนค่าขนาดการเดิมพันเป็นสองเท่า ซึ่งจะทำให้คุณอยู่ที่จุดที่การเติบโตเริ่มลดลงหรือเกินกว่านั้น การประเมินต่ำเกินไปและคุณจะสูญเสียการเติบโตที่คุณสามารถทบต้นได้ โดยไม่มีความเสี่ยงที่จะล้มละลาย ข้อผิดพลาดทั้งสองนี้ไม่สมมาตร และด้านที่ถูกกว่าของความไม่สมมาตรคือด้านที่เล็กกว่า ผู้ปฏิบัติงานที่ใช้เคลลี่มักจะวางเดิมพันครึ่งหนึ่ง หรือหนึ่งในสี่ และปฏิบัติต่อสูตรว่าเป็นเพดานมากกว่าเป้าหมาย
ที่ที่แบบจำลองหยุดอธิบายตลาด
เคลลี่สมมติว่าการเดิมพันที่คุณสามารถทำซ้ำได้ด้วยอัตราต่อรองคงที่และทราบ และผลลัพธ์ที่เป็นอิสระจากการทำซ้ำครั้งต่อไป ตลาดทำลายสิ่งเหล่านั้นทั้งหมด อัตราต่อรองจะถูกประมาณและเปลี่ยนแปลงไปตามกาลเวลา ผลตอบแทนรายวันจะเกาะกลุ่มกัน: ช่วงที่เงียบสงบตามมาด้วยช่วงที่เงียบสงบ และวันที่มีความรุนแรงจะมาเป็นกลุ่ม ซึ่งทำให้ drawdown เกินกว่าที่สมมติฐานความเป็นอิสระคาดการณ์ไว้ ตำแหน่งจะไม่ถูกปิดเมื่อสิ้นสุดแต่ละวัน ช่องว่างจะข้ามราคาที่การเดิมพันจะถูกปิด และการเรียกหลักประกันจะมาตามกำหนดเวลาของโบรกเกอร์แทนที่จะเป็นกำหนดเวลาของแบบจำลอง
สูตรนี้ยังคงมีคุณค่าในฐานะขอบเขต มันระบุในบรรทัดเดียวว่ามีขนาดการเดิมพันที่เกินกว่านั้น ความเชื่อมั่นที่มากขึ้นจะให้ผลตอบแทนน้อยลง และมันจะระบุขอบเขตนั้นจากปริมาณที่ผู้ค้าสามารถพยายามวัดได้อย่างน้อยที่สุด นั่นคือเหตุผลที่ตรรกะเดียวกันชี้ไปที่การกระจายความเสี่ยง: การเดิมพันหลายรายการที่เป็นอิสระต่อกันบางส่วนจะแบ่งปันงบประมาณความเสี่ยงรวมอย่างมีประสิทธิภาพมากกว่าการเดิมพันเดียว ซึ่งเป็นหลักการคำนวณเบื้องหลัง ความเสี่ยงจากการกระจุกตัว และสำหรับนักลงทุนที่เพิ่มเงินตามกำหนดเวลาแทนที่จะปรับขนาดการเดิมพันเป็นครั้งคราว คำถามเกี่ยวกับการปรับขนาดตำแหน่งจะได้รับคำตอบจากกำหนดเวลาเอง ซึ่งเป็นกรณีของ การเฉลี่ยต้นทุนเป็นดอลลาร์
คำถามที่พบบ่อย
สูตรเกณฑ์เคลลี่คืออะไร?
สำหรับการเดิมพันที่ชนะเป็นเศษส่วน g ของเงินเดิมพันด้วยความน่าจะเป็น p และเสียเป็นเศษส่วน l ด้วยความน่าจะเป็น q สัดส่วนของเงินทุนที่เหมาะสมที่สุดสำหรับการเติบโตคือ f = p / l - q / g ในกรณีเงินคู่ จะลดรูปเหลือ f = p - q ซึ่งก็คือความได้เปรียบเอง
ทำไมนักเทรดถึงใช้ครึ่งเคลลี่แทนที่จะใช้เต็มเคลลี่?
การเติบโตจะค่อนข้างคงที่ใกล้เคียงจุดที่เหมาะสมที่สุด ในขณะที่ความเสี่ยงจะเพิ่มขึ้นเรื่อยๆ ดังนั้นการลดการเดิมพันลงครึ่งหนึ่งจะยอมเสียการเติบโตในระยะยาวไปเล็กน้อย และลดส่วนแบ่ง drawdown ลงอย่างมาก ข้อผิดพลาดในการประมาณค่าจะทวีคูณข้อโต้แย้ง: การเดิมพันสองเท่าจากความได้เปรียบที่ประเมินสูงเกินไปจะอยู่ที่จุดที่การเติบโตหยุดลง
เกณฑ์เคลลี่ใช้ได้กับหุ้นหรือไม่?
มันใช้ได้ในเชิงคณิตศาสตร์ และสมมติฐานเกี่ยวกับอัตราต่อรองคงที่ที่ทราบและผลลัพธ์ที่เป็นอิสระไม่เป็นจริงในตลาด เมื่อนำไปใช้กับผลตอบแทนหุ้นรายวันโดยไม่ระมัดระวัง มันจะขอเลเวอเรจที่เกินกว่าที่บัญชีใดๆ จะรับได้ ดังที่แสดงในแผงแรกข้างต้น
จะเกิดอะไรขึ้นถ้าคุณเดิมพันมากกว่าสัดส่วนเคลลี่?
อัตราการเติบโตในระยะยาวจะลดลง ที่ประมาณสองเท่าของสัดส่วนเคลลี่ จะถึงประมาณศูนย์ และหลังจากนั้น การเดิมพันที่มีความได้เปรียบที่แท้จริงจะลดเงินทุนลงเมื่อเวลาผ่านไป ในขณะที่ drawdown จะลึกลงไปเรื่อยๆ
เกณฑ์เคลลี่เหมือนกับการเสี่ยง 1% หรือ 2% ต่อการเทรดหรือไม่?
ไม่ กฎเปอร์เซ็นต์คงที่จะละเลยอัตราต่อรองทั้งหมดและใช้ตัวเลขเดียวกันกับทุกสถานการณ์ เคลลี่ปรับขนาดการเดิมพันตามความได้เปรียบที่วัดได้ ซึ่งทำให้ตอบสนองได้ดีขึ้นเมื่อทราบความได้เปรียบ และเปราะบางมากขึ้นเมื่อเดาความได้เปรียบ
ตัวเลขทั้งหมดข้างต้นมาจากคิวรีที่จัดเก็บไว้ ซึ่งคุณสามารถเปิด แก้ไข และเรียกใช้ซ้ำได้ สลับสัญลักษณ์ ชื่อหน้าต่าง หรือตารางขนาดการเดิมพัน และวัดการแลกเปลี่ยนด้วยตัวคุณเองบนเทอร์มินัล Strasmore