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

练习

数据获取基础

1.1 创建股价收益率数组

import yfinance as yf
import numpy as np

# 获取阿里巴巴2023年股价数据
baba = yf.download('BABA', start='2023-01-01', end='2023-12-31')['Close']

请完成:

  1. 将收盘价序列转换为numpy数组
  1. 计算每日收益率(今日收盘/昨日收盘 - 1)
  1. 找出收益率最大的三个交易日

1.2 多维数组操作

# 获取三家科技公司2023年收盘价
tech_stocks = yf.download(['MSFT', 'GOOG', 'META'],
                         start='2023-01-01',
                         end='2023-12-31')['Close']
prices_matrix = tech_stocks.values

请完成:

  1. 提取矩阵第二列所有数据
  1. 计算每只股票的年平均收盘价
  1. 找出矩阵中数值大于300的所有元素

金融统计分析

2.1 投资组合收益率计算

# 生成4只模拟资产100天的收益率
np.random.seed(2023)
returns = np.random.normal(0.001, 0.02, (4, 100))

# 随机生成投资组合权重
weights = np.random.rand(4)
weights /= weights.sum()

请完成:

  1. 计算等权重组合的日平均收益率
  1. 计算加权组合的累计收益率
  1. 比较两种权重配置的收益波动差异

2.2 协方差矩阵应用

# 获取两只股票和标普500指数数据
data = yf.download(['AAPL', 'JPM', '^GSPC'],
                  start='2020-01-01',
                  end='2023-12-31')['Close']
daily_returns = data.pct_change().dropna()

请完成:

  1. 计算三者的协方差矩阵
  1. 提取苹果与摩根大通的协方差值
  1. 构建等权组合并计算组合波动率

高级数值计算

3.1 矩阵运算验证

# 生成模拟数据
n_assets = 5
historical_returns = np.random.normal(0, 0.1, (n_assets, 252))

# 计算传统方式组合方差
weights = np.ones(n_assets)/n_assets
port_var_traditional = np.var(historical_returns.T @ weights)

# 协方差矩阵
cov_mat = np.cov(historical_returns)

请完成:

  1. 使用矩阵运算方式计算组合方差
  1. 比较两种计算方式的数值差异
  1. 解释为什么会出现微小误差

3.2 缺失值处理策略

# 创建包含缺失值的收益数据
returns = np.array([0.01, np.nan, 0.02, -0.03, np.nan, 0.015])

请完成:

  1. 实现三种不同的缺失值填充策略
  1. 比较填充前后的统计量变化
  1. 分析不同填充方法对波动率计算的影响