Флетовая конструкция, но как по ней открыться? - страница 4

 
Heroix:
Очень оригинальные решения есть в советнике trade-arbitrage. Ссылку не могу дать, пишу с телефона.

Код очень большой, но разобрался. Не понял, что там оригинального. Не хвастаюсь, но сходу (во многом благодаря ООП) написал расчет не троек/четверок, как в советнике, а вообще любых ФК. Логика-то простая.

 

Вообще, погуглил, с тройками и четверками работают многие советники. А вот как найти оптимальный ФК - пусто. 

 
bxa29869: Хотя бы в теории: GBPCAD * EURCHF * EURGBP / (USDCAD * EURUSD * EURUSD * USDCHF) ~ 1.

Показатель степени это доля капитала вложенная в символ (в EURUSD в 2 раза больше чем в остальные).

Другой вопрос что вы сложили две замкнутых топологии: треугольник EURCHF / (USDCHF * EURUSD) и четырехугольник GBPCAD * EURGBP / (USDCAD * EURUSD) которые пересекаются по одному ребру. В результате у проход капитала по этому ребру в 2 раза больше чем по другим ребрам. Смысла в этом немного - это не циклический семиугольник. Ничего нового по нему вы не отловите. Результат такой же как если бы вы трекали совместно 3-угольник и 4-угольник.


Heroix:

Приветствую.
 
GaryKa:

Показатель степени это доля капитала вложенная в символ (в EURUSD в 2 раза больше чем в остальные).

Другой вопрос что вы сложили две замкнутых топологии: треугольник EURCHF / (USDCHF * EURUSD) и четырехугольник GBPCAD * EURGBP / (USDCAD * EURUSD) которые пересекаются по одному ребру. В результате у проход капитала по этому ребру в 2 раза больше чем по другим ребрам. Смысла в этом немного - это не циклический семиугольник. Ничего нового по нему вы не отловите. Результат такой же как если бы вы трекали совместно 3-угольник и 4-угольник.

Это разобрали ранее. Вопрос в нахождении оптимальной ФК. Она может из себя представлять и N-угольник, где N не только 2, 3, 4.
 
kbw74614: Это разобрали ранее. Вопрос в нахождении оптимальной ФК. Она может из себя представлять и N-угольник, где N не только 2, 3, 4.

1) А вы попробуйте торгануть такой большой N угольник. С добавлением каждого нового символа, частота пересчета (тик по такому синтетику) в среднем увеличивается мультипликативно. Банально можно не успеть даже с пересчетом. Я не говорю уже за исполнение, напрмер повышение вероятности  реджекта по какому либо символу. Количество же топологий и вовсе растет похоже факториально.

2) Каждое новое ребро отжирает комиссию.

3) Сам алгоритм поиска оптимального (самого профитного? какого? по относительному/абсолютной профиту) может быть неподъемным для большого числа N (см. например схожую проблему - задача о коммивояжере)

4) Поток спам приказов на брокера тоже не беспредельный

Конечно смысл в этом есть. Тоже ставил себе задачу - найти самую "пердатую" комбинацию. Замечания выше внесли свои коррективы. Пока остановился на банальном переборе того что успеваю. Возможно вернусь к этой задаче.

 

И вы туда же. До практики еще созреем, нам бы теорию понять. Комиссию учтем в цене. Короче, не в этом суть рассматриваемой проблемы.

 

Теорию графов навешивать на эту вшивую задачу - из пушки по воробьям.

 

Перебор троек и четверок не написал только ленивый. С "пердатой" бы определиться - алгоритм, чтобы не дольше часа считал (для начала). Если будет четкое, пусть и медленное, решение, то можно уже другие свои быстрые алгоритмы сравнивать с эталоном на предмет расхождений.

 

Туплю даже с тормозным алгоритмом.

 

Идею не зарубаю. Она класная. Просто часто у простых по постановке задач - очень непростые решения. Опять тот же коммивояжер

Это оптимальный маршрут коммивояжёра через 15 крупнейших городов Германии. Указанный маршрут является самым коротким из всех возможных 43 589 145 600.

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

Не  хотите тройки и четверки, возьмите повыше - от 3ек до 8ок (основные пары) - более 16 тыс комбинаций - Попробуйте отловить большой N угольник и проторговать. А потом ещё раз, и ещё и ещё раз. Уверен приоритеты сместятся - с поиска самого оптимального на исполнение.

 

Обязательно вернусь к этой задаче, как расчеты поставлю по другой теме.

 

А пока прокомментируйте, пожалуйста, алгоритм нахождения наилучшего New_EURGBP (название взято из контекста это ветки) .

Но только так, чтобы "парадоксов" не складывалось. Надо получить, как вы выразились, синтетический наилучщий по ценам New_EURGBP для каждого момента времени.

 

Я пошел в лоб и нахождение всех таких искуственных символов занимает время меньшее погрешности GetTickCount. Но по глупости не предвидел возможность "парадоксов":

bxa29869:

Не флетовая конструкция, но одномоментный случай:

New_EURGBP_ask =  AUDUSD_ask[0.906580] * EURAUD_ask[1.425190] * USDCAD_ask[1.104540] * (1 / EURCAD_bid[1.427220]) * EURGBP_ask[0.795590] = 0.79553399[+5.60 pips], ChainLength = 5 symbols.

 

Выделенная часть флетовая и меньше единицы. За счет этого домножая  все выражение на эту конструкцию можно добиться сколь угодно малого New_EURGBP_ask:

New_EURGBP_ask   =  (AUDUSD_ask[0.906580] * EURAUD_ask[1.425190] * USDCAD_ask[1.104540] * (1 / EURCAD_bid[1.427220])) ^ N  * EURGBP_ask[0.795590] - стремится к нулю при увеличении N. 

 

Не понимаю, где самообман при открытии BUY позиции по New_EURGBP_ask? 

Объяснение "парадоксу" дал, а вот как изменить алгоритм, чтобы такое не рождалось, - пока не вкурил.
 
GaryKa:
 

3) Сам алгоритм поиска оптимального (самого профитного? какого? по относительному/абсолютной профиту) может быть неподъемным для большого числа N (см. например схожую проблему - задача о коммивояжере)

1) Вершины графа - все используемые валюты.

2) Веса ребер графа - логарифмы соответствующих курсов (в них же можно учесть транзакционные издержки).

3) Решение можно получить при помощи алгоритма Беллмана-Форда.

4) Если пути с отрицательной стоимостью не существует - арбитражной ситуации нет.

Быстро и без перебора.

kbw74614:
  Объяснение "парадоксу" дал, а вот как изменить алгоритм, чтобы такое не рождалось, - пока не вкурил.

Ограничить сумму модулей/квадратов степеней курсов. А чтобы "парадоксов" не возникало - проверять единицы измерения.

 
anonymous:

1) Вершины графа - все используемые валюты.

2) Веса ребер графа - логарифмы соответствующих курсов (в них же можно учесть транзакционные издержки).

3) Решение можно получить при помощи алгоритма Беллмана-Форда.

4) Если пути с отрицательной стоимостью не существует - арбитражной ситуации нет.

СУПЕР! Я запихивал в вершины пары, а не валюты. По какой-то причине мозг не ломался, чтобы валюты в узлах держать. Выходит, что надо найти замкнутый круг с наибольшим значением. Ну или если подставлять в ребра отрицательные логарифмы - то с наименьшим. Понятно, что граф будет ориентированным и веса разнонаправленных ориентированных ребер, соединяющих две вершины будут отличаться. Не в курсе еще, подходит ли алгоритм Беллмана-Форда к таким графам.Но идея с валютами в узлах ключевая, спасибо огромное!

Ограничить сумму модулей/квадратов степеней курсов. А чтобы "парадоксов" не возникало - проверять единицы измерения.

Поясните про ограничение. С единицами измерения точно никаких заморочек не возникает, так что "парадоксы" тут не при чем.

ЗЫ Разобрался в алгоритме - подходит для ориентированного графа и можно находить, как кратчайшие, так и наибольшие пути. Буду пробовать.

 

Поставленные в ветке обе задачи (оптимальная ФК и избавление от "парадоксов") являются разными формулировками задачи нахождения отрицательного цикла в графе.

Оптимальный ФК - это задача арбитража, имеющая в общем виде такое решение. Там должен быть цикл. И поэтому решается оптимально через алгоритм Форда-Беллмана.

Избавление от "парадоксов" - это немного иная формулировка задачи нахождения отрицательного цикла в графе, где нужно найти кратчайший путь между двумя вершинами. Решается через алгоритм Флойда-Уоршелла.

 

Всем спасибо, задачи решены. 

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