问题:
使用yfinance获取苹果公司(AAPL)与标普500指数(SPY)2023年的日频数据,完成以下任务:
Python答题框架:
import yfinance as yf
import numpy as np
import statsmodels.api as sm
import statsmodels.stats.diagnostic as smd
# 数据获取
start = '2023-01-01'
end = '2023-12-31'
aapl = yf.download(...)[...]
spy = yf.download(...)[...]
# 收益率计算与合并
df = (...合并数据...)
df['log_ret_aapl'] = (...)
df['log_ret_spy'] = (...)
# 回归建模
X = sm.add_constant(df['log_ret_spy'])
model = sm.OLS(...).fit()
print(...模型摘要...)
# 残差诊断图
(...绘制残差vs拟合值...)
# 异方差检验
bp_test = (...)
if bp_test[1] < 0.05:
# 应用对数变换(示例)
df['transformed_y'] = np.log(...)
(...重新建模...)
问题:
使用特斯拉(TSLA)和标普500指数(SPY)2018-2022年数据:
Python答题框架:
from statsmodels.stats.diagnostic import acorr_ljungbox
# 获取多年数据
full_data = yf.download(...)
# 分年度计算β系数
years = [...]
beta_values = []
for year in years:
year_data = (...)
(...回归计算并记录beta...)
# 自相关检验
model_2020 = (...)
resid_2020 = (...)
lb_test = (...)
print(f"自相关检验P值:{lb_test[1]}")
# 处理自相关(示例:添加滞后项)
df_lag = (...创建滞后特征...)
X_lag = sm.add_constant(...)
model_lag = (...)
数据示例说明:
收益率数据格式示例(年维度):
年份 | Beta系数 | R-squared |
2018 | 1.32 | 0.65 |
2019 | 1.45 | 0.71 |
2020 | 2.01 | 0.82 |
自相关检验输出示例:
Ljung-Box检验P值:0.023 (lag=5)
存在显著自相关
提示:处理自相关时可引入ARIMA模型或添加滞后项,但需注意自由度损失
通过这两道习题,学生可以实践残差诊断、异方差处理、β稳定性分析及自相关检验,巩固回归模型验证的关键技能。