【分析股票异常事件的影响,计算平均异常收益率AR变化】
·
概要
本项目基于事件研究法(Event Study)分析股票异常事件对收益率的影响,计算并绘制事件窗口内的平均异常收益率变化趋势。首先,通过回归模型分解股票收益率,提取异常收益率(Abnormal Return,AR);接着,基于成交量的前10%定义异常事件月份;随后,对每个异常事件的前后10个月窗口内的AR进行分析,计算每月的平均值以量化事件的影响;最后,通过可视化展示事件窗口(T- 10至T+10) 内异常收益率的变化,为评估事件的短期和长期市场影响提供依据。
整体架构流程
首先,从原始数据中读取股票的交易信息和收益率数据,并进行预处理,将日期格式化并计算市场平均收益率作为基准;其次,针对每只股票构建回归模型,提取异常收益率(AR)作为分析变量;接着,通过成交量的前10%定义异常事件并标记对应的事件日期;随后,对每个异常事件前后10个月(事件窗口)的异常收益率进行聚合分析,计算每月的平均异常收益率;最后,将结果通过可视化呈现,绘制事件窗口内异常收益率的变化趋势图,以直观展示异常事件对市场的短期和长期影响。
技术细节
部分数据基本情况:
数据集大小:1000000
完整代码
data = readtable('data_final.xlsx', 'Sheet', 'data_final', 'ReadVariableNames', true);
code = data.code;
date = data.date;
volume = data.volume;
ret = data.ret;
data.groupRank = zeros(height(data), 1);
uniqueCodes = unique(code);
for i = 1:length(uniqueCodes)
currentCode = uniqueCodes(i);
idx = find(code == currentCode);
[~, sortedIdx] = sort(volume(idx), 'descend');
rankIdx = zeros(size(sortedIdx));
rankIdx(sortedIdx) = 1:length(sortedIdx);
data.groupRank(idx) = rankIdx;
end
abnormalEvents = data(data.groupRank <= 10, :);
[uniqueDates, ~, dateIdx] = unique(date);
marketReturns = accumarray(dateIdx, ret, [], @mean);
data.marketRet = marketReturns(dateIdx);
data.abnormalRet = data.ret - data.marketRet;
eventWindow = -10:10;
avgAbnormalRet = zeros(size(eventWindow));
for i = 1:length(eventWindow)
windowOffset = eventWindow(i);
abnormalReturnsInWindow = [];
for j = 1:height(abnormalEvents)
eventCode = abnormalEvents.code(j);
eventDate = abnormalEvents.date(j);
% 找到事件窗口的月份
targetDate = eventDate + windowOffset;
% 匹配事件窗口数据
matchIdx = find(data.code == eventCode & data.date == targetDate);
if ~isempty(matchIdx)
abnormalReturnsInWindow = [abnormalReturnsInWindow; data.abnormalRet(matchIdx)];
end
end
% 计算窗口内的平均异常收益率
avgAbnormalRet(i) = mean(abnormalReturnsInWindow, 'omitnan');
end
figure;
plot(eventWindow, avgAbnormalRet, '-o', 'LineWidth', 1.5);
hold on;
yline(0, '--k', 'LineWidth', 1.2); % 添加参考线
title('Abnormal Return Over Event Window');
xlabel('Event Window (Months)');
ylabel('Average Abnormal Return');
grid on;
效果展示

左边是老师给出的参考图,右边是上述代码的运行结果图
更多推荐




所有评论(0)