معدل العائد الخالي من المخاطر في نسبة Sharpe
يتغير معدل العائد الخالي من المخاطر في نسبة Sharpe بمرور الوقت. تعرّف إلى مطابقة عائد أذون الخزانة لتردد عوائدك، وتكلفة استخدام معدل ثابت.
معدل العائد الخالي من المخاطر في نسبة Sharpe هو العائد الذي كان يمكنك تحصيله خلال الفترة نفسها من دون تحمل المخاطر التي تقيس أداءك في مواجهتها. وهو سلسلة زمنية، بقراءة واحدة لكل فترة، ومقوّمة بعملة العوائد. طابِق تردده مع تردد العوائد، ثم اطرح المعدل فترةً بعد فترة. نفّذ عملية التحويل إلى أساس سنوي مرة واحدة في النهاية.
تجاهل هذه الطريقة هو السبب وراء معظم نسب Sharpe المنشورة غير الصحيحة. فعندما تأخذ رقماً واحداً من بداية سجل عوائد يمتد عشرين عاماً، وغالباً ما يكون العائد الذي تدفعه أذون الخزانة هذا الأسبوع، فإنك تفرض على عام 2009 عقبة العائد نفسها المفروضة على عام 2024. يشرح دليلنا إلى نسبة Sharpe ما الذي تقيسه النسبة. أما هذه الصفحة فتشرح المدخل الذي لا يوثقه أحد تقريباً.
معدل العائد الخالي من المخاطر ليس ثابتاً
تمتد نسبة Sharpe المقاسة على مدى عشرين عاماً عبر تاريخ من معدلات الفائدة. يأخذ الجدول أدناه أذون الخزانة لأجل ثلاثة أشهر، ويحوّل كل سنة ميلادية إلى متوسط ونطاق يحيط به.
استعلام SQL الدقيق وراء كل رقم
SELECT
toString(toYear(date)) AS year,
round(avg(toFloat64(yield_3_month)), 2) AS avg_bill_pct,
round(min(toFloat64(yield_3_month)), 2) AS low_bill_pct,
round(max(toFloat64(yield_3_month)), 2) AS high_bill_pct
FROM global_markets.treasury_yields
WHERE date >= '2005-01-01'
AND yield_3_month IS NOT NULL
GROUP BY year
ORDER BY yearبلغ المتوسط السنوي 3.22% في 2005 و3.74% في 2026، عبر 22 سنة ميلادية. المسار بين هاتين القراءتين هو الجزء المهم. ينخفض الخط إلى القاع، ويبقى هناك معظم عقد، ثم يصعد مجدداً. وتوضح عمودا الحدين الأدنى والأعلى مدى تحرك المعدل داخل السنوات المفردة. ولهذا تحتاج حتى نسبة Sharpe لسنة واحدة إلى سلسلة متطابقة التردد، لا إلى تسعيرة واحدة.
ما معدل العائد الخالي من المخاطر المناسب لنسبة Sharpe؟
تحدد أربعة عوامل الاختيار.
- استحقاق قصير. يجب أن يكون المعدل شبه مؤكد خلال فترة قياس واحدة. يصلح أجل ثلاثة أشهر للعمل على أساس شهري. أما سند لأجل عشر سنوات فلا يصلح، لأن سعره يتحرك خلال الشهر الذي تقيسه.
- عملة العائد نفسها. تُقاس استراتيجية مقوّمة باليورو مقابل أذون مقوّمة باليورو.
- تردد العائد نفسه. تُقتبس عوائد الأذون سنوياً، ولذلك يجب تحويل الاقتباس السنوي إلى معدل شهري قبل استخدامه مع عائد شهري.
- تعريفات عوائد قابلة للمقارنة على الجانبين. عائد أذن الخزانة هو عائدها الكامل، ولذلك فإن عائداً لاستراتيجية يستبعد توزيعات الأرباح لا يُقاس على الأساس نفسه. يشرح العائد السعري مقابل العائد الكلي هذه الفجوة.
لتحويل المعدل المذكور في النقطة الثالثة اصطلاحان مستخدمان. تقسم القسمة البسيطة الاقتباس السنوي على اثني عشر. أما التركيب فيأخذ الجذر الثاني عشر لمجموع واحد زائد المعدل السنوي. وبالنسبة إلى أذن افتراضية بعائد 5%، يعطي الأسلوبان 0.4167% و0.4074% للشهر، أي فرقاً يقارب نقطة أساس واحدة يتكرر في كل شهر من العينة. تستخدم الجداول هنا أسلوب التركيب. وإذا كانت عوائد الأذون تهمك باعتبارها عائداً على حيازة لا باعتبارها عقبة، فإن عائد التوزيع مقابل عوائد الخزانة وأماكن إيداع النقد غير المستثمر يتناولان ذلك.
كيفية بناء سلسلة عوائد فائضة شهرية
عملية البناء آلية: خذ سعر الإغلاق الأخير لكل شهر، واحسب عائد الشهر، وحوّل اقتباس أذن الخزانة لذلك الشهر إلى معدل شهري، ثم اطرح المعدل. الناتج سلسلة عوائد فائضة، بقراءة واحدة لكل شهر. يشرح كيفية قياس العوائد الشهرية جانب العائد بالتفصيل.
استعلام SQL الدقيق وراء كل رقم
WITH
monthly_px AS
(
SELECT
toStartOfMonth(date) AS m,
argMax(toFloat64(close), date) AS month_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2019-12-01'
AND date < '2025-01-01'
GROUP BY m
),
prior_px AS
(
SELECT
addMonths(m, 1) AS m,
month_close AS prev_close
FROM monthly_px
),
monthly_rf AS
(
SELECT
toStartOfMonth(date) AS m,
pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
FROM global_markets.treasury_yields
WHERE date >= '2019-12-01'
AND date < '2025-01-01'
AND yield_3_month IS NOT NULL
GROUP BY m
)
SELECT
toString(cur.m) AS month,
round(100 * (cur.month_close / prv.prev_close - 1), 2) AS spy_ret_pct,
round(100 * rf.rf_month, 3) AS rf_pct,
round(100 * (cur.month_close / prv.prev_close - 1 - rf.rf_month), 2) AS excess_pct
FROM monthly_px AS cur
INNER JOIN prior_px AS prv ON prv.m = cur.m
INNER JOIN monthly_rf AS rf ON rf.m = cur.m
ORDER BY cur.mهذه أسعار إغلاق SPY، ولذلك فإن عمود العائد هو عائد سعري يستبعد توزيعات الأرباح. يبدأ عمود العائد الخالي من المخاطر عند 0.128% للشهر الأول الظاهر، وينتهي عند 0.359%. وبالمقارنة مع أشهر الأسهم التي تتحرك عدة نقاط مئوية، يبدو شريط العائد الخالي من المخاطر كأنه مجرد تقريب. لكن عبر 60 شهراً من الطرح، يشكل الفارق الكامل بين نسبتي Sharpe اللتين تدعيان قياس الشيء نفسه.
اطرح أولاً، ثم حوّل إلى أساس سنوي
يتاح ترتيبان للعمليات بعد مواءمة السلسلتين، وهما لا يعطيان النتيجة نفسها. في الترتيب الأول، اطرح المعدل الشهري من العائد الشهري، ثم حوّل سلسلة العوائد الفائضة إلى أساس سنوي. وفي الترتيب الثاني، ركّب العوائد في رقم سنوي، وركّب عائد الأذن في رقم سنوي، ثم اطرح أحدهما من الآخر.
استعلام SQL الدقيق وراء كل رقم
WITH
monthly_px AS
(
SELECT
toStartOfMonth(date) AS m,
argMax(toFloat64(close), date) AS month_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2004-12-01'
AND date < '2025-01-01'
GROUP BY m
),
prior_px AS
(
SELECT
addMonths(m, 1) AS m,
month_close AS prev_close
FROM monthly_px
),
monthly_rf AS
(
SELECT
toStartOfMonth(date) AS m,
pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
FROM global_markets.treasury_yields
WHERE date >= '2004-12-01'
AND date < '2025-01-01'
AND yield_3_month IS NOT NULL
GROUP BY m
),
excess AS
(
SELECT
cur.m AS m,
cur.month_close / prv.prev_close - 1 AS ret,
rf.rf_month AS rf_month,
cur.month_close / prv.prev_close - 1 - rf.rf_month AS exc
FROM monthly_px AS cur
INNER JOIN prior_px AS prv ON prv.m = cur.m
INNER JOIN monthly_rf AS rf ON rf.m = cur.m
)
SELECT
concat(toString(intDiv(count(), 12)), '-year') AS horizon,
round(100 * (exp(12 * avg(log(1 + exc))) - 1), 2) AS excess_first_pct,
round(100 * ((exp(12 * avg(log(1 + ret))) - 1)
- (exp(12 * avg(log(1 + rf_month))) - 1)), 2) AS annualize_first_pct,
round(100 * ((exp(12 * avg(log(1 + ret))) - 1)
- (exp(12 * avg(log(1 + rf_month))) - 1)
- (exp(12 * avg(log(1 + exc))) - 1)), 3) AS gap_pct
FROM excess
CROSS JOIN (SELECT arrayJoin([1, 3, 5, 10, 20]) AS years) AS hz
WHERE m >= subtractYears(toDate('2025-01-01'), years)
GROUP BY years
ORDER BY yearsخلال فترة 20-year، بلغت نتيجة الطرح أولاً 6.49% سنوياً مقابل 6.59% للترتيب الآخر، أي بفارق 0.099 نقطة مئوية. وعند فترة 1-year، تفصل بين الحسابين النتيجة نفسها مسافة 0.814 نقطة. تظهر نتيجة التحويل إلى أساس سنوي أولاً أعلى من نتيجة الطرح أولاً في كل فترة هنا. والفارق بينهما يعود إلى حد تفاعلي: عندما تركّب سلسلة العوائد في رقم سنوي، فإنك تكسب معدل الأذون فوق علاوة المخاطر نفسها، أما طرح عائد الأذون بعد تحويله سنوياً فلا يزيل ذلك الجزء. ويتناسب الحد التفاعلي مع حاصل ضرب الرقمين المحولين إلى أساس سنوي، ولذلك يتسع أكثر عندما تكون عوائد الأذون مرتفعة.
ويتضمن التحويل إلى أساس سنوي مفترقاً ثانياً. فالتحويل الحسابي يضرب متوسط العائد الفائض الشهري في اثني عشر. أما التحويل الهندسي فيستخدم التركيب، أي المعدل السنوي الثابت الذي يعيد إنتاج النتيجة التراكمية. لنفترض مساراً من فترتين، يبدأ بـ +50% ثم -33.3%، وينتهي عند المستوى الذي بدأ منه تماماً. يبلغ المتوسط الحسابي +8.35% لكل فترة، بينما يبلغ المتوسط الهندسي صفراً. تستخدم الجداول هنا أسلوب التركيب. وتوجد ملاحظة مهمة: في ظل التحويل الحسابي إلى أساس سنوي، فإن اثني عشر مضروباً في متوسط العائد ناقص اثني عشر مضروباً في متوسط معدل الأذون يساوي جبرياً اثني عشر مضروباً في متوسط العائد الفائض. وبموجب هذا الاصطلاح، لا يغير ترتيب الطرح البسط. لكن المقام يظل متغيراً، لأن الانحراف المعياري للعوائد الفائضة يختلف عن الانحراف المعياري للعوائد الخام عندما يتحرك المعدل نفسه.
تكلفة استخدام معدل ثابت واحد على النتيجة
الاختصار الشائع هو أخذ عائد أذن الخزانة الحالي وطرحه من كل فترة في السجل. يحسب الجدول أدناه نسبة Sharpe بالطريقتين عبر خمس فترات تنتهي في التاريخ نفسه: مرةً مقابل السلسلة الشهرية المطابقة، ومرةً مقابل عائد الأذن الساري في نهاية الفترة.
استعلام SQL الدقيق وراء كل رقم
WITH
monthly_px AS
(
SELECT
toStartOfMonth(date) AS m,
argMax(toFloat64(close), date) AS month_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2004-12-01'
AND date < '2025-01-01'
GROUP BY m
),
prior_px AS
(
SELECT
addMonths(m, 1) AS m,
month_close AS prev_close
FROM monthly_px
),
monthly_rf AS
(
SELECT
toStartOfMonth(date) AS m,
pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_month
FROM global_markets.treasury_yields
WHERE date >= '2004-12-01'
AND date < '2025-01-01'
AND yield_3_month IS NOT NULL
GROUP BY m
),
excess AS
(
SELECT
cur.m AS m,
cur.month_close / prv.prev_close - 1 AS ret,
rf.rf_month AS rf_month
FROM monthly_px AS cur
INNER JOIN prior_px AS prv ON prv.m = cur.m
INNER JOIN monthly_rf AS rf ON rf.m = cur.m
)
SELECT
concat(toString(intDiv(count(), 12)), '-year') AS horizon,
round(sqrt(12) * avg(ret - rf_month) / stddevSamp(ret - rf_month), 2) AS sharpe_matched_rf,
round(sqrt(12) * avg(ret - rf_fixed) / stddevSamp(ret - rf_fixed), 2) AS sharpe_fixed_rf,
round(abs(sqrt(12) * avg(ret - rf_month) / stddevSamp(ret - rf_month)
- sqrt(12) * avg(ret - rf_fixed) / stddevSamp(ret - rf_fixed)), 2) AS abs_gap
FROM excess
CROSS JOIN
(
SELECT pow(1 + avg(toFloat64(yield_3_month)) / 100, 1.0 / 12) - 1 AS rf_fixed
FROM global_markets.treasury_yields
WHERE date >= '2024-12-01'
AND date < '2025-01-01'
AND yield_3_month IS NOT NULL
) AS fixed_rate
CROSS JOIN (SELECT arrayJoin([1, 3, 5, 10, 20]) AS years) AS hz
WHERE m >= subtractYears(toDate('2025-01-01'), years)
GROUP BY years
ORDER BY yearsعند فترة 1-year، تفصل بين القراءتين مسافة 0.07. وخلال اثني عشر شهراً، لا يملك المعدل الثابت مجالاً كبيراً للابتعاد عن متوسط الفترة نفسها. أما عند فترة 20-year، فتفصل بينهما مسافة 0.18: إذ تبلغ النتيجة 0.49 باستخدام السلسلة المطابقة، مقابل 0.32 باستخدام المعدل الثابت. ويتتبع الخطأ المسافة بين المعدل المفرد الذي اخترته ومتوسط المعدل السائد فعلياً، وتزداد قدرة هذه المسافة على الاتساع كلما طالت الفترة. وكل ما يأتي بعد ذلك يرث هذا الخطأ، كما أن استهداف التقلب وحجم المراكز يعتمد على مدخلات من هذا النوع تحديداً.
فخ العملة
تنتج الاستراتيجية التي تحقق عوائد بعملة وتُقاس مقابل أذون بعملة أخرى رقماً لا يحمل معنى واضحاً لأي من العملتين. احسب العائد الفائض داخل عملة واحدة: عوائد اليورو مقابل أذن باليورو، وعوائد الين مقابل أذن بالين. وتحمل الاستراتيجيات المحوّطة فخاً ثانياً. فتسعّر تحوّطات العملة انطلاقاً من السعر الآجل، وتقترب نقاط الآجل من فارق أسعار الفائدة بين العملتين، ما يعني أن جزءاً من المعدل المحلي موجود بالفعل داخل العائد الأجنبي المحوّط. وطرح أذن العملة الأجنبية فوق ذلك يحمّل العائد بالمعدل نفسه مرتين. اذكر العملة بجوار المعدل، فتزول حالة الالتباس.
انشر المعدل بجوار النسبة
لا يمكن لأي شخص التحقق من نسبة Sharpe منشورة من دون مصدر معدل العائد الخالي من المخاطر وتردده. فقد يحسب مكتبان نسبة 0.8 و1.1 من سلسلة العوائد نفسها، ويكون كلاهما صحيحاً، إذا استخدما سلسلتي معدلات مختلفتين واصطلاحين مختلفين للتحويل. يجب أن ترافق الرقم أربعة عناصر: الأداة التي أتى منها المعدل، وتردده، واصطلاح التحويل، والفترة الدقيقة. وهذا هو الفرق بين رقم يستطيع القارئ تدقيقه ورقم لا يملك إلا أن يصدقه.
ملاحظات البيانات وقابلية إعادة الإنتاج
سلسلة المعدلات في كل جدول هي أذون الخزانة لأجل ثلاثة أشهر، المستخرجة من منحنى عوائد الخزانة اليومي، ثم محسوبة كمتوسط داخل كل شهر ميلادي، ومحوّلة إلى معدل شهري باستخدام الجذر الثاني عشر لمجموع واحد زائد الاقتباس السنوي. العوائد هي أسعار إغلاق SPY في نهاية الشهر، وتقتصر على العائد السعري مع استبعاد توزيعات الأرباح. تستخدم النسب الانحراف المعياري للعينة للعوائد الفائضة الشهرية، والجذر التربيعي لاثني عشر للتحويل إلى أساس سنوي. تستخدم اللوحتان الأخيرتان فترات تنتهي في تاريخ مشترك، ويأخذ عمود المعدل الثابت متوسط اقتباس الأذون في الشهر الأخير من كل فترة. كل رقم ورد في النص أعلاه مأخوذ من الجدول المجاور له.
الأسئلة الشائعة
ما معدل العائد الخالي من المخاطر الذي ينبغي أن أستخدمه في نسبة Sharpe؟
أذن حكومية قصيرة الأجل بالعملة نفسها التي تستخدمها العوائد، ومحوّلة إلى التردد نفسه للعوائد. بالنسبة إلى عوائد شهرية بالدولار الأمريكي، يعني ذلك أذن الخزانة لأجل شهر أو ثلاثة أشهر. تحمل الاستحقاقات الأطول مخاطر سعرية خلال فترة القياس، ما يستبعدها كعنصر خالٍ من المخاطر.
هل يمكنني طرح عائد أذن الخزانة اليوم من سجل عوائد طويل؟
هذا هو الخطأ الأكثر شيوعاً في نسب Sharpe المنشورة. خلال فترة 20-year المذكورة أعلاه، تنتج قراءة المعدل الثابت في نهاية الفترة والسلسلة الشهرية المطابقة قراءتين تفصل بينهما 0.18، رغم استخدام العوائد نفسها تماماً.
هل أحوّل معدل العائد الخالي من المخاطر إلى أساس سنوي قبل طرحه؟
لا. حوّل الاقتباس السنوي للأذن إلى تردد العائد، ثم اطرح المعدل فترةً بعد فترة، وبعد ذلك حوّل سلسلة العوائد الفائضة إلى أساس سنوي مرة واحدة في النهاية. إن تحويل كل عنصر إلى أساس سنوي بصورة منفصلة ثم إجراء الطرح يترك حداً تفاعلياً داخل النتيجة.
إلى أي مدى يغير معدل العائد الخالي من المخاطر نسبة Sharpe؟
تقريباً بمقدار التغير في المعدل مقسوماً على التقلب السنوي. في استراتيجية افتراضية يبلغ تقلبها السنوي 15%، يؤدي فرق قدره 4% في المعدل المفترض إلى تغيير النسبة بنحو 0.27، وهو الفارق بين سجل أداء عادي وآخر يحظى بإشادة واسعة.
ما الفرق بين التحويل الحسابي والهندسي إلى أساس سنوي؟
يضرب التحويل الحسابي متوسط العائد الفائض للفترة في عدد الفترات خلال السنة. أما التحويل الهندسي فيركّب الفترات للوصول إلى المعدل الثابت الذي يعيد إنتاج النتيجة التراكمية. ويكون الرقم الهندسي لكل فترة مساوياً للرقم الحسابي أو أقل منه، ويتسع الفارق بينهما مع ارتفاع التقلب.
يحتوي كل جدول هنا على SQL الذي أنتجه، ولذلك تظهر سلسلة المعدلات والفترة معاً. ولتطبيق البناء نفسه على ticker آخر أو فترة تاريخية أخرى، اطلب ذلك بعبارة واضحة باللغة الإنجليزية على محطة Strasmore.