σμ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›الوحدة 3 · الاحتمالات ومحاكاة مونت كارلو›الموضوع 3.6·~45 دمتوسط

التقلب

الموضع في المسارالوحدة 3 من 11 · الموضوع 6 من 12
3.6 التقلب
—درجة المختبر— / 100إجمالي XP—التتابع—

المخاطر في رقم واحد

التقلب هو الانحراف المعياري للعوائد، يُذكر سنويًا لتتيسر مقارنة الأصول: نحو 15 إلى 20% لمؤشر أسهم و30 إلى 60% لسهم منفرد وقرب 0 للنقد. وهو يحدد أحجام المراكز ويسعّر الخيارات ويضع حدود المخاطر. وأبسط تقدير هو التقلب المحقق على نافذة: الانحراف المعياري العيّني للعوائد مضروبًا في sqrt(الفترات في السنة). وهو يعامل كل يوم في النافذة بالتساوي، وهذه قوته (ثابت) وضعفه (بطيء) معًا.

import math
import numpy as np

# Eight quiet days, one -3% shock, three more days
returns = np.array([0.004, -0.002, 0.001, 0.003, -0.004, 0.002, 0.006, -0.001, -0.030, 0.004, 0.002, -0.003])

print(round(returns[:8].std(ddof=1) * math.sqrt(252), 4))    # 0.0526   before the shock: 5.3% a year
print(round(returns.std(ddof=1) * math.sqrt(252), 4))        # 0.1505   with the shock: 15.1% a year

ردّ فعل أسرع: EWMA

التقلب يتجمع: فترات الهدوء وفترات العاصفة تدوم كلٌّ منها حينًا، فصدمة الأمس تقول عن الغد أكثر من يوم هادئ قبل شهر. يحدّث المتوسط المتحرك الأسي (EWMA، الذي اشتهر بـ RiskMetrics) التباين كل يوم: variance_t = lam * variance_(t-1) + (1 - lam) * return_t². ومع lam = 0.94 يحمل أحدث عائد 6% من الوزن وتتلاشى القديمة هندسيًا. فيقفز التقدير عند الصدمة ثم يتناقص تدريجيًا بدل أن يبقى مرتفعًا حتى تغادر الصدمة النافذة ثم يهبط دفعة واحدة.

lam = 0.94
variance = np.empty(len(returns))
variance[0] = returns[0] ** 2
for t in range(1, len(returns)):
    variance[t] = lam * variance[t - 1] + (1 - lam) * returns[t] ** 2    # the recursion needs the previous value

ewma = np.sqrt(variance)
print(ewma.round(5).tolist())
# [0.004, 0.00391, 0.0038, 0.00375, 0.00377, 0.00369, 0.00387, 0.00376, 0.0082, 0.00801, 0.00778, 0.00758]
#                                                                       ^ the shock doubles the estimate, then it fades
print(round(ewma[-1] * math.sqrt(252), 4))     # 0.1204   today's annualised estimate

استخدام المدى واستهداف تقلب

تتجاهل أسعار الإغلاق ما حدث خلال اليوم. أما أعلى سعر وأدنى سعر في اليوم فيحملان معلومات أكثر: مقدّر باركنسون sqrt(mean(ln(high/low)²) / (4 ln 2)) أكفأ بعدة أضعاف من التقدير من إغلاق إلى إغلاق، أي أنه يبلغ الدقة نفسها بأيام أقل بكثير (ويفترض غياب فجوات كبيرة بين الأيام). ومن الاستخدامات العملية لأي تقدير للتقلب استهداف التقلب: إن أردت مخاطر 10% وكان التقلب المحقق 15% فاحتفظ بـ 10 / 15 = 0.67 من المركز. فتنكمش الرافعة في العاصفة وتكبر في الهدوء.

high = np.array([101.5, 102.0, 103.2, 102.8, 104.0])
low = np.array([99.8, 100.9, 101.7, 101.1, 102.4])
parkinson = math.sqrt(np.mean(np.log(high / low) ** 2) / (4 * math.log(2)))
print(round(parkinson, 5))                      # 0.00905   per-day volatility from the daily ranges

target = 0.10
realized = returns.std(ddof=1) * math.sqrt(252)
print(round(target / realized, 3))              # 0.664   hold two thirds of the position to run at 10% risk
# Close-to-close versus range: the same five days
close = np.array([100.0, 101.2, 102.5, 101.9, 103.4])
print(round(float(np.diff(np.log(close)).std(ddof=1)), 5))     # 0.00955   from the closes only
print(round(parkinson, 5))                                      # 0.00905   from the high-low ranges of the same days
التقلب ليس اتجاهًا، وهو يتحركيعامل التقلب يوم +3% ويوم -3% بالتساوي، لكن المستثمرين لا يخشون إلا الثاني. وهو ليس ثابتًا أيضًا: كل تقدير يتوقف على نافذته أو تلاشيه، وافتراض 252 يوم تداول اصطلاح. اذكر المقدّر والنافذة وطريقة التحويل السنوي كلما ذكرت تقلبًا.
  • التقلب المحقق: الانحراف المعياري العيّني في sqrt(الفترات في السنة)؛ ثابت لكنه بطيء الاستجابة.
  • EWMA: variance_t = lam * variance_(t-1) + (1 - lam) * return_t²؛ الصدمات الحديثة أثقل وتتلاشى هندسيًا.
  • يستخدم باركنسون المدى بين أعلى وأدنى سعر في اليوم؛ ويضبط استهداف التقلب المركز بـ الهدف / المحقق.

التالي: نسبة شارب، المكافأة لكل وحدة مخاطرة، وإلى أي حد نثق بها.

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

  • قِس التقلب السنوي باستخدام realized_volatility25 نقطة
  • اجعل الصدمات الحديثة أثقل باستخدام ewma_volatility25 نقطة
  • استخدم المدى اليومي باستخدام parkinson_volatility25 نقطة
  • حدّد حجم المركز وفق ميزانية المخاطر باستخدام volatility_target_leverage25 نقطة
المستكشف · lab-59-1
▾ lab-59-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-59-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

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

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

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

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

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

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