跳到主内容
研究工具量化研究工具与数据基础 · 第1–5讲3/5 · 配套练习模块导览 →
练习

第3讲:NumPy入门 (Introduction to NumPy) · 练习

创建并切片价格数组,计算多资产组合收益与统计量,再用矩阵运算检查权重、维度和结果形状。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

数据获取基础#

1.1 创建股价收益率数组#

code
import yfinance as yf
import numpy as np

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

请完成:

  1. 将收盘价序列转换为numpy数组

  2. 计算每日收益率(今日收盘/昨日收盘 - 1)

  3. 找出收益率最大的三个交易日

1.2 多维数组操作#

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

请完成:

  1. 提取矩阵第二列所有数据

  2. 计算每只股票的年平均收盘价

  3. 找出矩阵中数值大于300的所有元素

金融统计分析#

2.1 投资组合收益率计算#

code
# 生成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. 计算等权重组合的日平均收益率

  2. 计算加权组合的累计收益率

  3. 比较两种权重配置的收益波动差异

2.2 协方差矩阵应用#

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

请完成:

  1. 计算三者的协方差矩阵

  2. 提取苹果与摩根大通的协方差值

  3. 构建等权组合并计算组合波动率

高级数值计算#

3.1 矩阵运算验证#

code
# 生成模拟数据
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. 使用矩阵运算方式计算组合方差

  2. 比较两种计算方式的数值差异

  3. 解释为什么会出现微小误差

3.2 缺失值处理策略#

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

请完成:

  1. 实现三种不同的缺失值填充策略

  2. 比较填充前后的统计量变化

  3. 分析不同填充方法对波动率计算的影响

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。