We analyse the following daily series: for the US stock market, the Dow Jones index and stocks of two companies included in this index (Microsoft and Boeing—for the trading robot analysis we also add Wal Mart and Exxon); for the FOREX, EURUSD, USDJPY and GBCHF (for the trading robot analysis also AUDUSD); for commodities, Gold and Oil. The sample period covers the period from January 2002 till the end of September 2014 (for the trading robot analysis the period is 2012–2014).
Statistical Tests
First we carry out Student’s t tests to confirm (reject) the presence of anomalies after overreactions. To provide additional evidences in favor of the tested hypotheses we use ANOVA analysis. Also, to overcome normal distribution limitations we carry out Kruskall–Wallis tests. Then we apply the trading robot approach to establish whether detected anomalies create exploitable profit opportunities. According to the classical overreaction hypothesis, an overreaction should be followed by a correction, i.e. price counter-movements, and bigger than after normal days. If one day is not enough for the market to incorporate new information, i.e. to overreact, then after one-day abnormal price changes one can expect movements in the direction of the overreaction bigger than after normal days.
Therefore the following two hypotheses will be tested:
-
H1
:
-
Counter-reactions after overreactions differ from those after normal days.
-
H2
:
-
Price movements after overreactions in the direction of the overreaction differ from such movements after normal days.
The null hypothesis is in both cases that the data after normal and overreaction days belong to the same population.
We analyse short-term overreactions, so the period of analysis is 1 day (one trading session). The parameters characterising price behaviour over such a time interval are maximum, minimum, open and close prices. In most studies price movements are measured as the difference between the open and close price. For the purposes of the current study the daily return is measured as the difference between the maximum and minimum prices during the day. It is more appropriate, because we are interested in extreme points of the daily fluctuations. The use of maximum–minimum instead of open-close allows us to analyse the full amplitude of the daily price changes. This is calculated as:
$$\begin{aligned} R_i =\frac{(High_i -Low_i )}{Low_i }\times 100\% , \end{aligned}$$
(1)
where \(R_i \) is the % daily return, \(High_i \) is the maximum price, and \(Low_i \) is the minimum price for day i.
We consider the following definition of “overreaction”:
$$\begin{aligned} R_i >(\bar{{R}}_n +k\times \delta _n ) , \end{aligned}$$
(2)
where k-the number of standard deviations used to identify overreaction,
\(\bar{{R}}_n \) is the average size of daily returns for period n
$$\begin{aligned} \bar{{R}}_n =\sum _{i=1}^n {R_i } /n \end{aligned}$$
(3)
and \(\delta _n \) is the standard deviation of daily returns for period n
$$\begin{aligned} \delta _n =\sqrt{\frac{1}{n}\sum _{i=1}^n {(R_i -\bar{{R}})^{2}} } . \end{aligned}$$
(4)
The next step is to determine the size of the price movement during the next day. For Hypothesis 1 (the counter-reaction or counter-movement assumption), we measure it as the difference between the next day’s open price and the maximum deviation from it in the opposite direction to the price movement in the overreaction day.
If the price increased, then the size of the counter-reaction is calculated as:
$$\begin{aligned} cR_{i+1} =100\% \times \frac{(Open_{i+1} -Low_{i+1} )}{Low_{i+1} }, \end{aligned}$$
(5)
where \(cR_{i+1} \) is the counter-reaction size, and \(Open_{i + l} \) is the next day’s open price.
If the price decreased, then the corresponding definition is:
$$\begin{aligned} cR_{i+1} =100\% \times \frac{(High_{i+1} -Open_{i+1} )}{Open_{i+1} }. \end{aligned}$$
(6)
In the case of Hypothesis 2 (movement in the direction of the overreaction), either Eqs. (6) or (5) is used depending on whether the price has increased or decreased.
Two data sets (with \(cR_{i+1} \) values) are then constructed, including the size of price movements after normal and abnormal price changes respectively. The first data set consists of \(cR_{i+1} \) values after 1-day abnormal price changes. The second contains \(cR_{i+1} \) values after a day with normal price changes. The null hypothesis to be tested is that they are both drawn from the same population.
Trading Robot Analysis
The trading robot approach considers the short-term overreactions from a trader’s viewpoint, i.e. whether it is possible to make abnormal profits by exploiting the overreaction anomaly. The trading robot simulates the actions of a trader according to an algorithm (trading strategy). This is a programme in the MetaTrader terminal that has been developed in MetaQuotes Language 4 (MQL4) and used for the automation of analytical and trading processes. Trading robots (called experts in MetaTrader) allow to analyse price data and manage trading activities on the basis of the signals received.
We examine two trading strategies:
-
Strategy 1 (based on H1) This is based on the classical short-term overreaction anomaly, i.e. the presence the abnormal counter-reactions the day after the overreaction day. The algorithm is constructed as follows: at the end of the overreaction day financial assets are sold or bought depending on whether abnormal price increases or decreased respectively have occurred. An open position is closed if a target profit value is reached or at the end of the following day (for details of how the target profit value is defined see below).
-
Strategy 2 (based on H2) This is based on the non-classical short-term overreaction anomaly, i.e. the presence the abnormal price movements in the direction of the overreaction the following day. The algorithm is built as follows: at the end of the overreaction day financial assets are bought or sold depending on whether abnormal price increases or decreases respectively have occurred. Again, an open position is closed if a target profit value is reached or at the end of the following day.
In order to avoid data-snooping bias and artificial fitting of certain parametersFootnote 1 we adopt the following testing procedure.
-
1.
We use a base period (data from 2013) to obtain the optimal parameters for the behaviour of asset prices (an example of such optimisation is reported in “Appendix 1”).
-
2.
We test the trading strategy with the optimal parameters on the base period (2013 data) and two independent (non-optimised) periods (2012 and 2014) to see whether it is profitable (an example can be found in “Appendix 2”).
-
3.
We perform continuous testing for the period 2012–2014 to obtain average results for the trading strategy.
-
4.
The results of continuous trading are used to assess the effectiveness of the strategy. If total profits from trading are >0 and the number of profitable trades is >50%, and the results are rather stable for different periods, then we conclude that there is a market anomaly and it is exploitable.
To make sure that the results we obtain are statistically different from the random ones we carry out t tests. We chose this approach instead of carrying out z tests because the sample size is less than 100. A t test compares the means from two samples to see whether they come from the same population. In our case the first is the average profit/loss factor of one trade applying the trading strategy, and the second is equal to zero because random trading (without transaction costs) should generate zero profit.
The null hypothesis (H0) is that the mean is the same in both samples, and the alternative (H1) that it is not. The computed values of the t test are compared with the critical one at the 5% significance level. Failure to reject H0 implies that there are no advantages from exploiting the trading strategy being considered, whilst a rejection suggests that the adopted strategy can generate abnormal profits.
Example of the t test results are reported in Table 1.
Table 1
t Test for the trading simulation results for the Strategy 1 (case of EURUSD testing period 2014)
As it can be seen, H0 is confirmed, which implies that the trading simulation results are not statistically different from the random ones and therefore this trading strategy is not effective and there is no exploitable profit opportunity.
The results of the trading strategy testing and some key data are presented in the “Report” in “Appendix 2”. The most important indicators given in the “Report” are:
-
Total net profit: this is the difference between “Gross profit” and “Gross loss” measured in US dollars. We used marginal trading with the leverage 1:100, therefore it is necessary to invest $1000 to make the profit mentioned in the Trading Report. The annual return is defined as Total net profit/100, so, for instance, an annual total net profit of $100 represents a 10% annual return on the investment;
-
Profit trades: % of successful trades in total trades;
-
Expected payoff: the mathematical expectation of a win. This parameter represents the average profit/loss per trade. It is also the expected profitability/unprofitability of the next trade;
-
Total trades: total amount of trade positions;
-
Bars in test: the number of past observations modelled in bars during testing.
The results are summarised in the “Graph” section of the “Report”: this represents the account balance and general account status considering open positions. The “Report” also provides full information on all the simulated transactions and their financial results. The following parameters affect the profitability of the trading strategies (the next section explains how they are set):
-
Criterion for overreaction (symbol: sigma_dz): the number of standard deviations added to the mean to form the standard day interval;
-
Period of averaging (period_dz): the size of data set on which base mean and standard deviation are counted;
-
Time in position (time_val): how long (in hours) the opened position has to be held;
-
Expected profit per trade or Take Profit (profit_koef): the size of profit expected to result from a trade, measured as:
$$\begin{aligned} {\text {Take Profit}}={\text {profit}}\_{\text {koef}}\;^*\,{\text {sigma}}\_{\text {dz}}; \end{aligned}$$
-
Maximum amount of losses per trade or Stop Loss (stop): the size of losses the trader is willing to incur in a trade, defined as follows:
$$\begin{aligned} {\text {Stop Loss}} ={\text {stop}}\;^*\,{\text {sigma}}\_{\text {dz}}. \end{aligned}$$