遗漏变量偏差验证#
问题:
使用yfinance获取阿里巴巴(BABA)与京东(JD)2018-2020年日频数据,完成以下任务:
-
直接建立BABA收益率对JD收益率的单变量回归
-
添加恒生指数(^HSI)收益率作为控制变量重新回归
-
比较两次回归中JD系数的变化幅度与经济意义
-
通过VIF值判断新增变量是否引发多重共线性
Python答题框架:
code
import yfinance as yf
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
# 数据获取
start = '2018-01-01'
end = '2020-12-31'
baba = yf.download('BABA', start=start, end=end)['Adj Close']
jd = yf.download('JD', start=start, end=end)['Adj Close']
hsi = yf.download('^HSI', start=start, end=end)['Adj Close']
# 收益率计算与合并
...
returns = (...)
# 单变量回归
X_single = (...)
model_single = (...)
print("单变量回归系数:", model_single.params[1])
# 多变量回归
X_multi = (...)
model_multi = (...)
print("控制市场后的系数:", model_multi.params[2])
# VIF计算
vif_data = (...)
print("VIF值表:\n", vif_data)时间序列平稳性检验#
问题:
选取苹果(AAPL)和谷歌(GOOGL)2015-2020年月频数据:
-
对原始价格序列进行ADF检验判断平稳性
-
对一阶差分序列再次检验
-
建立协整关系模型并输出检验结果
-
若存在协整,构建误差修正模型(ECM)
Python答题框架:
code
from statsmodels.tsa.stattools import adfuller, coint
from statsmodels.tsa.vector_ar.vecm import VECM
# 获取月频数据
data = yf.download(['AAPL','GOOGL'],
start='2015-01-01',
end='2020-12-31',
interval='1mo')['Adj Close']
# 原始序列ADF检验
for stock in data.columns:
result = (...)
print(f"{stock} ADF p值: {result[1]:.4f}")
# 差分序列检验
diff_data = (...)
for stock in diff_data.columns:
(...)
# 协整检验
score, pvalue, _ = (...)
print(f"协整检验p值: {pvalue:.4f}")
# ECM模型构建(若存在协整)
model_ecm = (...)
print(...)数据示例说明:
ADF检验输出示例:
code
AAPL原始序列p值: 0.8562
GOOGL原始序列p值: 0.9023
AAPL差分后p值: 0.0001
GOOGL差分后p值: 0.0001
协整检验p值: 0.0321此结果表明两股价格存在长期均衡关系。