Подсистема "Управление Активами"

 

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

Договоренности о терминологии

Прежде, чем объяснить ситуацию и задать вопросы, немного оговорюсь по использованию некоторых терминов. Существует целая наука, - «управление активами», которая удачным образом сочетает в себе такие теории, как управление рисками, управление капиталом, управление инвестициями, теория выбора и многие другие, но несет специфику, свойственную предприятиям и банкам. Теория предполагает широкое толкование самого понятия «актив», впрочем – это не так важно. Не растекаясь мыслями по древу, скажу, что термин мне понравился, да и самые общие подходы этой теории имеют некую общность с торговлей. Но не в этом дело.

Употребляемые далее по тексту термины «волновой поток» и «волновая структура» аналогичны термину «зигзаг», точнее сказать, что их отличия никак не влияют на обсуждаемые вопросы.

Постановка задачи

Постановка задачи на первый взгляд очень простая - сгруппировать функциональность оптимального планирования, осуществления и контроля торговых операций в отдельной подсистеме, с учетом оценки рисков и существующих ограничений, таких как располагаемый депозит и правила торговли конкретных ДЦ. Такая идея возникла на основе предположения о возможной стандартизации входных данных и хорошем разделении многообразия стратегий торговли от статистических свойств их поведения.

Обсуждаемая далее подсистема (или модуль), как компонент эксперта – «Управление активами». Для большей наглядности представления функционирования всей системы прибегнул к художественной силе изобразительного слова. На картинке ниже показано взаимодействие процессов и основные информационные потоки. Понятно, что процесс будет в последствии упакован в какой-то модуль, а по сему далее в тексте буду не очень внимательно отслеживать употребление, в общем, то разных понятий «процесс» и «модуль». Не суть как это сейчас важно. По оформлению, картинка скорее относится к произвольной нотации, но старался придерживаться IDEF. Техническую реализацию и требования к форматам данных пока не рассматриваю, понять бы вначале, чего хочу. А хочу как минимум вот такую штуку (концептуально, рабочая документация то все-таки немного сложнее):

Несколько слов нужно сказать о системе прогнозирования, хоть она и не является объектом внимания данной темы. Разработка подсистемы «Прогноз волновой структуры» разбита на три основных этапа, а поскольку первый этап совсем недавно закончен, уже можно посмотреть, как это все «не должно работать» :о). Прогнозирование демонстрируется на примере «лабораторной крысы»: EURUSD, часы, (H+L)/2. Черным цветом обозначен факт, бледно серым – будущие отсчеты, а темно серым обозначен совмещенный зигзаг, построенный по факту с «прикрепленными» сегментами рассчитанных будущих волновых движений:

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

Далее подробно опишу информационные потоки между процессами эксперта:

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

Вертикальная пунктирная линия отображает положение «сейчас» для каждого прогноза инструмента. На текущий момент, волны обозначенные черным цветом являются уже свершившимся фактом. Прогноз включает в себя волны, начиная с «A», «B», «C» и.д. Волна «A», выделенная пунктирной линией, уточняет завершающую волну зигзага, построенного по истории. Для нее могут быть два варианта: или прогноз предполагает, волна завершена и ее вершина – это исторические данные или волна еще будет развиваться, дойдя до какого то нового уровня в будущем.

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

Торговые инструменты. Тут все понятно: в подсистему передаются оперативные данные по каждому торгуемому инструменту, которые могут быть теоретически использованы для контроля и модификации сделок, если такие процедуры будут выполняться в оперативном режиме без использования уровней SL и TP.

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

Ограничения ДЦ. Набор параметров торгового окружения, характерный для каждого конкретного ДЦ. Параметры выписаны списком. Понадобиться тот или иной параметр именно в модели управления активами пока не могу сказать наверняка, но пусть пока мозолят глаза:

  • Минимальный депозит
  • Ограничения выставления уровней SL и TP
  • Максимальное кредитное плечо
  • Минимальный лот и допустимый шаг его изменения
  • Максимальный совокупный объем позиций
  • Максимальное суммарное количество ордеров
  • Перенос позиций через ночь
  • Количество и перечень инструментов
  • Метод котирования
  • Максимальное время пополнения и вывода денежных средств

Может, забыл чего, что интуитивно пригодиться? :о)

Статистика волновых структур по каждому инструменту. Важная информация по статистике, возможно, пригодиться для учета рисков:

  • частота появления каждого сегмента (статистика по длине, размаху, времени существования)
  • частота появления волновой структуры, (одновременное появление волн «A», «B», «C», «D», «E», «F» … соответствующей классификацией)

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

Базовая функциональность

Функциональность пока не структурирована, а приведена общим списком, без каких либо процессов, взаимосвязей и логики.

Уточнение завершения волны

Задача, сформулированная в названии, связана в общем случае с получением информации, на основе которой будут приниматься окончательные торговые решения, например самое очевидное это расчет уровней SL и TP. И тут может быть, два принципиально различных варианта:

  • (Вариант 1) подсистема прогнозирования выдает уже окончательно рассчитанную волновую структуру
  • (Вариант 2) подсистема прогнозирования выдает только теоретические точки завершения волн. Предполагается, что истинные точки завершения, находятся где-то поблизости и их еще предстоит оценить.

Пока придерживаюсь варианта 2. Такую оценку можно выполнить, основываясь на расчете зоны завершения волны и «точечной» оценки завершения волны внутри этой зоны. Саму зону можно рассчитать по-разному, например, используя статистические данные ошибок прогноза и факта. В качестве градации такой зоны можно взять среднеквадратичную ошибку. Есть и другой способ, по крайне мере, моя модель позволяет сделать альтернативную оценку.

Точечную оценку завершения волны внутри зоны можно получить, основываясь на поиске и анализе экстремальных точек, используя принципы, изложенные в следующих статьях:

- 'Один способ построения уровней поддержки и сопротивления'

- 'Отображение уровней поддержки и сопротивления'

На картинке ниже условно показаны области функций, обозначенные как X и Y, ограниченные размерами зоны. В качестве таких функций могут быть «плотность по уровням» инструмента или частотная оценка длин и времени существования волновых сегментов. В одном случае нужно придерживаться минимумов, в другом соответственно максимумов в этих зонах:

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

Расчет плана торговых операций

Подсистема «управления активами», в каком то регламенте будет получать прогнозные данные по каждому инструменту: после рассылки сигнала о запросе прогноза, от каждого инструмента на вход управления активами поступит прогнозы зигзагов с вероятностными (частотными) характеристиками составляющих сегментов. Фактически требуется найти самый оптимальный «маршрут заключения сделок», учитывая уровень депозита, текущих сделок, их коррекции, рисков и ограничений ДЦ. Другими словами выполнить «некий» расчет «некого» плана торговых операций (пока так «туманненько»). Критерий для оптимальности – это так же серьезный вопрос, где правильный баланс между прибылью и риском. :о)

Так же из сказанного выше становится понятно, что план торговых операций в общем случае может отличаться от первоначального волнового процесса (зигзага). Такая ситуация может возникнуть не только из–за процедуры уточнения завершения волн, но и например, при пересечении зон среднеквадратичных ошибок завершения, как показано на рисунке ниже:

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

В общем случае, на основе торгового плана появляется возможность планировать, в некотором роде «денежные потоки». Разумеется, это имеет смысл только для стратегий, в основе которых (или около основы) лежит прогноз в том или ином виде.

Совершение торговых операций

Многое будет зависеть от конкретной логики обработки торгового плана. Интуитивно вроде понятно, но требуется еще детализации.

Наличие сервисных функций

Это общее название специфичных особенностей, которые возникают при торговле в автоматическом режиме в среде MT. Первое, что вспомнил:

  • проверка целостности исторических данных
  • обработка ошибок, возникающих при торговых операциях

Коллеги, если есть чего добавить (за компанию), пишите, а то я в MT особо ни … понимаю.

О чем спрашиваю

Старался и надеюсь, описанное выше боле менее понятно. А может быть для решения поставленных задач можно использовать:

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

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

И извечный вопрос, если можно – то как?

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

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

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

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

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

Всем удачи и попутных зигзагов :о)))

 
Интересно.
 

Волновая структура, по какому методу

у Вас идёт расчёт или чьей теории ???

И если можно поподробней.

 
to Sol

Интересно.

Кратко, но емко. :о)

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

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

Видимо, ЦМ помогут решить проблемы оптимизации самого маршрута движения по ордерам (их выбора с учетом вероятностной природы). И вроде свойства этого «макропроцесса» уж больно похожи на свойства ЦМ. К тому же, есть еще всякие тонкости - например, прогноз показал сильное движение в будущем (не сейчас). И тут может иметь смысл отказаться от большого количества сделок на других инструментов сейчас и сосредоточить ресурс (депозит) на этом, ожидаемом движении. Подтвердиться сильное движение – закатать на полную программу. Если нет – сработает SL который, опять же возможно, будет более приемлемым, чем какая то часть сработавших SL ордеров в альтернативном варианте.

Но вряд ли получиться расширить с помощью ЦМ оптимизацию в полном объеме и включить (или как минимум просто учитывать) торговое окружение ДЦ. Тут вероятно понадобятся элементы линейного программирования.

«Ну мне так кА-А-А-ца…» (C)

to sator

Волновая структура, по какому методу

у Вас идёт расчёт или чьей теории ???

И если можно поподробней.

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

 

Интересно. Вечером дома надо будет внимательно прочитать.

И пригласить для обсуждения тех, у кого нечто аналогичное разработано...

 
nen >>:

Интересно. Вечером дома надо будет внимательно прочитать.

И пригласить для обсуждения тех, у кого нечто аналогичное разработано...

С «разбегу» решить свою задачку, описанную в первом посте, мне не удалось, не так все тривиально оказалось. В общем думаю.

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


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


Фактически, каждый выделенный класс сегмента зигзага и будет его состоянием. По первым прикидкам, таких состояний должно быть от трех до девяти. Если отталкиваться от статистических частот, то интервалы для каждого параметра нужно подбирать таим образом, что бы полученные величины частот были значимыми и существенно отличались друг от друга. Далее можно будет легко составить граф состояний и рассчитать матрицу перехода между состояниями. Пока интуитивно, но мне кажется, что прогнозировать с помощью ЦМ можно только текущий сегмент и следующий за ним.


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


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


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

 
grasn писал(а) >>

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

Найдете вот это, все остальное что Вы написали, очень легко приложиться

 

где то в сети лежало

 

to Prival

Найдете вот это, все остальное что Вы написали, очень легко приложиться

Prival привет! Поди забыл старого оппонента :о) Ну да ладно, дипломатию выдержу:


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


А что касается «все остальное приложиться» – ошибаетесь крайне сильно. Достаточно обратиться к мудрости древних китайцев и к моим наблюдениям :о): Вы никогда не найдете черную кошку в темной комнате, особенно в те моменты, когда ее там нет. Положитесь в этой экспертной оценки на меня полностью – у меня есть черный домашний кот и поверьте, я то знаю о чем говорю. :о)))


to njel

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

Но за картинку спасибо, очень красивая. Мне как художнику очень понравилось. :о))

 
grasn

На мой взгляд тут нужно не искать общие подходы -теория оптимизации, Марковские цепи это

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

соответствии с этим выстраивать приоритеты.

У меня похожая задача, правда еще до конкретики не добрался, только немножко

думал над тем как решить.


Допустим есть набор финансовых инструментов(активов) и соответственно сигналы по каждому инструменту. Сигналы действуют в течении какого-то времени, например генерятся на окрытии дневного бара и затем действительны до начала следующего бара. В соответствии с характером сигнала для каждого инструмента ищется внутри бара точка входа. Если одновременно появятся

несколько сигналов на открытие по разным инструментам, какому отдать приоритет? Самому

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

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

с этой статистикой пытаться искать какие-то оптимумы.



 
njel >>:

где то в сети лежало

Это статистическое предсказание на N баров вперед движения MA (плавные штрих-пунктирные линии справа от последнего бара)

и статистическая величина границ, в которых наиболее вероятно будет двигаться цена (вертикальные штрих-пунктирные

линии возле каждого предсказанного бара для быстрой MA)

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