σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyالمسارات
Ctrl K
AO
+1.2k متعلّم
تسجيل الدخولانضم ↗
المسارات
AO
+1.2k متعلّم
تسجيل الدخول
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
مسار Python›الوحدة 4 · تسعير الدخل الثابت والخيارات›الموضوع 4.1·~40 دمتوسط

القيمة الحالية والخصم

الموضع في المسارالوحدة 4 من 11 · الموضوع 1 من 16
4.1 القيمة الحالية والخصم
—درجة المختبر— / 100إجمالي XP—التتابع—

يورو غدًا ليس يورو اليوم

إن استطعت كسب 5% سنويًا فإن 100 اليوم تصبح 105 بعد سنة. إذن 105 موعودة بعد سنة لا تساوي اليوم إلا 100. هذا هو الخصم: تحويل مبلغ مستقبلي إلى قيمته الحالية بإزالة الفائدة التي كان يمكن أن يكسبها. لمعدل سنوي r وt سنة يكون PV = cash / (1 + r) ** t. وهكذا يُسعَّر كل سند وقرض ودفعة سنوية ومعاش، وهذا يجعله أساس الدخل الثابت وتسعير الخيارات في الموضوعات التالية.

PV = cash / (1 + r)^t FV = PV * (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.4
قل دائمًا أي معدل تقصد5% سنويًا و5% مركبة شهريًا و5% مستمرة ثلاثة معدلات مختلفة: تنقل 100 إلى 105.00 و105.12 و105.13 في سنة. وخلطها دون إعلان مصدر كلاسيكي لأخطاء التسعير. اذكر اصطلاح المراكبة، وأبقِ الزمن بالسنوات، وحوّل بـ ln(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 نقطة
المستكشف · lab-66-1
▾ lab-66-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-66-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-66-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub