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