<aside> 💡
查看全集:Quantopia量化分析56讲
</aside>
正态分布示例:
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
# 生成正态分布数据
xs = np.linspace(-6, 6, 300)
normal = stats.norm.pdf(xs, loc=0, scale=2) # 均值0,标准差2
plt.plot(xs, normal)
plt.title("正态分布(对称)")
plt.show()
偏度衡量分布的不对称性,公式为:
$$ \text{Skewness} = \frac{1}{n} \sum_{i=1}^n \left( \frac{X_i - \mu}{\sigma} \right)^3 $$
其中 μ为均值,σ为标准差。
偏态分布示例:
# 生成偏态数据
xs2 = np.linspace(0.01, 0.99, 100)
lognormal = stats.lognorm.pdf(xs2, s=0.7)
plt.plot(xs2, lognormal, label='正偏态(右偏)')
plt.plot(xs2, lognormal[::-1], label='负偏态(左偏)')
plt.legend()
plt.title("偏态分布对比")
plt.show()
使用标普500收益率分析偏度:
import yfinance as yf
# 下载标普500历史数据
start = '2012-01-01'
end = '2015-01-01'
data = yf.download('SPY', start=start, end=end)
prices = data['Close']
returns = prices.pct_change().dropna()
# 计算偏度、均值、中位数
from scipy import stats
print(f"偏度: {stats.skew(returns):.4f}")
print(f"均值: {returns.mean():.6f}")
print(f"中位数: {returns.median():.6f}")
# 绘制收益率直方图
plt.hist(returns, bins=30)
plt.title("标普500收益率分布")
plt.show()