You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中基于多资产日数据进行OLS回归(整合54个资产对)

解决方法:转成长格式并合并数据

要实现所有资产对的单一OLS回归,核心是把当前的宽格式数据转换为长格式(Tidy Data),再整合为包含所有观测样本的数据集,具体步骤如下(以Python pandas + statsmodels工具链为例):

1. 将每个数据框转为长格式

把df1、df2、df3从「Date列+54个资产对列」的宽结构,转成「Date+PAIR_ID+数值列」的长结构,每个行对应单个资产对的单日观测:

import pandas as pd

# df1作为因变量,数值列命名为y
df1_long = df1.melt(id_vars='Date', var_name='PAIR_ID', value_name='y')
# df2作为第一个自变量,数值列命名为x1
df2_long = df2.melt(id_vars='Date', var_name='PAIR_ID', value_name='x1')
# df3作为第二个自变量,数值列命名为x2
df3_long = df3.melt(id_vars='Date', var_name='PAIR_ID', value_name='x2')

2. 合并长格式数据

通过Date和PAIR_ID作为匹配键,将三个长数据框合并为完整数据集,确保每个观测的日期、资产对对应关系一致:

# 逐步合并,只保留三个数据框都存在的(Date, PAIR_ID)组合
merged_data = pd.merge(df1_long, df2_long, on=['Date', 'PAIR_ID'], how='inner')
merged_data = pd.merge(merged_data, df3_long, on=['Date', 'PAIR_ID'], how='inner')

3. 执行全局OLS回归

用合并后的全量数据拟合回归模型,此时所有资产对的日度样本都会被纳入,得到单一的alpha、ß1、ß2估计值:

import statsmodels.api as sm

# 添加常数项(对应模型中的alpha)
X = sm.add_constant(merged_data[['x1', 'x2']])
y = merged_data['y']

# 拟合并输出结果
model = sm.OLS(y, X).fit()
print(model.summary())

可选:加入资产对固定效应

如果需要控制不同资产对的固有差异(比如不同资产对有独立截距),可以用面板回归加入实体固定效应:

from linearmodels import PanelOLS

# 设置面板索引(资产对+日期)
merged_data = merged_data.set_index(['PAIR_ID', 'Date'])
# 拟合带固定效应的模型
model_fe = PanelOLS.from_formula('y ~ 1 + x1 + x2 + EntityEffects', data=merged_data)
results_fe = model_fe.fit(cov_type='clustered', cluster_entity=True)
print(results_fe.summary())

内容的提问来源于stack exchange,提问作者DIzzyWizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:12:50