Professional Documents
Culture Documents
stock returns
Eleftherios Giovanis
Abstract
This paper presents a programming routine in MATLAB software for applications in
calendar effects or anomalies in stock returns. The calendar effects which are tested is
the turn-of-the-month, the day-of-the-Week, the month-of-the-Year and the semi-
month effect.
Introduction
We find useful to provide the specific routine as it’s not perfect and can be modified
in order to be improved, but also we provide it for application for further study and
research as also for applications in other scientific fields , not only in finance and
economics, but anywhere which the specific routine might has application. This script
file has been used in the paper study of Giovanis (2009) and we don’t present the
results and the methodology here, but only the MATLAB file. Also this methodology
has its disadvantages because it’s based on probability and statistic theory and not in
intelligent systems.
Guide
We provide a brief guide for using the script file. First we should mention that is
not a function, but it’s a script file. Copy the following routine and open a new file in
MATLAB and paste in the Editor window. You can save the file as you like. In the
same folder you saved the script file you should also save the data files in order to call
them when you run the function. The data file is constituted by two separate vectors in
any calendar anomaly you examine. The first vector, which I called X, always stores
the stock returns. The difference is on the second vector. For the day of the week
effect the second column is a dummy variable taking values of 1, 2, 3, 4 and 5. 1 for
Monday, 2 for Tuesday, 3 for Wednesday, 4 for Thursday and 5 for Friday. You can
create this dummy very easy in Excel and with function “weekday”, just you need the
date series you download the data. Also this dummy can be created also very easy in
SPSS software. For the turn of the month and the semi month effect the second
column is constituted by number of 1 to 31, which are the days of the month, for
example 1 is 1st of the month and so on. The last effect, which is the month of the year
effect you have in the second vector always a dummy variable of values of
1,2,3….12, which each one represents the month of the year. For example value 1 for
January, 2 for February and so on up to 12 for December. I called the second vector as
date_day. You can change the names but you need to make the necessary
modifications in the whole script.
The first option is which calendar effect you want to examine the second option is
turn= 1 or 2, which means that 1 for turn of the month (TOM) effect and 2 for NTOM
effect. The third option is day=1,2…5, which is 1 for Monday, 2 for Tuesday and so
on. The fourth option is month=1 ,2,…12 which represent the month of the year, as
Because it’s missed by MATLAB, so you have to find this function ('nanvar') in the
newer editions and added in MATLAB toolbox.
The functions use 10,000 replications and the process is very fast, based on stock
returns, so you can increase the number of replications or even to decrease it. For
other more complicate time series data the process might be slower, depending on the
nature of the data. Furthermore in this routine we apply simple bootstrap, while it ca
be modified by setting up a double bootstrap or wild bootstrap.
References
load file.mat % You can specify any name you like for example stock.mat
if Calendar_effect==1
if turn==1
TOM=find(date_day==1 | date_day==2 | date_day==3 | date_day==30 |
date_day==31)
sample1=X(TOM)
All_TOM =find(date_day>=4& date_day<=29)
sample2 = X(All_TOM)
elseif turn==2
NTOM= find(date_day>=4& date_day<=29)
sample1=X(NTOM)
TOM=find(date_day==1 | date_day==2 | date_day==3 | date_day==30 |
date_day==31)
sample2 = X(TOM)
end
elseif Calendar_effect==2
if day==1
MON=find(date_day==1)
sample1=X(MON)
All_days= find(date_day==2 | date_day==3 | date_day==4 | date_day==5)
sample2 = X(All_days)
elseif day==2
3
TUE=find(date_day==2)
sample1=X(TUE)
All_days= find(date_day==1 | date_day==3 | date_day==4 | date_day==5)
sample2 = X(All_days)
elseif day==3
WED=find(date_day==3)
sample1=X(WED)
All_days= find(date_day==1 | date_day==2 | date_day==4 | date_day==5)
sample2 = X(All_days)
elseif day==4
THU=find(date_day==4)
sample1=X(THU)
All_days= find(date_day==1 | date_day==2 | date_day==3 | date_day==5)
sample2 = X(All_days)
elseif day==5
FRI=find(date_day==5)
sample1=X(FRI)
All_days= find(date_day==1 | date_day==2 | date_day==3 | date_day==4)
sample2 = X(All_days)
end
elseif Calendar_effect==3
if month==1
JAN=find(date_day==1)
sample1=X(JAN)
All_JAN =find(date_day==2|date_day==3|date_day==4|date_day==5|date_day==6....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_JAN)
elseif month==2
FEB=find(date_day==2)
sample1=X(FEB)
All_FEB =find(date_day==1|date_day==3|date_day==4|date_day==5|date_day==6....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_FEB)
elseif month==3
MAR=find(date_day==3)
sample1=X(MAR)
All_MAR
=find(date_day==1|date_day==2|date_day==4|date_day==5|date_day==6....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_MAR)
4
elseif month==4
APR=find(date_day==4)
sample1=X(APR)
All_APR =find(date_day==1|date_day==2|date_day==3|date_day==5|date_day==6....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_APR)
elseif month==5
MAY=find(date_day==5)
sample1=X(MAY)
All_MAY
=find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==6....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_MAY)
elseif month==6
JUNE=find(date_day==6)
sample1=X(JUNE)
All_JUNE
=find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_JUNE)
elseif month==7
JULY=find(date_day==7)
sample1=X(JULY)
All_JULY
=find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==6|date_day==8|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_JULY)
elseif month==8
AUG=find(date_day==8)
sample1=X(AUG)
All_AUG
=find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==6|date_day==7|date_day==9|date_day==10|date_day==11|date_day==12)
sample2 = X(All_AUG)
elseif month==9
SEP=find(date_day==9)
sample1=X(SEP)
All_SEP =find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==6|date_day==7|date_day==8|date_day==10|date_day==11|date_day==12)
sample2 = X(All_SEP)
elseif month==10
OCT=find(date_day==10)
sample1=X(OCT)
All_OCT =find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
5
|date_day==6|date_day==7|date_day==8|date_day==9|date_day==11|date_day==12)
sample2 = X(All_OCT)
elseif month==11
NOV=find(date_day==11)
sample1=X(NOV)
All_NOV
=find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==6|date_day==7|date_day==8|date_day==9|date_day==10|date_day==12)
sample2 = X(All_NOV)
elseif month==12
DEC=find(date_day==12)
sample1=X(DEC)
All_DEC =find(date_day==1|date_day==2|date_day==3|date_day==4|date_day==5....
|date_day==6|date_day==7|date_day==8|date_day==9|date_day==10|date_day==11)
sample2 = X(All_DEC)
end
elseif Calendar_effect==4
if fort==1
FIRST_FORT=find(date_day>=1 & date_day<=15)
sample1=X(FIRST_FORT)
SECOND_FORT=find(date_day>=16 & date_day<=31)
sample2 = X(SECOND_FORT)
elseif fort==1
SECOND_FORT=find(date_day>=16 & date_day<=31)
sample1 = X(SECOND_FORT)
FIRST_FORT=find(date_day>=1 & date_day<=15)
sample2=X(FIRST_FORT)
end
end
6
difr1=(bootsample1-bootsample2)
difr2=(meansample1-meansample2)
bootdifference = difr1-difr2;
bootse=std((bootsample1-bootsample2)-(meanbootsample1-meanbootsample2))
boottratio = bootdifference ./ bootse;
y1 = quantile(boottratio(:,1),.05);
y2= quantile(boottratio(:,1),.95);
low=quantile(bootsample1,.05)
high=quantile(bootsample1,.95)
y=[y1 y2]
if tratio<y2
h1 =0
else tratio>y2
h1=1
end
if tratio>y1
h2 =0
else tratio<y1
h2=1
end