🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

所需库与工具:

import numpy as np
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt

练习1:基础离散度量

数据集生成:

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}")

练习2:滚动波动分析

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))
# _____

练习3:投资组合优化

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)

提示与工具:

  1. 滚动计算使用.rolling(window).var().std()
  1. 组合方差公式:σ²ₚ = w₁²σ₁² + w₂²σ₂² + 2w₁w₂Cov₁₂
  1. 对齐不同资产数据:pd.DataFrame({'A': a, 'B': b}).dropna()
  1. 年化波动率转换:日波动率 × √252
  1. 权重优化可能需要解二次方程

完成练习后,建议:

  1. 对比不同时间窗口的波动率特征
  1. 测试不同目标方差下的权重组合
  1. 分析行业间协方差变化规律
  1. 探索极端市场条件下的风险指标变化