%Get Events
[~,ia,~] = unique([EVTPeerA.Permno EVTPeerA.Announcementdate], 'rows'); 
% in case there are multiple events for the same firm-announcement date combination, keep only one.
EVTPeerA = EVTPeerA(ia,:);     
% !!! Be sure that the order of events in EVT is the same as the order of events in the CRSP dataset!

%create COMP
COMPPeerA = dataset;

tic
COMPPeerA.ACT = NaN(size(EVTPeerA.Permno)); COMPPeerA.AT = NaN(size(EVTPeerA.Permno)); COMPPeerA.CH = NaN(size(EVTPeerA.Permno)); 
COMPPeerA.DLC = NaN(size(EVTPeerA.Permno)); COMPPeerA.DLTT = NaN(size(EVTPeerA.Permno))

EVTPeerA.anncouncedate=int32(EVTPeerA.announcedate);

for i = 1: length(EVTPeerA.Permno)
    k =  COMPPeerAraw.GVKEY == EVTPeerA.Gvkey(i) & COMPPeerAraw.DATADATE<=deltadate(EVTPeerA.Announcementdate(i),0,-3,0) & COMPPeerAraw.DATADATE>deltadate(EVTPeerA.announcementdate(i),-1,-3,0);
    if sum(k)==1
        COMPPeerA.ACT(i) = COMPPeerAraw.ACT(k);
        COMPPeerA.AT(i)   = COMPPeerAraw.AT(k);
        COMPPeerA.CH(i)   = COMPPeerAraw.CH(k);
        COMPPeerA.DLC(i)  = COMPPeerAraw.DLC(k);
        COMPPeerA.DLTT(i) = COMPPeerAraw.DLTT(k);
        ;
        
    end
    clear k
    i/length(EVTPeerA.Permno)
end
toc
clear i ia

%% CRSP

% Create Event/Return Matrix
tmp=datevec(datenum(CRSPPeerAraw.event_date,'ddmmmyyyy'));
CRSPPeerAraw.event_date=10000*tmp(:,1)+100*tmp(:,2)+tmp(:,3);

CRSPPeerA = dataset;
[eventtmp, ~, CRSPPeerAraw.EventID] = unique( [CRSPPeerAraw.PERMNO CRSPPeerAraw.event_date],'rows');
CRSPPeerA.PERMNO = eventtmp(:,1);
CRSPPeerA.event_date = eventtmp(:,2);
CRSPPeerA.EventID = (1:length(CRSPPeerA.PERMNO))';
CRSPPeerA.RET=NaN(length(CRSPPeerA.EventID),331);
CRSPPeerA.vwretd=NaN(length(CRSPPeerA.EventID),331);

tic
for id = 1:length(CRSPPeerA.EventID)
    crspraw = CRSPPeerAraw(CRSPPeerAraw.EventID==id,:);
    CRSPPeerA.RET(id,:)    = (vlookup( (-300:30)', crspraw.td_count, crspraw.RET))';
    CRSPPeerA.vwretd(id,:)    = (vlookup( (-300:30)', crspraw.td_count, crspraw.vwretd))';
    id / length(CRSPPeerA.EventID)
end
toc

clear id tmp eventtmp crspraw
    