Попытка стат.методами формализовать торговую идею на примере акций SBER'a.
Итак, идея в следующем:
Анализируем отношение Close/Open периода (в нашем случае часа).
Пытаемся понять - после "сильного движения" на таком коротком периоде (например +/- 1% за час) мы продолжим движение или "нажравшиеся" спекули будут крыть свои позиции.
InSample период - 01.01.2008...31.12.2009, таймфрейм - часовой.
За выбранный период падали охотней и больше чем росли
Т.ч. будем рыть в сторону исследования падений. Отберем бары с падением больше 1%. Будем их считать своими "базовыми":
Получилось 624 базовых бара с падением более 1%.
Дальше будем исследовать бары, которые следовали за базовыми.
Видно "хвосты" распределений, опять особенно в "минусовой стороне":
Больше баров оказалось также в красной зоне:
Подкрепим своё визуальное наблюдение одновыборочным t-критерием.
Проведем теперь бэк-тест на OutOfSample периоде - с 01.01.2010 по н.в.
Система проста:
если упали более чем на 1% - входим в шорт с выходом на том же баре:
Вот как-то так ....
P.S. руфонду не торгую
Итак, идея в следующем:
Анализируем отношение 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. руфонду не торгую
Комментариев нет:
Отправить комментарий