Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

متى يتفوق التوزيع المتساوي على التحسين؟

يتفوق التوزيع المتساوي على تحديد أحجام المراكز المحسّنة مع قِصر العينة. وتُظهر محاكاة Python ببذرة ثابتة بدء الفارق ثم تلاشيه مع نمو العينة.

يتفوق التوزيع المتساوي للأوزان على تحديد أحجام المراكز بطريقة محسّنة عندما تكون العينة قصيرة إلى حد لا يسمح بتحديد العوائد المتوقعة بدقة. والعينات القصيرة هي القاعدة لا الاستثناء.

يطبّق المُحسِّن حسابات سليمة على مدخل لا يقيسه أحد بدقة كافية. أما محفظة 1/N ذات الأوزان المتساوية، فلا تقدّر أي شيء على الإطلاق. ولهذا تصمد عندما تكون التقديرات سيئة.

هل يتفوق التوزيع المتساوي فعلاً على التحسين؟

نعم، ولكن في حالة محددة. دعنا نتناول المصطلحات واحداً تلو الآخر. التوزيع المتساوي، ويُكتب 1/N، يقسم رأس المال بالتساوي على N من المراكز ولا يتطلب أي توقعات. يحلّ تحسين متوسط-التباين أوزان المراكز التي تحقق أفضل عائد متوقع لكل وحدة من التباين المقدَّر. أما معيار Kelly فيحدد الأوزان التي تعظّم النمو المركب على المدى الطويل؛ وعند تطبيقه على أصول غير مترابطة، تختزل النتيجة إلى وزن يتناسب مع فائض العائد المتوقع لكل أصل مقسوماً على تباينه. يشرح دليلنا عن تحديد حجم المركز وفق معيار Kelly هذه الصيغة بالتفصيل.

يحتاج كلا أسلوبي التحسين إلى المدخل نفسه: عائد متوقع لكل أصل. وهذا هو المتغير الذي تقدّره العينة بأقل دقة. يمكن استخراج التقلب من نافذة قصيرة بدرجة دقة عملية. أما المتوسط فلا يمكن تقديره بالدقة نفسها، والفارق بين الاثنين كبير بما يكفي ليتضح في أي سلسلة من بيانات الأسعار. يعرض الجدول أدناه ستة أسهم واسعة الانتشار، ويقيس كل سنة تقويمية على حدة من 2015 إلى 2024، ثم يبيّن الفارق بين أعلى تقدير سنوي وأدناه. ويجري ذلك مرتين لكل سهم: مرة لمتوسط العائد اليومي السنوي، ومرة للتقلب السنوي.

الاستعلامتقديرات سنوية لعشر سنوات: يتحرك المتوسط أكثر بكثير من التقلب
استعلام SQL الدقيق وراء كل رقم
WITH prices AS
(
    SELECT
        ticker,
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
      AND date >= '2015-01-01'
      AND date <  '2025-01-01'
    GROUP BY ticker, date
),
rets AS
(
    SELECT
        ticker,
        date,
        c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
yearly AS
(
    SELECT
        ticker,
        toYear(date)                     AS yr,
        avg(ret) * 252 * 100             AS mean_pct,
        stddevPop(ret) * sqrt(252) * 100 AS vol_pct
    FROM rets
    WHERE isFinite(ret)
    GROUP BY ticker, yr
    HAVING count() >= 200
)
SELECT
    ticker,
    round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,
    round(max(vol_pct) - min(vol_pct), 1)   AS vol_estimate_range_pct
FROM yearly
GROUP BY ticker
ORDER BY mean_estimate_range_pct DESC
Run this yourself

بالنسبة إلى NVDA، يمتد تقدير المتوسط السنوي عبر 184.7 نقطة مئوية خلال تلك السنوات العشر، مقابل نطاق قدره 28.6 نقطة في تقدير التقلب للاسم نفسه خلال السنوات ذاتها. وحتى السهم الأكثر استقراراً في الجدول، KO، تغيّر تقدير متوسطه السنوي عبر 23.9 نقطة. وأي نهج يقدّم متوسط عائد العام الماضي إلى خوارزمية التحسين باعتباره العائد المتوقع لهذا العام، يزوّدها برقم يتسم بهذا القدر من التذبذب.

ما طول العينة الذي تحتاج إليه لتقدير العائد المتوقع؟

الخطأ المعياري لمتوسط العائد المقدَّر يساوي تقلب الأصل مقسوماً على الجذر التربيعي لطول العينة بالسنوات. المقصود هو السنوات، لا عدد المشاهدات: فأخذ عينات من الأشهر الاثني عشر نفسها كل ساعة بدلاً من أخذها يومياً لا يضيف شيئاً. إذا طبّقت هذه الصيغة على أصل يبلغ تقلبه 20 في المئة، فإن سنة واحدة من البيانات التاريخية تعطي خطأً معيارياً قدره 20 نقطة مئوية سنوياً. وتخفضه أربع سنوات إلى 10 نقاط. أما خفضه إلى نقطة واحدة، وهي الدقة التي قد تحتاج إليها قبل ترتيب أصلين يختلف متوسط عائدهما الحقيقي بنقطتين، فيتطلب أربعة قرون من البيانات.

أما التقلب فحالة مختلفة. تتحسن دقته مع عدد المشاهدات، لا مع المدة الزمنية في التقويم، ولذلك تكفي بضعة أشهر من البيانات اليومية لوضع تقديره ضمن بضع نقاط مئوية. يقسم الجدول أدناه العوائد اليومية لصندوق مؤشر واحد على مدى عشرين عاماً إلى كتل غير متداخلة ذات طول ثابت، ويحسب كلا التقديرين داخل كل كتلة، ثم يبيّن مدى تشتت التقديرات من كتلة إلى أخرى.

الاستعلاممدى تشتت تقديرات المتوسط والتقلب حسب طول العينة
استعلام SQL الدقيق وراء كل رقم
WITH prices AS
(
    SELECT
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2005-01-01'
      AND date <  '2025-01-01'
    GROUP BY date
),
rets AS
(
    SELECT
        date,
        c / lagInFrame(c, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
numbered AS
(
    SELECT
        ret,
        row_number() OVER (ORDER BY date ASC) AS i
    FROM rets
    WHERE isFinite(ret)
),
sweep AS
(
    SELECT
        arrayJoin([21, 63, 126, 252, 504]) AS n,
        i,
        ret
    FROM numbered
),
blocks AS
(
    SELECT
        n,
        intDiv(i - 1, n)                 AS blk,
        avg(ret) * 252 * 100             AS mean_pct,
        stddevPop(ret) * sqrt(252) * 100 AS vol_pct
    FROM sweep
    GROUP BY n, blk
    HAVING count() = n
)
SELECT
    concat(toString(n), ' sessions') AS sample_length,
    round(stddevPop(mean_pct), 1)    AS mean_estimate_spread_pct,
    round(stddevPop(vol_pct), 1)     AS vol_estimate_spread_pct,
    count()                          AS window_count
FROM blocks
GROUP BY n
ORDER BY n ASC
Run this yourself

عند استخدام كتل طولها 21 sessions، يتشتت تقدير المتوسط عبر 53.7 نقطة مئوية، مقابل 10.9 نقطة لتقدير التقلب المحسوب على الكتل نفسها. وعند تمديد الكتلة إلى 504 sessions، ينخفض تشتت المتوسط إلى 10.6 نقطة. وينخفض هذا التشتت وفق الجذر التربيعي: فكل خفض إلى النصف في الخطأ يتطلب أربعة أمثال البيانات.

محاكاة مهيأة يمكنك تشغيلها بنفسك

لا يثبت أيٌّ مما سبق أن خطأ التقدير كبير بما يكفي لمنح التفوق لاستراتيجية 1/N. أما هذه المحاكاة فتثبت ذلك. لا تتطلب الوصفة سوى تثبيت Python: فلا تحتاج إلى ملفات بيانات أو عمليات تنزيل أو حزم تابعة لجهات خارجية. وهي تولّد العوائد بنفسها من معلمات تختارها، لذلك تكون النتيجة الحقيقية معلومة، ويمكن تقييم كلا التخصيصين مقارنةً بها.

  1. استورد وحدتين، import random وimport statistics، إضافةً إلى from math import log. اضبط قيمة seed في السطر التالي باستخدام random.seed(20260816).
  2. عرّف خمسة أصول بعوائد سنوية متوقعة حقيقية تبلغ 5 و6 و7 و8 و9 بالمئة، وبدرجة تقلب سنوية حقيقية تبلغ 20 بالمئة لكل أصل، مع افتراض عدم وجود ارتباط بينها. حوّل الخطوة إلى أساس يومي باستخدام mu_d = mu_a / 252 وsd_d = sd_a / (252 ** 0.5).
  3. اختر طول العينة T من مجموعة القيم [60, 125, 250, 500, 1000, 2500, 5000].
  4. ولّد عوائد يومية لمدة T لكل أصل باستخدام random.gauss(mu_d, sd_d). وتمثل هذه العوائد كامل السجل الذي يراه مدير الاستثمار.
  5. قدّر متوسط عائد كل أصل باستخدام statistics.mean، وقدّر تقلبه باستخدام statistics.stdev. وهذان التقديران هما كل ما يعرفه المُحسِّن.
  6. أنشئ محفظة متساوية الأوزان بإسناد وزن قدره 0.2 إلى كل أصل من الأصول الخمسة. ولا تستخدم هذه المحفظة أيّاً من التقديرات.
  7. أنشئ المحفظة المُحسَّنة بتحديد الوزن الخام لكل أصل وفق mu_hat / (sd_hat ** 2)، ثم اقسم كل وزن على مجموع القيم المطلقة للأوزان الخام. وبذلك تحافظ المحفظتان على إجمالي انكشاف اسمي متماثل.
  8. ولّد مساراً جديداً خارج العينة يضم 2520 عائداً يومياً لكل أصل، باستخدام المعلمات الحقيقية. ولم يسبق لأيٍّ من التخصيصين رؤية هذا المسار.
  9. قيّم أداء المحفظتين على هذا المسار باستخدام متوسط log(1 + r)، حيث يمثّل r المجموع المرجّح لعوائد الأصول الخمسة في ذلك اليوم.
  10. كرر الخطوات من 4 إلى 9 في 2000 تجربة مستقلة عند كل قيمة لـ T، وسجّل نسبة التجارب التي تفوقت فيها المحفظة متساوية الأوزان على الأوزان المُحسَّنة.

اقرأ مجموعة القيم من T القصير إلى T الطويل. عند الطرف القصير، تتفوق المحفظة متساوية الأوزان في أغلبية واضحة من التجارب. وتنخفض هذه النسبة تدريجياً مع زيادة T، بينما تتفوق الأوزان المُحسَّنة في معظم التجارب عند الطرف الطويل. وفي مكان ما بينهما تتقاطع النسبتان. وتتغير نقطة التقاطع بتغير seed وباتساع الفارق بين المتوسطات الحقيقية. لكن الاتجاه لا يتغير: مزيد من البيانات يخدم المُحسِّن، وقلة البيانات تخدم استراتيجية 1/N. ولإعادة التجربة، غيّر العدد الصحيح داخل random.seed(20260816) ثم شغّل مجموعة القيم من جديد.

لماذا يضخّم المُحسِّن تقديراً خاطئاً للمتوسط

انظر إلى الموضع الذي تدخل فيه التقديرات في الوزن. يقع المتوسط المقدَّر في البسط، بينما يقع التباين المقدَّر في المقام. إذا ضاعفت تقدير المتوسط، تضاعف الوزن. وإذا خفّضت تقدير التباين بمقدار الربع، ارتفع الوزن بمقدار الثلث. في عينة موفَّقة، يسير الخطآن في الاتجاه نفسه: فسلسلة من النتائج الجيدة ترفع المتوسط المقاس، وغالباً ما تخفض التباين المقاس خلال الفترة نفسها. يقرأ المُحسِّن ذلك الأصل باعتباره الأفضل بين المجموعة، ويحدد حجمه وفقاً لذلك. لكن خارج العينة، يعود الأصل إلى كونه عضواً عادياً في المجموعة. أما التوزيع المتساوي، فلم يرَ العينة الموفَّقة أصلاً.

المحاكاة هي النسخة الأقل حدة من هذه المشكلة. فالأصول الخمسة غير المرتبطة تترك مصفوفة تغاير قطرية لا تحتاج إلى عكس. أما المحافظ الحقيقية فمرتبطة، ومصفوفة التغاير المستخرجة من العينة، عندما يزيد عدد الملاحظات بقليل فقط على عدد الأصول، تكون قريبة من المفردة. ويؤدي عكسها إلى تضخيم أخطاء المدخلات الصغيرة وتحويلها إلى أوزان كبيرة جداً. وهكذا قد يصل المُحسِّن إلى مركز يعادل عدة أضعاف رأس المال في أصل واحد، مقابله مركز قصير يعوّضه في بديله القريب. وتتناول ملاحظتنا حول مخاطر التركّز في المحفظة أثر هذا النوع من الأوزان في التراجع.

كما أن المدخل لا يبقى ثابتاً. يتتبع الرسم أدناه متوسط العائد اليومي المتحرك لسنة واحدة، محسوباً على أساس سنوي ومأخوذاً شهرياً، لصندوق مؤشر واسع إلى جانب سهم كبير في قطاع السلع الاستهلاكية الأساسية.

الاستعلاممتوسط عائد متحرك لسنة واحدة، الرقم الذي سيُغذّى به المُحسِّن
استعلام SQL الدقيق وراء كل رقم
WITH prices AS
(
    SELECT
        ticker,
        date,
        toFloat64(max(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('SPY', 'KO')
      AND date >= '2015-10-01'
      AND date <  '2025-01-01'
    GROUP BY ticker, date
),
rets AS
(
    SELECT
        ticker,
        date,
        c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
    FROM prices
),
trailing AS
(
    SELECT
        ticker,
        date,
        avg(ret) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 251 PRECEDING AND CURRENT ROW) * 252 * 100 AS trailing_mean_pct,
        row_number() OVER (PARTITION BY ticker ORDER BY date ASC) AS i
    FROM rets
    WHERE isFinite(ret)
)
SELECT
    toString(toStartOfMonth(date))                     AS month,
    round(avgIf(trailing_mean_pct, ticker = 'SPY'), 1) AS spy_trailing_mean_pct,
    round(avgIf(trailing_mean_pct, ticker = 'KO'), 1)  AS ko_trailing_mean_pct
FROM trailing
WHERE i >= 252
  AND date >= '2017-01-01'
GROUP BY month
ORDER BY month ASC
Run this yourself

كل نقطة على هذين الخطين هي رقم كان من الممكن أن يقبله أحد المُحسّنين باعتباره عائداً متوقعاً في ذلك التاريخ. تبلغ القراءة الشهرية الأولى لـ SPY 17.7%، وتبلغ الأخيرة 25.8%، مع وجود 96 قراءة بينهما. وتبدأ KO الفترة نفسها عند -0.4%. وتَرِث أي آلية لتحديد الأوزان تستهلك هذه السلسلة شهراً بعد شهر كل تذبذب فيها.

هل تعالج قاعدة Kelly النصفية والانكماش المشكلة؟

إنهما يخففانها. تظهر عملياً أربعة أساليب للحد منها، ويتنازل كل أسلوب عن جزء من الحل الأمثل النظري مقابل تقليل الحساسية للتقدير.

  • تخفّض قاعدة Kelly النصفية كل وزن إلى النصف. يكون منحنى نمو Kelly مسطحاً قرب ذروته وحاداً أسفلها. لذلك يتنازل الاستثمار بنصف الحصة عن جزء صغير من معدل النمو النظري، في حين يقلل بدرجة أكبر بكثير الضرر الناتج عن المبالغة في تقدير الأفضلية. تطبق استهداف التقلبات المنطق نفسه على المقام، إذ تحدد حجم المركز بالاعتماد على المدخل الوحيد الذي يمكن لعينة قصيرة أن توفره.
  • يسحب الانكماش كل متوسط مقدّر نحو المتوسط المقطعي للتقديرات، بمقدار يزداد كلما صغر حجم العينة. وإذا دُفع هذا الأسلوب إلى حده الأقصى، يصبح العائد المتوقع متساوياً لجميع الأصول. ومع تساوي التقلبات، يعيد المُحسِّن عندئذٍ أوزاناً متساوية من تلقاء نفسه. وتُعد المحفظة متساوية الأوزان المحفظة المنكمشة بالكامل.
  • تضع القيود، أي حظر البيع على المكشوف وتحديد سقف لكل مركز، حداً لمدى قدرة تقدير واحد محظوظ على دفع وزن معين إلى مستوى مرتفع. وهي أداة للحد من الضرر، وليست تحسيناً للتقدير.
  • يؤدي إسقاط العوائد المتوقعة بالكامل إلى محفظة الحد الأدنى من التباين وإلى تكافؤ المخاطر، وهما أسلوبان يستخدمان مصفوفة التباين فقط. وهذه هي المعلومة التي تستطيع العينة توفيرها فعلياً.

لا ينتج أيٌّ من الأساليب الأربعة معلومات لا تحتوي عليها العينة. لكنها تغير مقدار اعتماد المحفظة على معلومات قد لا تكون متاحة لك.

عندما يثبت التحسين جدواه

يحدث التقاطع في الاتجاهين. عندما تصبح قيمة T كبيرة مقارنةً بالفارق بين المتوسطات الحقيقية، يتقدم التوزيع المحسَّن ويبقى متفوقاً. وكلما اتسع هذا الفارق، حدث ذلك في وقت أبكر. ويكون التحسين أيضاً الأداة المناسبة عندما تكون المدخلات مما توفره البيانات؛ فتقديرات التغاير ونِسَب التحوّط تكون عادةً أدق بكثير من تقديرات العوائد المتوقعة.

للتوزيع المتساوي تكلفته الخاصة. فهو يتجاهل معلومات تملكها فعلاً، وفي مجموعة صغيرة يركز الاستثمارات بقدر أي خوارزمية تحسين. تعامل معه باعتباره خط الأساس الذي يجب أن يتفوق عليه أي توزيع مرشح، باستخدام بيانات لم تطّلع عليها الأوزان. إن ملاءمة الأوزان وتقييمها على العينة نفسها هي انحياز النظر إلى المستقبل في الاختبار الرجعي في صورة مختلفة، وهي تمنح خوارزمية التحسين أفضلية زائفة في كل مرة. وللحصول على نطاق واقعي حول ميزة مقاسة بدلاً من تقدير نقطي واحد، فإن فترات الثقة المعتمدة على إعادة المعاينة هي الأداة المعيارية.

الأسئلة الشائعة

هل يتفوق التوزيع المتساوي فعلاً على تحسين التباين المتوسط؟

غالباً ما يتفوق في العينات القصيرة. يحتاج المُحسِّن إلى تقدير للعائد المتوقع لكل أصل، ويحمل هذا التقدير خطأً معيارياً يعادل تقريباً تقلب الأصل مقسوماً على الجذر التربيعي لطول العينة بالسنوات. وطالما ظل هذا الخطأ أكبر من الفروق الحقيقية بين الأصول، فإن المُحسِّن يرتب الضوضاء. أما التوزيع المتساوي فلا يتضمن تقديراً يمكن أن يخطئ.

كم عدد المشاهدات اللازمة لتقدير العائد المتوقع؟

أكثر مما يملكه معظم المتداولين تقريباً. بالنسبة إلى أصل يبلغ تقلبه 20 في المئة، تترك سنة من البيانات اليومية خطأً معيارياً يقترب من 20 نقطة مئوية سنوياً، ويتطلب خفض هذا الخطأ إلى النصف مضاعفة الفترة الزمنية أربع مرات. ولا تساعد إضافة مشاهدات خلال اليوم إلى السنة نفسها. أما التقلب، فيمكن تقديره بصورة مفيدة من بيانات تمتد بضعة أشهر.

هل يمثل نصف Kelly مجرد رهان أصغر؟

إنه رهان أصغر بشروط أفضل. يكون منحنى نمو Kelly مسطحاً بالقرب من قمته، لذلك فإن خفض حجم المركز إلى النصف يتنازل عن حصة صغيرة من معدل النمو النظري، مع خفض تقلب المسار تقريباً إلى النصف وتقليص تكلفة الميزة المبالغ في تقديرها.

ما محفظة 1/N؟

هي المحفظة التي تخصص نسبة متساوية من رأس المال لكل مركز من أصل N مراكز، وتعيد الموازنة وفق جدول زمني محدد. ولا تحتاج إلى توقع للعوائد أو إلى تقدير للتغاير، وهو ما يجعلها المعيار المرجعي المعتاد لكل أسلوب توزيع يحتاج إلى هذه التقديرات.

كيفية إعداد اللوحات

تقرأ اللوحات الثلاث أسعار الإغلاق اليومية وتحسب العوائد البسيطة من إغلاق إلى إغلاق، مع دمج الصفوف المكررة في سعر إغلاق واحد لكل ticker ولكل تاريخ. تُحوَّل المتوسطات إلى أساس سنوي بضرب متوسط العائد اليومي في 252 جلسة، وتُحوَّل التقلبات إلى أساس سنوي بضرب الانحراف المعياري اليومي في الجذر التربيعي لـ 252. ولا تحتفظ لوحة السنوات بالسنة التقويمية إلا إذا تضمنت ما لا يقل عن 200 جلسة. وتستخدم لوحة الكتل كتلًا غير متداخلة، وتستبعد الكتلة الجزئية الأخيرة عند كل طول، فيما يوضح عمود عدد النوافذ عدد الكتل الناتجة عن كل طول. لا تُدرج توزيعات الأرباح في أي موضع، لذلك تمثل هذه البيانات عوائد سعرية، ويكون مستوى أي متوسط أقل من قيمته الفعلية بالنسبة إلى الأسهم الموزعة للأرباح. والفارق بين التقديرات هو الغرض من هذه اللوحات، وليس مستوى التقديرات.


تتضمن كل لوحة هنا استعلام SQL الكامل أسفل الرسم البياني، كما تتضمن المحاكاة قيمة seed الخاصة بها. ولإجراء اختبار استقرار التقديرات نفسه على قائمة الأسماء الخاصة بك، اطلبه باللغة الإنجليزية البسيطة على محطة Strasmore.

#quant#position sizing#portfolio construction#estimation error#kelly