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

练习

单变量收益率回归分析

问题

使用yfinance获取特斯拉(TSLA)与纳斯达克指数(^IXIC)2022年全年的日频数据,完成以下任务:

  1. 计算两者的对数收益率(使用np.log(close).diff()
  1. 以纳斯达克收益率为自变量、TSLA收益率为因变量建立单变量线性回归
  1. 输出回归结果的R平方与系数显著性标记(p-value)
  1. 根据系数解释市场波动对个股的影响程度

Python答题框架

import yfinance as yf
import numpy as np
import statsmodels.api as sm

# 数据获取
start = '2022-01-01'
end = '2022-12-31'
tsla = yf.download('TSLA', start=start, end=end)['Close']
ixic = yf.download('^IXIC', start=start, end=end)['Close']

# 收益率计算
df = (...实现数据合并与缺失值处理...)
df['log_ret_tsla'] = (...实现对数收益率计算...)
df['log_ret_ixic'] = (...)

# 模型构建
X = (...添加常数项...)
model = (...使用sm.OLS拟合...)
print(...输出摘要...)

多因子模型与共线性诊断

问题

在6.1题基础上增加科技行业ETF(XLK)作为第二个因子:

  1. 下载XLK同期数据并计算对数收益率
  1. 建立包含NASDAQ和XLK的双因子回归模型
  1. 比较单因子/双因子模型的调整R平方变化
  1. 计算方差膨胀因子(VIF)并诊断多重共线性

Python答题框架

from statsmodels.stats.outliers_influence import variance_inflation_factor

# 新增数据获取
xlk = yf.download(...)[...]

# 合并数据集
df_full = (...合并TSLA/IXIC/XLK数据...)

# 多因子回归
X_multi = (...包含两个因子和常数项...)
multi_model = (...)
print(...输出双因子模型摘要...)

# VIF计算
vif_df = pd.DataFrame()
vif_df["features"] = (...提取特征列名称...)
vif_df["VIF"] = [(...计算各特征VIF值...)]
print(vif_df)

数据示例说明

所有数据均通过yfinance实时获取,包含以下字段示例:

DateTSLA_CloseIXIC_CloseXLK_Close
2022-01-03352.2615622.67164.32
2022-01-04362.1215123.45162.89
............

收益率计算后数据示例:

Datelog_ret_tslalog_ret_ixiclog_ret_xlk
2022-01-040.0278-0.0321-0.0087
2022-01-05-0.01350.01870.0112
提示:计算VIF时需先移除常数项列,建议使用循环计算各特征VIF值