Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

কেলি মাপকাঠি পজিশন সাইজিং পরিমাপ

কেলি মাপকাঠি আপনার এজ থেকে বাজির আকার নির্ধারণ করে। দশ বছরের দৈনিক শেয়ার রিটার্ন থেকে পূর্ণ কেলি, ড্রডাউন ও অর্ধেক কেলির ব্যবহারিক প্রভাব দেখুন।

কেলি মাপকাঠি হল বাজির আকার নির্ধারণের একটি সূত্র। এতে জেতার সম্ভাবনা, জয়ের পরিমাণ এবং হারের পরিমাণ ইনপুট দিলে, এটি মূলধনের সেই ভগ্নাংশ ফেরত দেয় যা দীর্ঘমেয়াদে সম্পদের বৃদ্ধির হার সর্বাধিক করে। জন কেলি 1956 সালে বেল ল্যাবে এটি একটি তথ্য-তত্ত্বের ফলাফল হিসেবে প্রকাশ করেন এবং পরে জুয়াড়ি ও ব্যবসায়ীরা এটি গ্রহণ করে। এই পৃষ্ঠাটি সূত্রটিকে মৌলিক নীতি থেকে ব্যাখ্যা করে, তারপর দশ বছরের প্রকৃত দৈনিক শেয়ার বাজারের রিটার্নের উপর এটি কী নির্দেশ করে তা পরিমাপ করে, যেখানে দেখা যাচ্ছে নির্দেশটি অকার্যকর।

কেলি মাপকাঠি আসলে কী বলে

ধরা যাক, একটি পুনরাবৃত্ত বাজি আছে যা p সম্ভাবনায় বাজির g ভগ্নাংশ জিতিয়ে দেয় এবং q সম্ভাবনায় বাজির l ভগ্নাংশ হারায়, যেখানে q হল 1 বিয়োগ 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-এ নিয়ে যায়।
  • প্রতিটি ছোঁড়ায় পুরো ব্যাংকরোল বাজি ধরুন। একটি টেল স্থায়ীভাবে অনুক্রম শেষ করে দেয়, এজ যাই হোক না কেন।

20% বাজিতে সেই 4% রাউন্ড-ট্রিপ খরচ হল একটি অস্থির ব্যাংকরোলের চক্রবৃদ্ধির মূল্য, এবং একটি 60/40 মুদ্রা দীর্ঘ অনুক্রমে এটি বহুবার পুষিয়ে দেয়। 40% বাজিতে রাউন্ড-ট্রিপ খরচ 16%, এবং মুদ্রা আর তা পুষিয়ে দেয় না: কেলি ভগ্নাংশের দ্বিগুণে বৃদ্ধির হার প্রায় শূন্যে নেমে আসে। এর বাইরে, একটি প্রকৃত, যাচাইকৃত এজ সহ একটি বাজি কিছুই বৃদ্ধি করে না, যা সূত্রটি বহন করা সবচেয়ে দরকারী একক তথ্য।

দৈনিক শেয়ার বাজির জন্য সূত্রটি কী চায়

এখন একই সূত্রটি বাজারের দিকে নির্দেশ করুন। একটি শেয়ারে একটি ট্রেডিং দিনকে বাজির একটি পুনরাবৃত্তি হিসেবে বিবেচনা করুন: জয়ের সম্ভাবনা হল সেই দিনগুলির অনুপাত যা ঊর্ধ্বমুখী বন্ধ হয়েছে, জয়ের আকার হল গড় ঊর্ধ্বমুখী দিনের গতিবিধি, এবং হারের আকার হল গড় নিম্নমুখী দিনের গতিবিধি। 2016 থেকে 2025 পর্যন্ত দশ পূর্ণ ক্যালেন্ডার বছরের দৈনিক ক্লোজ, ছয়টি পরিচিত নামের জন্য:

কুয়েরিকেলি ইনপুট: দৈনিক ক্লোজ থেকে, 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
Run this yourself

প্রথম তিনটি কলাম পড়ুন এবং এজটি খুব ছোট দেখায়। জয়ের হার একটি মুদ্রা ছোঁড়ার কাছাকাছি, এবং প্যানেলের প্রতিটি নামের জন্য গড় ঊর্ধ্বমুখী দিন এবং গড় নিম্নমুখী দিনের আকার কাছাকাছি। SPY তার 55.3% সেশনে বেশি দামে বন্ধ হয়েছে, গড় ঊর্ধ্বমুখী দিনে 0.71% লাভ করেছে যেখানে গড় নিম্নমুখী দিনে 0.76% লাভ করেছে।

শেষ কলামটি যেখানে সমস্যা শুরু হয়। সেই ছোট, প্রায় ভারসাম্যপূর্ণ ইনপুটগুলি সূত্রের হরে বসে, এবং ছোট হর বড় উত্তর তৈরি করে। SPY-এর জন্য সূত্রটি যে ভগ্নাংশ ফেরত দেয় তা হল 10.1 গুণ মূলধন, এবং 6 নামের মধ্যে সর্বনিম্নটি এখনও 2 গুণে দাঁড়ায়। দৈনিক ইক্যুইটি বাজিতে সম্পূর্ণ কেলি অ্যাকাউন্টের শতাংশ নয়। এটি লিভারেজের একটি দাবি যা কোনো ব্রোকার প্রদান করে না এবং কোনো অ্যাকাউন্ট টিকতে পারে না।

ট্রেড-অফের আকৃতি

এটি তত্ত্ব। পরবর্তী প্যানেলটি পরীক্ষা। একই দশ বছরে S&P 500 ট্র্যাকারের প্রকৃত দৈনিক রিটার্ন নিন, প্রতিটি দিনের রিটার্নকে একটি নির্দিষ্ট বাজির আকার দ্বারা স্কেল করুন এবং ফলাফল চক্রবৃদ্ধি করুন। 1.0x বাজির আকার হল আনলিভারড সূচক। 3.0x বাজির আকার প্রতিটি ডলার মূলধনের জন্য তিন ডলার প্রতিশ্রুতিবদ্ধ করে, প্রতিদিন, প্রতিদিন পুনর্বিন্যাস করা হয়। প্রতিটি সারি একটি সম্পূর্ণ দশ বছরের পথ, তার শেষের সম্পদ এবং পথে নেওয়া গভীরতম শিখর-থেকে-খাত পতন সহ।

কুয়েরিআটটি নির্দিষ্ট বেট সাইজে এক দশকের S&P 500 দৈনিক রিটার্নের চক্রবৃদ্ধি: শেষ সম্পদ এবং সবচেয়ে খারাপ ড্রডাউন
প্রতিটি সংখ্যার পেছনের সঠিক 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
Run this yourself

0.5x-এ পথটি তার প্রারম্ভিক মূলধনের 1.92 গুণে শেষ হয়েছে, পূর্ববর্তী উচ্চতা থেকে 18.2%-এর সবচেয়ে খারাপ পতন সহ। 5x-এ, একই দৈনিক রিটার্ন এবং একই দশক, পথটি 14.35 গুণে শেষ হয়েছে, 94.5%-এর সবচেয়ে খারাপ পতন সহ।

দুটি কলাম ভিন্নভাবে চলে, এবং এটি ভগ্নাংশ কেলির পুরো শিক্ষা। শেষের সম্পদ কিছু সময়ের জন্য বাজির আকারের সাথে বৃদ্ধি পায়, সমতল হয় এবং তারপর নিচের দিকে মোড় নেয় কারণ চক্রবৃদ্ধি অস্থিরতার টান অতিরিক্ত এক্সপোজারকে ছাড়িয়ে যায়। ড্রডাউন কলামের এমন কোনো টার্নিং পয়েন্ট নেই। এটি 8 সারি জুড়ে প্রতিটি ধাপে আরোহণ করে এবং এটি সম্পদ কলামের চেয়ে দ্রুত আরোহণ করে। অনুকূল বাজির অর্ধেক বৃদ্ধি অনুকূল বাজির অর্ধেক আকারে পাওয়া যায়, যন্ত্রণার একটি ছোট ভগ্নাংশে। এই অসমতাই f*-এর চেয়ে কম বাজি ধরার যুক্তি, এবং এ কারণেই অর্ধ-কেলি প্রথা আদৌ বিদ্যমান।

অনুমানটি দুর্বল অংশ, সূত্রটি নয়

সূত্রটি একটি বাজির জন্য সঠিক যার প্রতিকূলতা জানা। ক্যাসিনোতে প্রতিকূলতা মুদ্রিত থাকে। বাজারে সেগুলি ইতিহাস থেকে অনুমান করা হয় এবং অনুমানটি ওঠানামা করে। এখানে প্রথম প্যানেলের মতো একই গণনা, একটি একক সূচক ট্র্যাকারের জন্য দশটি ক্যালেন্ডার বছরের প্রতিটিতে পৃথকভাবে চালানো হয়েছে।

কুয়েরিS&P 500 ট্র্যাকারে একই কেলি গণনা, বছরভিত্তিক, 2016 থেকে 2025 পর্যন্ত
প্রতিটি সংখ্যার পেছনের সঠিক 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
Run this yourself

প্রতিটি সারি একই অজানা পরিমাণের একটি অনুমান, প্রায় 250টি পর্যবেক্ষণ থেকে নির্মিত। বছর 2016 13.7 ফেরত দিয়েছে, 53.8% জয়ের হারে। বছর 2025 12.3 ফেরত দিয়েছে, 57.8% জয়ের হারে। চার্টটি দেখায় যে 10 একটি সংখ্যার পাঠ একে অপরের থেকে কত দূরে থাকতে পারে যখন প্রতিটি একটি একক বছর থেকে নেওয়া হয়।

এই বিচ্ছুরণ সূত্রের কোনো পরিমার্জনের চেয়ে বেশি গুরুত্বপূর্ণ। আপনার এজকে দুই গুণ বেশি করে বলুন এবং সূত্রটি প্রায় দ্বিগুণ বাজির আকার ফেরত দেয়, যা আপনাকে সেই বিন্দুতে বা তার বাইরে রাখে যেখানে বৃদ্ধি ঋণাত্মক হয়ে যায়। কম বলুন এবং আপনি সেই বৃদ্ধি ছেড়ে দেন যা আপনি চক্রবৃদ্ধি করতে পারতেন, ধ্বংসের কোনো ঝুঁকি ছাড়াই। দুটি ত্রুটি প্রতিসম নয়, এবং অসমতার সস্তা দিকটি হল ছোট দিক। অনুশীলনকারীরা যারা কেলি ব্যবহার করেন তারা সাধারণত এর অর্ধেক বা এক-চতুর্থাংশ বাজি ধরেন এবং সূত্রটিকে লক্ষ্যের পরিবর্তে একটি সীমা হিসেবে বিবেচনা করেন।

যেখানে মডেলটি বাজার বর্ণনা করা বন্ধ করে দেয়

কেলি একটি বাজি ধরে নেয় যা আপনি নির্দিষ্ট, পরিচিত প্রতিকূলতার সাথে পুনরাবৃত্তি করতে পারেন এবং ফলাফলগুলি এক পুনরাবৃত্তি থেকে পরবর্তীতে স্বাধীন। একটি বাজার এই সব ভেঙে দেয়। প্রতিকূলতা অনুমান করা হয় এবং সময়ের সাথে পরিবর্তিত হয়। দৈনিক রিটার্ন ক্লাস্টার করে: শান্ত সময় শান্ত সময় অনুসরণ করে এবং সহিংস দিনগুলি দলে আসে, যা স্বাধীনতার অনুমানের চেয়ে ড্রডাউনকে প্রসারিত করে। প্রতিটি দিনের শেষে অবস্থানগুলি নিষ্পত্তি হয় না, ফাঁকগুলি সেই মূল্যের বাইরে চলে যায় যেখানে একটি বাজি বন্ধ করা হত এবং মার্জিন কলগুলি মডেলের সময়সূচীর পরিবর্তে ব্রোকারের সময়সূচীতে আসে।

সূত্রটি এখনও একটি সীমানা হিসাবে তার মূল্য রাখে। এটি এক লাইনে বলে যে একটি বাজির আকার আছে যার বাইরে বেশি আস্থা কম সম্পদ উৎপন্ন করে এবং এটি সেই সীমানা নির্ধারণ করে এমন পরিমাণ থেকে যা একজন ব্যবসায়ী অন্তত পরিমাপ করার চেষ্টা করতে পারেন। এটিও কারণ একই যুক্তি বৈচিত্র্যের দিকে নির্দেশ করে: বেশ কয়েকটি আংশিকভাবে স্বাধীন বাজি একই মোট ঝুঁকি বাজেট একটি বাজির চেয়ে বেশি দক্ষতার সাথে ভাগ করে নেয়, যা ঘনত্ব ঝুঁকি-এর অধীনে পাটিগণিত। এবং একজন বিনিয়োগকারীর জন্য যিনি পৃথক বাজির আকার নির্ধারণের পরিবর্তে একটি সময়সূচীতে অর্থ যোগ করেন, অবস্থানের আকারের প্রশ্নটি সময়সূচী নিজেই উত্তর দেয়, যা ডলার-খরচ গড়-এর ক্ষেত্রে।

FAQ

কেলি মাপকাঠি সূত্রটি কী?

একটি বাজির জন্য যা p সম্ভাবনায় বাজির g ভগ্নাংশ জিতিয়ে দেয় এবং q সম্ভাবনায় l ভগ্নাংশ হারায়, বৃদ্ধি-অনুকূল মূলধনের ভগ্নাংশ হল f = p / l - q / g। সম-অর্থের ক্ষেত্রে এটি সরল হয়ে f = p - q হয়, যা এজ নিজেই।

কেন ব্যবসায়ীরা সম্পূর্ণ কেলির পরিবর্তে অর্ধেক কেলি ব্যবহার করেন?

অনুকূলের কাছাকাছি বৃদ্ধি প্রায় সমতল থাকে যখন ঝুঁকি এর বাইরে বাড়তে থাকে, তাই বাজি অর্ধেক করলে দীর্ঘমেয়াদী বৃদ্ধির একটি পরিমিত পরিমাণ ত্যাগ করা হয় এবং ড্রডাউনের একটি বড় অংশ সরানো হয়। অনুমান ত্রুটি যুক্তিটিকে আরও জোরালো করে: একটি অতিরঞ্জিত এজ থেকে দ্বিগুণ বাজি সেই বিন্দুর কাছাকাছি বসে যেখানে বৃদ্ধি বন্ধ হয়ে যায়।

কেলি মাপকাঠি কি শেয়ারের জন্য কাজ করে?

এটি পাটিগণিত হিসাবে প্রযোজ্য, এবং নির্দিষ্ট পরিচিত প্রতিকূলতা এবং স্বাধীন ফলাফলের এর অনুমান বাজারে ধরে না। দৈনিক ইক্যুইটি রিটার্নে নির্বোধভাবে প্রয়োগ করলে এটি উপরে প্রথম প্যানেলে দেখানো হিসাবে, যে কোনো অ্যাকাউন্ট বহন করতে পারে তার চেয়ে অনেক বেশি লিভারেজ চায়।

আপনি যদি কেলি ভগ্নাংশের চেয়ে বেশি বাজি ধরেন তাহলে কী হবে?

দীর্ঘমেয়াদী বৃদ্ধির হার কমে যায়। প্রায় দ্বিগুণ কেলি ভগ্নাংশে এটি প্রায় শূন্যে পৌঁছায় এবং এর বাইরে, একটি প্রকৃত এজ সহ একটি বাজি সময়ের সাথে সাথে মূলধন সঙ্কুচিত করে যখন এর ড্রডাউন গভীর হতে থাকে।

কেলি মাপকাঠি কি প্রতি ট্রেডে 1% বা 2% ঝুঁকি নেওয়ার মতো?

না। একটি নির্দিষ্ট-শতাংশ নিয়ম প্রতিকূলতাকে সম্পূর্ণরূপে উপেক্ষা করে এবং প্রতিটি সেটআপে একই সংখ্যা প্রয়োগ করে। কেলি পরিমাপিত এজের সাথে বাজির আকার স্কেল করে, যা এটিকে আরও প্রতিক্রিয়াশীল করে তোলে যখন এজ জানা থাকে এবং আরও ভঙ্গুর করে যখন এজ অনুমান করা হয়।


উপরের প্রতিটি চিত্র একটি সংরক্ষিত কোয়েরি থেকে আসে যা আপনি খুলতে, সম্পাদনা করতে এবং পুনরায় চালাতে পারেন। টিকার, উইন্ডো বা বাজির আকারের গ্রিড পরিবর্তন করুন এবং স্ট্রাসমোর টার্মিনালে নিজেই ট্রেড-অফ পরিমাপ করুন।