数据获取基础#
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']请完成:
-
将收盘价序列转换为numpy数组
-
计算每日收益率(今日收盘/昨日收盘 - 1)
-
找出收益率最大的三个交易日
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请完成:
-
提取矩阵第二列所有数据
-
计算每只股票的年平均收盘价
-
找出矩阵中数值大于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()请完成:
-
计算等权重组合的日平均收益率
-
计算加权组合的累计收益率
-
比较两种权重配置的收益波动差异
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()请完成:
-
计算三者的协方差矩阵
-
提取苹果与摩根大通的协方差值
-
构建等权组合并计算组合波动率
高级数值计算#
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)请完成:
-
使用矩阵运算方式计算组合方差
-
比较两种计算方式的数值差异
-
解释为什么会出现微小误差
3.2 缺失值处理策略#
code
# 创建包含缺失值的收益数据
returns = np.array([0.01, np.nan, 0.02, -0.03, np.nan, 0.015])请完成:
-
实现三种不同的缺失值填充策略
-
比较填充前后的统计量变化
-
分析不同填充方法对波动率计算的影响