Блог им. melamaster

Ориентиры для трендовых систем на нашем рынке

Осень — подходящая пора для размышлений, рефлексии, ожидания всплесков волатильности, грусти, романтики (нужное подчеркнуть)!

Немного размышляя о том, хорошие ли у меня трендовые системы, построил тривиальную систему на минутках, которая наращивает лонги и сокращает шорты, если цена выше 60-минутной скользящей средней, а также сокращает лонги и наращивает шорты, если цена ниже этой скользящей средней. Казалось бы, проще стратегию не придумать:) Пусть это будет самый очевидный бенчмарк, который трендовая система должна обогнать ну хотя бы в два раза, чтобы её запускать на реале.

Верхний график — цены закрытия минуток.
Средний график — поминутная эквити в процентах.
Нижний график — размер открытой позиции в каждую минуту (в контрактах или в акциях).

Всё с января 2010 по сентябрь 2016.

Обыкновенные акции Сбербанка:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на Сбербанк-ао:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на индекс РТС:
Ориентиры для трендовых систем на нашем рынке



























Фьючерс на курс доллар/рубль:
Ориентиры для трендовых систем на нашем рынке











★16
33 комментария
Ну, сбер с долларом настолько трендовые, что их просто двумя скользяшками можно торговать. А что на других бумагах?
avatar
Нижний график как смотреть? верхняя граница шорты, нижняя лонги?
avatar
как можно держать разнонаправленную позицию — через 2 аккаунта? Лок вроде можно на форексе, а на фортс будет только результирующее количество...., дело в амортизации гэпов, что ли?
Пища для размышления прям.
на 60 мин — вероятно существенно жрут комиссии, так вы не показали ПФ — думаю если меньше 1,5 — система реально в минус может работать....
Спасибо, и удивляете и порой вразумляете.
avatar
baron_samedi, tsm   , всё проще:
1. Позиция однонаправленная, из-за масштаба всё слилось и нижний график на таком масштабе оказался неинформативен. Вот кусочек этого график, первые 10000 минут:
























2. Это не для торговли, это не система, которую нужно торговать. Считайте, что это — индикатор трендового потенциала, который лежит на поверхности.
avatar
Sergey Pavlov, 
2. да, я понимаю, что это бенч- как Вы говорите,- марк. 
1. Про позиции я неверно истолковал текст. Теперь разобрался.
Спасибо за объяснения.

avatar
Press, 
сольется с графиком — там степени в аргументах…
avatar
а какой критерий является тригером увеличения(уменьшения) позиции?
avatar
Олег, каждую минуту проверяются четыре условия:
1) это не первая минута торгов;
2) это не последняя минута торгов;
3) цена выше средней цены за последний час;
4) не перебрали ли с позицией в лонг.
Для шорта 3 и 4 условие симметричны.
avatar
Sergey Pavlov, а ограничитель объема позиции какой.
Учитывается ли вечерка.
Что будет на Газпроме и на Лукойле, можете проверить?
И еще одни содержательный вопрос. 
Вот есть эта эквити. И есть другая эквити. Как узнать, какая лучше. Вы же с этого начали, но по дороге забыли :)
avatar
SergeyJu,
1. Максимально открытая позиция (по модулю) в денежном выражении по текущей цене не превосходит размер депозита, т.е. торговли (с точностью до округлений) ведется с не более чем с первым плечом.
2. Могу проверить, если отправите мне на почту файлы с минутками по газпрому и лукойлу (формат типа финамовского).
3. Возможны два подхода:
3.1. Технико-математический — вводить метрики и делать строгое сравнение.
3.2. Смысловой — понимать суть дела.
avatar
Sergey Pavlov, должно быть пятое условие -принцип пирамидинга. Условно есть 100%-максимум позиции, десять этажей по 10%. Цена выше мувинга-появился первый этаж пирамиды-10%; что является критерием появления следующего этажа? должно какое-то время пройти?(не минута-же)    
avatar
Олег, четвертое условие это и есть условие пирамидинга — добавляем позицию, если не перебрали первое плечо. Добавки всегда равные по 10% от плеча. Достаточным временем в приведенных расчетах была 1 минута.
avatar
Sergey Pavlov, прикольно, я Вас совсем иначе понял.
Что Вы добавляли/сбрасывали по 1 контракту и делали ограничение на объем открытой позиции в контрактах.
Если добавки, сбросы 10% от депо, лимит 100%, то возникает (а) некоторая нетривиальная обратная связь — при росте депо увеличивается экспозиция (б) всего 10 шагов, следоватьльно число 10 является также параметром этой системы.
И (в) Вы не ответили, вечерку на фьючах торговали?
avatar
SergeyJu,
(а) — да, в каком-то смысле это похоже на искусственный краткосрочный опцион (покупка).
(б) — да.
(в) — да, на фьючерсах вечерние данные торговались, но со своими ограничениями по времени, чтобы также первую и последнюю минуты пропустить.
avatar
Sergey Pavlov, т.е если через минуту после первого этажа цена продолжает оставаться выше мувинга добавляете 2-ой этаж и т.д до десяти.Получается по минимуму за 10 минут полностью загрузитесь?     А разгружаете как?    Судя по графику вы и разгружаете частями?
avatar
Олег, да, самое быстрое — это за 10 минут. Разгрузка в этих примерах происходила точно также.
avatar
Sergey Pavlov, с разгрузкой не понятно; предположим есть 10 этажей наверх(цена была выше мувинга 10 мин), на следующей минуте цена провалилась ниже мувинга-следовательно нужно закрывать 10 вверх(одномоментно) и открывать 1 вниз. Не понятно, что  может заставить разгружать позицию вверх частями?
avatar
Олег, система проще намного. За один такт она может добавить 1 (если надо и если позиция не более +10) или убавить 1 (если надо и если позиция не менее -10). Таким образом она проходит все значения от -10 до +10.
avatar
Sergey Pavlov, насчёт простоты я бы поспорил). т. е имея 10  этажей наверх и при проваливании цены ниже мувинга -первые 10 минут вы будете разгружать поэтапно старую позицию наверх, и только с 11-ой минуты  откроете 1ый этаж вниз?
avatar
Олег, да.
avatar
Sergey Pavlov, здравствуйте. Спасибо за статью, очень интересно. Скажите пожалуйста, в Quik-е насколько я знаю, купленные контракты продаются по принципу «первый пришел, первый ушел». Т.е. в вашем случае, имея 10 этажей выше мувинга, разгрузка будет происходить начиная с 1-го этажа и заканчивая 10-м. Или я не прав?
Александр Иванов, применительно к спекуляциям это не очень важно, но формально да, FIFO.
avatar
Sergey Pavlov, спасибо. Скажите пожалуйста, каков период скользящей средней?
Александр Иванов, не помню.
avatar
я так понимаю, это Rstudio, не?
вообще мне такие идеи нравятся! регулярно сам просчитываю различные «быстрые» условия для спекуляций… единственное что иногда они уж очень сильно могут набирать позиции против трэнда, хотя вроде условия на вход появляются… НО!!! потом они все таки дают прилично заработать. но для этого нужны большой депо и стальные шары. 
ограничение на макс позицию конечно выглядит логичным и обязательным условием, но мне кажется что на этом как раз все и сливают.. 
avatar
shortillo, Да. Это R+RStudio.
avatar
Sergey Pavlov, А можете код показать? Всегда было интересно как на R стратегии пишут/тестируют.
avatar
Igoron, 

it<-«sber»

ff<-read.table(paste0(«data1/»,as.character(it),".txt"),sep=";",header=F)

dat<-ff[,1]
tim<-ff[,2]/100
opn<-ff[,3]
hgh<-ff[,4]
low<-ff[,5]
cls<-ff[,6]
L<-length(dat)
L<-10000

dep<-10^9
maxlong<-1*dep
addlong<-0.1
maxshort<-(-1*dep)
addshort<-(-0.1)

mova<-st<-allpos<-array(0,dim=L)
lng<-sht<-0
pos<-0
m<-60
for(l in m:L) mova[l]<-mean((low[(l-m+1):(l)]+hgh[(l-m+1):(l)])/2)

for(l in (m+1):L)
{
newpos<-0
if(opn[l]-mova[l]>0.0) if(pos*opn[l]<maxlong) if(tim[l]>1000) if(tim[l]<1839)
{
newpos<-addpos<-floor(min(addlong*dep,maxlong-pos*opn[l])/opn[l])
pos<-pos+addpos
lng<-lng+1
}
if(mova[l]-opn[l]>0.0) if(pos*opn[l]>maxshort) if(tim[l]>1000) if(tim[l]<1839)
{
newpos<-addpos<-floor(max(addshort*dep,maxshort-pos*opn[l])/opn[l])
pos<-pos+addpos
sht<-sht+1
}
if(F) if(tim[l]>=1830) if(pos!=0)
{
newpos<-addpos<-(-pos)
pos<-pos+addpos
}
allpos[l]<-pos#*opn[l]/dep
if(l>1) st[l]<-st[l]+allpos[l-1]*(cls[l]-cls[l-1])
st[l]<-st[l]+newpos*(cls[l]-opn[l])
}

par(mfcol=c(3,1),mar=c(2,2,2,1))
plot(cls[1:L],type=«l»)
plot(100*cumsum(st)/dep,type=«l»)
plot(allpos,type=«h»)

print(lng)
print(sht)

avatar
Sergey Pavlov, Спасибо. Всегда думал что R слишком медленный для таких задач. А оказалось вполне себе приемлемая скорость. (ограничение в 10000 убрал)
avatar
Igoron, в целом R ощутимо медленнее аналогичных расчетов, сделанных на С++ или C# — разница может быть до пары порядков. Например, аналогичный скрипт в тслабе обсчитывается на той же машине за одно мгновение (по ощущениям), а этот скрипт в R считается порядка 10 секунд.
avatar
чем вызвано сужение поз по рублебаксу к концу на самом нижнем графике?
avatar
ПBМ, тем, что выросла стоимость 1 контракта сишки, а открываемая позиция не могла превосходить фиксированной суммы. Соответственно, чем дешевле контракт, тем больше открытая позиция в контрактах и наоборот.
avatar

теги блога Sergey Pavlov

....все тэги



UPDONW
Новый дизайн