يورو غدًا ليس يورو اليوم
إن استطعت كسب 5% سنويًا فإن 100 اليوم تصبح 105 بعد سنة. إذن 105 موعودة بعد سنة لا تساوي اليوم إلا 100. هذا هو الخصم: تحويل مبلغ مستقبلي إلى قيمته الحالية بإزالة الفائدة التي كان يمكن أن يكسبها. لمعدل سنوي r وt سنة يكون PV = cash / (1 + r) ** t. وهكذا يُسعَّر كل سند وقرض ودفعة سنوية ومعاش، وهذا يجعله أساس الدخل الثابت وتسعير الخيارات في الموضوعات التالية.
def present_value(cash, rate, years):
return cash / (1 + rate) ** years
print(round(present_value(100, 0.05, 3), 4)) # 86.3838 100 received in 3 years, worth 86.38 today
print(round(present_value(100, 0.05, 0), 4)) # 100.0 no waiting, no discount
print(round(present_value(100, 0.10, 3), 4)) # 75.1315 a higher rate discounts harderصافي القيمة الحالية
تدفع الاستثمارات الحقيقية على شكل تدفقات: يدفع السند قسائم وأصلًا في النهاية، ويكلّف المشروع مالًا الآن ويعيده على سنوات. يخصم صافي القيمة الحالية (NPV) كل تدفق بحسب وقته ويجمعها. اكتب التدفقات والأول عند الزمن 0 فتكون الأزمنة 0, 1, 2, ... (np.arange(len(flows))) واخصم المصفوفة كلها باستدعاء واحد. صافي قيمة حالية موجب يعني أن الاستثمار يربح أكثر من معدل الخصم؛ وسالب يعني أقل. وكلما ارتفع المعدل انخفض الصافي.
import numpy as np
flows = np.array([-100.0, 30.0, 40.0, 50.0]) # pay 100 now, receive 30, 40 and 50 over the next three years
times = np.arange(len(flows)) # 0, 1, 2, 3
for rate in (0.08, 0.12, 0.20):
print(rate, round((flows / (1 + rate) ** times).sum(), 3))
# 0.08 1.763 positive: worth doing at 8%
# 0.12 -5.738 negative: not at 12%
# 0.2 -18.287 the higher the rate, the lower the NPVالمراكمة إلى الأمام والمعدلات المستمرة
الذهاب إلى الأمام هو الصورة المرآتية: FV = PV * (1 + r) ** t. وإن دُفعت الفائدة m مرات في السنة بالمعدل المعلن r فكل فترة تكسب r / m وفيه m * t فترة: FV = PV * (1 + r / m) ** (m * t). والدفع الأكثر تكرارًا ينمو أكثر قليلًا: 100 بنسبة 5% تصبح 105.00 سنويًا و105.12 شهريًا و105.13 يوميًا. وفي حد الدفع المستمر يكون عامل النمو exp(r * t) وعامل الخصم exp(-r * t)، وهي الصيغة المستخدمة في تسعير الخيارات لأنها تتضاعف جيدًا عبر الزمن.
import math
for m in (1, 2, 12, 365):
print(m, round(100 * (1 + 0.05 / m) ** (m * 1), 4))
# 1 105.0
# 2 105.0625
# 12 105.1162
# 365 105.1267
print(round(100 * math.exp(0.05), 4)) # 105.1271 continuous compounding, the limit
print(round(math.exp(-0.05 * 3), 5)) # 0.86071 the continuous discount factor for 3 years
print(round(100 * (1 + 0.05 / 12) ** (12 * 3), 3)) # 116.147 100 grows for 3 years with monthly interest# How long to double the money at 5%? Exactly ln 2 / ln 1.05, roughly 72 / 5
print(round(math.log(2) / math.log(1.05), 2), round(72 / 5, 1)) # 14.21 14.4ln(1 + r) أو exp(r) - 1 عند الانتقال بين الاصطلاحات.PV = cash / (1 + r) ** t: المال المتأخر أقل قيمة؛ والمعدل الأعلى يخصم أكثر.- NPV = مجموع التدفقات المخصومة والأول عند الزمن 0:
(flows / (1 + r) ** np.arange(n)).sum()؛ الموجب يعني مجديًا. FV = PV * (1 + r / m) ** (m * t)؛ المستمر: النموexp(r * t)والخصمexp(-r * t)؛ اذكر الاصطلاح دائمًا.
التالي: أسعار السندات، خصم سلسلة قسائم وأصل نهائي بمعدل السوق.
المختبر: ما الذي يُقيَّم
- اجلب دفعة مستقبلية إلى اليوم باستخدام
present_value25 نقطة - قيّم سلسلة دفعات باستخدام
npv25 نقطة - راكم الفائدة إلى الأمام باستخدام
future_value25 نقطة - اخصم باستمرار باستخدام
continuous_discount_factor25 نقطة