MATLAB多因子选股模型

%% 导入数据
clc, clear all, close all
s = dataset('xlsfile', 'SampleA1.xlsx');

%% 多元线性回归
myFit = LinearModel.fit(s);
disp(myFit) 
sx=s(:,1:10);
sy=s(:,11);
n=1:size(s,1);
sy1= predict(myFit,sx);
figure
plot(n,sy, 'ob', n, sy1,'*r')
xlabel('样本编号', 'fontsize',12)
ylabel('综合得分', 'fontsize',12)
title('多元线性回归模型', 'fontsize',12)
set(gca, 'linewidth',2)

%% 逐步回归
myFit2 = LinearModel.stepwise(s);
disp(myFit2)
sy2= predict(myFit2,sx);
figure
plot(n,sy, 'ob', n, sy2,'*r')
xlabel('样本编号', 'fontsize',12)
ylabel('综合得分', 'fontsize',12)
title('逐步回归模型', 'fontsize',12)
set(gca, 'linewidth',2)

在这里插入图片描述
在这里插入图片描述

线性回归模型:
    eva ~ 1 + dv1 + dv2 + dv3 + dv4 + dv5 + dv6 + dv7 + dv8 + dv9 + dv10

估计系数:
                    Estimate         SE         tStat        pValue   
                   __________    __________    ________    ___________

    (Intercept)       0.13242      0.035478      3.7324     0.00019329
    dv1             -0.092989     0.0039402       -23.6    7.1553e-113
    dv2             0.0013282     0.0010889      1.2198        0.22264
    dv3            6.4786e-05    0.00020447     0.31685        0.75138
    dv4              -0.16674       0.06487     -2.5703        0.01021
    dv5              -0.18008      0.022895     -7.8656     5.1261e-15
    dv6              -0.50725      0.043686     -11.611     1.6693e-30
    dv7               -3.1872        1.1358     -2.8062      0.0050462
    dv8              0.033315      0.084957     0.39214        0.69498
    dv9             -0.028369      0.093847    -0.30229        0.76245
    dv10             -0.13413      0.010884     -12.324     4.6577e-34


观测值数目: 2937,误差自由度: 2926
均方根误差: 0.348
R 方: 0.819,调整 R 方 0.818
F 统计量(常量模型): 1.32e+03,p 值 = 0
1。正在添加 dv1, FStat = 9588.9218, pValue = 0
2。正在添加 dv6, FStat = 457.4039, pValue = 1.99293e-94
3。正在添加 dv10, FStat = 262.2799, pValue = 1.446486e-56
4。正在添加 dv1:dv10, FStat = 73.1017, pValue = 1.95152e-17
5。正在添加 dv5, FStat = 35.5913, pValue = 2.7252e-09
6。正在添加 dv5:dv10, FStat = 16.9034, pValue = 4.04112e-05
7。正在添加 dv1:dv6, FStat = 13.1002, pValue = 0.000300265
8。正在添加 dv7, FStat = 9.6632, pValue = 0.001898
9。正在添加 dv1:dv5, FStat = 5.0866, pValue = 0.024185
10。正在添加 dv6:dv10, FStat = 4.6719, pValue = 0.030741
11。正在删除 dv1:dv6, FStat = 0.11125, pValue = 0.73875

线性回归模型:
    eva ~ 1 + dv7 + dv1*dv5 + dv1*dv10 + dv5*dv10 + dv6*dv10

估计系数:
                   Estimate        SE         tStat       pValue   
                   _________    _________    _______    ___________

    (Intercept)     0.032319      0.01043     3.0987      0.0019621
    dv1            -0.099059    0.0037661    -26.303    4.6946e-137
    dv5             -0.11262     0.023316    -4.8301     1.4345e-06
    dv6             -0.56329     0.037063    -15.198      2.864e-50
    dv7              -3.2959       1.0714    -3.0763      0.0021155
    dv10            -0.14693     0.010955    -13.412     7.5612e-40
    dv1:dv5         0.018691    0.0053933     3.4656     0.00053673
    dv1:dv10        0.010822    0.0019104      5.665     1.6127e-08
    dv5:dv10         -0.1332     0.021543     -6.183     7.1632e-10
    dv6:dv10         0.10062     0.027651      3.639     0.00027845


观测值数目: 2937,误差自由度: 2927
均方根误差: 0.344
R 方: 0.824,调整 R 方 0.823
F 统计量(常量模型): 1.52e+03,p 值 = 0

开发工具:MATLAB 2022b
微信截屏工具Alt+A

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Matlab的多因子风险模型的示例代码: ``` % 多因子风险模型代码示例 % 假设有4个因子: 市值、动量、价值和质量 % 假设有100个股票 % 以下是用到的数据 % 因子暴露 market_cap = rand(100,1); % 市值 momentum = rand(100,1); % 动量 value = rand(100,1); % 价值 quality = rand(100,1); % 质量 % 股票收益率 returns = rand(100,1); % 因子收益率 market_cap_return = 0.02; % 市值收益率 momentum_return = 0.01; % 动量收益率 value_return = 0.03; % 价值收益率 quality_return = 0.005; % 质量收益率 % 计算因子权重 % 假设每个因子权重为0.25 weights = [0.25, 0.25, 0.25, 0.25]; % 计算每个股票的因子得分 scores = [market_cap, momentum, value, quality] * weights'; % 计算股票收益率的协方差矩阵 covariance_matrix = cov(returns); % 计算每个股票的风险贡献 risk_contributions = (scores.^2) .* covariance_matrix * weights'; % 计算股票的总风险贡献 portfolio_risk_contribution = sum(risk_contributions); % 计算每个因子的风险贡献 factor_risk_contributions = (weights.^2) .* var(scores) .* covariance_matrix; % 计算总因子风险贡献 total_factor_risk_contribution = sum(factor_risk_contributions); % 输出结果 fprintf('总风险贡献: %f\n', portfolio_risk_contribution); fprintf('市值因子风险贡献: %f\n', factor_risk_contributions(1)); fprintf('动量因子风险贡献: %f\n', factor_risk_contributions(2)); fprintf('价值因子风险贡献: %f\n', factor_risk_contributions(3)); fprintf('质量因子风险贡献: %f\n', factor_risk_contributions(4)); fprintf('总因子风险贡献: %f\n', total_factor_risk_contribution); ``` 这段代码计算了一个有4个因子的多因子风险模型的风险贡献。它首先计算每个股票的因子得分,然后计算每个股票的风险贡献。接下来,它计算每个因子的风险贡献和总因子风险贡献。最后,它输出结果。需要注意的是,这是一个非常简单的示例,实际的多因子风险模型会更加复杂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值