کیلی معیار پوزیشن سائزنگ حقیقی جانچ
کیلی معیار (Kelly criterion) سے شرط کا حجم نکالیں۔ دس سال کے روزانہ اسٹاک ریٹرن پر فل کیلی، ڈرا ڈاؤن اور ہاف کیلی کا عملی تجزیہ دیکھیں۔
کیلی معیار (Kelly criterion) شرط کے حجم کے لیے ایک فارمولا ہے۔ اس میں جیتنے کا امکان، جیت کا حجم، اور ہار کا حجم ڈالیں، تو یہ سرمائے کا وہ حصہ بتاتا ہے جو دولت کی طویل مدتی شرح نمو کو زیادہ سے زیادہ کرتا ہے۔ جان کیلی نے اسے 1956 میں بیل لیبز میں انفارمیشن تھیوری کے نتیجے کے طور پر شائع کیا، اور بعد میں جواریوں اور تاجروں نے اسے اپنایا۔ یہ صفحہ فارمولے کو بنیادی اصولوں سے شروع کرتا ہے، پھر اسے دس سال کے حقیقی روزانہ اسٹاک ریٹرن پر ناپتا ہے، جہاں نسخہ ناقابلِ عمل ثابت ہوتا ہے۔
کیلی معیار دراصل کیا کہتا ہے
ایک بار بار دہرائی جانے والی شرط لیں جو p امکان کے ساتھ لگائی گئی رقم کا g حصہ جیتتی ہے، اور q امکان کے ساتھ لگائی گئی رقم کا l حصہ ہارتی ہے، جہاں q ایک مائنس p ہے۔ ہر تکرار پر لگانے کے لیے سرمائے کا نمو-بہترین حصہ یہ ہے:
f* = p / l - q / g
کلاسک برابر رقم والے معاملے میں، جہاں جیت اتنی ہی دیتی ہے جتنی ہار لیتی ہے، g اور l دونوں 1 کے برابر ہوتے ہیں اور فارمولا f* = p - q میں سمٹ جاتا ہے۔ یہ فرق خود برتری (edge) ہے۔ ایک شرط جو برابر رقم پر 60% وقت جیتتی ہے، اس میں 20 پوائنٹ کی برتری ہوتی ہے، اور کیلی اس پر بینک رول کا 20% لگاتا ہے۔
اخذ مشتق (calculus) کا ایک ہی مرحلہ ہے جو دولت کے متوقع لوگارتھم پر لاگو ہوتا ہے۔ فی شرط دولت کے اوسط لاگ کو زیادہ سے زیادہ کرنا ایک طویل سلسلے میں مرکب شرح نمو کو زیادہ سے زیادہ کرنے کے برابر ہے، اور وہ حصہ جو اسے حاصل کرتا ہے وہی اوپر والا ہے۔ اس سے دو خصوصیات نکلتی ہیں۔ کیلی کبھی بھی پورا بینک رول ایسی شرط پر نہیں لگاتا جو سب کچھ کھو سکتی ہے، کیونکہ صفر کا لوگارتھم منفی لامحدود ہے۔ اور f کے علاوہ کوئی بھی مقررہ حصہ، اگر کافی دیر تک دہرایا جائے، تو f سے زیادہ آہستہ مرکب ہوتا ہے۔
ایک سکہ اچھال جو آپ خود جانچ سکتے ہیں
اس حصے کے اعداد و شمار فرضی ہیں، جو حساب کو واضح کرنے کے لیے چنے گئے ہیں۔ ایک سکہ لیں جو 60% وقت سر پر گرتا ہے اور برابر رقم ادا کرتا ہے، جس میں ابتدائی بینک رول $1,000 ہے۔
- ہر اچھال پر بینک رول کا 20% لگائیں۔ جیت $1,000 کو $1,200 تک لے جاتی ہے؛ ہار اسے $800 تک لے جاتی ہے۔ ایک جیت اور ایک ہار، کسی بھی ترتیب میں، $960 چھوڑتی ہے۔
- ہر اچھال پر بینک رول کا 40% لگائیں۔ اسی جیت-پھر-ہار کے جوڑے سے $1,000 $1,400 اور پھر $840 ہو جاتا ہے۔
- ہر اچھال پر پورا بینک رول لگائیں۔ ایک ہی پُچھ (tail) سلسلے کو مستقل طور پر ختم کر دیتا ہے، چاہے برتری کچھ بھی ہو۔
20% شرط لگانے پر 4% کا یہ راؤنڈ ٹرپ لاگت ایک اتار چڑھاؤ والے بینک رول کو مرکب کرنے کی قیمت ہے، اور 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 bet0.5x پر راستہ 1.92 گنا ابتدائی سرمائے پر ختم ہوا، جس میں پچھلی بلندی سے 18.2% کی بدترین گراوٹ تھی۔ 5x پر، اسی روزانہ ریٹرن اور اسی دہائی میں، راستہ 14.35 گنا پر ختم ہوا، جس میں 94.5% کی بدترین گراوٹ تھی۔
دونوں کالم مختلف طریقے سے حرکت کرتے ہیں، اور یہی جزوی کیلی کا پورا سبق ہے۔ اختتامی دولت شرط کے حجم کے ساتھ تھوڑی دیر بڑھتی ہے، پھر چپٹی ہو جاتی ہے، اور پھر نیچے مڑ جاتی ہے جب مرکب اتار چڑھاؤ کا ڈریگ اضافی نمائش پر غالب آ جاتا ہے۔ ڈرا ڈاؤن کالم کا کوئی ایسا موڑ نہیں ہے۔ یہ 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 ریڈنگز کتنی دور ہو سکتی ہیں جب ہر ایک ایک سال سے لی گئی ہو۔
یہ پھیلاؤ فارمولے کی کسی تطہیر سے زیادہ اہم ہے۔ اپنی برتری کو دوگنا بتائیں اور فارمولا تقریباً دوگنا شرط کا حجم واپس کرتا ہے، جو آپ کو اس مقام پر یا اس سے آگے رکھتا ہے جہاں نمو منفی ہو جاتی ہے۔ اسے کم بتائیں اور آپ وہ نمو چھوڑ دیتے ہیں جسے آپ مرکب کر سکتے تھے، بربادی کے کسی خطرے کے بغیر۔ دونوں غلطیاں متوازن نہیں ہیں، اور عدم توازن کا سستا پہلو چھوٹا پہلو ہے۔ پریکٹیشنرز جو کیلی استعمال کرتے ہیں، وہ اس کا آدھا، یا چوتھائی لگانے کا رجحان رکھتے ہیں، اور فارمولے کو ہدف کے بجائے ایک حد (ceiling) سمجھتے ہیں۔
جہاں ماڈل مارکیٹ کو بیان کرنا چھوڑ دیتا ہے
کیلی ایک ایسی شرط فرض کرتا ہے جسے آپ مقررہ، معلوم مشکلات کے ساتھ دہرا سکتے ہیں، اور نتائج جو ایک تکرار سے دوسری تکرار میں آزاد ہوں۔ مارکیٹ یہ سب توڑ دیتی ہے۔ مشکلات کا تخمینہ لگایا جاتا ہے اور وقت کے ساتھ بدلتا ہے۔ روزانہ ریٹرن کلسٹر ہوتے ہیں: پرسکون ادوار پرسکون ادوار کے بعد آتے ہیں، اور پرتشدد دن گروپوں میں آتے ہیں، جو ڈرا ڈاؤن کو اس سے آگے بڑھاتے ہیں جو آزادی کا مفروضہ پیش گوئی کرتا ہے۔ پوزیشنیں ہر دن کے آخر میں طے نہیں ہوتیں، گیپ اس قیمت کو چھوڑ دیتے ہیں جہاں شرط بند ہوتی، اور مارجن کالز بروکر کے شیڈول پر آتی ہیں نہ کہ ماڈل کے شیڈول پر۔
فارمولا پھر بھی ایک حد کے طور پر اپنی جگہ برقرار رکھتا ہے۔ یہ ایک سطر میں بتاتا ہے کہ شرط کا ایک حجم ہے جس کے بعد زیادہ یقین کم دولت پیدا کرتا ہے، اور یہ اس حد کو ان مقداروں سے تلاش کرتا ہے جنہیں ایک تاجر کم از کم ناپنے کی کوشش کر سکتا ہے۔ یہی وجہ ہے کہ وہی منطق تنوع کی طرف اشارہ کرتی ہے: کئی جزوی طور پر آزاد شرطیں ایک ہی کل رسک بجٹ کو ایک شرط سے زیادہ مؤثر طریقے سے بانٹتی ہیں، جو مرتکز رسک کے نیچے ریاضی ہے۔ اور ایک سرمایہ کار کے لیے جو شرطوں کا سائز طے کرنے کے بجائے شیڈول پر رقم شامل کرتا ہے، پوزیشن کا سائز طے کرنے کا سوال خود شیڈول سے جواب پاتا ہے، جو ڈالر-لاگت اوسط کا معاملہ ہے۔
عمومی سوالات
کیلی معیار کا فارمولا کیا ہے؟
ایک شرط کے لیے جو p امکان کے ساتھ رقم کا g حصہ جیتتی ہے اور q امکان کے ساتھ l حصہ ہارتی ہے، سرمائے کا نمو-بہترین حصہ f = p / l - q / g ہے۔ برابر رقم کے معاملے میں یہ f = p - q تک آسان ہو جاتا ہے، جو خود برتری ہے۔
تاجر مکمل کیلی کے بجائے آدھا کیلی کیوں استعمال کرتے ہیں؟
نمو بہترین کے قریب تقریباً چپٹی ہوتی ہے جبکہ رسک اس سے آگے بڑھتا رہتا ہے، لہٰذا شرط کو آدھا کرنے سے طویل مدتی نمو کی ایک معمولی مقدار قربان ہوتی ہے اور ڈرا ڈاؤن کا ایک بڑا حصہ ختم ہو جاتا ہے۔ تخمینہ کی غلطی دلیل کو بڑھا دیتی ہے: زیادہ بتائی گئی برتری سے دوگنی شرط اس مقام کے قریب بیٹھتی ہے جہاں نمو رک جاتی ہے۔
کیا کیلی معیار اسٹاک کے لیے کام کرتا ہے؟
یہ ریاضی کے طور پر لاگو ہوتا ہے، اور اس کے مفروضے کہ مشکلات مقررہ اور معلوم ہیں اور نتائج آزاد ہیں، مارکیٹوں میں پورے نہیں ہوتے۔ روزانہ ایکویٹی ریٹرن پر سادگی سے لاگو کرنے پر یہ اس سے کہیں زیادہ لیوریج مانگتا ہے جو کوئی اکاؤنٹ برداشت کر سکتا ہے، جیسا کہ اوپر پہلا پینل دکھاتا ہے۔
اگر آپ کیلی حصے سے زیادہ شرط لگائیں تو کیا ہوتا ہے؟
طویل مدتی شرح نمو گر جاتی ہے۔ تقریباً کیلی حصے سے دوگنا پر یہ تقریباً صفر تک پہنچ جاتی ہے، اور اس سے آگے ایک حقیقی برتری والی شرط وقت کے ساتھ سرمائے کو سکڑتی ہے جبکہ اس کے ڈرا ڈاؤن گہرے ہوتے رہتے ہیں۔
کیا کیلی معیار فی تجارت 1% یا 2% رسک لینے کے برابر ہے؟
نہیں۔ ایک مقررہ-فیصد اصول مشکلات کو مکمل طور پر نظر انداز کرتا ہے اور ہر سیٹ اپ پر ایک ہی نمبر لگاتا ہے۔ کیلی شرط کو ناپی گئی برتری کے ساتھ بڑھاتا ہے، جو اسے اس وقت زیادہ جوابدہ بناتا ہے جب برتری معلوم ہو، اور اس وقت زیادہ کمزور جب برتری کا اندازہ لگایا گیا ہو۔
اوپر کا ہر اعداد و شمار ایک ذخیرہ شدہ سوال (query) سے آتا ہے جسے آپ کھول سکتے ہیں، ترمیم کر سکتے ہیں، اور دوبارہ چلا سکتے ہیں۔ ٹکرز، ونڈو، یا شرط کے حجم کا گرڈ تبدیل کریں اور اسٹراسمور ٹرمینل پر خود تجارت کی پیمائش کریں۔