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

 

Попробовал создать свою программу по расчету портфелей акций. Оптимизация по методу минимакса (модифицированная для котировок).

Для расчета берутся два портфеля: Long - только для длинных позиций и Short - только для коротких. Предполагается что $100 нужно распределить для портфеля с длинными позициями и $100 для портфеля с короткими. Вот результаты:

Примечание:

Все расчеты проводились по чистым котировкам - цены закрытия, без учета спредов, свопов и комиссий.

Первая колонка - доля в $ для акциий (или по аналогии в процентах инвестиций).

Вторая колонка - профит

Третья колонка - финансовый инструмент (акции)

Total - суммарный профит по портфелю.

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

 

to Neutron

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


to Reshetov

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

 
Оптимальный портфель фондового рынка США

Расчитывается по итогам 130 получасовых баров, т.е. двух прошедших недель - 10 торговых сессий по 35 финансовым инструментам (32 акции промышленного индекса Dow Jones и 3 индексные акции) с помощью усовершенствованного критерия Лапласа.

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

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

Предполагается, что у инвестора имеется в наличии 100 долларов США, которые необходимо оптимально вложить в активы американского фондового рынка - первая колонка таблицы. Полученное число нужно арифметически разделить на стоимость актива, чтобы получить необходимое количество акций.

В отличие от других оценок, в данном случае рассматривается возможность не только стратегии "Buy and Hold", т.е "Купил и держи", а также короткие продажи активов.

Время расчета портфеля: Sun Dec 14 14:07:06 PKT 2008 +5 GMT

Инвестиции в процентах
(или долларах США,
если предполагается
инвестировать 100 долларов)
Чистый доход
по итогам
10 предыдущих
торговых сессий
Тип сделки
Идентификатор финансового инструмента
33.05084745762712
2.0021482616456328
Short:
Короткая продажа
#AA - Alcoa Inc
16.10169491525424
1.2221768429650823
Short:
Короткая продажа
#C - Citigroup Inc
3.389830508474576
0.5328795647403892
Short:
Короткая продажа
#EK - Eastman Kodak Company
24.576271186440678
6.376797637390857
Short:
Короткая продажа
#GM - General Motors Corporation
0.847457627118644
0.014509420375525273
Short:
Короткая продажа
#JPM - JPMorgan Chase & Co
22.033898305084747
3.572262255150715
Short:
Короткая продажа
#MMM - 3M Company
Итого:
13.720773982268202
 
grasn писал(а) >>

to Neutron

А вот это уже интересно, только не могу понять, в чем сделано. Похоже на «жабу».

Не суть, на чем сделано. Действительно конечный результат в Java приложении. Но можно реализовать и полностью в MQL4 с соответствующей потерей в скорости, что на данный момент не совсем приемлемо, т.к. сложно уложиться с расчетами в промежуток между торговыми сессиями. Пока реализация на двух языках программирования: Приложение на Java запускает терминал MT4 с указанием советника на MQL4 в командной строке. Советник скачивает котировки и выполняет предварительную их обработку. Результаты складывает в файл. После отработки скрипта терминал автоматически выгружается, а программа на Java, получив код завершения работы терминала, берет данные из файла и выполняет оптимизацию. Результаты оптимизации выводятся в окно приложения и в файл в виде web - страницы.

grasn писал(а) >>

to Neutron

Это Вы просто использовали какую то внешнюю оптимизационную модель или некий «закрытый ящик с запиханным в него интеллектом» - скажем НС, или ГА. Но все равно не понятно, чего это «алгоритм сам по себе» что то, куда то пихает, ни НС ни ГА так не работают. Если это НС, то на каких данных обучали (т.е. откуда взяли самый «оптимальный счет»)

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

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

 

to Reshetov


Борясь с кризисом пропустил Ваш ответ :о) Спасибо за разъяснения.


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

Я писал, что учитывать буду значительно больше параметров, в т.ч. не только просадку, но риск самой операции. Да и модель в действительности сложнее, - на картинке изобразил <кусочек сегментов>:



Сегменты ЗЗ по разным инструментам идут "последовательно", с разным соотнешением своих характеристик (все то многообразие, описанное ранее) и времени старта. И уже начинает приобретать смысл - учитывать будущий "теоретический" профит от каждой сделки в оптимизации. Так, что поиск оптимального весьма актуален и похоже, что ЛП - единственный и эффективный инструмент. Пока без особых объяснений (вроде и так все очевидно), но получается вот такой граф прогнозируемых сделок (в некотором смысле весьма условно):



Где ветвления - это принятие решения на открытие новых сделок (в том числе "перетекание" профита по "каналам", вернее по активам). В общем долго писать, пока вот так - кратко. Надеюсь, (если со временем будет все в порядке) скоро выложу более подробные исследования.

Что касается нейронных сетей, то тоже нет смысла, т.к. вообще непонятно, что подавать на входы.

Согласен

 

Перечитал свой пост, решил на всякий случай пояснить появление графа. Тут должно быть уже все понятно:


И на нем то я запускаю ЛП, - весьма интересные результаты :о)

 
Актуальна ли еще тема? Целевое(многокретериальное) программирование рассматривали для оптимального управления активами? (вместо линейного)
 
fevrall >>:
Актуальна ли еще тема? Целевое(многокретериальное) программирование рассматривали для оптимального управления активами? (вместо линейного)

конечно актуальна, если есть, что сказать, в смысле предложить.

 

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

 
Интереснее конкретика, общее, концептуальное описание мне известно. Хотя бы для начал формализация постановочной части.
Причина обращения: