Не Грааль, просто обычненький такой - Баблокос!!! - страница 278

 
читаю тему...
тут нашел такую цитату:
Joker:

В двух словах врядли объясню, но думаю что работа hrenfx ближе всех к истине в том числе и в части разъяснения оптимального выбора валютных пар. Но есть одно замечание. hrenfx использовал свою работу для нахождения нейтрального рыночного спреда, из которого прибыль не получишь кроме как высокочастотной торговлей ( но и в ней спред съест всю прибыль ). Копать нужно немного в другом направлении.

С Вашего позволения стратегию дальше разглашать не буду ( не для публики ). Кому суждено - дойдет до этого самостоятельно.

hrenfx придавал графику такое свойство как низкая дисперсия. какое свойство нужно придавать графику на самом деле?
 
вот еще цитата:
Talex:

Посмотрел сделки и Александра и Джокера и seka. У Александра сделки идут, как он и писал "Нарисуй себе любой спред, стабилизируй разнос равноудаленного канала эквити спреда выбором инструментов и индексами их объемов. Наверху канала - продавай, внизу - покупай, собственно вся примудрость.", вот к примеру

Письма мастера дзен

красна линия - канал Неколла. левая вертикальная линия - открытие сделки, правая вертикальная - закрытие. как он строит канал?
 

Друзья, объясните такой момент.

Когда мы строим спред по ценам и находим коэффициенты через простую линейную регрессию, то эти коэффициенты отражают количество лот для составления спреда.

Как переводить в лоты, если мы к примеру берем логорифмы цен   log(EURGBP) = log(EURUSD) - log(GBPUSD) или   для  спреда вида Yi=Xi*Хi?

hrenfx пишет, что надо приводить коэффициенты в лотовую систему путем деления на свободные средства, необходимые для открытия 1 лота. Не могу понять почему 

 
потому что стоимость лота на разных инструментах отличается, на один и тот же коэффициент разная лотность
 
kirill_K:

Друзья, объясните такой момент.

Когда мы строим спред по ценам и находим коэффициенты через простую линейную регрессию, то эти коэффициенты отражают количество лот для составления спреда.

Как переводить в лоты, если мы к примеру берем логорифмы цен   log(EURGBP) = log(EURUSD) - log(GBPUSD) или   для  спреда вида Yi=Xi*Хi?

hrenfx пишет, что надо приводить коэффициенты в лотовую систему путем деления на свободные средства, необходимые для открытия 1 лота. Не могу понять почему 

это очень грубый и неэффективный подход!

вот например такой брокер как activetrades у него маржа по франковым парам считается исходя из 1:25

понятно что при таком подходе выбор лотов для франковых пар будет большое искажение при 1:100 для остальных

не стоит считать лоты по марже ведь намного лучше по стоимости позиций и вот как это делается:

1. вычисляем сумму произведений цен закрытия на стоимость контракта на модуль коэффициента регрессии

2. рассчитываем множитель для объема как отношение между желаемой стоимостью портфеля и суммой выше

3. нормируем лоты (превращаем корни в лоты) с помощью множителя и округления

могут быть и альтернативные методы нормирования лотов например к заданному каналу волатильности

но тогда нужно иметь в виду что выбросы волатильности по разжатым инструментам могут быть выше а по сжатым ниже

логарифмы цен имхо вообще безсмысленный академический изврат

 

GerbertX:
вот еще цитата:красна линия - канал Неколла. левая вертикальная линия - открытие сделки, правая вертикальная - закрытие. как он строит канал?

да бес его знает как может вручную подбирает потому и спред кривой как кочерга но скорее всего это подбор леонидовским индикатором

но это абсолютно неважно так как таких спредов можно настроить миллион с горкой разных видов на любой вкус 

а судя по виду линий канала это сильно сглаженное СКО с каким-то коэффициентом отложенное от мувинга а может быть ATR от средней

 

Talex:

Посмотрел сделки и Александра и Джокера и seka. У Александра сделки идут, как он и писал "Нарисуй себе любой спред, стабилизируй разнос равноудаленного канала эквити спреда выбором инструментов и индексами их объемов. Наверху канала - продавай, внизу - покупай, собственно вся примудрость.", вот к примеру

остается всего-то решить проблему разноса спреда и его перерождение в тренд и тогда будет грааль

усреднять порванный спред дело очень неблагодарное

выбранные инструменты и объемы придется менять иногда много раз

лучше уж торговать directional модели на спредах чем mean reversion как уже неоднократно было сказано

добивать объемами искусственно стационируя канал хуже валютной ипотеки

 

GerbertX:
читаю тему...
тут нашел такую цитату:
hrenfx придавал графику такое свойство как низкая дисперсия. какое свойство нужно придавать графику на самом деле?

минимизация дисперсии очень относительная вещь и не всегда полезная

вообще критерий оптимизации может быть любым и нет какого-то одного "правильного" метода

все зависит от того какую модель собираемся торговать

если хотим пробой волатильности то логично зажимать волатильность перекрывая отрицательную корреляцию в портфеле

тогда например строим короткопериодный перед большими новостями и взлетаем по хардкору

можно наоборот складывать положительную корреляцию и выжимать тренд на интервале оптимизации чтобы торговать в отбой

можно задавать начальное движение ассиметричной функцией и ждать фазу коррекции

можно забить на все и строить пучок спредов фильруя их на форварде как пророк Джокер во втором пришествии

можно хардкорно пирамидить компонентами спреда как святой Никола в доапостольский период

то есть для разных моделей будут разные целевые функции и разные критерии оптимизации


.... с респектами, ваш вечерний мимодиванный эксперт

 
transcendreamer:

это очень грубый и неэффективный подход!

вот например такой брокер как activetrades у него маржа по франковым парам считается исходя из 1:25

понятно что при таком подходе выбор лотов для франковых пар будет большое искажение при 1:100 для остальных

не стоит считать лоты по марже ведь намного лучше по стоимости позиций и вот как это делается:

1. вычисляем сумму произведений цен закрытия на стоимость контракта на модуль коэффициента регрессии

2. рассчитываем множитель для объема как отношение между желаемой стоимостью портфеля и суммой выше

3. нормируем лоты (превращаем корни в лоты) с помощью множителя и округления

могут быть и альтернативные методы нормирования лотов например к заданному каналу волатильности

но тогда нужно иметь в виду что выбросы волатильности по разжатым инструментам могут быть выше а по сжатым ниже

логарифмы цен имхо вообще безсмысленный академический изврат

 


 

А можно на каком-нибудь примере показать?

 
kirill_K:

а вот пожалуйста

double total_value=0; // зануляем объем

for(int i=0; i<total; i++) // перебираем все инструменты

   total_value += closing[i] * ContractValue(SYMBOLS[i],limit_time,timeframe) * MathAbs(LOTS[i]); // считаем объем для i-ого инструмента, ContractValue - функция оценки контрактов

if(total_value==0) { Alert("Incorrect volume scaling!"); error=true; first_run=false; return; } // сообщаем об ошибке если ноль, мало ли

scale_volume=portfolio_value/total_value; // определяем множитель

for(int i=0; i<total; i++) // снова перебираем все инструменты

   LOTS[i]=NormalizeDouble(LOTS[i]*scale_volume,lots_digits); // рассчитываем лоты

 

transcendreamer:

 

 

 Но ведь тогда получается, что мы линейно через масштабируемый коэффициент  приводим все коэффициенты регрессии к стоимости портфеля. Но  как я понимаю, в идеале нам нужно, чтобы график эквити был максимально близок к графику синтетика, а по данному подходу это не так.

В общем виде формула эквити для 3 активов:

 

 equity=Volume[1]*Price[1]*Стоимость 1 лота+ Volume[2]*Price[2]*Стоимость 1 лота+ Volume[2]*Price[2]*Стоимость 1 лота

 

В то время как график синтетика в случае простой линейной регрессии

 

spread= a*Price[1]+b*Price[2]+c*Price[3]

 

Т.е.

 Volume[1]=a/(Стоимость 1 лота тикера 1)

 Volume[2]=b/(Стоимость 1 лота тикера 2)

 Volume[3]=c/(Стоимость 1 лота тикера 3)

 

 

Но это при условии, что мы искали регрессию   Price[1]=b/a*Price[2]+c/a*Price[3]

А что если мы взяли не чистую цену а разложили ее в базис функций , в самом простом виде (базис {x;sinx})       Price[1]=A(Price[2]+a*sin(2*ПИ*b*Price[2]))+B(Price[3]+c*sin(2*ПИ*d*Price[3]))

(Сейчас не важно как искать оптимальные коэффициенты a,b,c,d  для такой функции, просто интересен сам подход)

Теперь, чтобы сбалансировать тикеры, необходимо коэффициенты привести нелинейно, чтобы перейти к лотам:

  Volume[2]=A(Price[2]+a*sin(2*ПИ*b*Price[2]))/(Стоимость 1 лота тикера 2)

  Volume[3]=B(Price[3]+c*sin(2*ПИ*d*Price[3]))/(Стоимость 1 лота тикера 3)

Т.е. коэффициенты не являются константой и необходимо все время проводить ребалансировку объемов при изменении значений цен. 

  Подскажите, где я ошибаюсь

И как найти коэффиенты в лотах для открытия позиции для спредов, где искались разные не всегда линейные функциональные зависимости? 

 Или все таки нам в целом не важна сама функциональная зависимость (она может быть любой) и коэффиенты регрессии  А,В линейно через приведение к стоимости портфеля (и стоимости лота) полностью переводятся в лотовую систему?

 

kirill_K:

 ...


Нет, это не так, у меня используется единый множитель масштаба для всех коэффициентов регрессии, поэтому соотношения лотов максимально соответствуют исходным соотношениям коэффициентов, отклонения только в погрешности при округлении до 0,01 (минимальный лот), при этом LOT[i] = ROOT[i] * scale_volume, где LOT[i] - итый лот, ROOT[i] - итый корень, scale_volume не нарушает структуру соотношений, если же сделать нелинейное нормирование и рассчитывать для каждого инструмента независимо то будет нарушение, поэтому все синусы и прочее отпадает, теоретически конечно можно так подобрать лоты чтобы "угадать" фазу рынка и улучшить портфель, но в этом случае теряет смысл регрессионная модель и лучше анализировать инструменты раздельно, это будет вариантом мультиинструментальной торговли, что тоже является частью портфельного подхода но другой ветви.

 

transcendreamer, 

У нас с тобой просто разное восприятие синтетика. В общем я разобрался с работой с динамическими коэффициентами. 

Бегло пробежал код Portfolio Optimizer (правда на MQL никогда не писал). У тебя формула синтетика идентичена эквити (за исключением округления), регрессия строится по данным эквити. А в формуле синтетика уже выполнено приведение к лоту через ContractValue для profit[i].

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

В любом случае спасибо тебе за обратную связь.

Причина обращения: