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

الالتواء والتفرطح

الموضع في المسارالوحدة 3 من 11 · الموضوع 2 من 12
3.2 الالتواء والتفرطح
—درجة المختبر— / 100إجمالي XP—التتابع—

ما وراء المتوسط والتباين

قد يكون لسلسلتي عوائد المتوسط والتقلب نفساهما ويختلف احتفاظك بهما اختلافًا كبيرًا. إحداهما ترتفع ببطء وتهبط 6% في يوم بين حين وآخر، والأخرى متماثلة وهادئة. المتوسط والتباين هما أول عزمين لتوزيع. والعزم المركزي من الرتبة k هو متوسط (x - mean) ** k. ويصف العزمان 3 و4 الشكل: يبيّن الالتواء أي الطرفين أطول، ويبيّن التفرطح مدى ثقل الأطراف.

m_k = mean((x - mean)^k) skewness = m3 / m2^1.5 excess kurtosis = m4 / m2^2 - 3
import numpy as np

def central_moment(x, k):
    return float(np.mean((x - x.mean()) ** k))

# Calm days of about +1%, and one crash of -6%
returns = np.array([0.010, 0.012, 0.008, 0.011, 0.009, 0.010, 0.012, -0.060, 0.010, 0.009])

print(round(central_moment(returns, 2), 8))     # 0.00044389   the variance with ddof=0
print(round(central_moment(returns, 3), 10))    # -2.47823e-05   odd powers keep the sign: the crash dominates
print(round(central_moment(returns, 4), 12))    # 1.587946e-06   even powers are always positive

الالتواء: أي الطرفين أطول

يحتفظ التكعيب بإشارة كل انحراف ويجعل الكبيرة منها أثقل بكثير، فيهيمن على العزم الثالث أشد القيم تطرفًا. والقسمة على m2 ** 1.5 تزيل الوحدات وتعطي الالتواء: 0 للتوزيع المتماثل، وسالب حين يكون الطرف الطويل على اليسار (خسائر كبيرة نادرة)، وموجب حين يكون على اليمين (مكاسب كبيرة نادرة). وتميل مؤشرات الأسهم إلى التواء سالب: صعود بطيء وهبوط مفاجئ. والتواء عيّنة من 100000 قيمة طبيعية نحو 0.

m2 = central_moment(returns, 2)
m3 = central_moment(returns, 3)
print(round(m3 / m2 ** 1.5, 3))     # -2.65   strongly negative: one big loss among calm gains

mirror = -returns                    # flip every return: the long tail moves to the right
print(round(central_moment(mirror, 3) / central_moment(mirror, 2) ** 1.5, 3))   # 2.65

التفرطح: ثقل الأطراف

الأس الرابع يجعل القيم المتطرفة ثقيلة جدًا، فينمو m4 / m2 ** 2 مع الأطراف. وهو يساوي 3 للتوزيع الطبيعي، ولهذا نذكر التفرطح الزائد m4 / m2 ** 2 - 3: يساوي 0 للطبيعي، وموجب للأطراف الثقيلة (تقع الأيام المتطرفة أكثر مما يتوقع الجرس)، وسالب للأطراف الرقيقة (أرقّ ما يمكن، ذروتان متساويتان، يعطي -2). وللعوائد اليومية لمعظم الأصول تفرطح زائد موجب بوضوح، غالبًا 5 أو أكثر. ولا يتغير الإحصاءان عند إعادة قياس العوائد أو إزاحتها، فهما يصفان الشكل فقط.

m4 = central_moment(returns, 4)
print(round(m4 / m2 ** 2 - 3, 3))   # 5.059   fat tails: one crash dominates the fourth moment

calm = np.array([-0.02, -0.01, -0.005, 0.0, 0.005, 0.01, 0.02, -0.015, 0.015, 0.0])
c2, c3, c4 = (central_moment(calm, k) for k in (2, 3, 4))
print(round(c3 / c2 ** 1.5, 3), round(c4 / c2 ** 2 - 3, 3))   # 0.0 -1.033   symmetric, slightly thin tails
# Shape does not depend on scale or shift: multiply the returns by 3 and add 1
rescaled = returns * 3 + 1
print(round(central_moment(rescaled, 3) / central_moment(rescaled, 2) ** 1.5, 3))   # -2.65
print(round(central_moment(rescaled, 4) / central_moment(rescaled, 2) ** 2 - 3, 3))  # 5.059   the same two numbers
انهيار واحد قد يغيّر كل شيءيحكم الالتواء والتفرطح القليل من أشد القيم تطرفًا، فهما أقل ثباتًا بكثير من المتوسط أو التقلب: أضف يومًا أو احذفه فيقفزان. احسبهما على بيانات كافية (مئات الأيام على الأقل) وانظر إلى المدرّج أيضًا قبل أن تثق برقم.
  • العزم المركزي من الرتبة k هو mean((x - mean) ** k): تعطي العزوم 2 و3 و4 التباين والالتواء والتفرطح.
  • الالتواء m3 / m2 ** 1.5: السالب يعني طرفًا أيسر طويلًا (خسائر كبيرة نادرة)؛ والتفرطح الزائد m4 / m2 ** 2 - 3 يساوي 0 للطبيعي.
  • التفرطح الزائد الموجب يعني أطرافًا ثقيلة؛ والإحصاءان يحكمهما بضعة أيام متطرفة فيحتاجان إلى بيانات كثيرة.

التالي: الأطراف الثقيلة واختبارات الطبيعية، للتحقق رسميًا من أن العوائد تتبع منحنى الجرس.

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

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

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

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

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

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

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

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