所需库与工具:
import numpy as np
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
数据集生成:
np.random.seed(42)
X = np.random.randint(100, size=100)
print("样本数据前10项:", X[:10])
1a 极差计算
计算随机数组X的极差:
# 你的代码写在此处
# range_X = _____
# print(f"极差: {range_X}")
1b 平均绝对偏差
计算X的平均绝对偏差:
mu = _____
abs_dev = _____
MAD = _____
# print(f"平均绝对偏差: {MAD:.2f}")
1c 方差与标准差
计算样本方差和总体标准差:
variance = _____ # 样本方差
std_dev = _____ # 总体标准差
# print(f"方差: {variance:.2f}")
# print(f"标准差: {std_dev:.2f}")
1d 半方差分析
计算低于均值的半方差:
lows = _____
semivar = _____
# print(f"半方差: {semivar:.2f}")
# print(f"半标准差: {np.sqrt(semivar):.2f}")
1e 目标半方差(B=60)
计算低于目标值60的半方差:
B = 60
lows_B = _____
semivar_B = _____ if len(lows_B)>0 else 0
# print(f"目标半方差: {semivar_B:.2f}")
2a 30日滚动方差
分析AT&T股价的波动聚集效应:
att = yf.download('T', start='2016-01-01', end='2017-01-01')['Open']
# 计算滚动方差
rolling_var = _____
# plt.plot(rolling_var)
# plt.title('30日滚动方差')
2b 15日滚动标准差
比较不同窗口的波动率:
rolling_std = _____
# 可视化代码
# plt.figure(figsize=(10,5))
# _____
3a 协方差计算
获取苹果和金融ETF数据:
aapl = yf.download('AAPL', start='2016-01-01', end='2017-01-01')['Open']
xlf = yf.download('XLF', start='2016-01-01', end='2017-01-01')['Open']
# 对齐数据日期
combined = pd.DataFrame({'AAPL': aapl, 'XLF': xlf}).dropna()
cov_matrix = _____
cov = _____
3b 组合权重优化
求解使组合方差为50的权重配置:
v_aapl = _____
v_xlf = _____
# 权重方程组求解
# (w1^2)*v_aapl + ((1-w1)^2)*v_xlf + 2*w1*(1-w1)*cov = 50
# 你的代码写在此处
# w1 = _____
# w2 = 1 - w1
# print(f"优化权重: AAPL={w1:.2%}, XLF={w2:.2%}")
4a 波动率锥分析
创建标普500指数不同窗口的波动率分布:
spy = yf.download('SPY', period='max')['Close']
returns = _____
windows = [10, 30, 60, 90]
vol_cones = pd.DataFrame({
f'{w}d': _____
for w in windows
})
# plt.figure(figsize=(10,6))
# _____
4b 协方差矩阵热力图
分析FAANG股票相关性:
tickers = ['META', 'AMZN', 'AAPL', 'NFLX', 'GOOG']
data = yf.download(tickers, period='3y')['Close']
cov_matrix = _____
corr_matrix = _____
# 生成热力图
# import seaborn as sns
# sns.heatmap(_____, annot=True)
提示与工具:
.rolling(window).var()
和.std()
pd.DataFrame({'A': a, 'B': b}).dropna()
完成练习后,建议: