Strasmore Research
تعلَّم Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-08

كيفية قياس العائد الشهري للسهم

يعتمد عائد السهم الشهري على سعري البداية والنهاية، واحتساب توزيعات الأرباح، وتعديل الأسعار للتجزئات. تعرّف إلى الفروق عبر بيانات تداول فعلية.

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

الإغلاق إلى الإغلاق: المنهج القياسي

المنهج الذي يستخدمه مزودو المؤشرات، ونشرات معلومات الصناديق، ومعظم صفحات الأسعار: يمتد عائد الشهر من سعر الإغلاق النهائي للجلسة النظامية في الشهر السابق إلى سعر الإغلاق النهائي لهذا الشهر. ويكون إغلاق مايو نقطة البداية لشهر يونيو. الحساب مباشر: نطرح سعر البداية من سعر النهاية، ثم نقسم الناتج على سعر البداية. لنبدأ بمثال مبسط: إذا أنهى سهم مايو عند 50.00 دولاراً وأنهى يونيو عند 53.50 دولاراً، فقد حقق عائداً قدره (53.50 − 50.00) ÷ 50.00 = 0.07، أي 7% خلال الشهر. يُدخل كل منهج في هذه الصفحة قيماً مختلفة في الصيغة نفسها. وفيما يلي تطبيقها على بيانات التداول الفعلية لشهر يونيو 2026، إلى جانب البديل الرئيسي:

الاستعلاميونيو 2026 بطريقتين: من الإغلاق إلى الإغلاق مقابل من الافتتاح إلى الإغلاق، NVDA وSPY
tickerالإغلاق النهائي في مايوالافتتاح الأول في يونيوالإغلاق النهائي في يونيونسبة الإغلاق إلى الإغلاقنسبة الافتتاح إلى الإغلاقنقاط فجوة المؤتمر
NVDA211.15215.73199.76-5.39-7.42.01
SPY756.4755.36746.32-1.33-1.20.14
استعلام SQL الدقيق وراء كل رقم
SELECT ticker,
       round(argMaxIf(cl, day, day <= '2026-05-31'), 2) AS may_final_close,
       round(argMinIf(op, day, day >= '2026-06-01'), 2) AS june_first_open,
       round(argMaxIf(cl, day, day <= '2026-06-30'), 2) AS june_final_close,
       round(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMaxIf(cl, day, day <= '2026-05-31'))
             / argMaxIf(cl, day, day <= '2026-05-31'), 2) AS close_to_close_pct,
       round(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMinIf(op, day, day >= '2026-06-01'))
             / argMinIf(op, day, day >= '2026-06-01'), 2) AS open_to_close_pct,
       round(abs(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMinIf(op, day, day >= '2026-06-01'))
                 / argMinIf(op, day, day >= '2026-06-01')
             - 100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMaxIf(cl, day, day <= '2026-05-31'))
                 / argMaxIf(cl, day, day <= '2026-05-31')), 2) AS convention_gap_points
FROM (
    SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS day,
               argMinIf(toFloat64(open), window_start, rth) AS op,
               argMaxIf(toFloat64(close), window_start, rth) AS cl
        FROM (
            SELECT ticker, window_start, open, close,
                   toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
                   AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York') AS rth
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker IN ('NVDA', 'SPY')
              AND window_start >= '2026-05-28 04:00:00'
              AND window_start < '2026-07-01 08:00:00'
        )
        GROUP BY ticker, day
)
GROUP BY ticker
ORDER BY ticker
جرّب هذا الاستعلام بنفسك

بلغ عائد NVDA في يونيو -5.39% وفقاً لحساب الإغلاق إلى الإغلاق، لكنه بلغ -7.4% عند قياسه من أول سعر افتتاح للجلسة النظامية في يونيو إلى آخر سعر إغلاق فيه. السهم نفسه والشهر نفسه، مع فارق قدره 2.01 نقطة مئوية بين النتيجتين الصحيحتين. يرجع الفارق بالكامل إلى فترة واحدة امتدت بين الإغلاق والافتتاح وشملت عطلة نهاية الأسبوع: أغلق NVDA مايو عند 211.15 دولاراً، وافتتح يونيو عند 215.73 دولاراً. ويُحتسب هذا التغير ضمن «يونيو» في منهج الافتتاح إلى الإغلاق، بينما يقع عند الحد الفاصل في منهج الإغلاق إلى الإغلاق. ويظهر النمط نفسه بصورة أقل حدة في SPY: -1.33% وفقاً للإغلاق إلى الإغلاق، مقابل -1.2% وفقاً للافتتاح إلى الإغلاق.

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

التوزيعات: عائد السعر مقابل العائد الكلي

الخيار الثاني: هل تُحتسب السيولة التي وزّعها السهم خلال الشهر؟ يتجاهلها عائد السعر، بينما يضيفها العائد الكلي مجدداً. يكون الفارق صغيراً في معظم الأشهر المنفردة؛ فالسهم الذي يوزّع أرباحاً ربع سنوية يدفع نحو ربع عائده كل ربع سنة. لكنه يتراكم ويتسع على مدى سنوات. وقد صادف أن كان يونيو 2026 شهراً دفع فيه SPY توزيعات:

الاستعلامSPY في يونيو 2026: عائد السعر مقابل العائد الإجمالي (يشمل توزيعات يونيو السابقة لتاريخ الاستحقاق)
الإغلاق النهائي في مايوالإغلاق النهائي في يونيوتوزيعات يونيو لكل سهمنسبة عائد السعرنسبة مساهمة التوزيعاتنسبة العائد الإجمالي
756.4746.321.9035-1.330.25-1.08
استعلام SQL الدقيق وراء كل رقم
WITH px AS (
    SELECT argMaxIf(cl, day, day <= '2026-05-31') AS may_close,
           argMaxIf(cl, day, day <= '2026-06-30') AS jun_close
    FROM (
        SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS day,
               argMinIf(toFloat64(open), window_start, rth) AS op,
               argMaxIf(toFloat64(close), window_start, rth) AS cl
        FROM (
            SELECT ticker, window_start, open, close,
                   toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
                   AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York') AS rth
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker IN ('NVDA', 'SPY')
              AND window_start >= '2026-05-28 04:00:00'
              AND window_start < '2026-07-01 08:00:00'
        )
        GROUP BY ticker, day
    )
    WHERE ticker = 'SPY'
),
dv AS (
    SELECT sum(cash_amount) AS div_per_share
    FROM global_markets.stocks_dividends
    WHERE ticker = 'SPY'
      AND ex_dividend_date >= '2026-06-01'
      AND ex_dividend_date <= '2026-06-30'
)
SELECT round(may_close, 2) AS may_final_close,
       round(jun_close, 2) AS june_final_close,
       round(div_per_share, 4) AS june_dividend_per_share,
       round(100 * (jun_close - may_close) / may_close, 2) AS price_return_pct,
       round(100 * div_per_share / may_close, 2) AS dividend_contribution_pct,
       round(100 * ((jun_close + div_per_share) - may_close) / may_close, 2) AS total_return_pct
FROM px CROSS JOIN dv
جرّب هذا الاستعلام بنفسك

بلغ عائد السعر لـ SPY في يونيو -1.33%؛ وبإضافة التوزيع البالغ $1.9035 للسهم، والذي أصبح السهم يستحقه في تاريخ ex-dividend خلال الشهر، يرتفع العائد الكلي إلى -1.08%. ويمثل ذلك مساهمة قدرها 0.25% من السيولة. تنشر عائلات المؤشرات كلا النوعين من العائد؛ وعادةً ما يشير مصطلح "S&P 500" المتداول إلى مؤشر السعر. كما تُلزم صفحات أداء الصناديق بعرض العائد الكلي، بينما تخلط أدوات الفرز بين النوعين دون تمييز. وعندما يختلف مصدران ببضعة أعشار بالنسبة إلى عائد سهم موزّع للأرباح خلال شهر معين، تكون التوزيعات أول ما ينبغي التحقق منه. ويحدد تاريخ ex-dividend الشهر الذي يُنسب إليه التوزيع.

يمثل شهر يونيو واحداً فارقاً ببضعة أعشار من النقطة المئوية. أما الأفق الزمني فهو ما يفصل بين منهجي القياس. وفيما يلي الحساب نفسه ممتداً على خمس سنوات:

الاستعلامSPY على مدى خمس سنوات، من يونيو 2021 إلى يونيو 2026: عائد السعر مقابل العائد مع التوزيعات
إغلاق يونيو 2021إغلاق يونيو 2026التوزيعات المدفوعة لكل سهمدفعات التوزيعاتنسبة عائد السعر لخمس سنواتنسبة العائد لخمس سنوات مع التوزيعاتالنقاط المضافة من التوزيعات
428.07746.3234.072074.3582.37.96
استعلام SQL الدقيق وراء كل رقم
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
           argMaxIf(toFloat64(close), window_start,
               toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
               AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND ((window_start >= '2021-06-28 04:00:00' AND window_start < '2021-07-01 08:00:00')
        OR (window_start >= '2026-06-26 04:00:00' AND window_start < '2026-07-01 08:00:00'))
    GROUP BY day
),
px AS (
    SELECT argMaxIf(cl, day, day <= '2021-06-30') AS start_close,
           argMaxIf(cl, day, day <= '2026-06-30') AS end_close
    FROM daily
),
dv AS (
    SELECT round(sum(cash_amount), 2) AS divs_per_share,
           count() AS payments
    FROM global_markets.stocks_dividends
    WHERE ticker = 'SPY'
      AND ex_dividend_date >= '2021-07-01'
      AND ex_dividend_date <= '2026-06-30'
)
SELECT round(start_close, 2) AS june_2021_close,
       round(end_close, 2) AS june_2026_close,
       divs_per_share AS dividends_paid_per_share,
       payments AS dividend_payments,
       round(100 * (end_close - start_close) / start_close, 2) AS five_year_price_return_pct,
       round(100 * ((end_close + divs_per_share) - start_close) / start_close, 2) AS five_year_return_with_divs_pct,
       round(100 * divs_per_share / start_close, 2) AS dividend_points_added
FROM px CROSS JOIN dv
جرّب هذا الاستعلام بنفسك

من إغلاق يونيو 2021 البالغ $428.07 إلى إغلاق يونيو 2026 البالغ $746.32، يقيس عائد السعر لخمس سنوات لـ SPY نسبة 74.35%. وخلال الفترة نفسها، دفع الصندوق 20 توزيعات بلغ مجموعها $34.07 للسهم. ويؤدي احتساب هذه السيولة إلى رفع النتيجة إلى 82.3%، بفارق قدره 7.96 نقطة، حتى قبل إعادة استثمار أي توزيع. ويعيد مؤشر العائد الكلي الحقيقي استثمار كل توزيع في تاريخ ex-dividend الخاص به. وتؤدي الأسهم المعاد استثمارها إلى اتساع الفارق أكثر. وبالنسبة إلى سهم ناضج يوزّع الأرباح، فإن «الفوارق الكبيرة» ليست مجرد تعبير مجازي؛ بل هي النتيجة المعتادة لتدفقات نقدية ربع سنوية تتراكم على مدى سنوات.

سعر الإغلاق المعدّل مقابل سعر الإغلاق الخام: فخ تجزئة السهم

تقتبس معظم أدوات الرسوم البيانية وYahoo Finance وGoogle Finance ومعظم تطبيقات الوسطاء سعر إغلاق معدّلاً: وهو سلسلة أسعار تاريخية جرى فيها خفض الأسعار السابقة بما يتناسب مع عمليات تجزئة الأسهم، كما تُعدَّل في بعض المنصات وفقاً للتوزيعات أيضاً، بحيث يبقى الخط قابلاً للمقارنة عبر الزمن. أما مستودع بياناتنا فيخزّن الأسعار كما سُجّلت فعلياً في السوق. في الشهر العادي يتطابق الرقمان. لكنهما يقدمان روايتين مختلفتين تماماً في شهر يتضمن تجزئة للسهم، مثل تجزئة NVDA بنسبة 10 مقابل 1 التي نُفذت في 10 يونيو 2024، خلال الشهر:

الاستعلامNVDA في يونيو 2024: حساب خام من الإغلاق إلى الإغلاق مقابل العائد المعدّل للتجزئة
الإغلاق النهائي الخام في مايوالإغلاق النهائي الخام في يونيوالأسهم بعد التجزئة لكل سهم قديمنسبة التغير الخام في السعرإغلاق مايو المعدل بالتجزئةنسبة العائد المعدلة
1097.46123.4110-88.75109.7512.45
استعلام SQL الدقيق وراء كل رقم
WITH px AS (
    SELECT argMaxIf(cl, day, day <= '2024-05-31') AS may_close,
           argMaxIf(cl, day, day <= '2024-06-30') AS jun_close
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
               argMaxIf(toFloat64(close), window_start,
                   toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
                   AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'NVDA'
          AND window_start >= '2024-05-29 04:00:00'
          AND window_start < '2024-07-01 08:00:00'
        GROUP BY day
    )
),
sp AS (
    SELECT split_to / split_from AS ratio
    FROM global_markets.stocks_splits
    WHERE ticker = 'NVDA'
      AND execution_date >= '2024-06-01'
      AND execution_date <= '2024-06-30'
)
SELECT round(may_close, 2) AS may_final_close_raw,
       round(jun_close, 2) AS june_final_close_raw,
       toInt32(ratio) AS shares_after_split_per_old_share,
       round(100 * (jun_close - may_close) / may_close, 2) AS raw_price_change_pct,
       round(may_close / ratio, 2) AS may_close_split_adjusted,
       round(100 * (jun_close - may_close / ratio) / (may_close / ratio), 2) AS adjusted_return_pct
FROM px CROSS JOIN sp
جرّب هذا الاستعلام بنفسك

عند قراءة الأسعار الخام، يبدو أن NVDA «انخفض» من $1097.46 إلى $123.41 في ذلك الشهر، أي انهيار بنسبة -88.75%. لكن شيئاً من هذا لم يحدث: ففي تاريخ التنفيذ أصبح كل سهم قديم 10 أسهماً جديدة، وانخفض السعر بما يتناسب مع ذلك، فبقيت القيمة بالدولار لكل مساهم كما هي. وعند قسمة سعر إغلاق مايو على النسبة نفسها، يصبح السعر $109.75 على أساس معدل وفق التجزئة، ويظهر يونيو 2024 باعتباره شهراً صاعداً بنسبة 12.45%. ويعرض أي مصدر يستخدم بيانات معدّلة رقماً قريباً من القيمة الثانية، بينما تعطي الحسابات الساذجة على الأسعار الخام القيمة الأولى. ويُعد سعر الإغلاق المعدّل السبب الأكثر شيوعاً لاختلاف مصدرين اختلافاً كبيراً في العائد الشهري التاريخي. وعندما تبدو النتيجة كبيرة بصورة غير معقولة في أي اتجاه، تحقّق من جدول تجزئات الأسهم قبل أي شيء آخر.

أي سعر «الإغلاق» هو المقصود؟

توجد نقطة فصل أخرى ضمن هذه الأعراف، وهي سعر الإغلاق نفسه. الرقم الذي تستخدمه كل ورقة معلومات هو سعر التنفيذ الرسمي في مزاد الإغلاق، أي السعر الوحيد الذي يحدده مزاد الإغلاق عند الساعة 4:00 مساءً بتوقيت ET. لكن التداول يستمر بعد ساعات السوق، وقد يختلف آخر تنفيذ في الجلسة الممتدة عن سعر الإغلاق الرسمي:

الاستعلامSPY في 30 يونيو 2026: الإغلاق الرسمي مقابل آخر سعر في ساعات التداول الممتدة
إغلاق الجلسة العاديةآخر سعر مسجل في التداول الممتدنسبة التغير بعد ساعات التداول
746.32746.3-0.003
استعلام SQL الدقيق وراء كل رقم
SELECT round(argMaxIf(toFloat64(close), window_start, rth), 2) AS regular_session_close,
       round(argMax(toFloat64(close), window_start), 2) AS last_extended_print,
       round(100 * (argMax(toFloat64(close), window_start) - argMaxIf(toFloat64(close), window_start, rth))
             / argMaxIf(toFloat64(close), window_start, rth), 3) AS after_hours_drift_pct
FROM (
    SELECT window_start, close,
           toTimeZone(window_start, 'America/New_York') >= toDateTime('2026-06-30 09:30:00', 'America/New_York')
           AND toTimeZone(window_start, 'America/New_York') < toDateTime('2026-06-30 16:00:00', 'America/New_York') AS rth
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2026-06-30 04:00:00'
      AND window_start < '2026-07-01 08:00:00'
)
جرّب هذا الاستعلام بنفسك

في 30 يونيو، اختلف السعران بمقدار -0.003%، وهو فرق صغير في ذلك المساء. لكن في ليلة إعلان نتائج شركة واحدة، قد تتحرك التداولات في الجلسة الممتدة بنسب مئوية، بحيث تُسند العوائد الشهرية الرسمية هذه الحركة إلى الشهر التالي. يتناول التداول بعد ساعات السوق وقبل افتتاحه هذه الحدود بالتفصيل. وهناك حالة أخرى ذات صلة: تقع حدود الأشهر أحياناً في جلسة مختصرة بسبب عطلة، حيث ينتهي التداول الاعتيادي عند الساعة 1:00 بعد الظهر بتوقيت ET، ويُسجَّل سعر الإغلاق الرسمي في مزاد إغلاق مبكر؛ ويعرض جدول عطلات السوق هذه الحالات.

التركيب عبر اثني عشر شهراً لتكوين سنة

العائد السنوي ليس مجموع العوائد الشهرية الاثني عشر، بل حاصل ضربها. والصيغة الصحيحة للربط هي تحويل كل شهر إلى معامل نمو (1 + العائد)، ثم ضرب المعاملات الاثني عشر معاً وطرح 1. فالشهر الذي يحقق −5% يليه شهر يحقق +5% يعطي مجموعاً يساوي صفراً، لكنه ينتج تركيباً قدره 0.95 × 1.05 − 1 = −0.25%. فيما يلي المسار الشهري الفعلي لـ SPY خلال الأشهر الاثني عشر المنتهية في يونيو 2026:

الاستعلامعوائد SPY الشهرية من الإغلاق إلى الإغلاق: الاثنا عشر شهرًا المنتهية في يونيو 2026، البسيط واللوغاريتمي
الشهرالإغلاق النهائي للشهرالعائد البسيط (%)العائد اللوغاريتمي (%)
2025-07631.972.282.25
2025-08645.042.072.05
2025-09666.113.273.21
2025-10681.992.382.36
2025-11683.390.210.21
2025-12681.84-0.23-0.23
2026-01691.851.471.46
2026-02686.23-0.81-0.82
2026-03650.24-5.25-5.39
2026-04718.4310.499.97
2026-05756.45.295.15
2026-06746.32-1.33-1.34
استعلام SQL الدقيق وراء كل رقم
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
           argMaxIf(toFloat64(close), window_start,
               toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
               AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2025-06-24 04:00:00'
      AND window_start < '2026-07-01 08:00:00'
    GROUP BY day
),
monthly AS (
    SELECT toStartOfMonth(day) AS month_start,
           argMax(cl, day) AS month_close
    FROM daily
    GROUP BY month_start
),
rets AS (
    SELECT month_start,
           formatDateTime(month_start, '%Y-%m') AS month,
           round(month_close, 2) AS month_final_close,
           100 * (month_close / lagInFrame(month_close) OVER (ORDER BY month_start) - 1) AS r
    FROM monthly
)
SELECT month,
       month_final_close,
       round(r, 2) AS simple_return_pct,
       round(100 * log(1 + r / 100), 2) AS log_return_pct
FROM rets
WHERE isFinite(r)
ORDER BY month_start
جرّب هذا الاستعلام بنفسك

تمتد الأشهر الاثنا عشر، من 2.28% في 2025-07 إلى -1.33% في 2026-06. ويعرض الصف الأخير الرقم نفسه لعائد SPY في يونيو 2026 الذي قاسه القسم الأول. اربط الأشهر الاثني عشر بالطريقة الصحيحة، ثم قارنه بالاختصار المتمثل في جمع النسب المئوية فحسب:

الاستعلامالجمع مقابل التركيب: ربط عوائد SPY الشهرية الاثني عشر بثلاث طرق
الأشهر المرتبطةمجموع العوائد البسيطة (%)العائد المركب هندسيًا (%)العائد المباشر لـ12 شهرًا (%)نقاط فجوة التركيبمجموع العوائد اللوغاريتمية الشهرية (%)العائد اللوغاريتمي لـ12 شهرًا (%)
1219.8320.7920.790.9618.8918.89
استعلام SQL الدقيق وراء كل رقم
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
           argMaxIf(toFloat64(close), window_start,
               toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
               AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2025-06-24 04:00:00'
      AND window_start < '2026-07-01 08:00:00'
    GROUP BY day
),
monthly AS (
    SELECT toStartOfMonth(day) AS month_start,
           argMax(cl, day) AS month_close
    FROM daily
    GROUP BY month_start
),
rets AS (
    SELECT month_start,
           100 * (month_close / lagInFrame(month_close) OVER (ORDER BY month_start) - 1) AS r
    FROM monthly
),
ends AS (
    SELECT argMin(month_close, month_start) AS base_close,
           argMax(month_close, month_start) AS final_close
    FROM monthly
)
SELECT count() AS months_linked,
       round(sum(r), 2) AS simple_sum_pct,
       round(100 * (exp(sum(log(1 + r / 100))) - 1), 2) AS geometric_compound_pct,
       round(100 * (any(final_close) / any(base_close) - 1), 2) AS direct_twelve_month_pct,
       round(100 * (exp(sum(log(1 + r / 100))) - 1) - sum(r), 2) AS compounding_gap_points,
       round(sum(100 * log(1 + r / 100)), 2) AS sum_of_monthly_log_returns_pct,
       round(100 * log(any(final_close) / any(base_close)), 2) AS twelve_month_log_return_pct
FROM rets CROSS JOIN ends
WHERE isFinite(r)
جرّب هذا الاستعلام بنفسك

يبلغ مجموع العوائد الشهرية الاثني عشر 19.83%، لكنها تعطي بعد التركيب 20.79%. أما الحساب المباشر، من إغلاق يونيو 2025 إلى إغلاق يونيو 2026، فيعطي 20.79%، وهو ما يطابق الرقم المركب لا المجموع. ويبلغ الفرق هنا 0.96 نقطة خلال سنة هادئة نسبياً. ويتسع هذا الفرق مع ارتفاع التقلب وطول الأفق الزمني. ويُعد جمع النسب الشهرية عادة شائعة في جداول البيانات، لكنه خطأ غير ملحوظ.

يعرض العمودان الأخيران الاصطلاح المصمم للجمع: العائد اللوغاريتمي، وهو اللوغاريتم الطبيعي لمعامل النمو، ln(1 + العائد). يبلغ مجموع العوائد اللوغاريتمية الشهرية 18.89%، وهو مطابق للعائد اللوغاريتمي لفترة الاثني عشر شهراً البالغ 18.89%. ولهذا السبب تحديداً يستخدمها المحللون ونماذج المخاطر. خلال الأشهر ذات التحركات الصغيرة، لا يكاد يختلف الاصطلاحان (2025-11: 0.21% بسيط، 0.21% لوغاريتمي). وكلما كبرت حركة الشهر، اتسع الفرق بينهما (2026-04: 10.49% بسيط، 9.97% لوغاريتمي). تعرض نشرات الصناديق العوائد البسيطة، بينما تُستخدم العوائد اللوغاريتمية في الأوراق البحثية وحسابات التقلب.

قائمة التحقق التي توفّق بين أي مصدرين

عندما يختلف رقما العائد الشهري، فغالباً ما يكون الاختلاف في أحد أربعة مفاتيح:

  1. نقطتا البداية والنهاية: من الإغلاق إلى الإغلاق، وهو المعيار، أو من الافتتاح إلى الإغلاق، أي حركة التداول خلال الشهر نفسه. ويختلف الرقمان كلما حدثت فجوة سعرية عند إحدى نقطتي الحدود.
  2. التوزيعات: عائد سعري أم عائد كلي. ويختلفان في أي شهر يتضمن تاريخ ex-dividend.
  3. التعديل: الأسعار المنفذة الخام أم سلسلة أسعار الإغلاق المعدّلة. وقد يختلف الرقمان بشدة في أي شهر يتضمن تجزئة للسهم.
  4. الإغلاق نفسه: السعر المنفذ في المزاد الرسمي، وهو المعيار، أم آخر صفقة قد تشمل ساعات التداول الممتدة.

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

الأسئلة الشائعة حول العوائد الشهرية

ما العائد المحسوب من سعر الإغلاق إلى سعر الإغلاق؟

هو نسبة التغير بين سعر الإغلاق النهائي للجلسة العادية في الفترة السابقة وسعر الإغلاق النهائي في هذه الفترة. وهو الأسلوب المعياري المستخدم لحساب العوائد اليومية والشهرية والسنوية للأسهم في نشرات البيانات وتقارير المؤشرات.

لماذا يعرض موقعان إلكترونيان عوائد مختلفة للسهم نفسه وفي الشهر نفسه؟

يرجع ذلك في الغالب إلى واحد من أربعة أساليب مختلفة: استخدام نقطتي نهاية مختلفتين، مثل العائد من الإغلاق إلى الإغلاق مقابل العائد من الافتتاح إلى الإغلاق؛ أو احتساب توزيعات الأرباح أو استبعادها؛ أو استخدام أسعار غير معدّلة مقابل أسعار معدّلة لتجزئة الأسهم؛ أو الاعتماد على مصدر مختلف لسعر الإغلاق. وتُظهر مقاييس NVDA لشهر يونيو 2026 -5.39% أو -7.4% عند استخدام الاختلاف الأول وحده.

هل تغيّر تجزئة الأسهم طريقة حساب العائد الشهري؟

لا ينبغي أن تغيّرها. فتجزئة السهم تغيّر عدد الأسهم وسعرها معاً، ما يبقي قيمة المركز دون تغيير، لكنها تفسد أي حساب يعتمد على الأسعار غير المعدّلة. ويبدو عائد NVDA لشهر يونيو 2024 عند -88.75% باستخدام أسعار الإغلاق غير المعدّلة، ثم يبلغ 12.45% بعد تعديل أثر التجزئة بنسبة 10 مقابل 1.

هل تشمل العوائد الشهرية للأسهم توزيعات الأرباح؟

تشملها العوائد الكلية فقط. أما عوائد الأسعار، بما فيها مستوى مؤشر S&P 500 المعلن، فتستبعدها. وفي يونيو 2026، أضاف التوزيع 0.25% إلى عائد SPY الشهري، وهو الفارق بين عائده السعري وعائده الكلي.

هل يُحسب العائد الشهري لمحفظتي الشخصية بالطريقة نفسها؟

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


كل رقم أعلاه هو استعلام مخزّن ومُدار بالإصدارات على بيانات التداول الفعلية. وسّع SQL لأي لوحة، أو قِس عائد أي ticker لشهر معين وفق أي أسلوب على منصة Strasmore.

#returns#conventions#توزيعات الأرباح#splits#education