حاسبة CAGR
النمو من 100 إلى 200 خلال 5 سنوات يعادل معدل نمو سنوي مركّب قدره 14.8698 بالمئة، وهو الوتيرة الثابتة وراء تضاعف القيمة. أدخل البداية والنهاية والسنوات، أو اعكس المعادلة لإيجاد القيمة النهائية أو الابتدائية أو المدة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة الابتدائية
- 100
- القيمة النهائية
- 200
- السنوات
- 5
- CAGR
- 0.148698
- CAGR (%)
- 14.8698
- احسب
- معدل النمو السنوي المركب
معدل النمو السنوي المركّب مجانًا
ما الذي يقيسه معدل النمو السنوي المركّب
يحوّل معدل النمو السنوي المركّب قيمة بداية وقيمة نهاية وعددًا من السنوات إلى معدل سنوي ثابت واحد. وهو متوسط هندسي لا متوسط بسيط: تُقسم القيمة النهائية على قيمة البداية، ويُرفع الناتج إلى قوة واحد على عدد السنوات، ثم يُطرح واحد. وبضربه في 100 يصبح نسبة مئوية. فالتضاعف في خمس سنوات، من 100 إلى 200، يعطي 14.8698 بالمئة سنويًا، وهي الوتيرة الثابتة التي كانت ستوصل إلى النقطة نفسها لو كان النمو منتظمًا تمامًا.
مقارنة الاستثمارات والمؤشرات عبر الزمن
لأن المعدل يختصر السنوات المتفاوتة في معدل واحد مكافئ، فهو يتيح مقارنة الأصول أو خطوط الإيرادات أو أعداد المستخدمين عبر مدد مختلفة على قدم المساواة. فمحفظة قفزت في عام وتوقفت في الذي يليه، وأخرى نمت بانتظام، لهما المعدل نفسه إذا بدأتا وانتهتا عند القيمتين نفسيهما: الرقم يخبرك أين وصلت لا مدى وعورة الطريق. استخدمه لترتيب الخيارات حسب النمو السنوي، وانظر إلى التطور سنة بسنة على حدة حين يهمك الخطر.
حالات الاستخدام
تحليل عائد الاستثمار
حوّل قيمة محفظة في البداية والنهاية على مدى فترة الاحتفاظ إلى معدل نمو سنوي واحد يمكنك مقارنته عبر الأصول.
الأسئلة الشائعة
ما معدل النمو السنوي المركّب لـ 100 حين تنمو إلى 200 خلال 5 سنوات؟
0.148698 كمعدل، أو 14.8698 بالمئة، مطابقًا لـ (200/100)^(1/5)-1.
هل يمكنني حساب القيمة المستقبلية من معدل النمو؟
نعم. اختر حساب القيمة النهائية وأدخل قيمة البداية والمعدل والسنوات، فتكون النتيجة قيمة البداية مضروبة في واحد زائد المعدل مرفوعًا إلى عدد السنوات. وبالطريقة نفسها تحسب قيمة البداية.
كم سنة أحتاج لبلوغ هدف بمعدل معين؟
اختر حساب السنوات، فتقسم الحاسبة لوغاريتم النهاية على البداية على لوغاريتم واحد زائد المعدل. ويُرفض المعدل الصفري تمامًا، لأنه دون نمو لا يوصلك أي عدد من السنوات إلى الهدف.
هل يمكن أن يكون معدل النمو سالبًا؟
نعم. إذا كانت القيمة النهائية أقل من قيمة البداية، فالنتيجة معدل سالب يصف الانخفاض السنوي. أما المعدل الذي يبلغ سالب 100 بالمئة أو أقل فيُرفض، لأن واحدًا زائد المعدل يجب أن يبقى أكبر من الصفر.
ما دقة النتيجة المعروضة؟
تختار من 0 إلى 8 منازل عشرية، و4 افتراضيًا. ويحتفظ المعدل نفسه بمنزلتين إضافيتين، فتستند النسبة المعروضة بأربع منازل، مثل 14.8698، إلى دقة كافية.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/cagr \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"begin_value":100,"end_value":200,"years":5}'const res = await fetch("https://api.kit.forhosting.com/dev/cagr", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"begin_value": 100,
"end_value": 200,
"years": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/cagr",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"begin_value": 100,
"end_value": 200,
"years": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/cagr", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"begin_value":100,"end_value":200,"years":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"begin_value":100,"end_value":200,"years":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/cagr", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"begin_value": 100,
"end_value": 200,
"years": 5
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cagr",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تحسب معدل النمو السنوي المركّب من begin_value وend_value وyears باستعمال (end/begin)^(1/years)-1، ويمكنها بدلًا من ذلك إيجاد end_value أو begin_value أو years عندما تضبط solve_for وتُمرّر قيمة cagr المعروفة.
صيغة معدل النمو السنوي المركّب
ولأن المعدل وسط هندسي للنمو السنوي لا متوسط بسيط، فإنه يُنعّم بدقّة التغيرات المتفاوتة من سنة إلى أخرى في معدل ثابت مكافئ واحد، وهذا بالضبط ما يجعل CAGR المقياس المعياري لمقارنة الاستثمارات أو المؤشرات على مدى سنوات عدّة. مع القيمة الافتراضية لـ solve_for وهي cagr، تأخذ الأداة begin_value وend_value وyears وتُعيد معدل النمو السنوي المركّب r بوصفه Math.pow(end/begin, 1/years) ناقص 1. وهي تُبلِّغ عنه بصيغتين: cagr، وهو المعدل الخام مقرَّبًا إلى منازلك العشرية زائد منزلتين إضافيتين، وcagr_percent، وهو المعدل نفسه مضروبًا في 100 عند منازلك العشرية. والمثال المحلول ينمّي 100 إلى 200 خلال خمس سنوات فيُعيد cagr قيمته 0.148698 مع cagr_percent قيمته 14.8698، وهو معدل التضاعف المألوف في خمس سنوات. كما تُعيد الاستجابة begin_value وend_value وyears وsolve_for الذي اخترته، فيوثّق كائن واحد الحساب كاملًا.
إعادة الترتيب لأي متغيّر
اضبط solve_for على end_value أو begin_value أو years لتشغيل الصيغة عكسيًّا، مع تمرير cagr بدلًا من الحقل المفقود. ففي حالة end_value تُعيد begin_value مضروبًا في (1+r)^years؛ وفي حالة begin_value تقسم end_value على (1+r)^years؛ وفي حالة years تحسب ln(end/begin) مقسومًا على ln(1+r). والمعدل الذي تُمرّره يُقرأ وفق as_percent، وقيمته الافتراضية true، فيعني cagr قدره 10 عشرة بالمئة (r = 0.10)؛ واضبط as_percent على false لتمرير المعدل مباشرةً بوصفه 0.10. وهذا يتيح لك الإجابة عن أسئلة التوقّع، مثل ما تؤول إليه وديعة 100 بعد خمس سنوات عند معدل معيّن، أو كم سنة يستغرق بلوغ هدف عند معدل معلوم، كل ذلك من نقطة النهاية نفسها. ويحمل كائن الإخراج دائمًا begin_value وend_value وyears والمعدل مكتملةً معًا بصرف النظر عن أيّها أوجدت.
التحقق والتقريب والحالات الحدّية
وحين يشترك معدل في الحساب تحرس الأداة أساس القوة، فترفض أي cagr يكون فيه 1+r صفرًا أو سالبًا، ويرفض حالّ السنوات إضافةً إلى ذلك معدلًا يساوي صفرًا بالضبط لأن القسمة على ln(1) غير معرّفة. تُفحص المدخلات حسب الوضع: يجب أن يكون begin_value عددًا منتهيًا غير صفري، وend_value منتهيًا، وyears منتهيًا وأكبر من صفر، وفي وضع cagr الافتراضي تُرفض قيم البداية أو النهاية السالبة بوصفها غير مدعومة. ومعامل decimals عدد صحيح من 0 إلى 8 (الافتراضي 4)؛ ويُقرَّب حقل cagr الخام عمدًا إلى decimals+2 كي تحتفظ نسبة عند أربع منازل بدقّة كافية في المعدل الكامن.
حالات التكامل
توقّع هدف
اضبط solve_for على end_value أو years لتوقّع رصيد مستقبلي عند معدل مفترض، أو لمعرفة كم يستغرق بلوغ هدف عند CAGR معلوم.
تقارير نمو مؤشرات الأداء
مرّر الإيرادات أو أعداد المستخدمين عبر API للإبلاغ عن نمو سنوي منعَّم في لوحات المعلومات دون حساب الوسط الهندسي يدويًّا.
أسئلة تقنية
هل يمكنني إيجاد قيمة النهاية أو عدد السنوات؟
نعم. اضبط solve_for على end_value أو begin_value أو years ومرّر cagr المعروفة؛ فتشغّل الأداة الصيغة عكسيًّا.
هل يُدخَل cagr كنسبة مئوية أم كقيمة عشرية؟
يعتمد ذلك على as_percent (الافتراضي true): فـ 10 تعني عشرة بالمئة. اضبط as_percent على false لتمرير المعدل الخام مثل 0.10.
هل تُسمح القيم السالبة أو الصفرية؟
لا يمكن أن يكون begin_value صفرًا، ويجب أن تكون years موجبة، ووضع cagr الافتراضي يرفض القيم السالبة بخطأ invalid_input مُصنَّف.
هل أداة المتصفح مجانية؟
نعم، widget مجاني (tier A). ويعمل API برصيد KIT مدفوع مسبقًا يبدأ من $0.002، ولا يُحتسب سوى المهام الناجحة.