вторник, 3 апреля 2012 г.

исследование SBER (micex)

Попытка стат.методами формализовать торговую идею на примере акций SBER'a.

Итак, идея в следующем:
Анализируем отношение Close/Open периода (в нашем случае часа).
Пытаемся понять - после "сильного движения" на таком коротком периоде (например +/- 1% за час) мы продолжим движение или "нажравшиеся" спекули будут крыть свои позиции.



InSample период - 01.01.2008...31.12.2009, таймфрейм - часовой.

library(rusquant)
getSymbols("SBER", from="2008-01-01", to="2009-12-31", src="Finam", per="hour")

За выбранный период падали охотней и больше  чем росли
Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
-0.2447000 -0.0056270 -0.0001724 -0.0001931  0.0051490  0.1296000 



Т.ч. будем рыть в сторону исследования падений. Отберем бары с падением больше 1%. Будем их считать своими "базовыми":

Min.     1st Qu.   Median     Mean  3rd Qu.     Max. 
-0.24470 -0.02355 -0.01688 -0.02099 -0.01289 -0.01005 

            Var1 Freq
1  (-0.25,-0.24]    1
2  (-0.24,-0.23]    0
3  (-0.23,-0.22]    0
4  (-0.22,-0.21]    0
5   (-0.21,-0.2]    0
6   (-0.2,-0.19]    0
7  (-0.19,-0.18]    0
8  (-0.18,-0.17]    0
9  (-0.17,-0.16]    0
10 (-0.16,-0.15]    0
11 (-0.15,-0.14]    0
12 (-0.14,-0.13]    1
13 (-0.13,-0.12]    0
14 (-0.12,-0.11]    0
15  (-0.11,-0.1]    0
16  (-0.1,-0.09]    2
17 (-0.09,-0.08]    3
18 (-0.08,-0.07]    2
19 (-0.07,-0.06]    6
20 (-0.06,-0.05]   10
21 (-0.05,-0.04]   14
22 (-0.04,-0.03]   47
23 (-0.03,-0.02]  140
24 (-0.02,-0.01]  398

Получилось 624 базовых бара с падением более 1%.
Дальше будем исследовать бары, которые следовали за базовыми.

Min.       1st Qu.    Median      Mean    3rd Qu.      Max. 
-0.231700  -0.008980 -0.000831 -0.001580  0.007157  0.122400 
И медиана, и среднее находятся в отрицательной зоне.
Видно "хвосты" распределений, опять особенно в "минусовой стороне":

Больше баров оказалось также в красной зоне:
Var1 Freq
1  (-0.25,-0.225]    1
2   (-0.225,-0.2]    0
3   (-0.2,-0.175]    0
4  (-0.175,-0.15]    0
5  (-0.15,-0.125]    0
6   (-0.125,-0.1]    0
7   (-0.1,-0.075]    1
8  (-0.075,-0.05]   14
9  (-0.05,-0.025]   34
10     (-0.025,0]  282
11      (0,0.025]  260
12   (0.025,0.05]   22
13   (0.05,0.075]    5
14    (0.075,0.1]    4
15    (0.1,0.125]    1
16   (0.125,0.15]    0

Подкрепим своё визуальное наблюдение одновыборочным t-критерием.

t.test(DR[vec2],mu=0,alternative="greater")

 One Sample t-test

data:  DR[vec2] 
t = -1.8054, df = 623, p-value = 0.9643
alternative hypothesis: true mean is greater than 0 
95 percent confidence interval:
 -0.003021682          Inf 
sample estimates:
   mean of x 
-0.001580017 
Вероятность ошибки первого рода (p-value) почти равна 1, а альтернативной у нас была гипотеза "о значении МО больше 0", т.е. о смещении в "зеленую зону" баров, следующих за базовым. Т.е. рекомендуется торговать продолжение падения.

Проведем теперь бэк-тест на OutOfSample периоде - с 01.01.2010 по н.в.
Система проста:
если упали более чем на 1% - входим в шорт с выходом на том же баре:

//Entry Rule
public override void OnBarOpen(Bar bar)
 {
  if ( Bars.Count>1 && !HasPosition){
    if( (Bars.Ago(1).Close/Bars.Ago(1).Open) < 0.99 ){
    Sell(Qty, "Short Entry");
   }
  }
 }

//Exit Rule
public override void OnBar(Bar bar)
 {
  if(HasPosition && Position.Side==PositionSide.Short){
   Buy(Qty, "Short Exit");
  }
 }
Резалт бэктеста:



Вот как-то так ....

P.S. руфонду не торгую

Комментариев нет:

Отправить комментарий