全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 金融工程(数量金融)与金融衍生品
1173 0
2021-02-02
步骤1:在移动均线的选取中,为了捕捉股价在不同时期的趋势,我们分别选取3、 5、 10、 20、 30、 60(原文有120,240,此处剔除)这些常用参数,得到的均线分别代表股价在过去超短期、短期、中期的表现。考虑到指数移动平均线(EMA)相对普通移动平均线存在更高的灵敏度,相对较近的股价被赋予更高的权重,因此优选 EMA 指标。具体构建方法如下:步骤2:等式左边为 i 股截至 t 期末的 n 日 EMA, 考虑市场中个股之间价格相差巨大,为避免之后的回归模型受到极端值的干扰, 我们对 EMA 指标进行进一步标准化:1、2代码部分%标准化EMA计算
function today=EMA(close,n)
    emas = 2/(n+1)*close(:,end-n+2)+(n-1)/(n+1)*close(:,end-n+1);   
    for i=3:n
        emas = 2/(n+1)*close(:,end-n+i)+(n-1)/(n+1)*emas;   
    end
    today = emas./close(:,end);
end其中n为均线周期,close为收盘价数据。步骤3:将 EMA 除以当天收盘价,在得到标准化的 EMA 的基础上,进行截面回归:function betavalue=coef(close,t)     
%t对应月份,0表示当月,1表示上个月,依次类推
    %月度收益的计算
    Y =(close(:,end-20*t)-close(:,end-20-20*t))./close(:,end-20*t);
    %上一个月的收盘
    lastclose = close(:,1:end-20-20*t);      
    oldEMA3= EMA(lastclose,3);
    oldEMA5= EMA(lastclose,5);
    oldEMA10= EMA(lastclose,10);
    oldEMA20= EMA(lastclose,20);
    oldEMA30= EMA(lastclose,30);
    oldEMA60= EMA(lastclose,60);   
    %oldEMA120= EMA(lastclose,120);
    %oldEMA240= EMA(lastclose,240);
    X = [ones(size(close,1),1),oldEMA3,oldEMA5,oldEMA10,oldEMA20,oldEMA30,oldEMA60];
    Z = [Y,X];
    Z(any(isnan(Z),2),:) = [];%剔除无效信息
    Y=Z(:,1);X=Z(:,2:end);   
    if ((sum(sum(isnan(X))))>0)        
        disp(sum(sum(isnan(X))))
        betavalue =nan(6,1);%若有效数据不足则传回nan不操作
        return;   
    else
        disp('完成');   
    end
    b=regress(Y,X);%回归系数的计算
    betavalue =b(2:end);
end
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群