σμ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.10·~45 دمتوسط

غاما

الموضع في المسارالوحدة 4 من 11 · الموضوع 10 من 16
4.10 غاما
—درجة المختبر— / 100إجمالي XP—التتابع—

دلتا ليست ثابتة

التحوط بدلتا دقيق للحظة فقط. ما إن يتحرك السهم تتغير دلتا الخيار فيصير التحوط خاطئًا. غاما هي معدل تغير دلتا مع السهم: gamma = d(delta)/dS، المشتقة الثانية للسعر. وللكول أو البوت الطويل غاما موجبة. وفي بلاك-شولز تساوي pdf(d1) / (S * sigma * sqrt(T))، وهي نفسها للكول والبوت، حيث pdf كثافة الجرس. وغاما الكبيرة تعني أن التحوط يتقادم بسرعة ويجب تعديله كثيرًا.

import math

def norm_pdf(x):
    return math.exp(-0.5 * x * x) / math.sqrt(2 * math.pi)

def d1(spot, strike, rate, sigma, t):
    return (math.log(spot / strike) + (rate + 0.5 * sigma ** 2) * t) / (sigma * math.sqrt(t))

def gamma(spot, strike, rate, sigma, t):
    return norm_pdf(d1(spot, strike, rate, sigma, t)) / (spot * sigma * math.sqrt(t))

for spot in (80, 90, 100, 110, 120):
    print(spot, round(gamma(spot, 100, 0.05, 0.2, 1), 5))
# 80 0.0186
# 90 0.02182
# 100 0.01876
# 110 0.01289
# 120 0.0075      gamma peaks near the strike and fades far from it

تكبر غاما كلما اقترب الاستحقاق

بالنسبة لخيار عند النقود ترتفع غاما بحدة كلما اقترب الاستحقاق: 0.019 قبل سنة و0.039 قبل ثلاثة أشهر و0.141 قبل أسبوع. وقرب الاستحقاق يكاد الخيار يكون رمية عملة بين انعدام القيمة وقيمة الحركة كاملة، فتنتقل دلتا من 0 إلى 1 في مدى سعري ضئيل. ولهذا ينام المتداولون الذين باعوا خيارات قرب الاستحقاق (غاما سالبة) نومًا مضطربًا: يحتاج التحوط إلى تعديل دائم والقفزة مؤلمة. ويمكن تقدير غاما لأي نموذج بـالفرق الثاني (f(S + h) - 2 f(S) + f(S - h)) / h²، وهو دقيق للقطع المكافئ.

for t in (1, 0.25, 0.02):
    print(t, round(gamma(100, 100, 0.05, 0.2, t), 5))
# 1 0.01876
# 0.25 0.03929
# 0.02 0.14087      a week before expiry the at-the-money gamma is 7 times larger

def numerical_gamma(price_function, spot, bump):
    return (price_function(spot + bump) - 2 * price_function(spot) + price_function(spot - bump)) / bump ** 2

price = lambda s: bs_call(s, 100, 0.05, 0.2, 1)               # bs_call as in the previous topic
print(round(numerical_gamma(price, 100, 0.5), 5))             # 0.01876   the same as the formula

ما تربحه غاما

لأن دلتا تتغير مع السهم يربح الخيار الطويل أكثر مما تتنبأ به دلتا وحدها أيًّا كان اتجاه حركة السهم. ارتفاع 5 دولارات يرفع دلتا من 0.637 إلى 0.637 + 0.01876 * 5 = 0.731. وربح الحركة هو delta * الحركة + 0.5 * gamma * الحركة²: والحد الثاني هو ربح غاما للخيار الطويل (وخسارة للقصير). ينمو مع مربع الحركة، فالحركات الكبيرة في أي اتجاه تخدم الجانب الطويل غاما. وهذا الربح ليس مجانيًا: يدفعه الحامل عبر علاوة الخيار وتآكله الزمني.

g = gamma(100, 100, 0.05, 0.2, 1)
delta = call_delta(100, 100, 0.05, 0.2, 1)                     # as in the delta topic
print(round(delta, 4), round(delta + g * 5, 4))                 # 0.6368 0.7306   the delta after a $5 rise
print(round(call_delta(105, 100, 0.05, 0.2, 1), 4))             # 0.7237          the exact delta at 105 (gamma is a first-order guide)

move = 5
true_gain = bs_call(105, 100, 0.05, 0.2, 1) - bs_call(100, 100, 0.05, 0.2, 1)
print(round(true_gain - delta * move, 4), round(0.5 * g * move ** 2, 4))   # 0.2232 0.2345   what delta missed, and what gamma explains
# Dollar gamma: how many dollars of stock the delta hedge changes for a 1% move of the stock at 100
print(round(g * 100 ** 2 / 100, 3))      # 1.876
امتلاك غاما طويلة ليس مجانيًالربح غاما ثمن: التآكل الزمني للخيار (ثيتا). فالخيار الذي تحتفظ به بينما لا يذهب السهم إلى أي مكان يخسر قيمة كل يوم. وكون غاما الطويلة تجدي أو لا يتوقف على ما إذا كان السهم يتحرك فعلًا بقدر التقلب المستخدم لتسعير الخيار؛ والتوازن بين غاما وثيتا هو المقايضة في قلب تداول الخيارات.
  • غاما = pdf(d1) / (S * sigma * sqrt(T))، المشتقة الثانية للسعر؛ نفسها للكول والبوت، وأكبر قرب سعر التنفيذ والاستحقاق.
  • غاما العددية (f(S + h) - 2 f(S) + f(S - h)) / h²؛ دلتا بعد حركة delta + gamma * الحركة.
  • تحقق الحركة delta * الحركة + 0.5 * gamma * الحركة²: يربح الخيار الطويل من الحركات الكبيرة في الاتجاهين ويدفع ثمنه تآكلًا زمنيًا.

التالي: فيغا، الحساسية للتقلب، المُدخل الذي لا يستطيع أحد ملاحظته مباشرة.

المختبر: ما الذي يُقيَّم

  • قِس سرعة تغير دلتا باستخدام gamma25 نقطة
  • قِس تقوّس أي سعر باستخدام numerical_gamma25 نقطة
  • حدّث دلتا بعد حركة باستخدام delta_after_move25 نقطة
  • قدّر فائدة التقوّس باستخدام gamma_pnl25 نقطة
المستكشف · lab-75-1
▾ lab-75-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-75-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

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

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

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

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

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

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